{
  "version": 2,
  "module": "analytics",
  "surface": "alpha",
  "generated_at": "2026-06-16T14:25:12Z",
  "purpose": "Verifier config only. The runnable check fetches platform-owned pinned answers live from the approved Analytics integration convergence key; this file supplies selectors, row ids, endpoint perimeter, and the source-shaped import proof config.",
  "base_url": "https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/implementation/api",
  "tenant_id": "demo",
  "answer_key": {
    "url": "https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/integration/convergence.json",
    "pinned_set_name": "analytics-alpha-integration-launch-gate-v2"
  },
  "descriptor": {
    "expected": {
      "module": "analytics",
      "surface": "alpha",
      "noOneEdTechBase": true
    },
    "required_endpoints": [
      "/alpha/analytics/v1/event-time-facts",
      "/alpha/analytics/v1/time-windows",
      "/alpha/analytics/v1/school-day-minutes",
      "/alpha/analytics/v1/xp-rollups",
      "/alpha/analytics/v1/accuracy-rollups",
      "/alpha/analytics/v1/mastery-deltas",
      "/alpha/analytics/v1/map-growth-rollups",
      "/alpha/analytics/v1/completion-rollups",
      "/alpha/analytics/v1/source-imports",
      "/alpha/analytics/v1/norms",
      "/alpha/analytics/v1/norms/table",
      "/alpha/analytics/v1/norms/rit",
      "/alpha/analytics/v1/norms/percentile",
      "/alpha/analytics/v1/r90",
      "/alpha/analytics/v1/r90/table",
      "/alpha/analytics/v1/rit-to-grade",
      "/alpha/analytics/v1/rit-to-grade/table",
      "/alpha/analytics/v1/school-days-remaining",
      "/alpha/analytics/v1/grade-level-status",
      "/dev/mint",
      "/alpha/analytics/v1/source-imports/timeback-xp-time-accuracy",
      "/alpha/analytics/v1/source-imports/timeback-map",
      "/alpha/analytics/v1/source-imports/timeback-grade-mastery",
      "/alpha/analytics/v1/source-imports/timeback-completion",
      "/alpha/analytics/v1/source-imports/migration-reconcile"
    ],
    "exact_endpoint_catalog": true
  },
  "checks": [
    {
      "name": "active_inactive_waste_event_facts",
      "domain": "active_inactive_waste_event_facts",
      "convergence_question_id": "analytics-001-event-time-fact",
      "path": "/alpha/analytics/v1/event-time-facts?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&factKind=active_seconds&limit=100",
      "row_id": "event_time_fact_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9_active",
      "required_fields": [
        "id",
        "student_id",
        "computed_at",
        "modified_at"
      ]
    },
    {
      "name": "minutes_per_enrolled_school_day",
      "domain": "minutes_per_enrolled_school_day",
      "convergence_question_id": "analytics-002-school-day-minutes",
      "path": "/alpha/analytics/v1/school-day-minutes?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&startDate=2026-05-01&endDate=2026-06-01&limit=100",
      "row_id": "school_day_minutes_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9_math_may",
      "required_fields": [
        "id",
        "student_id",
        "subject_id",
        "quality_status"
      ]
    },
    {
      "name": "xp_totals_and_goal_progress",
      "domain": "xp_totals_and_goal_progress",
      "convergence_question_id": "analytics-003-xp-rollup",
      "path": "/alpha/analytics/v1/xp-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&windowKind=term&startDate=2026-01-01&endDate=2026-06-01&limit=100",
      "row_id": "xp_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9_term",
      "answer_aliases": [
        {
          "field": "xp_goal_percent",
          "equals_answer_field": "xp_completion_percent"
        }
      ],
      "required_fields": [
        "id",
        "student_id",
        "subject_id",
        "window_kind",
        "daily_xp_goal",
        "enrolled_school_day_count",
        "quality_status"
      ]
    },
    {
      "name": "mastery_delta",
      "domain": "mastery_delta",
      "convergence_question_id": "analytics-004-mastery-delta",
      "path": "/alpha/analytics/v1/mastery-deltas?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&stateDimension=durable_mastery&startDate=2026-05-01&endDate=2026-06-01&limit=100",
      "row_id": "mastery_delta_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9",
      "required_fields": [
        "id",
        "student_id",
        "quality_status"
      ]
    },
    {
      "name": "accuracy_rollups",
      "domain": "accuracy_rollups",
      "convergence_question_id": "analytics-005-accuracy-rollup",
      "path": "/alpha/analytics/v1/accuracy-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&windowKind=term&startDate=2026-01-01&endDate=2026-06-01&limit=100",
      "row_id": "accuracy_rollup_canonical_89ce4e22de47b487fc4150d7",
      "required_fields": [
        "id",
        "student_id",
        "subject_id",
        "window_kind",
        "quality_status"
      ]
    },
    {
      "name": "rit_growthx_map_windows",
      "domain": "rit_growthx_map_windows",
      "convergence_question_id": "analytics-006-map-growth",
      "path": "/alpha/analytics/v1/map-growth-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&termId=term_2026_winter&growthWindow=winter_to_winter&normsSet=2025&limit=100",
      "row_id": "map_growth_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9",
      "required_fields": [
        "id",
        "student_id",
        "subject_id",
        "canonical_term_id",
        "growth_window",
        "norms_set",
        "start_rit",
        "conditional_growth_percentile",
        "growth_percentile",
        "policy_ref",
        "quality_status"
      ]
    },
    {
      "name": "completion_percent",
      "domain": "completion_percent",
      "convergence_question_id": "analytics-007-completion",
      "path": "/alpha/analytics/v1/completion-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&completionScope=course&scopeId=course_math_grade_4_powerpath&limit=100",
      "row_id": "completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9",
      "required_fields": [
        "id",
        "student_id",
        "completion_scope",
        "scope_id",
        "subject_id",
        "grade_level",
        "is_main_course",
        "progress_source_kind",
        "policy_ref",
        "quality_status"
      ]
    }
  ],
  "source_import": {
    "adapter_path": "/alpha/analytics/v1/source-imports/timeback-xp-time-accuracy",
    "audit_path": "/alpha/analytics/v1/source-imports?importKind=timeback-xp-time-accuracy&status=materialized&limit=100",
    "proof_path": "/alpha/analytics/v1/xp-rollups?studentId=student-analytics-integration-001&subjectId=math&windowKind=day&startDate=2026-05-22&endDate=2026-05-23&limit=100",
    "source_batch_prefix": "analytics-skill-pack-",
    "idempotency_key_prefix": "analytics-skill-pack-",
    "row_template": {
      "id": "pf_{runId}",
      "user_id": "student-analytics-integration-001",
      "date": "2026-05-22",
      "datetime": "2026-05-22T15:10:00.000Z",
      "subject": "Math",
      "app": "Math Academy",
      "campus_id": "school_alpha_demo",
      "activity_id": "content-fractions-video-01",
      "active_seconds": 600,
      "inactive_seconds": 60,
      "waste_seconds": 0,
      "xp_earned": 25
    },
    "expected_import": {
      "status": "materialized",
      "accepted_row_count": 1
    },
    "min_materialized_row_count": 4,
    "proof_expected": {
      "student_id": "student-analytics-integration-001",
      "subject_id": "math",
      "window_kind": "day",
      "policy_ref": "alpha.policy.analytics.xp_rollup.v2026-06-10",
      "quality_status": "ok"
    }
  }
}
