# Response Samples

Samples below are representative demo responses from the same live surface paths used by the verifier. The verifier fetches the approved integration convergence key live for pinned report answers; `checks/expected.json` supplies selectors and import-proof config. Rerun `node checks/verify-skill-pack.mjs --write-evidence` to prove the current live surface still matches the platform-owned key.

## School-Day Minutes

    {
      "student_id": "student_01HT7G3YZV7QB5N4YKQ1K0Z9A9",
      "subject_id": "math",
      "active_minutes": 980,
      "enrolled_school_day_count": 20,
      "minutes_per_enrolled_school_day": 49,
      "school_day_policy_ref": "alpha.policy.school_day.v2026-06-10",
      "null_reason": "none",
      "quality_status": "ok"
    }

## Ada Learning Report XP Rollup

    {
      "student_id": "student_01HT7G3YZV7QB5N4YKQ1K0Z9A9",
      "subject_id": "math",
      "positive_xp": 1240,
      "negative_xp": -20,
      "net_xp": 1220,
      "daily_xp_goal": 50,
      "enrolled_school_day_count": 30,
      "xp_goal": 1500,
      "xp_remaining": 280,
      "on_track": false,
      "xp_goal_percent": 81.333,
      "xp_completion_percent": 81.333,
      "award_count": 86,
      "reversal_count": 1,
      "source_import_id": "import_demo_demo",
      "policy_ref": "alpha.policy.analytics.xp_rollup.v2026-06-10"
    }

## Source-Import Proof XP Rollup

The proof import recipe writes to `student-analytics-integration-001`, not Ada. A successful proof run materializes a separate XP row shaped like this:

    {
      "student_id": "student-analytics-integration-001",
      "subject_id": "math",
      "window_kind": "day",
      "positive_xp": 25,
      "negative_xp": 0,
      "net_xp": 25,
      "award_count": 1,
      "reversal_count": 0,
      "policy_ref": "alpha.policy.analytics.xp_rollup.v2026-06-10",
      "quality_status": "ok"
    }

## MAP Growth Rollup

    {
      "student_id": "student_01HT7G3YZV7QB5N4YKQ1K0Z9A9",
      "subject_id": "math",
      "canonical_term_id": "term_2026_winter",
      "growth_window": "winter_to_winter",
      "norms_set": "2025",
      "rit_score": 221,
      "start_rit": 212,
      "conditional_growth_percentile": 43,
      "growth_percentile": 43,
      "growth_x": 2,
      "growth_x_target": 2,
      "on_track": true
    }

The Ada MAP sample uses `growth_window: "winter_to_winter"`. That is the current seeded demo row for Ada's MAP panel; a zero-row response for this exact query means the surface or fixture drifted and the verifier should fail.

## GOALS Grade-Level Status

    {
      "student_id": "b6fa7128-f641-4efd-9075-375411fd6c39",
      "subject_id": "math",
      "as_of_date": "2026-05-20",
      "age_grade": 5,
      "working_grade": 6,
      "highest_mastered_grade": 5,
      "working_age_grade_delta": 1,
      "working_age_grade_status": "working_above_age_grade",
      "mastered_age_grade_delta": 0,
      "mastered_age_grade_status": "mastered_at_age_grade"
    }

This route reads age grade from People & Orgs `alpha.age_grade_history` and grade positions from Results. Do not infer age grade from MAP/RIT or expose generic ahead/at/behind as the preferred contract.

For full object references, use the data dictionary: https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/data_dictionary
