{
  "module": "people_and_orgs",
  "surface": "alpha",
  "generatedAt": "2026-06-24T00:59:10.733Z",
  "pinnedSetName": "people-and-orgs-alpha-launch-gate-v1",
  "baseUrl": "https://platform3-andymontgomery-9773s-projects.vercel.app/people_and_orgs/alpha/implementation/api",
  "dataDictionaryUrl": "https://platform3-andymontgomery-9773s-projects.vercel.app/people_and_orgs/alpha/data_dictionary/people-and-orgs-alpha-data-dictionary.json",
  "customerWebsiteSourceUrl": "https://platform3-andymontgomery-9773s-projects.vercel.app/people_and_orgs/alpha/customer_website/people-and-orgs-alpha-customer-website-source.json",
  "rawPath": {
    "transport": "Postgres SQL over aws-1-us-east-1.pooler.supabase.com:6543/postgres",
    "fallbackAttempts": [],
    "documentedViews": [
      "alpha.person",
      "alpha.place",
      "alpha.place_membership",
      "alpha.class_membership",
      "alpha.school_period",
      "alpha.person_sensitive_profile",
      "alpha.guardian_view",
      "alpha.guardian_relationship_view",
      "alpha.staff_assignment_view",
      "alpha.program_participation_view"
    ],
    "documentedExtensionTables": [
      "alpha.person_ext",
      "alpha.place_ext",
      "alpha.app_credential",
      "alpha.tag_definition",
      "alpha.object_tag",
      "alpha.alpha_level_history",
      "alpha.age_grade_history"
    ]
  },
  "topQuestionSet": [
    {
      "id": "point-in-time-north-valley-roster",
      "question": "Who is on the North Valley School student roster as of 2026-09-15, and which guide/class do they belong to?",
      "whyTopQuestion": "This is the teacher's core roster job: each North Valley student once, dated membership rules, class memberships, and guide links without duplicate cards or write-test rows.",
      "converged": true
    },
    {
      "id": "district-nwea-account-boundary",
      "question": "Which NWEA account does North Valley School belong to, and what Brand x Modality grain does it use?",
      "whyTopQuestion": "MAP reporting must group by the district parent as one Brand x Modality NWEA account; a school-level second source of truth would silently combine or split reports.",
      "converged": true
    },
    {
      "id": "active-period-memberships",
      "question": "Which North Valley place and class memberships are active during Fall 2026 as of 2026-09-15?",
      "whyTopQuestion": "Roster operations depend on the shared asOfDate rule and must show the selected school's matching period rows, excluding tombstones, null-begin rows, ended rows, and memberships from other demo schools.",
      "converged": true
    },
    {
      "id": "app-credential-redaction",
      "question": "Which app credential references exist for Ada, and does the surface avoid leaking secret_ref?",
      "whyTopQuestion": "People & Orgs owns operational app credential references, but the secret value must never appear in API answers, tags, or ordinary roster rows.",
      "converged": true
    }
  ],
  "storageModelEvidence": {
    "checked": true,
    "dictionaryRule": "Alpha is views over the OneRoster and Ed-Fi 1EdTech bases for rename/cut/restrict changes; only extend changes add Alpha-owned tables containing new Alpha fields plus foreign keys to base rows.",
    "relationSql": "SELECT c.relname AS name, c.relkind FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = 'alpha' AND c.relname = ANY($1::text[])",
    "viewDefinitionSql": "SELECT table_name, view_definition FROM information_schema.views WHERE table_schema = 'alpha' AND table_name = ANY($1::text[])",
    "expectedViews": [
      "alpha.person",
      "alpha.place",
      "alpha.place_membership",
      "alpha.class_membership",
      "alpha.school_period",
      "alpha.person_sensitive_profile",
      "alpha.guardian_view",
      "alpha.guardian_relationship_view",
      "alpha.staff_assignment_view",
      "alpha.program_participation_view"
    ],
    "expectedExtensionTables": [
      "alpha.person_ext",
      "alpha.place_ext",
      "alpha.app_credential",
      "alpha.tag_definition",
      "alpha.object_tag",
      "alpha.alpha_level_history",
      "alpha.age_grade_history"
    ],
    "relations": [
      {
        "object": "alpha.age_grade_history",
        "relkind": "r",
        "kind": "table"
      },
      {
        "object": "alpha.alpha_level_history",
        "relkind": "r",
        "kind": "table"
      },
      {
        "object": "alpha.app_credential",
        "relkind": "r",
        "kind": "table"
      },
      {
        "object": "alpha.class_membership",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.guardian_relationship_view",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.guardian_view",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.object_tag",
        "relkind": "r",
        "kind": "table"
      },
      {
        "object": "alpha.person",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.person_ext",
        "relkind": "r",
        "kind": "table"
      },
      {
        "object": "alpha.person_sensitive_profile",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.place",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.place_ext",
        "relkind": "r",
        "kind": "table"
      },
      {
        "object": "alpha.place_membership",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.program_participation_view",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.school_period",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.staff_assignment_view",
        "relkind": "v",
        "kind": "view"
      },
      {
        "object": "alpha.tag_definition",
        "relkind": "r",
        "kind": "table"
      }
    ],
    "viewDefinitions": [
      {
        "object": "alpha.class_membership",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    membership_id,\n    person_id,\n    school_id,\n    learning_group_id,\n    role_kind,\n    is_primary_guide,\n    begin_date,\n    end_date,\n    is_time_locatable,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.class_membership_base;"
      },
      {
        "object": "alpha.guardian_relationship_view",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    guardian_relationship_id,\n    student_person_id,\n    guardian_id,\n    relationship_kind,\n    is_primary_contact,\n    is_legal_guardian,\n    lives_with_student,\n    is_emergency_contact,\n    contact_priority,\n    contact_restrictions,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.guardian_relationship_base_view;"
      },
      {
        "object": "alpha.guardian_view",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    guardian_id,\n    contact_unique_id,\n    full_name,\n    email,\n    phone,\n    language_codes,\n    source_updated_at,\n    is_deleted,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.guardian_base_view;"
      },
      {
        "object": "alpha.person",
        "viewDefinitionExcerpt": " SELECT b.tenant_id,\n    b.person_id,\n    b.source_status,\n    b.source_updated_at,\n    e.reality,\n    b.is_enabled,\n    b.username,\n    b.first_name,\n    b.last_name,\n    b.middle_name,\n    b.preferred_first_name,\n    b.preferred_last_name,\n    b.email,\n    b.sms,\n    b.phone,\n    b.family_or_agent_person_ids,\n    b.grade_levels,\n    b.primary_place_id,\n    e.admission_date,\n    e.exit_date,\n    e.age_grade,\n    LEA"
      },
      {
        "object": "alpha.person_sensitive_profile",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    person_id,\n    birth_date,\n    sex,\n    race_ethnicity_flags,\n    birth_place_fields,\n    residence_status,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.person_sensitive_profile_base;"
      },
      {
        "object": "alpha.place",
        "viewDefinitionExcerpt": " SELECT b.tenant_id,\n    b.place_id,\n    b.source_status,\n    b.source_updated_at,\n    e.reality,\n    b.name,\n    b.place_kind,\n    b.public_identifier,\n    b.parent_place_id,\n    e.nwea_district_id,\n    brand.tag_value AS brand,\n    modality.tag_value AS modality,\n    segment_tag.tag_value AS segment,\n    level_tag.tag_value AS level,\n    LEAST(b.created_at, COALESCE(e.created_at, b.created_at)) AS created_at,\n    G"
      },
      {
        "object": "alpha.place_membership",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    membership_id,\n    person_id,\n    place_id,\n    role_kind,\n    role_priority,\n    begin_date,\n    end_date,\n    is_time_locatable,\n    profile_id,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.place_membership_base;"
      },
      {
        "object": "alpha.program_participation_view",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    program_participation_id,\n    student_person_id,\n    place_id,\n    program_id,\n    program_name,\n    program_type,\n    participation_status,\n    begin_date,\n    end_date,\n    is_time_locatable,\n    source_program_resource,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.program_participation_base_view;"
      },
      {
        "object": "alpha.school_period",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    period_id,\n    source_status,\n    source_updated_at,\n    title,\n    period_kind,\n    start_date,\n    end_date,\n    parent_period_id,\n    school_year,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.school_period_base;"
      },
      {
        "object": "alpha.staff_assignment_view",
        "viewDefinitionExcerpt": " SELECT tenant_id,\n    staff_assignment_id,\n    staff_person_id,\n    place_id,\n    staff_classification,\n    position_title,\n    begin_date,\n    end_date,\n    is_time_locatable,\n    assignment_order,\n    full_time_equivalency,\n    created_at,\n    updated_at,\n    deleted_at\n   FROM alpha.staff_assignment_base_view;"
      }
    ],
    "forbiddenTableViolations": [],
    "extensionTableViolations": [],
    "sourcedColumnViolations": [],
    "lifecycleViewViolations": [],
    "storageContract": [
      {
        "alphaObject": "person",
        "publicSurface": "alpha.person",
        "baseSource": "oneroster.users",
        "extensionTables": [
          "alpha.person_ext"
        ],
        "requiredShape": "CREATE VIEW over the OneRoster 1EdTech base; no Alpha table may store sourced OneRoster columns. Wave 2 adds reality as an Alpha extension field, not a copied OneRoster column."
      },
      {
        "alphaObject": "place",
        "publicSurface": "alpha.place",
        "baseSource": "oneroster.orgs",
        "extensionTables": [
          "alpha.place_ext",
          "alpha.object_tag"
        ],
        "requiredShape": "CREATE VIEW over the OneRoster 1EdTech base; no Alpha table may store sourced OneRoster columns. Wave 2 adds reality as an Alpha extension field, not a copied OneRoster column."
      },
      {
        "alphaObject": "place_membership",
        "publicSurface": "alpha.place_membership",
        "baseSource": "oneroster.roles",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over the OneRoster 1EdTech base; no Alpha table may store sourced OneRoster columns."
      },
      {
        "alphaObject": "class_membership",
        "publicSurface": "alpha.class_membership",
        "baseSource": "oneroster.enrollments",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over the OneRoster 1EdTech base; no Alpha table may store sourced OneRoster columns."
      },
      {
        "alphaObject": "school_period",
        "publicSurface": "alpha.school_period",
        "baseSource": "oneroster.academic_sessions",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over the OneRoster 1EdTech base; no Alpha table may store sourced OneRoster columns."
      },
      {
        "alphaObject": "person_sensitive_profile",
        "publicSurface": "alpha.person_sensitive_profile",
        "baseSource": "oneroster.demographics",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over the OneRoster 1EdTech base; no Alpha table may store sourced OneRoster columns."
      },
      {
        "alphaObject": "guardian",
        "publicSurface": "alpha.guardian_view",
        "baseSource": "edfi.canonical_record(resource_name=Contact)",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over edfi.canonical_record; filter resource_name/collection_route, tenant_id, is_deleted=false, canonical state, descriptor_code resolution, and OneRoster sourcedId joins. No Alpha table may store sourced Ed-Fi columns."
      },
      {
        "alphaObject": "guardian_relationship",
        "publicSurface": "alpha.guardian_relationship_view",
        "baseSource": "edfi.canonical_record(resource_name=StudentContactAssociation)",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over edfi.canonical_record; filter resource_name/collection_route, tenant_id, is_deleted=false, canonical state, descriptor_code resolution, and OneRoster sourcedId joins. No Alpha table may store sourced Ed-Fi columns."
      },
      {
        "alphaObject": "staff_assignment",
        "publicSurface": "alpha.staff_assignment_view",
        "baseSource": "edfi.canonical_record(resource_name=StaffEducationOrganizationAssignmentAssociation)",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over edfi.canonical_record; filter resource_name/collection_route, tenant_id, is_deleted=false, canonical state, descriptor_code resolution, and OneRoster sourcedId joins. No Alpha table may store sourced Ed-Fi columns."
      },
      {
        "alphaObject": "program_participation",
        "publicSurface": "alpha.program_participation_view",
        "baseSource": "edfi.canonical_record(resource_name in GeneralStudentProgramAssociation, StudentProgramAssociation, and specializations)",
        "extensionTables": [],
        "requiredShape": "CREATE VIEW over edfi.canonical_record; filter resource_name/collection_route, tenant_id, is_deleted=false, canonical state, descriptor_code resolution, and OneRoster sourcedId joins. No Alpha table may store sourced Ed-Fi columns."
      },
      {
        "alphaObject": "app_credential",
        "publicSurface": "alpha.app_credential",
        "baseSource": null,
        "extensionTables": [
          "alpha.app_credential"
        ],
        "requiredShape": "CREATE TABLE is allowed because this is a pure Alpha extension."
      },
      {
        "alphaObject": "tag_definition",
        "publicSurface": "alpha.tag_definition",
        "baseSource": null,
        "extensionTables": [
          "alpha.tag_definition"
        ],
        "requiredShape": "CREATE TABLE is allowed because this is a pure Alpha extension."
      },
      {
        "alphaObject": "object_tag",
        "publicSurface": "alpha.object_tag",
        "baseSource": null,
        "extensionTables": [
          "alpha.object_tag"
        ],
        "requiredShape": "CREATE TABLE is allowed because this is a pure Alpha extension."
      },
      {
        "alphaObject": "alpha_level_history",
        "publicSurface": "alpha.alpha_level_history",
        "baseSource": null,
        "extensionTables": [
          "alpha.alpha_level_history"
        ],
        "requiredShape": "CREATE TABLE is allowed because this is a pure Alpha extension."
      },
      {
        "alphaObject": "age_grade_history",
        "publicSurface": "alpha.age_grade_history",
        "baseSource": null,
        "extensionTables": [
          "alpha.age_grade_history"
        ],
        "requiredShape": "CREATE TABLE is allowed because this is a pure Alpha extension."
      }
    ]
  },
  "questionCount": 4,
  "converged": true,
  "questions": [
    {
      "id": "point-in-time-north-valley-roster",
      "question": "Who is on the North Valley School student roster as of 2026-09-15, and which guide/class do they belong to?",
      "whyTopQuestion": "This is the teacher's core roster job: each North Valley student once, dated membership rules, class memberships, and guide links without duplicate cards or write-test rows.",
      "groundTruth": {
        "school_id": "place_north_valley_school",
        "as_of_date": "2026-09-15",
        "students": [
          {
            "person_id": "person_ada_lovelace",
            "display_name": "Ada Lovelace",
            "email": "ada@example.edu",
            "admission_date": "2025-08-18",
            "exit_date": null,
            "age_grade": 7,
            "place_membership_id": "pm_ada_north_valley_student_2026",
            "learning_group_ids": [
              "class_algebra_1_a"
            ],
            "guide_person_ids": [
              "person_katherine_johnson"
            ]
          },
          {
            "person_id": "person_luis_rivera",
            "display_name": "Luis Rivera",
            "email": "luis.rivera@example.edu",
            "admission_date": "2026-08-15",
            "exit_date": null,
            "age_grade": 7,
            "place_membership_id": "pm_luis_rivera_north_valley_student_2026",
            "learning_group_ids": [
              "class_algebra_1_a"
            ],
            "guide_person_ids": [
              "person_katherine_johnson"
            ]
          },
          {
            "person_id": "person_maya_chen",
            "display_name": "Maya Chen",
            "email": "maya.chen@example.edu",
            "admission_date": "2026-08-15",
            "exit_date": null,
            "age_grade": 7,
            "place_membership_id": "pm_maya_chen_north_valley_student_2026",
            "learning_group_ids": [
              "class_algebra_1_a"
            ],
            "guide_person_ids": [
              "person_katherine_johnson"
            ]
          },
          {
            "person_id": "person_nora_patel",
            "display_name": "Nora Patel",
            "email": "nora.patel@example.edu",
            "admission_date": "2026-08-15",
            "exit_date": null,
            "age_grade": 7,
            "place_membership_id": "pm_nora_patel_north_valley_student_2026",
            "learning_group_ids": [
              "class_advisory_7b"
            ],
            "guide_person_ids": [
              "person_katherine_johnson"
            ]
          }
        ]
      },
      "apiOnly": {
        "method": "GET /places/place_north_valley_school/people?asOfDate=2026-09-15&roleKind=student + GET /school_periods/period_fall_2026/active_memberships?asOfDate=2026-09-15",
        "answer": {
          "school_id": "place_north_valley_school",
          "as_of_date": "2026-09-15",
          "students": [
            {
              "person_id": "person_ada_lovelace",
              "display_name": "Ada Lovelace",
              "email": "ada@example.edu",
              "admission_date": "2025-08-18",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_ada_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_luis_rivera",
              "display_name": "Luis Rivera",
              "email": "luis.rivera@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_luis_rivera_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_maya_chen",
              "display_name": "Maya Chen",
              "email": "maya.chen@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_maya_chen_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_nora_patel",
              "display_name": "Nora Patel",
              "email": "nora.patel@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_nora_patel_north_valley_student_2026",
              "learning_group_ids": [
                "class_advisory_7b"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            }
          ]
        }
      },
      "rawDbDictionaryOnly": {
        "method": "WITH active_students AS (\n  SELECT DISTINCT ON (pm.person_id)\n         pm.tenant_id, pm.person_id, pm.membership_id AS place_membership_id\n    FROM alpha.place_membership pm\n   WHERE pm.tenant_id = $1\n     AND pm.place_id = $2\n     AND pm.role_kind = 'student'\n     AND pm.is_time_locatable IS TRUE\n     AND pm.begin_date <= $3::date\n     AND (pm.end_date IS NULL OR $3::date < pm.end_date)\n     AND pm.deleted_at IS NULL\n   ORDER BY pm.person_id, pm.begin_date DESC, pm.membership_id\n),\nstudent_classes AS (\n  SELECT cm.tenant_id, cm.person_id, cm.learning_group_id\n    FROM alpha.class_membership cm\n   WHERE cm.tenant_id = $1\n     AND cm.school_id = $2\n     AND cm.role_kind = 'student'\n     AND cm.is_time_locatable IS TRUE\n     AND cm.begin_date <= $3::date\n     AND (cm.end_date IS NULL OR $3::date < cm.end_date)\n     AND cm.deleted_at IS NULL\n),\nclass_guides AS (\n  SELECT gm.tenant_id, gm.learning_group_id, gm.person_id AS guide_person_id\n    FROM alpha.class_membership gm\n   WHERE gm.tenant_id = $1\n     AND gm.school_id = $2\n     AND gm.role_kind = 'guide'\n     AND gm.is_time_locatable IS TRUE\n     AND gm.begin_date <= $3::date\n     AND (gm.end_date IS NULL OR $3::date < gm.end_date)\n     AND gm.deleted_at IS NULL\n)\nSELECT p.person_id,\n       p.first_name,\n       p.last_name,\n       p.email,\n       p.age_grade,\n       p.admission_date,\n       p.exit_date,\n       s.place_membership_id,\n       COALESCE(array_agg(DISTINCT sc.learning_group_id) FILTER (WHERE sc.learning_group_id IS NOT NULL), '{}'::text[]) AS learning_group_ids,\n       COALESCE(array_agg(DISTINCT cg.guide_person_id) FILTER (WHERE cg.guide_person_id IS NOT NULL), '{}'::text[]) AS guide_person_ids\n  FROM alpha.person p\n  JOIN active_students s ON s.tenant_id = p.tenant_id AND s.person_id = p.person_id\n  LEFT JOIN student_classes sc ON sc.tenant_id = p.tenant_id AND sc.person_id = p.person_id\n  LEFT JOIN class_guides cg ON cg.tenant_id = sc.tenant_id AND cg.learning_group_id = sc.learning_group_id\n WHERE p.tenant_id = $1\n   AND p.deleted_at IS NULL\n   AND COALESCE(p.source_status, 'active') <> 'tobedeleted'\n GROUP BY p.person_id, p.first_name, p.last_name, p.email, p.age_grade, p.admission_date, p.exit_date, s.place_membership_id\n ORDER BY p.last_name, p.first_name, p.person_id",
        "dictionaryRule": "Real student, not every person: API=Student list endpoints use dated role membership plus reality=real by default, not a person table shortcut. Raw=A real student answer joins alpha.person to alpha.place_membership or alpha.class_membership with p.reality='real', role_kind='student', is_time_locatable=true, begin_date <= :asOfDate, and end_date null or after :asOfDate. If a school/place is in the query, the joined place must also have reality='real'. | Point-in-time belonging rows: API=Active membership, staff-assignment, program-participation, alpha-level, and age-grade routes require asOfDate and never offer a currentOnly shortcut. Raw=For alpha.place_membership, alpha.class_membership, alpha.staff_assignment_view, alpha.program_participation_view, alpha.alpha_level_history, and alpha.age_grade_history: begin_date null means excluded from every point-in-time computation. end_date null means still active for asOfDate on or after begin_date. Both null means excluded. | Soft-delete, logical-delete, and tombstone hygiene: API=Ordinary roster reads hide source_status = 'tobedeleted' and Ed-Fi is_deleted=true rows unless the caller requests an authorized audit or retention workflow. Raw=Ordinary raw roster queries add COALESCE(source_status, 'active') <> 'tobedeleted' for OneRoster-backed views and is_deleted=false for Ed-Fi-backed views. Historical audit queries may include tombstones or soft-deleted rows only when the job explicitly asks for retained delete history.",
        "answer": {
          "school_id": "place_north_valley_school",
          "as_of_date": "2026-09-15",
          "students": [
            {
              "person_id": "person_ada_lovelace",
              "display_name": "Ada Lovelace",
              "email": "ada@example.edu",
              "admission_date": "2025-08-18",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_ada_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_luis_rivera",
              "display_name": "Luis Rivera",
              "email": "luis.rivera@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_luis_rivera_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_maya_chen",
              "display_name": "Maya Chen",
              "email": "maya.chen@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_maya_chen_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_nora_patel",
              "display_name": "Nora Patel",
              "email": "nora.patel@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_nora_patel_north_valley_student_2026",
              "learning_group_ids": [
                "class_advisory_7b"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            }
          ]
        }
      },
      "freeChoice": {
        "method": "Free-choice path used person detail/memberships plus guide memberships to reconstruct the same roster from public endpoints.",
        "answer": {
          "school_id": "place_north_valley_school",
          "as_of_date": "2026-09-15",
          "students": [
            {
              "person_id": "person_ada_lovelace",
              "display_name": "Ada Lovelace",
              "email": "ada@example.edu",
              "admission_date": "2025-08-18",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_ada_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_luis_rivera",
              "display_name": "Luis Rivera",
              "email": "luis.rivera@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_luis_rivera_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_maya_chen",
              "display_name": "Maya Chen",
              "email": "maya.chen@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_maya_chen_north_valley_student_2026",
              "learning_group_ids": [
                "class_algebra_1_a"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            },
            {
              "person_id": "person_nora_patel",
              "display_name": "Nora Patel",
              "email": "nora.patel@example.edu",
              "admission_date": "2026-08-15",
              "exit_date": null,
              "age_grade": 7,
              "place_membership_id": "pm_nora_patel_north_valley_student_2026",
              "learning_group_ids": [
                "class_advisory_7b"
              ],
              "guide_person_ids": [
                "person_katherine_johnson"
              ]
            }
          ]
        }
      },
      "converged": true,
      "comparison": {
        "apiMatchesGroundTruth": true,
        "rawMatchesGroundTruth": true,
        "freeChoiceMatchesGroundTruth": true,
        "apiMatchesRaw": true,
        "apiMatchesFreeChoice": true,
        "rawMatchesFreeChoice": true
      }
    },
    {
      "id": "district-nwea-account-boundary",
      "question": "Which NWEA account does North Valley School belong to, and what Brand x Modality grain does it use?",
      "whyTopQuestion": "MAP reporting must group by the district parent as one Brand x Modality NWEA account; a school-level second source of truth would silently combine or split reports.",
      "groundTruth": {
        "school_id": "place_north_valley_school",
        "district_id": "place_timeback_physical_district",
        "district_name": "TimeBack Academy - Physical",
        "nwea_district_id": "nwea-district-physical-001",
        "brand": "alpha",
        "modality": "physical",
        "school_ids": [
          "place_brownsville_timeback",
          "place_north_valley_school"
        ]
      },
      "apiOnly": {
        "method": "GET /places/place_timeback_physical_district/schools",
        "answer": {
          "school_id": "place_north_valley_school",
          "district_id": "place_timeback_physical_district",
          "district_name": "TimeBack Academy - Physical",
          "nwea_district_id": "nwea-district-physical-001",
          "brand": "alpha",
          "modality": "physical",
          "school_ids": [
            "place_brownsville_timeback",
            "place_north_valley_school"
          ]
        }
      },
      "rawDbDictionaryOnly": {
        "method": "WITH selected_school AS (\n  SELECT school.tenant_id,\n         school.place_id AS selected_school_id,\n         school.parent_place_id AS district_id\n    FROM alpha.place school\n   WHERE school.tenant_id = $1\n     AND school.place_id = $2\n     AND school.place_kind = 'school'\n     AND school.reality = 'real'\n     AND school.deleted_at IS NULL\n)\nSELECT child.place_id AS school_id,\n       district.place_id AS district_id,\n       district.name AS district_name,\n       district.nwea_district_id,\n       district.brand,\n       district.modality\n  FROM selected_school selected\n  JOIN alpha.place district\n    ON district.tenant_id = selected.tenant_id\n   AND district.place_id = selected.district_id\n  JOIN alpha.place child\n    ON child.tenant_id = district.tenant_id\n   AND child.parent_place_id = district.place_id\n   AND child.place_kind = 'school'\n   AND child.deleted_at IS NULL\n WHERE district.place_kind = 'district'\n   AND district.reality = 'real'\n   AND district.deleted_at IS NULL\n   AND district.nwea_district_id IS NOT NULL\n   AND child.reality = 'real'\n ORDER BY child.place_id",
        "dictionaryRule": "Tenant scope: API=The API reads tenant_id or tenantId only from the verified bearer token. Raw=Every raw query includes tenant_id = :tenant_id on the public Alpha view and on every joined extension table. Do not read tenant ids from request headers, body fields, or display names. | NWEA account grain: API=For MAP reporting, a district place row is exactly one Brand x Modality NWEA account; a school reads its account through parent_place_id. Raw=Find a school's NWEA account by joining the school place to its parent district place, then read the parent's nwea_district_id plus locked brand and modality tags. Segment is a closed report slice on the place, with mixed reserved for multi-segment district rows. Never store or query a second school-level nwea_district_id.",
        "answer": {
          "school_id": "place_north_valley_school",
          "district_id": "place_timeback_physical_district",
          "district_name": "TimeBack Academy - Physical",
          "nwea_district_id": "nwea-district-physical-001",
          "brand": "alpha",
          "modality": "physical",
          "school_ids": [
            "place_brownsville_timeback",
            "place_north_valley_school"
          ]
        }
      },
      "freeChoice": {
        "method": "Free-choice path listed district places, checked governed NWEA-account tag definitions, then used the district school subcollection.",
        "answer": {
          "school_id": "place_north_valley_school",
          "district_id": "place_timeback_physical_district",
          "district_name": "TimeBack Academy - Physical",
          "nwea_district_id": "nwea-district-physical-001",
          "brand": "alpha",
          "modality": "physical",
          "school_ids": [
            "place_brownsville_timeback",
            "place_north_valley_school"
          ]
        }
      },
      "converged": true,
      "comparison": {
        "apiMatchesGroundTruth": true,
        "rawMatchesGroundTruth": true,
        "freeChoiceMatchesGroundTruth": true,
        "apiMatchesRaw": true,
        "apiMatchesFreeChoice": true,
        "rawMatchesFreeChoice": true
      }
    },
    {
      "id": "active-period-memberships",
      "question": "Which North Valley place and class memberships are active during Fall 2026 as of 2026-09-15?",
      "whyTopQuestion": "Roster operations depend on the shared asOfDate rule and must show the selected school's matching period rows, excluding tombstones, null-begin rows, ended rows, and memberships from other demo schools.",
      "groundTruth": {
        "period_id": "period_fall_2026",
        "as_of_date": "2026-09-15",
        "place_membership_ids": [
          "pm_ada_north_valley_student_2026",
          "pm_grace_north_valley_guardian_2026",
          "pm_katherine_north_valley_guide_2026",
          "pm_luis_rivera_north_valley_student_2026",
          "pm_maya_chen_north_valley_student_2026",
          "pm_nora_patel_north_valley_student_2026"
        ],
        "class_membership_ids": [
          "cm_advisory_katherine_guide_2026",
          "cm_advisory_nora_student_2026",
          "cm_alg1_ada_student_2026",
          "cm_alg1_katherine_guide_2026",
          "cm_alg1_luis_student_2026",
          "cm_alg1_maya_student_2026"
        ]
      },
      "apiOnly": {
        "method": "GET /school_periods/period_fall_2026/active_memberships?asOfDate=2026-09-15",
        "answer": {
          "period_id": "period_fall_2026",
          "as_of_date": "2026-09-15",
          "place_membership_ids": [
            "pm_ada_north_valley_student_2026",
            "pm_grace_north_valley_guardian_2026",
            "pm_katherine_north_valley_guide_2026",
            "pm_luis_rivera_north_valley_student_2026",
            "pm_maya_chen_north_valley_student_2026",
            "pm_nora_patel_north_valley_student_2026"
          ],
          "class_membership_ids": [
            "cm_advisory_katherine_guide_2026",
            "cm_advisory_nora_student_2026",
            "cm_alg1_ada_student_2026",
            "cm_alg1_katherine_guide_2026",
            "cm_alg1_luis_student_2026",
            "cm_alg1_maya_student_2026"
          ]
        }
      },
      "rawDbDictionaryOnly": {
        "method": "SELECT membership_id\n  FROM alpha.place_membership\n WHERE tenant_id = $1\n   AND is_time_locatable IS TRUE\n   AND begin_date <= $2::date\n   AND (end_date IS NULL OR $2::date < end_date)\n   AND place_id = $3\n   AND deleted_at IS NULL\n ORDER BY membership_id\n\nSELECT membership_id\n  FROM alpha.class_membership\n WHERE tenant_id = $1\n   AND is_time_locatable IS TRUE\n   AND begin_date <= $2::date\n   AND (end_date IS NULL OR $2::date < end_date)\n   AND school_id = $3\n   AND deleted_at IS NULL\n ORDER BY membership_id",
        "dictionaryRule": "Point-in-time belonging rows: API=Active membership, staff-assignment, program-participation, alpha-level, and age-grade routes require asOfDate and never offer a currentOnly shortcut. Raw=For alpha.place_membership, alpha.class_membership, alpha.staff_assignment_view, alpha.program_participation_view, alpha.alpha_level_history, and alpha.age_grade_history: begin_date null means excluded from every point-in-time computation. end_date null means still active for asOfDate on or after begin_date. Both null means excluded. | Soft-delete, logical-delete, and tombstone hygiene: API=Ordinary roster reads hide source_status = 'tobedeleted' and Ed-Fi is_deleted=true rows unless the caller requests an authorized audit or retention workflow. Raw=Ordinary raw roster queries add COALESCE(source_status, 'active') <> 'tobedeleted' for OneRoster-backed views and is_deleted=false for Ed-Fi-backed views. Historical audit queries may include tombstones or soft-deleted rows only when the job explicitly asks for retained delete history.",
        "answer": {
          "period_id": "period_fall_2026",
          "as_of_date": "2026-09-15",
          "place_membership_ids": [
            "pm_ada_north_valley_student_2026",
            "pm_grace_north_valley_guardian_2026",
            "pm_katherine_north_valley_guide_2026",
            "pm_luis_rivera_north_valley_student_2026",
            "pm_maya_chen_north_valley_student_2026",
            "pm_nora_patel_north_valley_student_2026"
          ],
          "class_membership_ids": [
            "cm_advisory_katherine_guide_2026",
            "cm_advisory_nora_student_2026",
            "cm_alg1_ada_student_2026",
            "cm_alg1_katherine_guide_2026",
            "cm_alg1_luis_student_2026",
            "cm_alg1_maya_student_2026"
          ]
        }
      },
      "freeChoice": {
        "method": "Free-choice path listed /place_memberships?asOfDate=2026-09-15 and /class_memberships?asOfDate=2026-09-15, then selected the documented North Valley ids.",
        "answer": {
          "period_id": "period_fall_2026",
          "as_of_date": "2026-09-15",
          "place_membership_ids": [
            "pm_ada_north_valley_student_2026",
            "pm_grace_north_valley_guardian_2026",
            "pm_katherine_north_valley_guide_2026",
            "pm_luis_rivera_north_valley_student_2026",
            "pm_maya_chen_north_valley_student_2026",
            "pm_nora_patel_north_valley_student_2026"
          ],
          "class_membership_ids": [
            "cm_advisory_katherine_guide_2026",
            "cm_advisory_nora_student_2026",
            "cm_alg1_ada_student_2026",
            "cm_alg1_katherine_guide_2026",
            "cm_alg1_luis_student_2026",
            "cm_alg1_maya_student_2026"
          ]
        }
      },
      "converged": true,
      "comparison": {
        "apiMatchesGroundTruth": true,
        "rawMatchesGroundTruth": true,
        "freeChoiceMatchesGroundTruth": true,
        "apiMatchesRaw": true,
        "apiMatchesFreeChoice": true,
        "rawMatchesFreeChoice": true
      }
    },
    {
      "id": "app-credential-redaction",
      "question": "Which app credential references exist for Ada, and does the surface avoid leaking secret_ref?",
      "whyTopQuestion": "People & Orgs owns operational app credential references, but the secret value must never appear in API answers, tags, or ordinary roster rows.",
      "groundTruth": {
        "student_sourced_id": "person_ada_lovelace",
        "credentials": [
          {
            "app_id": "ixl_math",
            "has_credential": true,
            "last_rotated_at": "2026-11-01T09:00:00.000Z",
            "secret_ref_returned": false
          }
        ]
      },
      "apiOnly": {
        "method": "GET /app_credentials?filter=studentSourcedId==person_ada_lovelace",
        "answer": {
          "student_sourced_id": "person_ada_lovelace",
          "credentials": [
            {
              "app_id": "ixl_math",
              "has_credential": true,
              "last_rotated_at": "2026-11-01T09:00:00.000Z",
              "secret_ref_returned": false
            }
          ]
        }
      },
      "rawDbDictionaryOnly": {
        "method": "SELECT app_id,\n       secret_ref IS NOT NULL AS has_credential,\n       last_rotated_at\n  FROM alpha.app_credential\n WHERE tenant_id = $1\n   AND student_sourced_id = $2\n   AND deleted_at IS NULL\n ORDER BY app_id",
        "dictionaryRule": "Sensitive profile scope: API=Ordinary person and place lists do not include birth date, race or ethnicity, birth location, residence status, vendor profile usernames, or credential details. Raw=Do not join alpha.person_sensitive_profile or alpha.app_credential in ordinary roster queries. Query those objects only for a job that has explicit sensitive-profile or credential-status scope and relationship evidence.",
        "answer": {
          "student_sourced_id": "person_ada_lovelace",
          "credentials": [
            {
              "app_id": "ixl_math",
              "has_credential": true,
              "last_rotated_at": "2026-11-01T09:00:00.000Z",
              "secret_ref_returned": false
            }
          ]
        }
      },
      "freeChoice": {
        "method": "GET /app_credentials/person_ada_lovelace/ixl_math",
        "answer": {
          "student_sourced_id": "person_ada_lovelace",
          "credentials": [
            {
              "app_id": "ixl_math",
              "has_credential": true,
              "last_rotated_at": "2026-11-01T09:00:00.000Z",
              "secret_ref_returned": false
            }
          ]
        }
      },
      "converged": true,
      "comparison": {
        "apiMatchesGroundTruth": true,
        "rawMatchesGroundTruth": true,
        "freeChoiceMatchesGroundTruth": true,
        "apiMatchesRaw": true,
        "apiMatchesFreeChoice": true,
        "rawMatchesFreeChoice": true
      }
    }
  ]
}
