Read MAP term scores
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-scores?subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
TimeBack Platform · Alpha surface
Use this API to read and write settled outcomes, MAP scores, Growth X, report cards, transcripts, gate passes, working grade, advancement, the student's four-state knowledge graph, track position, course progress, grade-level progress, next-task answer, awarded XP ledger, and content-effectiveness read models. Results is not an event stream and not a content library: Events feed it, Content describes the blank work, Curriculum defines shared skills and tracks, Analytics supplies evidence, and Results records what was settled for one student.
export RESULTS_BASE_URL="https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api"
export RESULTS_TOKEN=$(curl -sS -X POST "$RESULTS_BASE_URL/dev/mint?tenantId=demo" | jq -r .token)
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/map-quadrants?normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
Quickstart
The implementation base URL is https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api, and the driver exposes that value through the RESULTS_BASE_URL environment variable. Demo access uses POST /dev/mint?tenantId=demo; real tenants use operator-minted JWTs in RESULTS_REVIEWER_JWT or the customer credential channel.
export RESULTS_BASE_URL="https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/implementation/api"
export RESULTS_TOKEN=$(curl -sS -X POST "$RESULTS_BASE_URL/dev/mint?tenantId=demo" | jq -r .token)
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/results?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-over-time?subject=math&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-over-time?subject=math&normsSet=2020" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/next-task?studentId=stu_timeback_10017&subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/transcript-results?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/xp-ledger" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/course-transcripts?studentId=stu_timeback_10017&includeSourceEvidence=true" \
-H "Authorization: Bearer $RESULTS_TOKEN"
One-student report
These calls are the complete one-student Results read path for the customer-eval job, with the adjacent MAP calculator reads a GOALS or Learning Report client needs when the user starts from a percentile target. The linked endpoint cards below each include a Stripe-style request table, cURL, example response, response-field table, and data-dictionary plus architecture provenance.
| Report part | Endpoint | Fields to display |
|---|---|---|
| MAP RIT per subject | GET /alpha/results/v1/students/{studentId}/map-scores | Read rit, percentile, norms_set, and test-of-record score identity. |
| Growth X per growth window | GET /alpha/results/v1/students/{studentId}/growth-windows | Read observed_growth, projected_growth, growth_x, and on_track_for_growth_x_target. |
| Percentile target conversion | GET /alpha/results/v1/map-percentile-translations | Read output_rit or output_percentile under one norms_set without a client norms table. |
| R90/RIT90 norm point | GET /alpha/results/v1/map-r90-norm-points | Read the one surface-owned R90 row version; do not keep a copied R90 table. |
| Mastery state per KC | GET /alpha/results/v1/students/{studentId}/kc-state | Read initial_mastery, current_retention, durable_mastery, fluency_state, next_due_at, and evidence_count. |
| Working grade | GET /alpha/results/v1/students/{studentId}/working-grade | Read working_grade, baseline_effective_grade, sy_start_working_grade, and formula_version. |
| Report-card entries | GET /alpha/results/v1/students/{studentId}/report-card | Read grade_value, narrative, reporting_period_id, status, begin_date, end_date, and is_time_locatable. |
| Recent gate passes | GET /alpha/results/v1/students/{studentId}/gate-passes | Read gate_status, next_eligible_at, attempt_count, and policy_version. |
| Awarded-XP history | GET /alpha/results/v1/students/{studentId}/xp-ledger | Read awarded_xp, award_reason, result_record_id, content_id, policy, evidence, and reversals. |
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-scores?subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/growth-windows?subject=math&growthWindow=fall_to_spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-percentile-translations?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025&translationDirection=percentile_to_rit&inputPercentile=99" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-r90-norm-points?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/kc-state?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/course-progress?subject=math&courseId=course_math_grade_7_main&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/grade-level-progress?subject=math&gradeLevel=7&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/working-grade?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/report-card?asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/gate-passes?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/xp-ledger" \
-H "Authorization: Bearer $RESULTS_TOKEN"
Authentication
Every non-demo-mint request sends the Authorization: Bearer <jwt> header; the token carries the tenant boundary and scopes such as results:read, results:write, results:adapter, and optional claim narrowing such as studentIds, guardianOf, schoolSourcedIds, or classSourcedIds claim filters. Tenant routing comes from the token; do not put tenant ids in URLs or headers. Mutable reads and correction responses expose ETag through Access-Control-Expose-Headers, so browser clients can use the same If-Match correction contract as server clients.
| Part | Required | Meaning | Trace |
|---|---|---|---|
Authorization | Yes except demo mint | Bearer token signed by the platform-wide signing secret. | ritd-023-axis-auth-shape |
tenant_id / tenantId claim | Yes | All reads and writes are scoped to this tenant. Row tenant and token tenant must match. | ritd-026-axis-tenant-routing |
results:read | Read endpoints | Read result records, mastery state, MAP scores, and report views within caller scope. | ritd-023-axis-auth-shape |
results:write | Write endpoints | Create or correct canonical result records. | ritd-018-axis-write-granularity |
results:adapter | Imports | Run named source-adapter imports. | ritd-003-canonical-result-shape |
results:audit | Evidence/audit reads | Read authorized source evidence such as all MAP sittings or Ed-Fi canonical-record provenance; ordinary reads stay typed and filtered. | ritd-028-axis-privacy-retention |
Errors
Failures return the application/problem+json media type; type is stable enough for code, title is stable enough for logs, and fieldErrors points to bad request fields when validation fails.
{
"type": "https://platform.timeback.com/problems/results/validation_failed",
"code": "results:validation_failed",
"title": "Validation failed",
"status": 400,
"detail": "normsSet must be one of 2020 or 2025.",
"fieldErrors": [
{
"field": "normsSet",
"message": "Allowed values: 2020, 2025."
}
],
"requestId": "req_results_01hx",
"traceId": "trc_results_01hx"
}
| Code | Status | When it appears |
|---|---|---|
results:authentication_required | 401 | Missing, expired, or malformed Authorization bearer token. |
results:authorization_failed | 403 | Valid token, but missing scope or outside allowed student/guardian/school claims. |
results:validation_failed | 400 | A field, query parameter, enum, date, or body value is invalid. |
results:unsupported_parameter | 400 | Unknown query parameter, unsupported sort, or unsupported filter. |
results:not_found | 404 | The requested Results row is not visible in the caller's tenant/scope. |
results:precondition_required | 428 | PATCH requires If-Match; every state-changing write, including corrections, also requires Idempotency-Key. |
results:precondition_failed | 412 | If-Match did not match the current ETag. |
results:idempotency_conflict | 409 | Idempotency-Key was reused with a different operation or request body. |
results:tenant_mismatch | 403 | The request tenant, row tenant, and JWT tenant claim do not match. |
results:adapter_rejected | 422 | A producer row could not be normalized into the canonical Results shape. |
results:rate_limited | 429 | Too many requests; back off and retry. |
results:server_error | 500 | Unexpected platform error. The response includes requestId and traceId. |
Pagination and polling
modifiedSinceList endpoints use cursor pagination and optional modifiedSince polling. Polling is the eventing model for this surface; webhooks are explicitly deferred. Treat equal modified_at timestamps as cursor-sensitive and keep the returned cursor with the timestamp.
limit is 1 through 100. cursor is the opaque value returned by the previous list response.
modifiedSince is a UTC timestamp. Responses include modified_at where polling applies.
List responses return object=list, data[], nextCursor, hasMore, and provenance links.
{
"object": "list",
"data": [
{
"tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"norms_set": "2025",
"growth_window": "fall_to_spring",
"observed_growth": 14,
"projected_growth": 7,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
Migration contract
Migration app, source adapters, and operators importing raw TimeBack Production or NWEA MAP rows. This endpoint is the live migration gate: callers send source-shaped production data, and Results does the normalization before any row becomes a public Alpha answer.
The caller sends source-shaped records. The Results surface normalizes server-side: student identity, subject aliases, term parsing, NWEA test-of-record, soft-delete handling, norms, Growth X, goal-strand unpivot, mastery state, XP awards, and report-ready rows. If the caller has to compute any of those before import, the surface leaked.
For dry_run=false, success means accepted_count > 0 and every accepted source row has materialized readable rows through the documented Results views before the response is returned. A batch that writes evidence but leaves zero public rows is results:adapter_rejected (422), not success. A mastery_gate row with no parseable grade token is accepted but excluded from HMG/working-grade derivation with a diagnostics[].mastery_skipped_reason value; mixed batches must not fail because one such row is non-derivable.
A new successful import uses HTTP 202 for accepted work. An idempotent replay of the same accepted import uses HTTP 200 for the replayed answer. Validation failures return the results:validation_failed problem with HTTP 400 for bad fields. Adapter rejections return the results:adapter_rejected problem with HTTP 422 for rejected source rows. A failure never returns HTTP 200.
studentId is a supported TimeBack student-id filter on reconciliation. It narrows old-vs-Alpha rows to one student and must not return results:unsupported_parameter merely because it is present. Example: /alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x&subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025
| sourceShape | Source row | Required evidence | Materializes to | Rejected when |
|---|---|---|---|---|
timeback_assessment_result | Raw TimeBack Production assessment/result row. | raw producer student identifier exactly as it appears in the TimeBack reporting row and resolvable through People & Orgs source identity producer assessment/result id or attempt id subject or source subject alias covered by the alpha.subject registry occurred/completed timestamp or source term evidence score, response, or outcome evidence | alpha.result_recordalpha.result_source_evidencealpha.result_kc_evidence when KC evidence is presentalpha.student_kc_state recompute when mastery evidence is presentalpha.xp_ledger when award policy applies | The row is already reduced to only canonical Results fields, lacks producer identity, the producer student id is genuinely absent from People & Orgs source identity, or the row would require caller-side mastery/XP math. |
nwea_map_assessment_result | Raw NWEA MAP CDF AssessmentResults row with NWEA field names. | StudentID or Student_StateID exactly as NWEA sent it and resolvable through People & Orgs source identity Subject covered by the alpha.subject registry or explicit exclusion/proxy rule TermName or equivalent term field TestID or equivalent sitting id TestRITScore TestStartDate/TestStartTime or sitting timestamp NormsReferenceData when normed outputs are requested | alpha.map_sittingalpha.map_scorealpha.map_current_scorealpha.map_goal_strandalpha.map_growth_windowalpha.map_normed_resultalpha.map_effective_gradealpha.map_longitudinal_pointalpha.map_99_levelMAP report-ready views | The row requires caller-side NWEA dedupe, goal-column unpivot, term parsing, norms switching, Growth X calculation, TimeBack identity replacement, or a supersede sweep outside the row's student/subject/term scope. |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
source_adapter_id | body | TEXT | Required | Named Results adapter that owns normalization and write routing for this producer. Constraints: Must reference an active alpha.source_adapter with adapter authority for the caller. | adapter_timeback_migration | source |
producer_batch_id | body | TEXT | Required | Producer's stable batch/export id used with Idempotency-Key and source evidence. Constraints: 1 to 255 visible characters; unique enough with source_adapter_id to identify a producer batch. | timeback-prod-results-2026-06-08T15 | source |
sourceShape | body | TEXT enum | Required | Names the source-shaped record family in records[]. Constraints: Must be one of the documented raw_import_source_shape values; one import call carries one shape. | timeback_assessment_result | source |
records | body | JSONB array | Required | Array of raw producer rows, not pre-normalized canonical Results rows. Constraints: 1 through the endpoint's configured batch limit. Each element must be a JSON object with producer field names preserved, including the producer student identifier exactly as sent by the source. | [{"studentId":"tb-prod-raw-student-981234","assessmentId":"factoring-gate","scorePercent":92.5}] | source |
dry_run | body | BOOLEAN | Optional; defaults to false | Validate and normalize without writing rows. Constraints: When true, response status is 200 and materialized ids are empty by design; when false, zero materialized rows is not a success. | false | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
import_id | body | TEXT | Returned on success | Stable id for this accepted import or dry run. | import_timeback_prod_results_2026_06_08T15 | source |
status | body | TEXT enum | Returned on success | Import result state. | accepted | source |
accepted_count | body | INTEGER | Returned on success | Number of source rows accepted and materialized when dry_run=false. | 1733 | source |
materialized | body | JSONB object | Returned on success | Counts and ids of readable rows now visible through Results public objects. | {"result_record":1733,"student_kc_state":812,"xp_ledger":1590} | source |
source_evidence_ids | body | JSONB array | Returned on success | Source evidence rows written for audit and reconciliation. | ["import_timeback_prod_results_2026_06_08T15_1"] | source |
reconciliation_url | body | TEXT URL | Returned on success | Typed one-call check for this import. May include studentId for a single-student cutover check. | /alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x | source |
curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/imports" \
-H "Authorization: Bearer $RESULTS_TOKEN" \
-H "Idempotency-Key: timeback-prod-results-2026-06-08T15" \
-H "Content-Type: application/json" \
--data '{"source_adapter_id":"adapter_timeback_migration","producer_batch_id":"timeback-prod-results-2026-06-08T15","sourceShape":"timeback_assessment_result","records":[{"studentId":"stu_timeback_10017","assessmentId":"factoring-gate","subject":"Math","scorePercent":92.5,"completedAt":"2026-06-03T18:55:00Z"}]}'
curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/imports" \
-H "Authorization: Bearer $RESULTS_TOKEN" \
-H "Idempotency-Key: nwea-map-spring-2026-account-physical" \
-H "Content-Type: application/json" \
--data '{"source_adapter_id":"adapter_nwea_map","producer_batch_id":"nwea-cdf-spring-2026","sourceShape":"nwea_map_assessment_result","records":[{"StudentID":"NWEA-812381","Student_StateID":"stu_timeback_10017","Subject":"Mathematics","TermName":"Spring 2025-2026","TestID":"MAP-456","TestRITScore":214,"NormsReferenceData":"2025"}]}'
Workflows
An LLM or developer starts with no credentials and reads a real report row.
RESULTS_BASE_URL to the implementation URL.tenantId=demo and store the token as RESULTS_TOKEN.links.architecture in the response when a field is unfamiliar.Show a teacher the settled outcomes for one student.
result_kind, outcome_status, score_percent, and source evidence.Produce quadrant, growth-over-time, or norms-isolation reports without client math.
normsSet=2020 or normsSet=2025.Show the final grade and earned credits for one student, course, and term.
/alpha/results/v1/transcript-results with studentId, courseId, canonicalTermId, and includeSourceEvidence=false for ordinary display.final_grade, final_numeric_grade, earned_credits, attempted_credits, and course_attempt_result from the response.includeSourceEvidence=true only for an authorized audit view; the surface resolves descriptors and source precedence.Show what one student currently knows on the curriculum graph.
initial_mastery, current_retention, durable_mastery, fluency_state, next_due_at, and evidence_count as surface-owned values.kc_id to Curriculum for shared KC definitions.Render a next lesson, review, practice, or gate retry without rebuilding the scheduler.
/alpha/results/v1/next-task with studentId, subject, and asOfDate.task_type and the typed task_ref_type/task_ref_id returned by the surface.source_state_refs for explainability.Show track position, course/grade progress, awarded XP, and whether content is working.
current_track_level_id and current_segment_id.awarded_xp history; do not compute XP from expected_xp in the app.validated_by_count, failed_by_count, and effectiveness_rate.Let migration or a trusted adapter write raw TimeBack/NWEA rows without leaking platform logic into the caller.
source_adapter_id, producer_batch_id, sourceShape, records, and optional dry_run.sourceShape=timeback_assessment_result for raw TimeBack Production assessment/result rows, or sourceShape=nwea_map_assessment_result for raw NWEA MAP CDF AssessmentResults rows.results:validation_failed as HTTP 400 and results:adapter_rejected as HTTP 422; a successful dry_run=false import must materialize readable Results rows.Prove TimeBack Production and the Alpha surface return the same student-lived keys.
Endpoint reference
Every endpoint below is implementation-facing. Request and response tables are inline, and every object/table links back to the data dictionary and architecture ITDs.
Start
Create a short-lived JWT for the public demo tenant. This endpoint is intentionally unauthenticated and is restricted to tenantId=demo.
curl -sS -X POST "$RESULTS_BASE_URL/dev/mint?tenantId=demo"
{
"tenantId": "demo",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.demo",
"expiresIn": 3600
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
tenantId | query | TEXT enum | Required | Must be demo. | demo |
Result Records
Return settled Results records the caller is authorized to see, across students or narrowed by query filters.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/result-records?studentId=stu_timeback_10017&subject=math&modifiedSince=2026-06-03T18:55:00Z" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"result_kind": "self_paced",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"score_percent": 93.2,
"outcome_status": "fully_graded",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | query | TEXT | Required on student sub-collection routes. | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
result_record_id | body | UUID | Required. | Stable Results identifier for this settled outcome. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
result_kind | body | TEXT enum | Required. | What kind of durable outcome this row represents. | self_paced | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Nullable; required when the outcome belongs to a term. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
score_percent | body | NUMERIC(5,2) | Nullable. | Normalized percent score used for mastery and report calculations. | 93.2 | source |
outcome_status | body | TEXT enum | Required. | Plain status for whether the outcome is submitted, graded, exempt, missing, or voided. | fully_graded | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
Result Records
Return one durable outcome with source evidence links and data-dictionary provenance.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/result-records/018f4b4e-9c7a-7d3d-8b2f-2f673a000101" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"result_kind": "self_paced",
"score_percent": 93.2,
"canonical_response": {
"RESPONSE": "B"
},
"is_correct": true,
"source_adapter_id": "adapter_qti_platform",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
resultRecordId | path | UUID | Required | The Alpha result_record_id. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
result_record_id | body | UUID | Required. | Stable Results identifier for this settled outcome. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
result_kind | body | TEXT enum | Required. | What kind of durable outcome this row represents. | self_paced | source |
score_percent | body | NUMERIC(5,2) | Nullable. | Normalized percent score used for mastery and report calculations. | 93.2 | source |
canonical_response | body | JSONB | Nullable. | QTI EAP5/EAP6 canonical response payload when item-level response evidence exists, plus adapter diagnostics when an accepted raw row is excluded from a derived measure. | {"RESPONSE":"B"} | source |
is_correct | body | BOOLEAN | Nullable. | Canonical correctness flag for item-level evidence. | true | source |
source_adapter_id | body | TEXT | Required. | Named adapter or scorer that wrote this row. | adapter_qti_platform | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
Result Records
Read one student's settled outcomes without joining MAP, OneRoster, QTI, or external producer tables in the client.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/results?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"result_kind": "self_paced",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"score_percent": 93.2,
"outcome_status": "fully_graded",
"mastery_cutoff_met": true,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
result_record_id | body | UUID | Required. | Stable Results identifier for this settled outcome. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | source |
result_kind | body | TEXT enum | Required. | What kind of durable outcome this row represents. | self_paced | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Nullable; required when the outcome belongs to a term. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
score_percent | body | NUMERIC(5,2) | Nullable. | Normalized percent score used for mastery and report calculations. | 93.2 | source |
outcome_status | body | TEXT enum | Required. | Plain status for whether the outcome is submitted, graded, exempt, missing, or voided. | fully_graded | source |
mastery_cutoff_met | body | BOOLEAN | Nullable. | Whether this result met the active mastery cutoff policy when the row was settled. | true | source |
Student Knowledge
Return the Results-owned mastery overlay for one student. The client reads mastery state; it does not recompute evidence or decay.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/kc-state?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"kc_id": "kc_linear_equations",
"subject_id": "math",
"initial_mastery": 0.94,
"current_retention": 0.88,
"durable_mastery": 0.81,
"fluency_state": "building_speed",
"next_due_at": "2026-03-28T14:30:00Z",
"evidence_count": 8,
"retention_model_ref": "retention_fire_v2026_01",
"effective_at": "2026-03-21T14:31:00Z",
"is_time_locatable": true,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-kc-state",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-kc-state",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
kc_id | body | TEXT | Required. | Curriculum KC id for this student overlay row. | kc_linear_equations | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
initial_mastery | body | NUMERIC(6,5) | Required. | Acquisition-state value after initial learning and acquisition-gate evidence for this KC. | 0.94 | source |
current_retention | body | NUMERIC(6,5) | Required. | Current retained-knowledge value after the active retention model and time decay. | 0.88 | source |
durable_mastery | body | NUMERIC(6,5) | Required. | Longer-run mastery belief after repeated evidence and retention checks. | 0.81 | source |
fluency_state | body | TEXT enum | Required. | Accuracy/speed/automaticity state for practice on an already-acquired KC. | building_speed | source |
next_due_at | body | TIMESTAMPTZ | Nullable. | When the surface believes this KC next needs review or practice. | 2026-03-28T14:30:00Z | source |
evidence_count | body | INTEGER | Required. | Number of evidence rows currently contributing to this state. | 8 | source |
retention_model_ref | body | TEXT | Required. | Policy/config id for the retention model used. | retention_fire_v2026_01 | source |
effective_at | body | TIMESTAMPTZ | Required. | When this materialized state became effective. | 2026-03-21T14:31:00Z | source |
is_time_locatable | body | BOOLEAN | Required on effective-dated rows. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. | true | source |
Student Knowledge
Return one student's current position on each Curriculum track. Switching tracks closes the old state row and creates a new one; clients never copy track definitions.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/track-state?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"track_id": "track_common_core_math_k12",
"current_track_level_id": "track_level_math_7",
"current_segment_id": "segment_linear_equations",
"placement_evidence": {
"source": "grade_level_gate",
"result_record_id": "018f..."
},
"status": "active",
"switched_to_track_id": "track_sat_math_600_800",
"effective_at": "2026-03-21T14:31:00Z",
"is_time_locatable": true,
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-track-state",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-track-state",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
track_id | body | TEXT | Required. | Curriculum track this state belongs to. | track_common_core_math_k12 | source |
current_track_level_id | body | TEXT | Required for active rows. | Curriculum track level where the student currently sits. | track_level_math_7 | source |
current_segment_id | body | TEXT | Nullable. | Current Curriculum track_level_segment inside the track level. | segment_linear_equations | source |
placement_evidence | body | JSONB | Required. | Structured references to diagnostic, MAP, gate, or migration evidence that placed the student here. | {"source":"grade_level_gate","result_record_id":"018f..."} | source |
status | body | TEXT enum | Required. | Lifecycle state of the student's relationship to this track. | active | source |
switched_to_track_id | body | TEXT | Nullable; required when status is switched. | Curriculum track the student moved to when this row is closed by a switch. | track_sat_math_600_800 | source |
effective_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this track-state version became effective. | 2026-03-21T14:31:00Z | source |
is_time_locatable | body | BOOLEAN | Required on effective-dated rows. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. | true | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
Student Knowledge
Return one student's course progress answer with XP remaining before percent complete, policy, and Analytics/Curriculum evidence refs. Apps do not join Analytics, Curriculum, Events, or MAP/RIT/R90 to compute this.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/course-progress?subject=math&courseId=course_math_grade_7_main&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"course_id": "course_math_grade_7_main",
"course_title": "Math Grade 7 Main Sequence",
"grade_level": 7,
"as_of_date": "2026-06-03",
"xp_remaining": 120,
"total_xp": 400,
"percent_complete": 70,
"progress_source_kind": "app_reported_percent",
"evidence_kind": "caliper_course_progress_percent",
"source_analytics_rollup_refs": [
"alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
],
"source_curriculum_refs": [
"alpha.curriculum_course:course_math_grade_7_main"
],
"policy_ref": "alpha.policy.results.progress.v2026-06-16",
"null_reason": "source_missing",
"computed_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-course-progress",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-course-progress",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
courseId | query | TEXT | Required on course-transcript detail routes; optional filter on transcript lists. | Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table. | course_algebra_1 | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
course_id | body | TEXT | Required. | Curriculum course id whose progress is being answered. | course_math_grade_7_main | source |
course_title | body | TEXT | Nullable display field. | Course display title copied only as a display snapshot for this progress answer. | Math Grade 7 Main Sequence | source |
grade_level | body | NUMERIC(5,2) | Nullable. | Working grade level associated with this course progress row. | 7 | source |
as_of_date | body | DATE | Required. | Date the progress answer is valid for. | 2026-06-03 | source |
xp_remaining | body | NUMERIC(14,3) | Nullable when evidence is missing. | Expected XP remaining in this course after applying the selected progress evidence. | 120 | source |
total_xp | body | NUMERIC(14,3) | Nullable when Curriculum denominator evidence is missing. | Total expected XP for the course denominator. | 400 | source |
percent_complete | body | NUMERIC(7,3) | Nullable when progress cannot be answered. | Course percent complete shown to apps and reports. | 70 | source |
progress_source_kind | body | TEXT enum | Required for populated rows. | Which precedence branch produced the progress answer. | app_reported_percent | source |
evidence_kind | body | TEXT enum | Required for populated rows. | More specific evidence family behind progress_source_kind. | caliper_course_progress_percent | source |
source_analytics_rollup_refs | body | JSONB array | Required; empty only when no Analytics evidence applies. | Structured references to Analytics rollup rows used as evidence. | ["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"] | source |
source_curriculum_refs | body | JSONB array | Required. | Structured references to Curriculum course/expected-XP denominator evidence. | ["alpha.curriculum_course:course_math_grade_7_main"] | source |
policy_ref | body | TEXT | Required. | Named Results progress policy used for evidence precedence, denominator handling, and percent derivation. | alpha.policy.results.progress.v2026-06-16 | source |
null_reason | body | TEXT enum | Nullable. | Why progress fields are null or unknown. | source_missing | source |
computed_at | body | TIMESTAMPTZ | Required. | UTC time Results produced this progress answer. | 2026-06-03T18:55:00Z | source |
Student Knowledge
Return one student's grade-level remaining XP, main-sequence denominator, percent complete, and calendar pacing. The grade denominator is the main sequence; remediation and hole-filling do not expand it.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/grade-level-progress?subject=math&gradeLevel=7&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"grade_level": 7,
"working_grade": 7.4,
"as_of_date": "2026-06-03",
"active_path_state": "in_main_sequence",
"grade_level_xp_remaining": 160,
"main_sequence_total_xp": 500,
"percent_complete": 68,
"elapsed_school_year_percent": 82,
"pacing_status": "behind_pace",
"source_course_progress_refs": [
"alpha.student_course_progress:stu_timeback_10017|math|course_math_grade_7_main|2026-06-03"
],
"source_analytics_rollup_refs": [
"alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
],
"source_calendar_refs": [
"alpha.school_calendar:school_north_valley:2026-06-03"
],
"policy_ref": "alpha.policy.results.progress.v2026-06-16",
"null_reason": "source_missing",
"computed_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-grade-level-progress",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-student-grade-level-progress",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
gradeLevel | query | NUMERIC(4,1) | Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads. | Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent. | 7 | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
grade_level | body | NUMERIC(5,2) | Required. | Grade level whose main-sequence progress is being answered. | 7 | source |
working_grade | body | NUMERIC(5,2) | Nullable. | Working grade input used to identify the active grade path. | 7.4 | source |
as_of_date | body | DATE | Required. | Date the grade-level progress answer is valid for. | 2026-06-03 | source |
active_path_state | body | TEXT enum | Required. | Where the student is relative to the grade-level main sequence. | in_main_sequence | source |
grade_level_xp_remaining | body | NUMERIC(14,3) | Nullable when evidence is missing. | Active-path XP remaining for this grade-level answer. | 160 | source |
main_sequence_total_xp | body | NUMERIC(14,3) | Nullable when Curriculum denominator evidence is missing. | Total expected XP for the grade's main-course sequence. | 500 | source |
percent_complete | body | NUMERIC(7,3) | Nullable when progress cannot be answered. | Grade-level percent complete over the main sequence denominator. | 68 | source |
elapsed_school_year_percent | body | NUMERIC(7,3) | Nullable when calendar evidence is missing. | Percent of the relevant school-year calendar elapsed as of as_of_date. | 82 | source |
pacing_status | body | TEXT enum | Required. | Pace of actual grade-level progress relative to elapsed school-year percent. | behind_pace | source |
source_course_progress_refs | body | JSONB array | Required. | Structured references to course-progress rows aggregated into this grade answer. | ["alpha.student_course_progress:stu_timeback_10017|math|course_math_grade_7_main|2026-06-03"] | source |
source_analytics_rollup_refs | body | JSONB array | Required; empty only when no Analytics evidence applies. | Structured references to Analytics rollup rows used by contributing course-progress rows. | ["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"] | source |
source_calendar_refs | body | JSONB array | Required; empty only when pacing is unknown. | Structured references to calendar/enrollment rows used for elapsed_school_year_percent. | ["alpha.school_calendar:school_north_valley:2026-06-03"] | source |
policy_ref | body | TEXT | Required. | Named Results progress policy used for active-path remaining XP, denominator choice, and pacing thresholds. | alpha.policy.results.progress.v2026-06-16 | source |
null_reason | body | TEXT enum | Nullable. | Why progress or pacing fields are null or unknown. | source_missing | source |
computed_at | body | TIMESTAMPTZ | Required. | UTC time Results produced this grade-level progress answer. | 2026-06-03T18:55:00Z | source |
Student Knowledge
Return the one surface-owned next-task decision for a student, subject, and date. Apps render the typed task reference; they never rank lessons, reviews, practice, or gate retries themselves.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/next-task?studentId=stu_timeback_10017&subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"as_of_date": "2026-06-05",
"task_type": "review",
"task_ref_type": "course_component_member",
"task_ref_id": "member_review_linear_equations",
"reason": "retention_due",
"due_at": "2026-06-05T15:00:00Z",
"source_state_refs": [
{
"type": "student_kc_state",
"kc_id": "kc_linear_equations",
"effective_at": "2026-06-05T14:30:00Z"
}
],
"policy_version": "policy_2026_06_03",
"null_reason": "missing_policy_config",
"computed_at": "2026-06-05T14:31:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-next-task",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | query | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
as_of_date | body | DATE | Required. | Point-in-time date for the next-task decision. | 2026-06-05 | source |
task_type | body | TEXT enum | Required. | Kind of task the surface selected. | review | source |
task_ref_type | body | TEXT enum | Required unless task_type is no_task. | Type of object the selected task points at. | course_component_member | source |
task_ref_id | body | TEXT | Nullable; required unless task_type is no_task. | Identifier of the task target named by task_ref_type. | member_review_linear_equations | source |
reason | body | TEXT enum | Required. | Why the surface selected this task. | retention_due | source |
due_at | body | TIMESTAMPTZ | Nullable. | When the selected task is due or should be shown. | 2026-06-05T15:00:00Z | source |
source_state_refs | body | JSONB | Required. | Structured references to KC state, track state, gate pass, and policy rows used for this decision. | [{"type":"student_kc_state","kc_id":"kc_linear_equations","effective_at":"2026-06-05T14:30:00Z"}] | source |
policy_version | body | TEXT | Required. | Policy/config version used by next-task selection. | policy_2026_06_03 | source |
null_reason | body | TEXT enum | Nullable; required when task_type is no_task. | Why no task is available or why selection is blocked. | missing_policy_config | source |
computed_at | body | TIMESTAMPTZ | Required. | UTC timestamp when the surface produced this answer. | 2026-06-05T14:31:00Z | source |
XP
Return append-only XP ledger rows for one student. Results calculates awards, discounts, penalties, and reversals from settled attempts and policy; apps display the ledger.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/xp-ledger" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"xp_award_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"content_id": "content_factoring_gate_v3",
"expected_xp_ref": {
"content_id": "content_factoring_gate_v3",
"expected_xp_version": "2026-06-01"
},
"awarded_xp": 42.5,
"award_reason": "accuracy_award",
"calculation_policy_ref": "xp_award_formula_v2026_06",
"source_evidence_refs": [
{
"type": "result_record",
"id": "018f..."
},
{
"type": "event_summary",
"id": "evt_sum_..."
}
],
"created_at": "2026-03-21T14:31:00Z",
"reversal_of_xp_award_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a004000",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-xp-ledger",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-xp-ledger",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
xp_award_id | body | UUID | Required. | Stable id for this XP ledger row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a004001 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
result_record_id | body | UUID | Nullable; required for attempt-based awards. | Settled result that triggered this XP award. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | source |
content_id | body | TEXT | Nullable. | Content item whose expected_xp was used. | content_factoring_gate_v3 | source |
expected_xp_ref | body | JSONB | Required. | Structured reference to the Content expected_xp source and version used in the calculation. | {"content_id":"content_factoring_gate_v3","expected_xp_version":"2026-06-01"} | source |
awarded_xp | body | NUMERIC(10,2) | Required. | XP amount awarded by this ledger row; may be negative for penalties or reversals. | 42.5 | source |
award_reason | body | TEXT enum | Required. | Why this XP row exists. | accuracy_award | source |
calculation_policy_ref | body | TEXT | Required. | Policy/config version that calculated awarded_xp. | xp_award_formula_v2026_06 | source |
source_evidence_refs | body | JSONB | Required. | Structured references to result, content, effort, anti-gaming, or correction evidence. | [{"type":"result_record","id":"018f..."},{"type":"event_summary","id":"evt_sum_..."}] | source |
created_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this ledger row was appended. | 2026-03-21T14:31:00Z | source |
reversal_of_xp_award_id | body | UUID | Nullable. | Prior XP ledger row this row reverses or corrects. | 018f4b4e-9c7a-7d3d-8b2f-2f673a004000 | source |
Content Effectiveness
Return Results-derived effectiveness rollups for Content items. The surface recomputes validated and failed evidence after settled test results; no app increments counters.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/content-effectiveness?contentId=content_factoring_video&subject=math" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"content_id": "content_factoring_video",
"content_version_id": "content_factoring_video_v4",
"kc_id": "kc_factoring_quadratics",
"subject_id": "math",
"validated_by_count": 41,
"failed_by_count": 9,
"effectiveness_rate": 0.82,
"evidence_count": 54,
"policy_version": "content_effectiveness_v2026_06",
"source_result_refs": {
"evidence_set_id": "eff_factoring_v4_2026_06"
},
"last_recomputed_at": "2026-06-05T14:31:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-content-effectiveness",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-content-effectiveness",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
contentId | query | TEXT | Optional | Content item id to narrow the effectiveness rollup. | content_factoring_video | |
kcId | query | TEXT | Optional | Curriculum KC id when the rollup should be KC-specific. | kc_factoring_quadratics | |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
content_id | body | TEXT | Required. | Content item this effectiveness row describes. | content_factoring_video | source |
content_version_id | body | TEXT | Nullable primary key part. | Exact Content version when effectiveness is version-specific. | content_factoring_video_v4 | source |
kc_id | body | TEXT | Nullable primary key part. | Curriculum KC this effectiveness row concerns. | kc_factoring_quadratics | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
validated_by_count | body | INTEGER | Required. | Number of settled result evidence rows that validated this content under the active policy. | 41 | source |
failed_by_count | body | INTEGER | Required. | Number of settled result evidence rows that counted as failed evidence for this content under the active policy. | 9 | source |
effectiveness_rate | body | NUMERIC(6,5) | Nullable. | validated_by_count divided by validated plus failed evidence under policy. | 0.82 | source |
evidence_count | body | INTEGER | Required. | Total result_content_evidence rows inspected for this rollup. | 54 | source |
policy_version | body | TEXT | Required. | Policy/config version used to classify content evidence and compute the rate. | content_effectiveness_v2026_06 | source |
source_result_refs | body | JSONB | Required. | Structured references to the result_content_evidence rows and rollup job that produced this answer. | {"evidence_set_id":"eff_factoring_v4_2026_06"} | source |
last_recomputed_at | body | TIMESTAMPTZ | Required. | UTC timestamp when the surface last recomputed this row. | 2026-06-05T14:31:00Z | source |
Academic Records
Return cumulative academic-record rows backed by Ed-Fi StudentAcademicRecord canonical records. The client reads typed view fields; it never parses Ed-Fi payload_json.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/academic-records?studentId=stu_timeback_10017&canonicalTermId=term_2025_26_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"academic_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"school_sourced_id": "school_north_valley",
"canonical_term_id": "term_2025_26_spring",
"school_year": "2025-26",
"session_attempted_credits": 3.5,
"session_earned_credits": 3.5,
"cumulative_earned_credits": 18.5,
"gpa": 3.875,
"canonical_state": "canonical",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-academic-record-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-academic-record-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | query | TEXT | Required on student sub-collection routes. | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
includeSourceEvidence | query | BOOLEAN | Optional; defaults to false. | When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets. | false | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
academic_record_id | body | UUID | Required. | Stable Results id for the StudentAcademicRecord view row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a003101 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
school_sourced_id | body | TEXT | Required. | Platform3 org/school sourcedId resolved from the Ed-Fi EducationOrganizationReference. | school_north_valley | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
school_year | body | TEXT | Required. | Canonical school year for the academic record. | 2025-26 | source |
session_attempted_credits | body | NUMERIC(9,2) | Nullable. | Credits attempted during this academic session. | 3.5 | source |
session_earned_credits | body | NUMERIC(9,2) | Nullable. | Credits earned during this academic session. | 3.5 | source |
cumulative_earned_credits | body | NUMERIC(9,2) | Nullable. | Total earned credits in the cumulative academic record. | 18.5 | source |
gpa | body | NUMERIC(5,3) | Nullable. | Grade point average value from the academic record when the source includes a GPA object. | 3.875 | source |
canonical_state | body | TEXT enum | Required. | Canonical state of the source Ed-Fi record. | canonical | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
Academic Records
Return final course performance and credit rows backed by Ed-Fi CourseTranscript canonical records. Course, student, and school ids resolve through platform3 sourcedIds.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/course-transcripts?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"course_transcript_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"academic_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a003101",
"course_id": "course_algebra_1",
"course_title": "Algebra I",
"canonical_term_id": "term_2025_26_spring",
"course_attempt_result": "Pass",
"attempted_credits": 0.5,
"earned_credits": 0.5,
"credit_type": "Academic",
"final_letter_grade": "A-",
"final_numeric_grade": 91.5,
"canonical_state": "canonical",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-transcript-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-transcript-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | query | TEXT | Required on student sub-collection routes. | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
courseId | query | TEXT | Required on course-transcript detail routes; optional filter on transcript lists. | Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table. | course_algebra_1 | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
includeSourceEvidence | query | BOOLEAN | Optional; defaults to false. | When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets. | false | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
course_transcript_id | body | UUID | Required. | Stable Results id for one CourseTranscript view row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a003201 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
academic_record_id | body | UUID | Required. | Academic record this course transcript belongs to. | 018f4b4e-9c7a-7d3d-8b2f-2f673a003101 | source |
course_id | body | TEXT | Required. | Platform3 course sourcedId for the course recorded on the transcript. | course_algebra_1 | source |
course_title | body | TEXT | Nullable. | Course title from Ed-Fi when present. | Algebra I | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
course_attempt_result | body | TEXT descriptor code | Required. | Governed Ed-Fi CourseAttemptResultDescriptor value for the student's course attempt. | Pass | source |
attempted_credits | body | NUMERIC(9,2) | Nullable. | Credits the student attempted for this course. | 0.5 | source |
earned_credits | body | NUMERIC(9,2) | Nullable. | Credits the student earned for this course. | 0.5 | source |
credit_type | body | TEXT descriptor code | Nullable. | Governed descriptor for the kind/category of course credit when Ed-Fi supplies one. | Academic | source |
final_letter_grade | body | TEXT | Nullable. | Final letter grade submitted for the course. | A- | source |
final_numeric_grade | body | NUMERIC(9,2) | Nullable. | Final numeric grade submitted for the course. | 91.5 | source |
canonical_state | body | TEXT enum | Required. | Canonical state of the source Ed-Fi record. | canonical | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
Academic Records
Return settled course or grading-period grades backed by Ed-Fi Grade canonical records. Blank gradebook assignments stay outside Results until they become durable grades.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/course-grades?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"course_grade_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"section_id": "section_alg1_a",
"grading_period_id": "gp_2025_26_q4",
"grade_type": "Final",
"letter_grade": "A-",
"numeric_grade": 91.5,
"current_grade_indicator": false,
"current_grade_as_of_date": "2026-05-30",
"gradebook_entry_id": "edfi_gbe_final_exam",
"canonical_state": "canonical",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-grade-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-course-grade-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | query | TEXT | Required on student sub-collection routes. | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
courseId | query | TEXT | Required on course-transcript detail routes; optional filter on transcript lists. | Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table. | course_algebra_1 | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
includeSourceEvidence | query | BOOLEAN | Optional; defaults to false. | When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets. | false | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
course_grade_id | body | UUID | Required. | Stable Results id for one Ed-Fi Grade view row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a003301 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
section_id | body | TEXT | Required. | Platform3 section/class sourcedId resolved from StudentSectionAssociationReference. | section_alg1_a | source |
grading_period_id | body | TEXT | Required. | Canonical grading period for the grade. | gp_2025_26_q4 | source |
grade_type | body | TEXT descriptor code | Required. | Governed Ed-Fi GradeTypeDescriptor value, such as final or grading period. | Final | source |
letter_grade | body | TEXT | Nullable. | Letter grade earned for the course or grading period. | A- | source |
numeric_grade | body | NUMERIC(9,2) | Nullable. | Numeric grade earned for the course or grading period. | 91.5 | source |
current_grade_indicator | body | BOOLEAN | Nullable. | Whether this is an interim current grade rather than a final grade. | false | source |
current_grade_as_of_date | body | DATE | Nullable. | As-of date for a current/interim grade. | 2026-05-30 | source |
gradebook_entry_id | body | TEXT | Nullable. | Ed-Fi gradebook entry identifier joined as evidence when the grade references one. | edfi_gbe_final_exam | source |
canonical_state | body | TEXT enum | Required. | Canonical state of the source Ed-Fi record. | canonical | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
Academic Records
Return report-ready transcript answers for questions like final grade and earned credits by student, course, and term. The surface resolves descriptor codes and source precedence.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/transcript-results?studentId=stu_timeback_10017&courseId=course_algebra_1&canonicalTermId=term_2025_26_spring&includeSourceEvidence=true" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"course_id": "course_algebra_1",
"canonical_term_id": "term_2025_26_spring",
"transcript_answer_kind": "course_transcript",
"final_grade": "A-",
"final_numeric_grade": 91.5,
"earned_credits": 0.5,
"attempted_credits": 0.5,
"course_attempt_result": "Pass",
"answer_precedence": 10,
"source_evidence": {
"resource": "CourseTranscript",
"canonical_record_id": "018f..."
},
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-transcript-result-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-transcript-result-view",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | query | TEXT | Required on student sub-collection routes. | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
courseId | query | TEXT | Required on course-transcript detail routes; optional filter on transcript lists. | Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table. | course_algebra_1 | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
includeSourceEvidence | query | BOOLEAN | Optional; defaults to false. | When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets. | false | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
course_id | body | TEXT | Required for course-scoped answers. | Platform3 course sourcedId for the transcript answer. | course_algebra_1 | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
transcript_answer_kind | body | TEXT enum | Required. | Source shape used for this normalized transcript answer. | course_transcript | source |
final_grade | body | TEXT | Nullable. | Final grade display value for the transcript answer. | A- | source |
final_numeric_grade | body | NUMERIC(9,2) | Nullable. | Numeric final grade for the transcript answer when available. | 91.5 | source |
earned_credits | body | NUMERIC(9,2) | Nullable. | Credits earned for the course/term answer. | 0.5 | source |
attempted_credits | body | NUMERIC(9,2) | Nullable. | Credits attempted for the course/term answer. | 0.5 | source |
course_attempt_result | body | TEXT descriptor code | Nullable. | Governed Ed-Fi attempt-result descriptor selected for the transcript answer. | Pass | source |
answer_precedence | body | INTEGER | Required. | Surface-owned precedence used to choose among transcript sources. | 10 | source |
source_evidence | body | JSONB | Returned only when includeSourceEvidence=true and authorized. | Structured source evidence: canonical_record ids, descriptor refs, source resource names, and soft-delete evidence. | {"resource":"CourseTranscript","canonical_record_id":"018f..."} | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
MAP
Return the term-scoped highest-RIT test-of-record MAP score by default. Use current-map for the GOALS/student-facing current MAP context; use sittingScope=all only for authorized audit views.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-scores?subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"map_score_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000701",
"student_id": "stu_timeback_10017",
"student_email": "alex.rivera@example.edu",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"norms_set": "2025",
"rit": 238,
"standard_error": 3.2,
"percentile": 94,
"achievement_quintile": "High",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-score",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-score",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
sittingScope | query | TEXT enum | Optional; defaults to test_of_record. | Controls whether MAP reads return the selected test of record or all sittings. | test_of_record | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
map_score_id | body | UUID | Required. | Stable id for this public MAP score row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000701 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
student_email | body | CITEXT | Nullable joined read field. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. | alex.rivera@example.edu | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
rit | body | INTEGER | Nullable. | Selected MAP RIT score. | 238 | source |
standard_error | body | NUMERIC(6,2) | Nullable. | MAP test standard error. | 3.2 | source |
percentile | body | INTEGER | Nullable. | MAP percentile for the selected norms set. | 94 | source |
achievement_quintile | body | TEXT | Nullable. | NWEA achievement quintile when available. | High | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
MAP
Return the student-facing current MAP context: latest active Growth MAP by test date, with latest active screener/non-growth fallback only when no Growth MAP exists.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/current-map?subject=math&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"map_current_score_id": "map_10017_math_spring_current_2025",
"student_id": "stu_timeback_10017",
"student_email": "alex.rivera@example.edu",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"norms_set": "2025",
"rit": 210,
"percentile": 74,
"growth_measure_yn": "Y",
"current_map_reason": "latest_growth",
"test_start_at": "2026-05-28T13:00:00Z",
"policy_ref": "alpha.policy.results.current_map.v2026-06-17.latest-growth-first",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-current-score",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-current-score",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
map_current_score_id | body | TEXT | Required. | Stable id for this current-MAP view row. | map_10017_math_spring_current_2025 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
student_email | body | CITEXT | Nullable joined read field. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. | alex.rivera@example.edu | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
rit | body | INTEGER | Nullable. | Selected current MAP RIT score. | 210 | source |
percentile | body | INTEGER | Nullable. | MAP percentile for the selected current MAP row and norms set. | 74 | source |
growth_measure_yn | body | TEXT enum | Nullable. | Whether the selected MAP row is a Growth MAP measurement. | Y | source |
current_map_reason | body | TEXT enum | Required. | Why this row is the current MAP context. | latest_growth | source |
test_start_at | body | TIMESTAMPTZ | Nullable. | Parsed timestamp for the selected current MAP sitting. | 2026-05-28T13:00:00Z | source |
policy_ref | body | TEXT | Required. | Named current-MAP selection policy. | alpha.policy.results.current_map.v2026-06-17.latest-growth-first | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
MAP
Return MAP sitting audit rows, including retakes and soft-deleted rows when sittingScope=all is authorized.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-sittings?subject=math&sittingScope=all" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"map_sitting_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"rit": 238,
"test_start_at": "2026-05-04T14:00:00Z",
"growth_measure_yn": "TRUE",
"is_test_of_record": true,
"test_of_record_reason": "highest_rit",
"deleted_at": "2026-06-03T18:55:00Z",
"delete_reason": "retake_superseded",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-sitting",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-sitting",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
sittingScope | query | TEXT enum | Optional; defaults to test_of_record. | Controls whether MAP reads return the selected test of record or all sittings. | test_of_record | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
map_sitting_id | body | UUID | Required. | Stable id for one MAP sitting audit row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000801 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
rit | body | INTEGER | Nullable. | MAP RIT score for this sitting. | 238 | source |
test_start_at | body | TIMESTAMPTZ | Nullable. | Parsed sitting start timestamp. | 2026-05-04T14:00:00Z | source |
growth_measure_yn | body | TEXT | Nullable. | NWEA GrowthMeasureYN flag retained for comparison and audit. | TRUE | source |
is_test_of_record | body | BOOLEAN | Required. | Whether this sitting is the selected test_of_record. | true | source |
test_of_record_reason | body | TEXT enum | Required. | Reason this sitting was selected or excluded. | highest_rit | source |
deleted_at | body | TIMESTAMPTZ | Nullable. | Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports. | 2026-06-03T18:55:00Z | source |
delete_reason | body | TEXT enum | Nullable. | Why a sitting was soft-deleted. | retake_superseded | source |
MAP
Return one clean row per goal strand instead of requiring the client to unpivot NWEA Goal1..Goal5 columns.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/map-goal-strands?subject=reading&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"goal_strand": "Algebraic Thinking",
"strand_rit": 242,
"strand_standard_error": 4.1,
"overall_rit": 238,
"goal_gap": 4,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-goal-strand",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-goal-strand",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
goal_strand | body | TEXT | Required. | Plain strand name from NWEA goal name. | Algebraic Thinking | source |
strand_rit | body | INTEGER | Nullable. | RIT score for this goal strand. | 242 | source |
strand_standard_error | body | NUMERIC(6,2) | Nullable. | Standard error for the strand RIT. | 4.1 | source |
overall_rit | body | INTEGER | Nullable. | Overall test RIT used to compute goal_gap. | 238 | source |
goal_gap | body | INTEGER | Nullable. | Surface-computed strand_rit minus overall_rit. | 4 | source |
MAP
Return typed growth-window rows with Growth X and target status. The client never switches over NWEA growth column names.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/growth-windows?subject=math&growthWindow=fall_to_spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"growth_window": "fall_to_spring",
"norms_set": "2025",
"observed_growth": 14,
"projected_growth": 7,
"growth_x": 2,
"growth_x_target": 2,
"on_track_for_growth_x_target": true,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-growth-window",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
growth_window | body | TEXT enum | Required. | Typed growth window. | fall_to_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
observed_growth | body | NUMERIC(6,2) | Nullable. | NWEA observed growth for the window. | 14 | source |
projected_growth | body | NUMERIC(6,2) | Nullable. | NWEA projected growth for the window under norms_set. | 7 | source |
growth_x | body | NUMERIC(8,4) | Nullable. | Observed growth divided by projected growth. | 2 | source |
growth_x_target | body | NUMERIC(8,4) | Required. | Configured Growth X target for this row. | 2 | source |
on_track_for_growth_x_target | body | BOOLEAN | Nullable. | Whether current/projected evidence is on track for target Growth X. | true | source |
MAP
Return the surface-owned percentile-to-RIT or RIT-to-percentile translation under one subject, grade level, season, and norms set. GOALS and report clients call this instead of shipping an NWEA norms table.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-percentile-translations?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025&translationDirection=percentile_to_rit&inputPercentile=99" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"subject_id": "math",
"grade_level": 7,
"term_season": "spring",
"norms_set": "2025",
"translation_direction": "percentile_to_rit",
"input_percentile": 99,
"input_rit": 252,
"output_rit": 252,
"output_percentile": 99,
"source_point_kind": "nwea_published",
"calculator_version": "percentile_rit_2026_06",
"null_reason": "missing_policy_config",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-percentile-translation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-percentile-translation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
gradeLevel | query | NUMERIC(4,1) | Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads. | Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent. | 7 | source |
termSeason | query | TEXT enum | Required on percentile/RIT translation reads. | MAP season used for percentile <-> RIT translation; clients do not parse this from term strings. | spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
translationDirection | query | TEXT enum | Required on percentile/RIT translation reads. | Chooses percentile_to_rit or rit_to_percentile so one endpoint can serve both GOALS conversions. | percentile_to_rit | source |
inputPercentile | query | INTEGER | Required only when translationDirection=percentile_to_rit. | Percentile to translate to RIT using the surface norms calculator. | 99 | source |
inputRit | query | INTEGER | Required only when translationDirection=rit_to_percentile. | RIT score to translate to percentile using the surface norms calculator. | 252 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
grade_level | body | NUMERIC(4,1) | Required. | Grade level used for the norms translation. | 7 | source |
term_season | body | TEXT enum | Required. | MAP season used for the norms translation. | spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
translation_direction | body | TEXT enum | Required. | Direction of the requested surface translation. | percentile_to_rit | source |
input_percentile | body | INTEGER | Nullable; required for percentile_to_rit. | Requested percentile. | 99 | source |
input_rit | body | INTEGER | Nullable; required for rit_to_percentile. | Requested RIT score. | 252 | source |
output_rit | body | INTEGER | Nullable; required for percentile_to_rit. | Surface-returned RIT score for the requested percentile. | 252 | source |
output_percentile | body | INTEGER | Nullable; required for rit_to_percentile. | Surface-returned percentile for the requested RIT. | 99 | source |
source_point_kind | body | TEXT enum | Required. | Whether this translation point is published, interpolated, extrapolated, or policy-derived. | nwea_published | source |
calculator_version | body | TEXT | Required. | Version of the norms/calculator used. | percentile_rit_2026_06 | source |
null_reason | body | TEXT enum | Nullable. | Why a translation output is null. | missing_policy_config | source |
MAP
Return legacy Results MAP report fixture rows. Do not use this endpoint as the GOALS RIT-to-grade source; use the skill-seeded NWEAMAP R90 surface directly or through the Analytics mirror.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/map-r90-norm-points?subject=math&gradeLevel=7.0&termSeason=spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"subject_id": "math",
"grade_level": 7,
"term_season": "spring",
"norms_set": "2025",
"rit50_grade": 7.1,
"rit90_grade": 6.4,
"r90_rit": 231,
"source_point_kind": "alpha_extrapolated",
"calculator_version": "rit_calc_2026_06",
"status": "active",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-r90-norm-point",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-map-r90-norm-point",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
gradeLevel | query | NUMERIC(4,1) | Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads. | Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent. | 7 | source |
termSeason | query | TEXT enum | Required on percentile/RIT translation reads. | MAP season used for percentile <-> RIT translation; clients do not parse this from term strings. | spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
grade_level | body | NUMERIC(4,1) | Required. | Grade level this R90 row describes. | 7 | source |
term_season | body | TEXT enum | Required. | MAP season for this R90 point. | spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
rit50_grade | body | NUMERIC(5,2) | Nullable. | RIT50 grade point reproduced from NWEA-published data where available. | 7.1 | source |
rit90_grade | body | NUMERIC(5,2) | Required. | Legacy Results fixture RIT90/R90 grade point for this subject/grade/season/norms row. | 6.4 | source |
r90_rit | body | INTEGER | Required. | RIT value for the legacy R90 fixture point. | 231 | source |
source_point_kind | body | TEXT enum | Required. | Provenance class for the R90 point. | alpha_extrapolated | source |
calculator_version | body | TEXT | Required. | Version of the legacy Results fixture calculator. | rit_calc_2026_06 | source |
status | body | TEXT enum | Required. | Lifecycle state of this R90 row. | active | source |
MAP
Return the surface-owned current grade-equivalent level for a student and subject as of a date.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/working-grade?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"as_of_date": "2026-06-03",
"working_grade": 7.4,
"input_kind": "mixed",
"baseline_effective_grade": 6.8,
"sy_start_working_grade": 7,
"formula_version": "working_grade_v2026_06",
"null_reason": "not_enough_history",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-working-grade",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-working-grade",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
as_of_date | body | DATE | Required. | Point-in-time date for the working-grade answer. | 2026-06-03 | source |
working_grade | body | NUMERIC(5,2) | Nullable. | Surface-owned grade-equivalent level as of the date. | 7.4 | source |
input_kind | body | TEXT enum | Required. | Primary evidence family used to produce the value. | mixed | source |
baseline_effective_grade | body | NUMERIC(5,2) | Nullable. | Baseline MAP effective grade used by advancement. | 6.8 | source |
sy_start_working_grade | body | NUMERIC(5,2) | Nullable. | Working grade at school-year start used by advancement. | 7 | source |
formula_version | body | TEXT | Required. | Named formula/config version used. | working_grade_v2026_06 | source |
null_reason | body | TEXT enum | Nullable. | Why working_grade is null. | not_enough_history | source |
MAP
Return alpha.advancement, the surface-owned K-8 growth formula. Dashboards do not implement this formula.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/advancement?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"as_of_date": "2026-06-03",
"current_working_grade": 7.4,
"baseline_effective_grade": 6.8,
"sy_start_working_grade": 7,
"advancement_value": 0.4,
"formula_version": "advancement_v2026_06",
"null_reason": "not_enough_history",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-advancement",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-advancement",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
as_of_date | body | DATE | Required. | Point-in-time date for advancement. | 2026-06-03 | source |
current_working_grade | body | NUMERIC(5,2) | Nullable. | Working grade now. | 7.4 | source |
baseline_effective_grade | body | NUMERIC(5,2) | Nullable. | Baseline effective grade from MAP. | 6.8 | source |
sy_start_working_grade | body | NUMERIC(5,2) | Nullable. | School-year-start working grade. | 7 | source |
advancement_value | body | NUMERIC(5,2) | Nullable. | Surface-owned advancement value from the formula. | 0.4 | source |
formula_version | body | TEXT | Required. | Formula/config version used. | advancement_v2026_06 | source |
null_reason | body | TEXT enum | Nullable. | Why advancement_value is null. | not_enough_history | source |
Reports
Return durable, effective-dated report-card statements for a student.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/report-card?asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"report_card_entry_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"subject_id": "math",
"reporting_period_id": "rp_2025_26_spring",
"grade_value": "A-",
"narrative": "Strong growth in equations; continue fractions practice.",
"status": "final",
"begin_date": "2026-05-30",
"end_date": "2026-06-30",
"is_time_locatable": true,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-card-entry",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-card-entry",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
report_card_entry_id | body | UUID | Required. | Stable id for this report-card statement. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000501 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
reporting_period_id | body | TEXT | Required. | Typed reporting period for this statement. | rp_2025_26_spring | source |
grade_value | body | TEXT | Nullable. | Published grade or level shown on the report card. | A- | source |
narrative | body | TEXT | Nullable. | Optional teacher/system narrative shown on the report card. | Strong growth in equations; continue fractions practice. | source |
status | body | TEXT enum | Required. | Lifecycle state of this report-card entry. | final | source |
begin_date | body | DATE | Nullable. | First date this report-card statement is point-in-time valid. | 2026-05-30 | source |
end_date | body | DATE | Nullable. | Last date this statement is valid; null means still active after begin_date. | 2026-06-30 | source |
is_time_locatable | body | BOOLEAN | Required on effective-dated rows. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. | true | source |
Reports
Return durable pass/fail/cooldown decisions for advancement gates.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/students/stu_timeback_10017/gate-passes?subject=math&asOfDate=2026-06-03" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"gate_pass_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"gate_content_id": "content_alg_1_mastery_gate",
"subject_id": "math",
"gate_status": "passed",
"next_eligible_at": "2026-03-24T14:30:00Z",
"attempt_count": 2,
"policy_version": "policy_2026_06_03",
"is_time_locatable": true,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-gate-pass",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-gate-pass",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | path | TEXT | Required | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
asOfDate | query | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | 2026-06-03 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
gate_pass_id | body | UUID | Required. | Stable id for this gate state row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000601 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
gate_content_id | body | TEXT | Required. | Content test or gate this pass concerns. | content_alg_1_mastery_gate | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
gate_status | body | TEXT enum | Required. | Current durable gate state for this effective window. | passed | source |
next_eligible_at | body | TIMESTAMPTZ | Nullable. | UTC time a student may retake after cooldown. | 2026-03-24T14:30:00Z | source |
attempt_count | body | INTEGER | Required. | Number of settled attempts considered for this gate state. | 2 | source |
policy_version | body | TEXT | Required. | Policy/config version for cutoff and cooldown rules. | policy_2026_06_03 | source |
is_time_locatable | body | BOOLEAN | Required on effective-dated rows. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. | true | source |
Writes
Accept raw TimeBack Production assessment rows or raw NWEA MAP CDF rows and normalize them server-side into readable Results rows. The caller never pre-computes norms, Growth X, mastery, XP, minutes, dedupe, goal-strand unpivot, or term parsing.
curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/imports" \
-H "Authorization: Bearer $RESULTS_TOKEN" \
-H "Idempotency-Key: timeback-prod-results-2026-06-08T15" \
-H "Content-Type: application/json" \
--data '{"source_adapter_id":"adapter_timeback_migration","producer_batch_id":"timeback-prod-results-2026-06-08T15","sourceShape":"timeback_assessment_result","records":[{"studentId":"stu_timeback_10017","assessmentId":"factoring-gate","scorePercent":92.5}]}'
{
"import_id": "import_timeback_prod_results_2026_06_08T15",
"status": "accepted",
"accepted_count": 1733,
"materialized": {
"result_record": 1733,
"student_kc_state": 812,
"xp_ledger": 1590
},
"source_evidence_ids": [
"import_timeback_prod_results_2026_06_08T15_1"
],
"reconciliation_url": "/alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x"
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
source_adapter_id | body | TEXT | Required | Named Results adapter that owns normalization and write routing for this producer. Constraints: Must reference an active alpha.source_adapter with adapter authority for the caller. | adapter_timeback_migration | source |
producer_batch_id | body | TEXT | Required | Producer's stable batch/export id used with Idempotency-Key and source evidence. Constraints: 1 to 255 visible characters; unique enough with source_adapter_id to identify a producer batch. | timeback-prod-results-2026-06-08T15 | source |
sourceShape | body | TEXT enum | Required | Names the source-shaped record family in records[]. Constraints: Must be one of the documented raw_import_source_shape values; one import call carries one shape. | timeback_assessment_result | source |
records | body | JSONB array | Required | Array of raw producer rows, not pre-normalized canonical Results rows. Constraints: 1 through the endpoint's configured batch limit. Each element must be a JSON object with producer field names preserved, including the producer student identifier exactly as sent by the source. | [{"studentId":"tb-prod-raw-student-981234","assessmentId":"factoring-gate","scorePercent":92.5}] | source |
dry_run | body | BOOLEAN | Optional; defaults to false | Validate and normalize without writing rows. Constraints: When true, response status is 200 and materialized ids are empty by design; when false, zero materialized rows is not a success. | false | source |
Idempotency-Key | header | opaque string | Required on writes | Same key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict. | timeback-prod-results-2026-06-08T15 | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
import_id | body | TEXT | Returned on success | Stable id for this accepted import or dry run. | import_timeback_prod_results_2026_06_08T15 | source |
status | body | TEXT enum | Returned on success | Import result state. | accepted | source |
accepted_count | body | INTEGER | Returned on success | Number of source rows accepted and materialized when dry_run=false. | 1733 | source |
materialized | body | JSONB object | Returned on success | Counts and ids of readable rows now visible through Results public objects. | {"result_record":1733,"student_kc_state":812,"xp_ledger":1590} | source |
source_evidence_ids | body | JSONB array | Returned on success | Source evidence rows written for audit and reconciliation. | ["import_timeback_prod_results_2026_06_08T15_1"] | source |
reconciliation_url | body | TEXT URL | Returned on success | Typed one-call check for this import. May include studentId for a single-student cutover check. | /alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x | source |
Writes
Read import status, adapter evidence, and canonical result ids created by the import.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/imports/018f4b4e-9c7a-7d3d-8b2f-2f673a000300" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"source_evidence_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"source_adapter_id": "adapter_nwea_map",
"producer_result_id": "1110000001",
"raw_payload_hash": "sha256:2d3f6b4e8c1a0f9b",
"canonical_payload_hash": "sha256:bd21c73f0e9a",
"result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"imported_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-source-evidence",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
importId | path | UUID | Required | The import id returned by POST /imports. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000300 |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
source_evidence_id | body | UUID | Required. | Stable id for one source-evidence row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000201 | source |
source_adapter_id | body | TEXT | Required. | Adapter that supplied this evidence. | adapter_nwea_map | source |
producer_result_id | body | TEXT | Nullable. | Producer-specific result id, when supplied. | 1110000001 | source |
raw_payload_hash | body | TEXT | Nullable. | Hash of the source payload or row content for idempotency and audit. | sha256:2d3f6b4e8c1a0f9b | source |
canonical_payload_hash | body | TEXT | Nullable. | Hash of the normalized canonical payload written into Results. | sha256:bd21c73f0e9a | source |
result_record_id | body | UUID | Nullable. | Result record this evidence supports; nullable while evidence is quarantined or awaiting reconciliation. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | source |
imported_at | body | TIMESTAMPTZ | Required. | UTC timestamp when the surface accepted this evidence. | 2026-06-03T18:55:00Z | source |
Writes
Create a canonical result record. Use this only for trusted scorers and adapter-normalized writes; clients do not bypass source_adapter_id.
curl -sS -X POST "$RESULTS_BASE_URL/alpha/results/v1/result-records" \
-H "Authorization: Bearer $RESULTS_TOKEN" \
-H "Idempotency-Key: result-adapter_qti_platform-quiz-42" \
-H "Content-Type: application/json" \
--data '{"student_id":"stu_timeback_10017","result_kind":"self_paced","subject_id":"math","score_percent":93.2,"source_adapter_id":"adapter_qti_platform","producer_result_id":"quiz-42"}'
{
"result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"student_id": "stu_timeback_10017",
"result_kind": "self_paced",
"score_percent": 93.2,
"source_adapter_id": "adapter_qti_platform",
"producer_result_id": "cb_2026_ap_calc_7712",
"modified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
Idempotency-Key | header | opaque string | Required on writes | Same key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict. | result-adapter_qti_platform-quiz-42 | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
result_kind | body | TEXT enum | Required. | What kind of durable outcome this row represents. | self_paced | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Nullable; required when the outcome belongs to a term. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
score_percent | body | NUMERIC(5,2) | Nullable. | Normalized percent score used for mastery and report calculations. | 93.2 | source |
source_adapter_id | body | TEXT | Required. | Named adapter or scorer that wrote this row. | adapter_qti_platform | source |
producer_result_id | body | TEXT | Nullable. | External producer's durable id for the source outcome. | cb_2026_ap_calc_7712 | source |
canonical_response | body | JSONB | Nullable. | QTI EAP5/EAP6 canonical response payload when item-level response evidence exists, plus adapter diagnostics when an accepted raw row is excluded from a derived measure. | {"RESPONSE":"B"} | source |
is_correct | body | BOOLEAN | Nullable. | Canonical correctness flag for item-level evidence. | true | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
result_record_id | body | UUID | Required. | Stable Results identifier for this settled outcome. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
result_kind | body | TEXT enum | Required. | What kind of durable outcome this row represents. | self_paced | source |
score_percent | body | NUMERIC(5,2) | Nullable. | Normalized percent score used for mastery and report calculations. | 93.2 | source |
source_adapter_id | body | TEXT | Required. | Named adapter or scorer that wrote this row. | adapter_qti_platform | source |
producer_result_id | body | TEXT | Nullable. | External producer's durable id for the source outcome. | cb_2026_ap_calc_7712 | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
Writes
Patch one result through an ETag-protected and idempotent correction. Audit history remains; corrections never become silent hard deletes. Browser clients can read the returned ETag because responses expose it through Access-Control-Expose-Headers.
curl -sS -X PATCH "$RESULTS_BASE_URL/alpha/results/v1/result-records/018f4b4e-9c7a-7d3d-8b2f-2f673a000101" \
-H "Authorization: Bearer $RESULTS_TOKEN" \
-H 'If-Match: "res-018f4b4e-v2"' \
-H "Idempotency-Key: result-correction-018f4b4e-v3" \
-H "Content-Type: application/json" \
--data '{"correction_reason":"scorer correction","score_percent":94.0}'
{
"result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000101",
"score_percent": 93.2,
"superseded_by_result_record_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000102",
"modified_at": "2026-06-03T18:55:00Z",
"deleted_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-result-record",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
resultRecordId | path | UUID | Required | The result to correct. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | |
correction_reason | body | TEXT | Required | Human-readable audit reason. | scorer correction | |
score_percent | body | NUMERIC | Optional | Corrected score percentage. | 94.0 | |
If-Match | header | ETag | Required | ETag from the prior read. Detail reads and correction responses expose ETag to browser callers through Access-Control-Expose-Headers. | "res-018f4b4e-v2" | source |
Idempotency-Key | header | opaque string | Required on writes | Same key + same method/path/body returns the original result; same key + different body returns results:idempotency_conflict. | result-correction-018f4b4e-v3 | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
result_record_id | body | UUID | Required. | Stable Results identifier for this settled outcome. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | source |
score_percent | body | NUMERIC(5,2) | Nullable. | Normalized percent score used for mastery and report calculations. | 93.2 | source |
superseded_by_result_record_id | body | UUID | Nullable. | Later result row that replaced this row. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000102 | source |
modified_at | body | TIMESTAMPTZ | Required. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. | 2026-06-03T18:55:00Z | source |
deleted_at | body | TIMESTAMPTZ | Nullable. | Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports. | 2026-06-03T18:55:00Z | source |
Report Views
Return quadrant rows with Growth X and achievement already computed by the surface.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/map-quadrants?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"student_email": "alex.rivera@example.edu",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"growth_window": "fall_to_spring",
"norms_set": "2025",
"rit": 238,
"growth_x": 2,
"quadrant": "high_growth_high_achievement",
"intervention_flag": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-map-quadrants",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-map-quadrants",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
student_email | body | CITEXT | Nullable joined read field. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. | alex.rivera@example.edu | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
growth_window | body | TEXT enum | Required. | Typed growth window used for the Growth X value in this quadrant row. | fall_to_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
rit | body | INTEGER | Nullable. | Selected test-of-record RIT for the report row. | 238 | source |
growth_x | body | NUMERIC(8,4) | Nullable. | Surface-owned Growth X for the selected window. | 2 | source |
quadrant | body | TEXT enum | Nullable. | Report quadrant under active threshold policy. | high_growth_high_achievement | source |
intervention_flag | body | BOOLEAN | Required. | Whether this row meets policy for intervention or celebration workflow. | false | source |
Report Views
Return retake and test-of-record audit rows without asking clients to dedupe MAP sittings.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/retake-audit?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"sitting_count": 3,
"highest_rit_sitting_id": "018f4b4e-9c7a-7d3d-8b2f-2f673a000801",
"deleted_sitting_count": 1,
"selection_explanation": "Selected highest valid RIT; later lower retake remains audit evidence.",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-retake-audit",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-retake-audit",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
sitting_count | body | INTEGER | Required. | Number of all-sittings rows in the group. | 3 | source |
highest_rit_sitting_id | body | UUID | Nullable. | MAP sitting selected as test_of_record. | 018f4b4e-9c7a-7d3d-8b2f-2f673a000801 | source |
deleted_sitting_count | body | INTEGER | Required. | Number of soft-deleted sittings in the group. | 1 | source |
selection_explanation | body | TEXT | Required. | Plain explanation of why the selected sitting is test_of_record. | Selected highest valid RIT; later lower retake remains audit evidence. | source |
Report Views
Return the longitudinal Growth X series ordered by term.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-over-time?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"student_email": "alex.rivera@example.edu",
"subject_id": "math",
"term_order": 6,
"canonical_term_id": "term_2025_26_spring",
"norms_set": "2025",
"rit": 238,
"observed_growth": 14,
"growth_x": 2,
"timeback_era": "timeback",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-over-time",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-over-time",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
student_email | body | CITEXT | Nullable joined read field. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. | alex.rivera@example.edu | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
term_order | body | INTEGER | Required. | Surface-owned chronological order. | 6 | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
rit | body | INTEGER | Nullable. | RIT at this timeline point. | 238 | source |
observed_growth | body | NUMERIC(6,2) | Nullable. | Observed growth for this segment. | 14 | source |
growth_x | body | NUMERIC(8,4) | Nullable. | Growth X for this segment. | 2 | source |
timeback_era | body | TEXT enum | Required. | Pre-TimeBack vs TimeBack classification. | timeback | source |
Report Views
Return the same score under one explicit norms set so clients can compare 2020 and 2025 by changing one parameter.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/norms-isolation?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"norms_set": "2025",
"rit": 238,
"percentile": 94,
"effective_grade": 6.4,
"growth_x": 2,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-norms-isolation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-norms-isolation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
rit | body | INTEGER | Nullable. | RIT held constant while norms-dependent fields change. | 238 | source |
percentile | body | INTEGER | Nullable. | Percentile under norms_set. | 94 | source |
effective_grade | body | NUMERIC(5,2) | Nullable. | Effective grade under norms_set/calculator config. | 6.4 | source |
growth_x | body | NUMERIC(8,4) | Nullable. | Growth X under norms_set. | 2 | source |
Report Views
Return surface-owned growth components for a student/subject/term/window row.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/growth-breakdown?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"growth_window": "fall_to_spring",
"norms_set": "2025",
"observed_growth": 14,
"projected_growth": 7,
"growth_x": 2,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-breakdown",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-growth-breakdown",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
growth_window | body | TEXT enum | Required. | Typed growth window. | fall_to_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
observed_growth | body | NUMERIC(6,2) | Nullable. | Observed growth points. | 14 | source |
projected_growth | body | NUMERIC(6,2) | Nullable. | Projected growth points. | 7 | source |
growth_x | body | NUMERIC(8,4) | Nullable. | Observed / projected growth. | 2 | source |
Report Views
Return cohort Growth X by averaging each student's individual Growth X ratio. The client never divides total observed growth by total projected growth.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/group-growth-x?groupDimension=school_level&groupKey=MS&subject=math&canonicalTermId=term_2025_26_spring&growthWindow=fall_to_spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"group_dimension": "school_level",
"group_key": "MS",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"norms_set": "2025",
"growth_window": "fall_to_spring",
"student_count": 47,
"excluded_student_count": 3,
"average_growth_x": 2.124,
"growth_x_target": 2,
"students_at_or_above_target_count": 29,
"policy_version": "growth_x_group_v2026_06",
"computed_at": "2026-06-05T14:31:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-group-growth-x",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-group-growth-x",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
groupDimension | query | TEXT enum | Required on group Growth X report reads. | Cohort dimension used by alpha.report_group_growth_x. | school_level | source |
groupKey | query | TEXT | Required on group Growth X report reads. | Value of the selected groupDimension, such as MS for school_level or 1-2_years for tenure_bucket. | MS | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
group_dimension | body | TEXT enum | Required. | Cohort dimension used for the group row. | school_level | source |
group_key | body | TEXT | Required. | Value of the selected group_dimension. | MS | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Required for term-scoped rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
growth_window | body | TEXT enum | Required. | Typed growth window used for the group Growth X answer. | fall_to_spring | source |
student_count | body | INTEGER | Required. | Number of students with an eligible individual Growth X ratio in this group. | 47 | source |
excluded_student_count | body | INTEGER | Required. | Number of otherwise in-scope students excluded because their individual Growth X ratio is null. | 3 | source |
average_growth_x | body | NUMERIC(8,4) | Nullable. | Average of each eligible student's individual growth_x ratio. | 2.124 | source |
growth_x_target | body | NUMERIC(8,4) | Required. | Configured target used to interpret the group answer. | 2 | source |
students_at_or_above_target_count | body | INTEGER | Required. | Eligible students whose individual Growth X meets or exceeds target. | 29 | source |
policy_version | body | TEXT | Required. | Policy/config version used for group eligibility and target. | growth_x_group_v2026_06 | source |
computed_at | body | TIMESTAMPTZ | Required. | UTC timestamp when the surface produced this group row. | 2026-06-05T14:31:00Z | source |
Report Views
Return animation-ready frame rows. The client renders frames; it does not compute grade movement.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/student-progress-animation?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"student_id": "stu_timeback_10017",
"subject_id": "math",
"frame_index": 12,
"frame_date": "2026-06-03",
"working_grade": 7.4,
"effective_grade": 6.4,
"growth_x": 2,
"levels_above_99": 1.6,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-student-progress-animation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-student-progress-animation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
frame_index | body | INTEGER | Required. | Ordered frame number. | 12 | source |
frame_date | body | DATE | Required. | Date represented by the frame. | 2026-06-03 | source |
working_grade | body | NUMERIC(5,2) | Nullable. | Working grade for this frame. | 7.4 | source |
effective_grade | body | NUMERIC(5,2) | Nullable. | Effective grade for this frame when MAP input exists. | 6.4 | source |
growth_x | body | NUMERIC(8,4) | Nullable. | Growth X visible at this frame. | 2 | source |
levels_above_99 | body | NUMERIC(6,2) | Nullable. | 99-level value visible at this frame. | 1.6 | source |
Report Views
Return old-production-vs-Alpha comparison rows for RIT, Growth X, mastery state, and minutes keys.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/closed-loop-reconciliation?studentId=stu_timeback_10017&metricKind=growth_x&subject=math&canonicalTermId=term_2025_26_spring&normsSet=2025" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"metric_kind": "growth_x",
"student_id": "stu_timeback_10017",
"subject_id": "math",
"canonical_term_id": "term_2025_26_spring",
"kc_id": "kc_linear_equations",
"activity_date": "2026-06-03",
"reconcile_status": "match",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-closed-loop-reconciliation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-closed-loop-reconciliation",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
studentId | query | TEXT | Required on student sub-collection routes. | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | stu_timeback_10017 | source |
metricKind | query | TEXT enum | Optional filter on closed-loop reconciliation. | Typed reconciliation metric. Use this instead of separate report-specific endpoints for RIT, Growth X, HMG, KC state, or minutes cutover checks. | growth_x | source |
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
metric_kind | body | TEXT enum | Required. | Metric being reconciled. | growth_x | source |
student_id | body | TEXT | Required. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. | stu_timeback_10017 | source |
subject_id | body | TEXT enum | Required. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. | math | source |
canonical_term_id | body | TEXT | Nullable; required for MAP/RIT/Growth X rows. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. | term_2025_26_spring | source |
kc_id | body | TEXT | Nullable; required for student_kc_state metric. | Curriculum KC id for KC-state reconciliation. | kc_linear_equations | source |
activity_date | body | DATE | Nullable; required for minutes metric. | Date for Events minutes reconciliation. | 2026-06-03 | source |
reconcile_status | body | TEXT enum | Required. | Whether old and Alpha answers match for this key. | match | source |
Report Views
Return surface-owned answer keys used by the future skill pack to prove it asks the surface correctly.
curl -sS "$RESULTS_BASE_URL/alpha/results/v1/reports/answer-key?subject=math&normsSet=2025&growthWindow=fall_to_spring" \
-H "Authorization: Bearer $RESULTS_TOKEN"
{
"object": "list",
"data": [
{
"example_id": "map_quadrants_2025_norms_demo",
"report_id": "map_quadrants",
"norms_set": "2025",
"expected_result_hash": "sha256:bc932e2b",
"expected_row_count": 42,
"verified_at": "2026-06-03T18:55:00Z",
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-answer-key",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture"
}
}
],
"nextCursor": null,
"hasMore": false,
"links": {
"dataDictionary": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/data_dictionary/#table-alpha-report-answer-key",
"architecture": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/architecture",
"customerWebsite": "https://platform3-andymontgomery-9773s-projects.vercel.app/results/alpha/customer_website"
}
}
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
subject | query | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math | source |
canonicalTermId | query | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | term_2025_26_spring | source |
growthWindow | query | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_spring | source |
normsSet | query | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2025 | source |
modifiedSince | query | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | 2026-06-03T18:55:00Z | source |
| Name | In | Type | Required | Meaning | Example | Source |
|---|---|---|---|---|---|---|
example_id | body | TEXT | Required. | Stable id of the worked example. | map_quadrants_2025_norms_demo | source |
report_id | body | TEXT enum | Required. | Report view the example exercises. | map_quadrants | source |
norms_set | body | TEXT enum | Required for normed MAP rows. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. | 2025 | source |
expected_result_hash | body | TEXT | Required. | Hash of the canonical response used by skill-pack self-checks. | sha256:bc932e2b | source |
expected_row_count | body | INTEGER | Required. | Number of rows the surface should return for the example. | 42 | source |
verified_at | body | TIMESTAMPTZ | Required. | UTC time the surface last verified the answer key. | 2026-06-03T18:55:00Z | source |
Object reference
This section mirrors the data dictionary at API-doc depth. It gives implementers enough type, key, lifecycle, field, and provenance detail to build a client without leaving this page, while the data dictionary remains the authoritative field reference.
One durable, settled statement about how a specific student did on a work item, test, gate, or external assessment.
Lifecycle. Created by a OneRoster import, platform scorer, QTI scorer, MAP adapter, or external producer adapter. Updated only through versioned writes; superseded or deleted rows remain audit evidence.
Relationships. Belongs to one student. May belong to one gradebook item. May point to one Content item or test family. Has many KC evidence rows and source evidence rows.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
result_record_id | UUIDRequired. PostgreSQL UUID. | Stable Results identifier for this settled outcome. Constraints: Unique within tenant. Generated by the surface or deterministically mapped during migration. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
student_email | CITEXTNullable joined read field. Case-insensitive text within documented constraints. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key. | No closed enum | alex.rivera@example.edu | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
source_sourced_id | TEXTNullable. Text within documented constraints. | Original OneRoster results.sourcedId when this row aliases a section gradebook result. Constraints: 1 to 255 printable characters when present. Required only for OneRoster pass-through rows. | No closed enum | result-alex-unit-1-quiz | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
result_kind | TEXT enumRequired. One documented enum value. | What kind of durable outcome this row represents. Constraints: Must be one documented value. Public POST /alpha/results/v1/result-records accepts only self_paced, external_assessment, learning_app_outcome, legacy_assessment, and question_result. Adapter-owned kinds map, mastery_gate, mastery_visibility, and gradebook are written only through POST /alpha/results/v1/imports. Determines which relationship fields are required. | self_paced - Public via POST /alpha/results/v1/result-records: a platform-native or QTI-backed self-paced outcome outside a traditional section.external_assessment - Public via POST /alpha/results/v1/result-records: a non-MAP external assessment outcome normalized by a trusted scorer.learning_app_outcome - Public via POST /alpha/results/v1/result-records: a durable scored outcome from a registered learning application.legacy_assessment - Public via POST /alpha/results/v1/result-records: a settled legacy assessment outcome that is not MAP and not a mastery gate.question_result - Public via POST /alpha/results/v1/result-records: an item-level result carrying question response/correctness evidence.map - Adapter-owned via POST /alpha/results/v1/imports: a MAP score normalized from source-shaped NWEA rows.mastery_gate - Adapter-owned via POST /alpha/results/v1/imports: a mastery-gate test/check result that can feed gate pass, HMG, working grade, and track-state derivation.mastery_visibility - Adapter-owned via POST /alpha/results/v1/imports: a raw TimeBack mastery-visibility row used as fallback student-knowledge evidence, not HMG when actual gate tests exist.gradebook - Adapter-owned via POST /alpha/results/v1/imports: a section gradebook result normalized from OneRoster/legacy source-shaped data. | self_paced | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
outcome_status | TEXT enumRequired. One documented enum value. | Plain status for whether the outcome is submitted, graded, exempt, missing, or voided. Constraints: Must be one documented value. OneRoster scoreStatus values are folded here for gradebook outcomes. | not_submitted - Expected work has not been submitted.submitted - Work was submitted but may not be fully graded.partially_graded - Some scoring exists but the outcome is not final.fully_graded - The outcome is settled enough for reports and mastery evidence.exempt - The student is exempt and the row should not count as missing or failed.missing - The source has explicitly marked expected work missing.voided - The row is retained for audit but excluded from normal reports. | fully_graded | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
source_kind | TEXT enumRequired. One documented enum value. | Source family that produced the outcome. Constraints: Must be one documented source kind. External producers also require source_adapter_id. | oneroster - OneRoster gradebook import or API write.qti - QTI-backed platform scorer or self-paced assessment.nwea - NWEA MAP ingest or real-time result observation.college_board - College Board or AP Classroom adapter.barrons - Barron's adapter.princeton_review - Princeton Review adapter.platform_native - A TimeBack-native scorer or migration repair adapter. | qti | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
gradebook_item_id | TEXTNullable; required for gradebook results. Text within documented constraints. | Plain Alpha id for the gradebook item this outcome answers. Constraints: When result_kind is gradebook, must reference alpha.gradebook_item. May be null for MAP, self-paced, or external outcomes that do not belong to a section gradebook item. | No closed enum | gb_unit_1_quiz | RENAME ritd-002-gradebook-result-boundary |
content_id | TEXTNullable. Text within documented constraints. | Content item, test, question, or lesson the outcome came from when the result is content-backed. Constraints: Must reference Content when present. Do not use this for report-card rows without content evidence. | No closed enum | content_factoring_gate_v3 | RESTRICT ritd-016-content-effectiveness-derived-read |
test_family_id | TEXTNullable. Text within documented constraints. | Stable family id for external or platform tests whose versions change over time. Constraints: Required for external assessment adapters when a platform test family exists. Must not be parsed from a producer display name. | No closed enum | ap_calc_ab_practice | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTNullable; required when the outcome belongs to a term. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
occurred_on | DATERequired. ISO 8601 calendar date. | Calendar date the outcome became true for the student. Constraints: Use ISO 8601 date. Must not be derived from a display term when a typed timestamp exists. | No closed enum | 2026-03-21 | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
score | NUMERICNullable. Decimal number within documented constraints. | Numeric score in the effective score scale, when the source has one. Constraints: Must fit the effective score scale. When present for gradebook outcomes, effective_score_scale_id is required. | No closed enum | 47 | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
score_percent | NUMERIC(5,2)Nullable. 0.00 through 100.00 | Normalized percent score used for mastery and report calculations. Constraints: 0 through 100 inclusive. Policy converts to pass/mastery through alpha.policy.* values. | No closed enum | 93.20 | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
text_score | TEXTNullable. Text within documented constraints. | Non-numeric score value, such as a rubric or letter value. Constraints: 0 to 255 visible characters. Must align to the effective score scale when one is present. | No closed enum | A | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
effective_score_scale_id | TEXTNullable; required when score/text_score needs a scale. Text within documented constraints. | The exact score scale chosen for this result before persistence. Constraints: Must resolve to exactly one same-tenant score scale. Ambiguous or missing scale resolution rejects the write. | No closed enum | scale_percent_0_100 | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
mastery_cutoff_met | BOOLEANNullable. true or false. | Whether this result met the active mastery cutoff policy when the row was settled. Constraints: Null when no mastery policy applies. Computed by the surface using alpha.policy.mastery_cutoff, not client math. | No closed enum | true | EXTEND + RESTRICT ritd-005-policy-config |
canonical_response | JSONBNullable. JSON value matching documented schema. | QTI EAP5/EAP6 canonical response payload when item-level response evidence exists, plus adapter diagnostics when an accepted raw row is excluded from a derived measure. Constraints: Must be JSON object or array allowed by the QTI answer schema. Required for QTI-backed item evidence. For raw mastery-gate rows with no parseable grade token, import_diagnostics.mastery_skipped_reason explains that the row was accepted but excluded from mastery ledger, HMG, working grade, and track state. | No closed enum | {"RESPONSE":"B"} | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
is_correct | BOOLEANNullable. true or false. | Canonical correctness flag for item-level evidence. Constraints: Null when the result is not item-level or correctness is not applicable. Must be set when a QTI adapter emits canonical_response for a dichotomous item. | No closed enum | true | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
source_adapter_id | TEXTRequired. Text within documented constraints. | Named adapter or scorer that wrote this row. Constraints: Must reference alpha.source_adapter. Direct free-form external producer rows are invalid. | No closed enum | adapter_qti_platform | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
producer_result_id | TEXTNullable. Text within documented constraints. | External producer's durable id for the source outcome. Constraints: Required for external producers that supply ids. Not globally unique without source_adapter_id and tenant_id. | No closed enum | cb_2026_ap_calc_7712 | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
superseded_by_result_record_id | UUIDNullable. PostgreSQL UUID. | Later result row that replaced this row. Constraints: Must reference alpha.result_record in the same tenant when present. Used for corrections and migration reconciliation. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000102 | RENAME + EXTEND ritd-003-canonical-result-shape ritd-002-gradebook-result-boundary |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
deleted_at | TIMESTAMPTZNullable. UTC timestamp. | Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports. Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
The assignment, activity, assessment, or gradebook column that can produce one or more result records.
Lifecycle. Created from OneRoster lineItems or Alpha authoring. Result records point here; the item is not the student's attempt and is not a report-card rollup.
Relationships. Can have many result records. Can have one default score scale binding. References a section/class, category, academic session, and school when backed by OneRoster.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
gradebook_item_id | TEXTRequired. Text within documented constraints. | Plain Alpha id for the gradebook item; aliases OneRoster lineItems.sourcedId. Constraints: 1 to 255 printable characters. Unique within tenant. | No closed enum | gb_unit_1_quiz | RENAME ritd-002-gradebook-result-boundary |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
source_sourced_id | TEXTNullable. Text within documented constraints. | Original OneRoster lineItems.sourcedId when the item came from OneRoster. Constraints: 1 to 255 printable characters when present. Must stay stable across OneRoster imports. | No closed enum | lineitem-unit-1-quiz | RENAME ritd-002-gradebook-result-boundary |
title | TEXTRequired. Text within documented constraints. | Teacher-readable title of the gradebook item. Constraints: 1 to 255 visible characters. Must not contain credentials or private comments. | No closed enum | Unit 1 algebra readiness quiz | RENAME ritd-002-gradebook-result-boundary |
description | TEXTNullable. Text within documented constraints. | Short explanation of the gradebook item for teachers, students, or reports. Constraints: 0 to 1000 visible characters. Must not be the only place a typed relationship or policy lives. | No closed enum | Checks readiness for linear-equation work. | RENAME ritd-002-gradebook-result-boundary |
assign_date | DATERequired for OneRoster-backed items. ISO 8601 calendar date. | Date the item was assigned. Constraints: ISO 8601 date. Required for OneRoster lineItems. | No closed enum | 2026-08-15 | RENAME ritd-002-gradebook-result-boundary |
due_date | DATERequired for OneRoster-backed items. ISO 8601 calendar date. | Date work is due. Constraints: ISO 8601 date. Must be on or after assign_date when both are present. | No closed enum | 2026-08-22 | RENAME ritd-002-gradebook-result-boundary |
class_id | TEXTNullable. Text within documented constraints. | Class/section that owns this item when the item is section-backed. Constraints: Must reference People & Orgs class in the same tenant when present. | No closed enum | class-algebra-1-a | RENAME ritd-002-gradebook-result-boundary |
category_id | TEXTNullable. Text within documented constraints. | Gradebook category such as quiz, homework, or test. Constraints: Must reference a governed gradebook category when present. | No closed enum | quiz | RENAME ritd-002-gradebook-result-boundary |
academic_session_id | TEXTRequired for section gradebook items. Text within documented constraints. | Academic session/term for this item. Constraints: Must reference the canonical academic session. Clients use canonical_term_id on reports, not display names. | No closed enum | term_2025_26_fall | RENAME ritd-002-gradebook-result-boundary |
school_id | TEXTRequired for section gradebook items. Text within documented constraints. | School org that owns the item. Constraints: Must reference People & Orgs school org in the same tenant. | No closed enum | school_north_valley | RENAME ritd-002-gradebook-result-boundary |
result_value_min | NUMERICNullable. Decimal number within documented constraints. | Lowest numeric score allowed for result records on this item. Constraints: Must be <= result_value_max when both are present. | No closed enum | 0 | RENAME ritd-002-gradebook-result-boundary |
result_value_max | NUMERICNullable. Decimal number within documented constraints. | Highest numeric score allowed for result records on this item. Constraints: Must be >= result_value_min when both are present. | No closed enum | 100 | RENAME ritd-002-gradebook-result-boundary |
default_score_scale_id | TEXTNullable. Text within documented constraints. | Default score scale attached to the item when no result-specific scale overrides it. Constraints: Must reference alpha.score_scale when present. Exactly one effective scale is required before a scored result persists. | No closed enum | scale_percent_0_100 | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
The explicit score interpretation used by gradebook items and result records so score math is validated before persistence.
Lifecycle. Created from OneRoster scoreScales and score-scale join rows or Alpha authoring. Resolved at write time for scored result rows.
Relationships. Can be bound to gradebook items. Can be bound directly to result records. Can scope to org, course, or class.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
score_scale_id | TEXTRequired. Text within documented constraints. | Plain Alpha id for a score scale; aliases OneRoster scoreScales.sourcedId. Constraints: 1 to 255 printable characters. Unique within tenant. | No closed enum | scale_percent_0_100 | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
title | TEXTRequired. Text within documented constraints. | Human-readable score scale name. Constraints: 1 to 255 visible characters. | No closed enum | Percent 0 to 100 | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
scale_type | TEXT enumRequired. One documented enum value. | Plain score-scale type used by validation and display. Constraints: Must be one documented value. Open OneRoster type strings fold to this governed set at write time. | percentage - A numeric percent scale.points - A numeric point scale.letter - A letter-grade mapping.rubric - A rubric-level mapping.pass_fail - A binary pass/fail mapping. | percentage | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
min_value | NUMERICNullable. Decimal number within documented constraints. | Lowest numeric score accepted by this scale. Constraints: Required for percentage and points scales. Must be <= max_value. | No closed enum | 0 | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
max_value | NUMERICNullable. Decimal number within documented constraints. | Highest numeric score accepted by this scale. Constraints: Required for percentage and points scales. Must be >= min_value. | No closed enum | 100 | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
value_map | JSONBRequired. JSON value matching documented schema. | Structured mapping of labels, ranges, or source values to interpreted values. Constraints: Must be a JSON object or array matching scale_type. Generated from OneRoster score_scale_value before Alpha reads. | No closed enum | {"A":{"min":90,"max":100},"B":{"min":80,"max":89.99}} | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
scope_kind | TEXT enumRequired. One documented enum value. | Where this scale may apply. Constraints: Must be one documented value. Scope ids must match the scope kind. | org - Scale applies to an organization.course - Scale applies to a course.class - Scale applies to a class.gradebook_item - Scale applies to a gradebook item.result_record - Scale applies only to one result record. | gradebook_item | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
scope_id | TEXTRequired. Text within documented constraints. | Id of the org, course, class, gradebook item, or result record named by scope_kind. Constraints: Must reference the same tenant object named by scope_kind. | No closed enum | gb_unit_1_quiz | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
active | BOOLEANRequired. true or false. | Whether this scale can be selected for new scored result writes. Constraints: False scales remain visible for historical rows but cannot be used for new writes. | No closed enum | true | RENAME + RESTRICT ritd-002-gradebook-result-boundary |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Registry of trusted scorers, importers, and migration adapters allowed to write canonical Results rows.
Lifecycle. Created by operators or implementation migrations before producer writes. Deactivated adapters cannot create new result records but remain referenced by history.
Relationships. Writes many result records. Has many result source evidence rows.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
source_adapter_id | TEXTRequired. Text within documented constraints. | Stable id for the named producer adapter. Constraints: Unique within tenant. Use lowercase ASCII letters, digits, and underscores. | No closed enum | adapter_nwea_map | EXTEND ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
adapter_kind | TEXT enumRequired. One documented enum value. | Type of scorer, import adapter, or migration producer. Constraints: Must be one documented value. | platform_scorer - Trusted platform scorer that writes canonical Results rows directly.qti_scorer - QTI scorer that emits EAP5/EAP6 canonical response evidence.nwea_map - NWEA MAP adapter using the NWEAMap surface contract.college_board - College Board or AP Classroom result adapter.barrons - Barron's result adapter.princeton_review - Princeton Review result adapter.migration - One-time migration adapter used for closed-loop reconciliation. | nwea_map | EXTEND ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
display_name | TEXTRequired. Text within documented constraints. | Human-readable adapter name shown in support and provenance views. Constraints: 1 to 160 visible characters. Must not contain secrets. | No closed enum | NWEA MAP adapter | EXTEND ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
writes_canonical_response | BOOLEANRequired. true or false. | Whether this adapter can write QTI canonical_response evidence. Constraints: True adapters must satisfy the QTI EAP5/EAP6 response contract. | No closed enum | false | EXTEND ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
active | BOOLEANRequired. true or false. | Whether new writes through this adapter are accepted. Constraints: False rejects new writes but does not invalidate existing history. | No closed enum | true | EXTEND ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
last_success_at | TIMESTAMPTZNullable. UTC timestamp. | Most recent successful write or import by this adapter. Constraints: UTC timestamp when present. Used for operator health, not student reporting. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Immutable evidence that lets migration, audit, and reconciliation trace each public result back to its producer row or payload.
Lifecycle. Written with or before a result_record. Never updated except to add supersession or soft-delete evidence.
Relationships. May belong to one result record. Belongs to one source adapter.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
source_evidence_id | UUIDRequired. PostgreSQL UUID. | Stable id for one source-evidence row. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000201 | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
result_record_id | UUIDNullable. PostgreSQL UUID. | Result record this evidence supports; nullable while evidence is quarantined or awaiting reconciliation. Constraints: Must reference alpha.result_record when present. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
source_adapter_id | TEXTRequired. Text within documented constraints. | Adapter that supplied this evidence. Constraints: Must reference alpha.source_adapter. | No closed enum | adapter_nwea_map | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
producer_result_id | TEXTNullable. Text within documented constraints. | Producer-specific result id, when supplied. Constraints: Not globally unique without tenant and adapter. 0 to 255 visible characters. | No closed enum | 1110000001 | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
upstream_table | TEXTRequired. Text within documented constraints. | Approved upstream table, view, or producer collection this evidence came from. Constraints: Must be a known upstream source such as oneroster.results or nweamap.assessment_result_projection. | No closed enum | nweamap.assessment_result_projection | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
upstream_key | JSONBRequired. JSON value matching documented schema. | Structured key values needed to find the source row again. Constraints: Must be a JSON object. Relationships are represented as typed fields, not free-text tags. | No closed enum | {"projection_id":"018f...","test_id":"1110000001"} | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
raw_payload_hash | TEXTNullable. Text within documented constraints. | Hash of the source payload or row content for idempotency and audit. Constraints: Use sha256-prefixed digest. Do not store raw secrets or credentials. | No closed enum | sha256:2d3f6b4e8c1a0f9b | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
canonical_payload_hash | TEXTNullable. Text within documented constraints. | Hash of the normalized canonical payload written into Results. Constraints: Use sha256-prefixed digest. Changes when canonicalization changes. | No closed enum | sha256:bd21c73f0e9a | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
imported_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when the surface accepted this evidence. Constraints: Must be UTC. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
Per-result link to a Curriculum KC with the score evidence used to update the student's knowledge state.
Lifecycle. Written by the surface when a result is settled and a scorer or adapter can map it to one or more curriculum KCs.
Relationships. Belongs to one result record. References one Curriculum KC. Feeds zero or one current student_kc_state update.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
result_kc_evidence_id | UUIDRequired. PostgreSQL UUID. | Stable id for this result-to-KC evidence row. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000301 | EXTEND ritd-004-student-knowledge-graph |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
result_record_id | UUIDRequired. PostgreSQL UUID. | Result record that produced the KC evidence. Constraints: Must reference alpha.result_record. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | EXTEND ritd-004-student-knowledge-graph |
kc_id | TEXTRequired. Text within documented constraints. | Curriculum knowledge-component id this evidence applies to. Constraints: Must reference Curriculum KC id. Must not be a tag or free text. | No closed enum | kc_linear_equations | EXTEND ritd-004-student-knowledge-graph |
evidence_kind | TEXT enumRequired. One documented enum value. | Direction and shape of evidence this result gives for the KC. Constraints: Must be one documented value. | correct - The result gives positive evidence for the KC.incorrect - The result gives negative evidence for the KC.partial - The result gives mixed or partial-credit evidence.manual - An authorized human or migration workflow supplied the evidence.external - A named external producer supplied normalized evidence. | correct | EXTEND ritd-004-student-knowledge-graph |
score_percent | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Percent score contribution for this KC only. Constraints: 0 through 100 inclusive when present. | No closed enum | 100.00 | EXTEND ritd-004-student-knowledge-graph |
confidence_delta | NUMERIC(6,5)Nullable. Decimal number within documented constraints. | Surface-computed movement applied to confidence for this KC. Constraints: -1 through 1. Computed by Results policy, never client math. | No closed enum | 0.12500 | EXTEND ritd-004-student-knowledge-graph |
evidence_weight | NUMERIC(8,4)Required. Decimal number within documented constraints. | Relative weight this evidence carries in mastery calculations. Constraints: Must be >= 0. Default comes from alpha.policy.* config. | No closed enum | 1.0000 | EXTEND + RESTRICT ritd-005-policy-config |
evidence_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this evidence became true. Constraints: Must be UTC. Usually copied from the result's occurred timestamp. | No closed enum | 2026-03-21T14:30:00Z | EXTEND ritd-004-student-knowledge-graph |
Input evidence stream for alpha.content_effectiveness. Results stores the evidence link here and recomputes counters/rates in the content_effectiveness read model.
Lifecycle. Written after a settled result references content the student used. Results reads this evidence and recomputes alpha.content_effectiveness after relevant result changes.
Relationships. Belongs to one result record. References one Content item and optionally one KC.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
result_content_evidence_id | UUIDRequired. PostgreSQL UUID. | Stable id for this result-to-content evidence row. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000401 | RESTRICT ritd-016-content-effectiveness-derived-read |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
result_record_id | UUIDRequired. PostgreSQL UUID. | Result record that evaluates or references the content. Constraints: Must reference alpha.result_record. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | RESTRICT ritd-016-content-effectiveness-derived-read |
content_id | TEXTRequired. Text within documented constraints. | Content item the student used before or during the result. Constraints: Must reference Content module. Real foreign-key relationship, never tag. | No closed enum | content_factoring_video | RESTRICT ritd-016-content-effectiveness-derived-read |
content_version_id | TEXTNullable. Text within documented constraints. | Exact content version used when version evidence exists. Constraints: Must reference Content version when present. | No closed enum | content_factoring_video_v4 | RESTRICT ritd-016-content-effectiveness-derived-read |
kc_id | TEXTNullable. Text within documented constraints. | Curriculum KC this content evidence concerns. Constraints: Must reference Curriculum KC when present. | No closed enum | kc_factoring_quadratics | RESTRICT ritd-016-content-effectiveness-derived-read |
validation_outcome | TEXT enumRequired. One documented enum value. | Whether the result is positive, negative, neutral, or non-applicable evidence for content effectiveness. Constraints: Must be one documented value. | validated - The result is positive evidence that the content helped this student succeed.failed - The result is negative evidence for this content/KC pairing.neutral - The result is connected to the content but should not move effectiveness.not_applicable - The content link is audit evidence only. | validated | RESTRICT ritd-016-content-effectiveness-derived-read |
evidence_weight | NUMERIC(8,4)Required. Decimal number within documented constraints. | Weight Content should use when rolling this evidence up. Constraints: Must be >= 0. Policy/config owned by the surface. | No closed enum | 1.0000 | EXTEND + RESTRICT ritd-005-policy-config |
used_content_at | TIMESTAMPTZNullable. UTC timestamp. | Time the student interacted with the content when known from Events. Constraints: UTC timestamp when present. Results does not store raw Events; it stores the durable evidence link. | No closed enum | 2026-03-21T14:12:00Z | RESTRICT ritd-016-content-effectiveness-derived-read |
The per-student overlay on the shared curriculum graph: four named states for one student and one KC, plus due dates and evidence pointers.
Lifecycle. Materialized by the Results surface after result evidence changes or retention policy runs. Historical point-in-time reads use effective dates.
Relationships. Belongs to one student. References one Curriculum KC. References result evidence rows.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
kc_id | TEXTRequired. Text within documented constraints. | Curriculum KC id for this student overlay row. Constraints: Must reference Curriculum KC. Not a tag. | No closed enum | kc_linear_equations | EXTEND ritd-004-student-knowledge-graph |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
initial_mastery | NUMERIC(6,5)Required. 0.00000 through 1.00000 | Acquisition-state value after initial learning and acquisition-gate evidence for this KC. Constraints: 0 through 1 inclusive. Must be stored separately from retention, durable mastery, and fluency. Consumers must not recompute this from raw evidence. | No closed enum | 0.94000 | EXTEND ritd-004-student-knowledge-graph |
current_retention | NUMERIC(6,5)Required. 0.00000 through 1.00000 | Current retained-knowledge value after the active retention model and time decay. Constraints: 0 through 1 inclusive. This is the field review scheduling reads. Consumers see next_due_at rather than retention-model internals. | No closed enum | 0.88000 | EXTEND ritd-004-student-knowledge-graph |
durable_mastery | NUMERIC(6,5)Required. 0.00000 through 1.00000 | Longer-run mastery belief after repeated evidence and retention checks. Constraints: 0 through 1 inclusive. Must stay separate from current_retention so a recently refreshed KC and a durable KC do not collapse to one label. | No closed enum | 0.81000 | EXTEND ritd-004-student-knowledge-graph |
fluency_state | TEXT enumRequired. One documented enum value. | Accuracy/speed/automaticity state for practice on an already-acquired KC. Constraints: Must be one documented value. Practice and fluency never gate initial acquisition. | not_practiced - The student has not yet completed enough fluency practice for this KC.building_accuracy - The student is practicing for reliable correctness before speed matters.building_speed - The student is accurate enough and is now building automaticity.fluent - The student meets the configured accuracy and speed threshold.decayed - Earlier fluency evidence has decayed under the active retention policy.blocked - The fluency state cannot update because evidence or policy config is missing. | building_speed | EXTEND ritd-004-student-knowledge-graph |
next_due_at | TIMESTAMPTZNullable. UTC timestamp. | When the surface believes this KC next needs review or practice. Constraints: UTC timestamp when present. Null when no due task exists or null_reason explains why next task selection cannot use this row. Apps render due dates; they do not run the retention model. | No closed enum | 2026-03-28T14:30:00Z | EXTEND ritd-004-student-knowledge-graph |
evidence_count | INTEGERRequired. Integer within documented constraints. | Number of evidence rows currently contributing to this state. Constraints: Must be >= 0. | No closed enum | 8 | EXTEND ritd-004-student-knowledge-graph |
last_evidence_at | TIMESTAMPTZNullable. UTC timestamp. | Most recent evidence timestamp feeding this state. Constraints: UTC when present. Null only when evidence_count is 0. | No closed enum | 2026-03-21T14:30:00Z | EXTEND ritd-004-student-knowledge-graph |
retention_model_ref | TEXTRequired. Text within documented constraints. | Policy/config id for the retention model used. Constraints: Must reference active or historical alpha.policy_config. No client retention or decay math. | No closed enum | retention_fire_v2026_01 | EXTEND + RESTRICT ritd-005-policy-config |
policy_version | TEXTRequired. Text within documented constraints. | Config version used for mastery and decay calculations. Constraints: Must be stable and traceable to alpha.policy_config. | No closed enum | policy_2026_06_03 | EXTEND + RESTRICT ritd-005-policy-config |
source_result_refs | JSONBRequired. JSON value matching documented schema. | Structured references to result and KC-evidence rows supporting the state. Constraints: Must be a JSON array of typed references. Must not include raw event payloads, content bodies, or copied source score columns. | No closed enum | [{"type":"result_kc_evidence","id":"018f..."}] | EXTEND ritd-004-student-knowledge-graph |
effective_at | TIMESTAMPTZRequired. UTC timestamp. | When this materialized state became effective. Constraints: UTC timestamp. Part of point-in-time history. | No closed enum | 2026-03-21T14:31:00Z | EXTEND ritd-004-student-knowledge-graph |
begin_date | DATENullable. ISO 8601 calendar date. | First date this state is locatable for point-in-time reads. Constraints: Null means excluded from point-in-time reads. | No closed enum | 2026-03-21 | EXTEND ritd-004-student-knowledge-graph |
end_date | DATENullable. ISO 8601 calendar date. | Last date this state is active; null means still active after begin_date. Constraints: Must be null or >= begin_date. | No closed enum | 2026-05-01 | EXTEND ritd-004-student-knowledge-graph |
is_time_locatable | BOOLEANRequired on effective-dated rows. true or false. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false. | No closed enum | true | RESTRICT ritd-015-report-card-gates |
One student's current position on one Curriculum track, including current level, current segment, placement evidence, switch history, and effective dates.
Lifecycle. Created when a student is placed on a track. Advancing updates the state for that track; switching closes the old row with status switched and creates a new row for the new track.
Relationships. Belongs to one student. References one Curriculum track. References current Curriculum track_level and track_level_segment rows. May point to the track the student switched to.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
track_id | TEXTRequired. Text within documented constraints. | Curriculum track this state belongs to. Constraints: Must reference Curriculum track. Primary key part with tenant_id and student_id. Track definition is referenced, never copied. | No closed enum | track_common_core_math_k12 | EXTEND ritd-032-student-track-state |
current_track_level_id | TEXTRequired for active rows. Text within documented constraints. | Curriculum track level where the student currently sits. Constraints: Must reference a level that belongs to track_id. Null only when status is completed, exited, or blocked with missing placement. | No closed enum | track_level_math_7 | EXTEND ritd-032-student-track-state |
current_segment_id | TEXTNullable. Text within documented constraints. | Current Curriculum track_level_segment inside the track level. Constraints: Must reference a segment under current_track_level_id when present. Null is allowed before segment placement or after completion. | No closed enum | segment_linear_equations | EXTEND ritd-032-student-track-state |
placement_evidence | JSONBRequired. JSON value matching documented schema. | Structured references to diagnostic, MAP, gate, or migration evidence that placed the student here. Constraints: Must be a JSON array/object of typed references. Must not copy MAP RIT, gate score, or transcript payload values; those stay in source rows. | No closed enum | {"source":"grade_level_gate","result_record_id":"018f..."} | EXTEND ritd-032-student-track-state |
status | TEXT enumRequired. One documented enum value. | Lifecycle state of the student's relationship to this track. Constraints: Must be one documented value. Only active rows drive current progress visualizations. | active - The student is currently placed on this track.completed - The student has completed the track under the active exit policy.paused - The student remains on the track but active work is temporarily paused.switched - The student switched away from this track; switched_to_track_id points at the new track.exited - The student left the track without switching to another tracked path.blocked - The surface cannot place or advance the student because required evidence or policy config is missing. | active | EXTEND ritd-032-student-track-state |
switched_to_track_id | TEXTNullable; required when status is switched. Text within documented constraints. | Curriculum track the student moved to when this row is closed by a switch. Constraints: Must reference Curriculum track when present. Must be null unless status is switched. | No closed enum | track_sat_math_600_800 | EXTEND ritd-032-student-track-state |
effective_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this track-state version became effective. Constraints: Used for audit ordering and replay. Must be UTC. | No closed enum | 2026-03-21T14:31:00Z | EXTEND ritd-032-student-track-state |
source_evidence_refs | JSONBRequired. JSON value matching documented schema. | Structured references to Results, MAP, gate, or transcript rows supporting this state. Constraints: Must be a JSON array of typed references. Must not include raw event payloads or copied Curriculum definitions. | No closed enum | [{"type":"map_score","id":"018f..."},{"type":"gate_pass","id":"018f..."}] | EXTEND ritd-032-student-track-state |
begin_date | DATENullable. ISO 8601 calendar date. | First date this track state is point-in-time valid. Constraints: Null means excluded from point-in-time reads. | No closed enum | 2026-03-21 | EXTEND ritd-032-student-track-state |
end_date | DATENullable. ISO 8601 calendar date. | Last date this track state is valid; null means still active after begin_date. Constraints: Must be null or >= begin_date. | No closed enum | 2026-06-30 | EXTEND ritd-032-student-track-state |
is_time_locatable | BOOLEANRequired on effective-dated rows. true or false. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false. | No closed enum | true | RESTRICT ritd-015-report-card-gates |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
One surface-owned scheduling answer for a student: a typed task reference plus why it was selected. Apps render this answer; they never choose it.
Lifecycle. Computed on read, or served from an optional surface cache invalidated by state, gate, Curriculum, or Policy changes.
Relationships. Belongs to one student. Reads KC state, track state, gate state, Curriculum candidate tasks, and Policy. Returns a typed reference to a course_component_member, Content item, external_course task, or no task.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
as_of_date | DATERequired. ISO 8601 calendar date. | Point-in-time date for the next-task decision. Constraints: ISO 8601 date. Current reads are still explicit asOfDate decisions. | No closed enum | 2026-06-05 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
task_type | TEXT enumRequired. One documented enum value. | Kind of task the surface selected. Constraints: Must be one documented value. Apps render the type; they do not reinterpret it. | new_lesson - Start a lesson on the current frontier KC.review - Review the most-due retained KC.practice - Practice a fluency or automaticity target.gate_retry - Retry a mastery gate after remediation or cooldown.remediation - Complete assigned remediation before a gate retry.external_course_task - Work in a referenced external course under its evidence contract.no_task - No task is available under the current policy and state. | review | DERIVED READ ritd-034-next-task-selection |
task_ref_type | TEXT enumRequired unless task_type is no_task. One documented enum value. | Type of object the selected task points at. Constraints: Allowed values: course_component_member, course_component, content, external_course, gate, none. Must match task_ref_id shape. | course_component_member - A Curriculum member row that pairs target and renderer.course_component - A Curriculum component such as a lesson, review, or practice node.content - A Content item or test to render.external_course - An external course task governed by an evidence contract.gate - A mastery gate retry or equivalent form.none - No task reference because task_type is no_task. | course_component_member | DERIVED READ ritd-034-next-task-selection |
task_ref_id | TEXTNullable; required unless task_type is no_task. Text within documented constraints. | Identifier of the task target named by task_ref_type. Constraints: Must reference the same tenant object named by task_ref_type. Null only when task_type is no_task. | No closed enum | member_review_linear_equations | DERIVED READ ritd-034-next-task-selection |
reason | TEXT enumRequired. One documented enum value. | Why the surface selected this task. Constraints: Must be one documented value. Reason is returned so apps can explain the assignment without recalculating it. | frontier_ready - Prerequisites are ready and the next frontier KC can be taught.retention_due - current_retention has a due review before it decays further.fluency_due - fluency_state needs practice before the KC is considered automatic.gate_failed_never_learned - A failed gate classified misses as never learned.gate_failed_forgot - A failed gate classified misses as forgot.gate_failed_careless - A failed gate classified misses as careless.cooldown_complete - A prior gate cooldown ended and retry is allowed.blocked_missing_policy - Policy/config required to choose a task is missing.blocked_missing_state - Student state required to choose a task is missing. | retention_due | DERIVED READ ritd-034-next-task-selection |
due_at | TIMESTAMPTZNullable. UTC timestamp. | When the selected task is due or should be shown. Constraints: UTC timestamp when present. Usually comes from student_kc_state.next_due_at or gate cooldown policy. | No closed enum | 2026-06-05T15:00:00Z | DERIVED READ ritd-034-next-task-selection |
source_state_refs | JSONBRequired. JSON value matching documented schema. | Structured references to KC state, track state, gate pass, and policy rows used for this decision. Constraints: Must be a JSON array of typed references. Must not contain raw mastery formulas, Curriculum definitions, or event payloads. | No closed enum | [{"type":"student_kc_state","kc_id":"kc_linear_equations","effective_at":"2026-06-05T14:30:00Z"}] | DERIVED READ ritd-034-next-task-selection |
policy_version | TEXTRequired. Text within documented constraints. | Policy/config version used by next-task selection. Constraints: Must reference active or historical alpha.policy_config. Changing policy creates a new answer version. | No closed enum | policy_2026_06_03 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable; required when task_type is no_task. One documented enum value. | Why no task is available or why selection is blocked. Constraints: Must be one documented value when present. Missing state/policy is a surface gap to reconcile, not an app fallback. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | missing_policy_config | DERIVED READ ritd-034-next-task-selection |
computed_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when the surface produced this answer. Constraints: Used for cache freshness and audit. Must be UTC. | No closed enum | 2026-06-05T14:31:00Z | DERIVED READ ritd-034-next-task-selection |
Append-only source of truth for awarded XP. A row records one award, discount, penalty, or reversal with policy and evidence references.
Lifecycle. Written only by the Results surface after a settled attempt or correction. Corrections append reversal rows instead of updating or deleting prior awards.
Relationships. Belongs to one student. May reference one result_record. May reference one Content item and expected_xp source. May reverse one prior xp_ledger row.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
xp_award_id | UUIDRequired. PostgreSQL UUID. | Stable id for this XP ledger row. Constraints: Unique within tenant. Rows are append-only. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a004001 | EXTEND ritd-033-xp-ledger |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
result_record_id | UUIDNullable; required for attempt-based awards. PostgreSQL UUID. | Settled result that triggered this XP award. Constraints: Must reference alpha.result_record when present. Required for accuracy, repeat-discount, and gaming-penalty awards tied to an attempt. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | EXTEND ritd-033-xp-ledger |
content_id | TEXTNullable. Text within documented constraints. | Content item whose expected_xp was used. Constraints: Must reference Content when present. Does not copy Content title/body/kind. | No closed enum | content_factoring_gate_v3 | EXTEND ritd-033-xp-ledger |
expected_xp_ref | JSONBRequired. JSON value matching documented schema. | Structured reference to the Content expected_xp source and version used in the calculation. Constraints: Must be a JSON object of typed references. Must not copy a full Content row. | No closed enum | {"content_id":"content_factoring_gate_v3","expected_xp_version":"2026-06-01"} | EXTEND ritd-033-xp-ledger |
awarded_xp | NUMERIC(10,2)Required. Decimal number within documented constraints. | XP amount awarded by this ledger row; may be negative for penalties or reversals. Constraints: May be negative. Must be computed by Results under calculation_policy_ref. Do not sum deleted or draft rows because ledger rows are never draft/deleted. | No closed enum | 42.50 | EXTEND ritd-033-xp-ledger |
award_reason | TEXT enumRequired. One documented enum value. | Why this XP row exists. Constraints: Must be one documented value. Reason determines required evidence fields. | accuracy_award - Awarded from a verifying attempt's accuracy against expected_xp.effort_award - Awarded from effort signals that are bound to a verifying attempt.verified_passive_activity - Awarded for passive activity only after a verifying attempt.repeat_attempt_discount - Award adjusted downward by the repeat-attempt policy.gaming_penalty - Negative award from cheating or gaming evidence.correction_reversal - Reversal row for a prior award correction. | accuracy_award | EXTEND ritd-033-xp-ledger |
calculation_policy_ref | TEXTRequired. Text within documented constraints. | Policy/config version that calculated awarded_xp. Constraints: Must reference alpha.policy_config. Consumers must not re-run the formula. | No closed enum | xp_award_formula_v2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
source_evidence_refs | JSONBRequired. JSON value matching documented schema. | Structured references to result, content, effort, anti-gaming, or correction evidence. Constraints: Must be a JSON array of typed references. Must not contain raw event payloads or copied Content expected_xp values beyond expected_xp_ref. | No closed enum | [{"type":"result_record","id":"018f..."},{"type":"event_summary","id":"evt_sum_..."}] | EXTEND ritd-033-xp-ledger |
created_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this ledger row was appended. Constraints: Must be UTC. Never update this timestamp after insertion. | No closed enum | 2026-03-21T14:31:00Z | EXTEND ritd-033-xp-ledger |
reversal_of_xp_award_id | UUIDNullable. PostgreSQL UUID. | Prior XP ledger row this row reverses or corrects. Constraints: Must reference alpha.xp_ledger when present. Required when award_reason is correction_reversal. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a004000 | EXTEND ritd-033-xp-ledger |
Derived Results-owned rollup for one Content item: validated count, failed count, effectiveness rate, and provenance. Consumers read it; no app maintains counters.
Lifecycle. Recomputed by the Results surface after a settled test result references content the student used. Historical answers retain policy/version provenance.
Relationships. References one Content item and optional Content version. May be scoped to one Curriculum KC. Reads many result_content_evidence rows.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
content_id | TEXTRequired. Text within documented constraints. | Content item this effectiveness row describes. Constraints: Must reference Content. Primary key part. Do not copy Content title/body/kind into Results. | No closed enum | content_factoring_video | EXTEND ritd-016-content-effectiveness-derived-read |
content_version_id | TEXTNullable primary key part. Text within documented constraints. | Exact Content version when effectiveness is version-specific. Constraints: Must reference Content version when present. Null means policy intentionally rolls up across versions. | No closed enum | content_factoring_video_v4 | EXTEND ritd-016-content-effectiveness-derived-read |
kc_id | TEXTNullable primary key part. Text within documented constraints. | Curriculum KC this effectiveness row concerns. Constraints: Must reference Curriculum KC when present. Null means content-level rollup across its scoped KCs by policy. | No closed enum | kc_factoring_quadratics | EXTEND ritd-016-content-effectiveness-derived-read |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
validated_by_count | INTEGERRequired. Integer within documented constraints. | Number of settled result evidence rows that validated this content under the active policy. Constraints: Must be >= 0. Surface recomputed; apps never increment. | No closed enum | 41 | EXTEND ritd-016-content-effectiveness-derived-read |
failed_by_count | INTEGERRequired. Integer within documented constraints. | Number of settled result evidence rows that counted as failed evidence for this content under the active policy. Constraints: Must be >= 0. Surface recomputed; apps never increment. | No closed enum | 9 | EXTEND ritd-016-content-effectiveness-derived-read |
effectiveness_rate | NUMERIC(6,5)Nullable. 0.00000 through 1.00000 | validated_by_count divided by validated plus failed evidence under policy. Constraints: 0 through 1 inclusive when present. Null when there is no counted evidence. Consumers must not recompute the rate. | No closed enum | 0.82000 | EXTEND ritd-016-content-effectiveness-derived-read |
evidence_count | INTEGERRequired. Integer within documented constraints. | Total result_content_evidence rows inspected for this rollup. Constraints: Must be >= validated_by_count + failed_by_count. Neutral and not_applicable evidence may make this larger. | No closed enum | 54 | EXTEND ritd-016-content-effectiveness-derived-read |
policy_version | TEXTRequired. Text within documented constraints. | Policy/config version used to classify content evidence and compute the rate. Constraints: Must reference alpha.policy_config. Primary key part. | No closed enum | content_effectiveness_v2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
source_result_refs | JSONBRequired. JSON value matching documented schema. | Structured references to the result_content_evidence rows and rollup job that produced this answer. Constraints: Must be a JSON array/object of typed references. Must not include raw answer payloads or Content bodies. | No closed enum | {"evidence_set_id":"eff_factoring_v4_2026_06"} | EXTEND ritd-016-content-effectiveness-derived-read |
last_recomputed_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when the surface last recomputed this row. Constraints: Must be UTC. Used for freshness checks. | No closed enum | 2026-06-05T14:31:00Z | EXTEND ritd-016-content-effectiveness-derived-read |
Named thresholds, formulas, windows, and config lists the Results surface reads so consumers never hardcode policy numbers.
Lifecycle. Created as draft, activated for an effective window, then superseded or deprecated. Historical rows stay available for reproducibility.
Relationships. Referenced by result, mastery, MAP calculator, report-card, and advancement outputs.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
policy_name | TEXT enumRequired. One documented enum value. | Canonical policy key read by the Results surface. Constraints: Must be one documented policy name or an accepted future policy through architecture update. | alpha.policy.mastery_cutoff - Cutoff for mastery decisions, displayed as >=90% when value is 89.5.alpha.policy.stuck_attempt_threshold - Attempt count threshold for stuck-student detection.alpha.policy.gate_retake_cooldown - Cooldown window before retaking a failed mastery gate.alpha.policy.proxy_subject_rules - Rules mapping source subjects such as Vocab, Writing, and FastMath.alpha.policy.growth_x_target - Default Growth X target, currently 2.0.alpha.policy.school_year_boundaries - School-year boundaries for term and TimeBack-era calculations.alpha.policy.school_levels - Locked WL/LL/L1/L2/MS/HS school-level registry used by every report that filters by level.alpha.policy.tenure_buckets - Locked tenure bucket definitions read from admission_date; reports never hardcode band edges.alpha.policy.rit_calculator - RIT50/RIT90/effective-grade and 99-level calculator config.alpha.policy.percentile_rit_translation - Percentile <-> RIT translation config over NWEA published norms; no app-side norms table.alpha.policy.r90_table - Legacy Results R90 fixture policy; GOALS grade2RIT/R90 uses NWEAMAP/Analytics.alpha.policy.retention_model - Retention model used for student_kc_state.current_retention and next_due_at.alpha.policy.next_task_selection - Task-selection priority and blocked/null-reason policy.alpha.policy.xp_award_formula - Awarded-XP formula, repeat-attempt discount, effort weights, and penalty rules.alpha.policy.content_effectiveness - Evidence classification and effectiveness-rate policy for content rollups. | alpha.policy.growth_x_target | EXTEND + RESTRICT ritd-005-policy-config |
config_version | TEXTRequired. Text within documented constraints. | Stable version string for this policy value. Constraints: Unique with tenant_id and policy_name. Use ISO date or semantic version. | No closed enum | 2026-06-03 | EXTEND + RESTRICT ritd-005-policy-config |
schema_name | TEXTRequired. Text within documented constraints. | Schema used to validate value_json. Constraints: Must be a known policy schema. Changing schema requires a new config_version. | No closed enum | growth_x_target_config | EXTEND + RESTRICT ritd-005-policy-config |
value_json | JSONBRequired. JSON value matching documented schema. | Structured policy value or formula inputs. Constraints: Must validate against schema_name. Must not contain secrets or free-text business rules. | No closed enum | {"target":2.0} | EXTEND + RESTRICT ritd-005-policy-config |
status | TEXT enumRequired. One documented enum value. | Lifecycle state of this config row. Constraints: Must be one documented value. | draft - Config is being prepared and is not used by surface computations.active - Config is the current value read by the surface for its effective window.superseded - Config has been replaced but remains available for historical answers.deprecated - Config should not be used for new calculations and remains only for audit. | active | EXTEND + RESTRICT ritd-005-policy-config |
begin_date | DATENullable. ISO 8601 calendar date. | First date this config can be used. Constraints: Null configs are not time-locatable and cannot drive point-in-time calculations. | No closed enum | 2026-06-03 | EXTEND + RESTRICT ritd-005-policy-config |
end_date | DATENullable. ISO 8601 calendar date. | Last date this config can be used; null means active after begin_date. Constraints: Must be null or >= begin_date. | No closed enum | 2027-06-30 | EXTEND + RESTRICT ritd-005-policy-config |
is_time_locatable | BOOLEANRequired on effective-dated rows. true or false. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false. | No closed enum | true | RESTRICT ritd-015-report-card-gates |
owner | TEXTRequired. Text within documented constraints. | Role accountable for the config value. Constraints: 1 to 160 visible characters. Must be a role or team, not a secret. | No closed enum | academics-policy | EXTEND + RESTRICT ritd-005-policy-config |
Plain Results view of Ed-Fi StudentAcademicRecord: one student's cumulative or term academic achievement, credits, GPA evidence, diplomas, honors, and report-card references.
Lifecycle. Produced by the Ed-Fi 1EdTech base after canonical ack. Results reads only canonical records, excludes drafts, and excludes soft-deleted rows unless audit scope is explicit.
Relationships. Belongs to one TimeBack student. References one education organization/school and one canonical term. Can have many course transcript rows.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
academic_record_id | UUIDRequired. PostgreSQL UUID. | Stable Results id for the StudentAcademicRecord view row. Constraints: Unique within tenant. Derived from the Ed-Fi canonical_record id and resource kind. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003101 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
student_sourced_id | TEXTRequired. Text within documented constraints. | Platform3 OneRoster student sourcedId resolved from the Ed-Fi StudentReference. Constraints: Must join to the same tenant People & Orgs student. Do not expose an Ed-Fi-only local student key as the Alpha student id. | No closed enum | stu_timeback_10017 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map |
school_sourced_id | TEXTRequired. Text within documented constraints. | Platform3 org/school sourcedId resolved from the Ed-Fi EducationOrganizationReference. Constraints: Must join to a same-tenant People & Orgs org. District/school meaning comes from the org tree, not Results storage. | No closed enum | school_north_valley | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
school_year | TEXTRequired. Text within documented constraints. | Canonical school year for the academic record. Constraints: Format YYYY-YY. Resolved from Ed-Fi SchoolYearTypeReference before the view is public. | No closed enum | 2025-26 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
term_descriptor | TEXT descriptor codeRequired. Text within documented constraints. | Ed-Fi TermDescriptor code for the source academic record, resolved beside canonical_term_id. Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed. | No closed enum | Spring Semester | RESTRICT ritd-031-edfi-academic-record-transcript |
session_attempted_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Credits attempted during this academic session. Constraints: 0 or greater when present. Extracted as a typed number from payload_json, not client JSON parsing. | No closed enum | 3.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
session_earned_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Credits earned during this academic session. Constraints: 0 or greater when present. Must not exceed attempted credits unless the source record explicitly allows transfer/extra-credit context. | No closed enum | 3.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
cumulative_attempted_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Total attempted credits in the cumulative academic record. Constraints: 0 or greater when present. Extracted from Ed-Fi credit object value. | No closed enum | 20.00 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
cumulative_earned_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Total earned credits in the cumulative academic record. Constraints: 0 or greater when present. Used by transcript rollups when course-level rows are unavailable. | No closed enum | 18.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
gpa | NUMERIC(5,3)Nullable. Decimal number within documented constraints. | Grade point average value from the academic record when the source includes a GPA object. Constraints: 0 through the tenant's configured GPA scale when present. Descriptor and GPA type provenance remains in source_evidence when multiple GPA objects exist. | No closed enum | 3.875 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
class_rank | INTEGERNullable. Integer within documented constraints. | Class-rank value from Ed-Fi ClassRanking when present. Constraints: Must be >= 1 when present. Null when no rank exists or the source suppresses it. | No closed enum | 12 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
projected_graduation_date | DATENullable. ISO 8601 calendar date. | Projected graduation date from the academic record. Constraints: ISO 8601 date. May be a month/year projection represented as a canonical date by Ed-Fi source policy. | No closed enum | 2028-06-01 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
source_canonical_record_id | UUIDRequired. PostgreSQL UUID. | Ed-Fi canonical_record row id backing this Alpha view row. Constraints: Must reference edfi.canonical_record. Used only for audit and raw/API convergence. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003001 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
canonical_state | TEXT enumRequired. One documented enum value. | Canonical state of the source Ed-Fi record. Constraints: Ordinary reads include canonical only. Superseded/deleted states require audit or point-in-time scope. | canonical - The Ed-Fi base accepted the record and it is eligible for Results reads.superseded - A later canonical record replaced this row; ordinary current reads exclude it unless point-in-time or audit scope asks for it.deleted - The canonical row is soft-deleted and ordinary reads exclude it. | canonical | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
deleted_at | TIMESTAMPTZNullable. UTC timestamp. | Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports. Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows. | No closed enum | 2026-06-03T18:55:00Z | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Plain Results view of Ed-Fi CourseTranscript: final course grade, attempt result, attempted credits, earned credits, credit descriptors, repeat code, and source academic-record link.
Lifecycle. Created only after the Ed-Fi base accepts a canonical CourseTranscript record. Corrections route to the Ed-Fi 1EdTech surface; Results exposes the typed view.
Relationships. Belongs to one academic record and one student. References one course and optionally sections/teachers through platform3 sourcedIds. Feeds transcript_result_view.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
course_transcript_id | UUIDRequired. PostgreSQL UUID. | Stable Results id for one CourseTranscript view row. Constraints: Unique within tenant. Derived from the source canonical_record id and record kind. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003201 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
academic_record_id | UUIDRequired. PostgreSQL UUID. | Academic record this course transcript belongs to. Constraints: Must reference alpha.academic_record_view in the same tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003101 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
course_id | TEXTRequired. Text within documented constraints. | Platform3 course sourcedId for the course recorded on the transcript. Constraints: Must resolve through OneRoster/People & Orgs course views. Do not use a local Ed-Fi course key in public Alpha filters. | No closed enum | course_algebra_1 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map |
course_title | TEXTNullable. Text within documented constraints. | Course title from Ed-Fi when present. Constraints: 0 to 120 characters. Display-only; do not parse for subject, grade, or course id. | No closed enum | Algebra I | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
school_year | TEXTRequired. Text within documented constraints. | Canonical school year inherited from the linked academic record. Constraints: Format YYYY-YY. Must match the linked academic_record_view row. | No closed enum | 2025-26 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
course_attempt_result | TEXT descriptor codeRequired. Text within documented constraints. | Governed Ed-Fi CourseAttemptResultDescriptor value for the student's course attempt. Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed. | No closed enum | Pass | RESTRICT ritd-031-edfi-academic-record-transcript |
attempted_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Credits the student attempted for this course. Constraints: 0 or greater when present. Extracted from Ed-Fi AttemptedCredits object. | No closed enum | 0.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
earned_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Credits the student earned for this course. Constraints: 0 or greater when present. This is the credit field used by transcript_result_view for final course answers. | No closed enum | 0.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
credit_type | TEXT descriptor codeNullable. Text within documented constraints. | Governed descriptor for the kind/category of course credit when Ed-Fi supplies one. Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed. | No closed enum | Academic | RESTRICT ritd-031-edfi-academic-record-transcript |
method_credit_earned | TEXT descriptor codeNullable. Text within documented constraints. | Governed descriptor for how the credits were earned. Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed. | No closed enum | Classroom | RESTRICT ritd-031-edfi-academic-record-transcript |
final_letter_grade | TEXTNullable. Text within documented constraints. | Final letter grade submitted for the course. Constraints: 0 to 20 characters. Do not infer pass/fail from this text; use course_attempt_result when deciding attempt result. | No closed enum | A- | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
final_numeric_grade | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Final numeric grade submitted for the course. Constraints: Numeric precision 9, scale 2. Null when the transcript uses letter grade only. | No closed enum | 91.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
course_repeat_code | TEXT descriptor codeNullable. Text within documented constraints. | Governed descriptor for how a repeated course counts in GPA/credit calculations. Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed. | No closed enum | Repeat counted | RESTRICT ritd-031-edfi-academic-record-transcript |
source_canonical_record_id | UUIDRequired. PostgreSQL UUID. | Ed-Fi canonical_record row id backing this course transcript view row. Constraints: Must reference edfi.canonical_record. Used for source evidence and raw/API convergence. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003002 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
canonical_state | TEXT enumRequired. One documented enum value. | Canonical state of the source Ed-Fi record. Constraints: Ordinary reads include canonical only. Deleted/superseded states require audit scope. | canonical - The Ed-Fi base accepted the record and it is eligible for Results reads.superseded - A later canonical record replaced this row; ordinary current reads exclude it unless point-in-time or audit scope asks for it.deleted - The canonical row is soft-deleted and ordinary reads exclude it. | canonical | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
deleted_at | TIMESTAMPTZNullable. UTC timestamp. | Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports. Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows. | No closed enum | 2026-06-03T18:55:00Z | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Plain Results view of Ed-Fi Grade records that are durable academic facts: letter/numeric grade, grade type, current-grade indicator, grading-period reference, and gradebook-entry evidence.
Lifecycle. Exposed after the Ed-Fi base accepts the Grade as canonical. Draft UI-recovery grades and attendance/discipline records are outside Results.
Relationships. Belongs to one student-section association and grading period. May reference one gradebook entry as source evidence. Can feed transcript_result_view.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
course_grade_id | UUIDRequired. PostgreSQL UUID. | Stable Results id for one Ed-Fi Grade view row. Constraints: Unique within tenant. Derived from the source canonical_record id and record kind. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003301 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
section_id | TEXTRequired. Text within documented constraints. | Platform3 section/class sourcedId resolved from StudentSectionAssociationReference. Constraints: Must reference a same-tenant People & Orgs section. Do not duplicate section facts into Results. | No closed enum | section_alg1_a | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map |
grading_period_id | TEXTRequired. Text within documented constraints. | Canonical grading period for the grade. Constraints: Must reference People & Orgs academic period. Must not be parsed from an Ed-Fi descriptor label. | No closed enum | gp_2025_26_q4 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map |
grade_type | TEXT descriptor codeRequired. Text within documented constraints. | Governed Ed-Fi GradeTypeDescriptor value, such as final or grading period. Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed. | No closed enum | Final | RESTRICT ritd-031-edfi-academic-record-transcript |
letter_grade | TEXTNullable. Text within documented constraints. | Letter grade earned for the course or grading period. Constraints: 0 to 20 characters. Use grade_type and current_grade_indicator to understand lifecycle. | No closed enum | A- | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
numeric_grade | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Numeric grade earned for the course or grading period. Constraints: Numeric precision 9, scale 2. Null when the source uses only a letter grade or performance conversion. | No closed enum | 91.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
current_grade_indicator | BOOLEANNullable. true or false. | Whether this is an interim current grade rather than a final grade. Constraints: True means interim/current for the grading period. Final transcript answers prefer final grades/course transcripts when available. | No closed enum | false | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
current_grade_as_of_date | DATENullable. ISO 8601 calendar date. | As-of date for a current/interim grade. Constraints: ISO 8601 date. Required by policy when current_grade_indicator is true and source supplies it. | No closed enum | 2026-05-30 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
gradebook_entry_id | TEXTNullable. Text within documented constraints. | Ed-Fi gradebook entry identifier joined as evidence when the grade references one. Constraints: Must not be confused with alpha.gradebook_item unless mapped through platform3 sourcedIds. Used as source evidence, not a blank instrument home. | No closed enum | edfi_gbe_final_exam | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
diagnostic_statement | TEXTNullable. Text within documented constraints. | Teacher/source diagnostic note attached to the grade. Constraints: 0 to 1024 characters. Display/audit text only; do not parse for grade or pass/fail logic. | No closed enum | Consistent evidence across final unit assessments. | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
source_canonical_record_id | UUIDRequired. PostgreSQL UUID. | Ed-Fi canonical_record row id backing this course grade view row. Constraints: Must reference edfi.canonical_record. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003003 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
canonical_state | TEXT enumRequired. One documented enum value. | Canonical state of the source Ed-Fi record. Constraints: Ordinary reads include canonical only. Deleted/superseded states require audit scope. | canonical - The Ed-Fi base accepted the record and it is eligible for Results reads.superseded - A later canonical record replaced this row; ordinary current reads exclude it unless point-in-time or audit scope asks for it.deleted - The canonical row is soft-deleted and ordinary reads exclude it. | canonical | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
deleted_at | TIMESTAMPTZNullable. UTC timestamp. | Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports. Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows. | No closed enum | 2026-06-03T18:55:00Z | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Report-ready Results row for questions such as: what final grade and earned credits does this student have for this course in this term?
Lifecycle. Read-only view generated after academic-record/course-transcript/course-grade views are available. It normalizes the answer but stores no copied Ed-Fi payload fields.
Relationships. Belongs to one student. Usually references one course transcript and academic record. May fall back to a course grade when CourseTranscript is absent.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
course_id | TEXTRequired for course-scoped answers. Text within documented constraints. | Platform3 course sourcedId for the transcript answer. Constraints: Must resolve through OneRoster/People & Orgs. Nullable only for academic-record-only summary rows. | No closed enum | course_algebra_1 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
transcript_answer_kind | TEXT enumRequired. One documented enum value. | Source shape used for this normalized transcript answer. Constraints: Must be one documented value. Determines which source id field is populated. | academic_record - Summary row from StudentAcademicRecord.course_transcript - Course-level final grade and credit row from CourseTranscript.course_grade - Grading-period or final grade row from Grade.transcript_rollup - Report-ready normalized answer row over academic record, course transcript, and grade views. | course_transcript | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
source_record_id | UUIDRequired. PostgreSQL UUID. | Source Alpha transcript view row id used for this answer. Constraints: Must reference academic_record_id, course_transcript_id, or course_grade_id according to transcript_answer_kind. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003201 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
academic_record_id | UUIDNullable. PostgreSQL UUID. | Academic record linked to this transcript answer. Constraints: Must reference alpha.academic_record_view when present. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003101 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
course_transcript_id | UUIDNullable. PostgreSQL UUID. | Course transcript row selected for the answer. Constraints: Must reference alpha.course_transcript_view when present. Preferred source for final grade and credits. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003201 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
course_grade_id | UUIDNullable. PostgreSQL UUID. | Course grade row used when transcript policy selects or falls back to Ed-Fi Grade. Constraints: Must reference alpha.course_grade_view when present. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a003301 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
final_grade | TEXTNullable. Text within documented constraints. | Final grade display value for the transcript answer. Constraints: Usually final_letter_grade; may be numeric text when only numeric grade exists. Do not parse this field for course attempt result. | No closed enum | A- | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
final_numeric_grade | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Numeric final grade for the transcript answer when available. Constraints: Numeric precision 9, scale 2. | No closed enum | 91.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
earned_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Credits earned for the course/term answer. Constraints: 0 or greater when present. Read from CourseTranscript earned_credits or academic record summary by policy. | No closed enum | 0.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
attempted_credits | NUMERIC(9,2)Nullable. Decimal number within documented constraints. | Credits attempted for the course/term answer. Constraints: 0 or greater when present. | No closed enum | 0.50 | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
course_attempt_result | TEXT descriptor codeNullable. Text within documented constraints. | Governed Ed-Fi attempt-result descriptor selected for the transcript answer. Constraints: Must resolve through edfi.descriptor_code by tenant_id, descriptor_type, namespace, code_value, and effective-date window. No local Results descriptor table or free-text fallback is allowed. | No closed enum | Pass | RESTRICT ritd-031-edfi-academic-record-transcript |
answer_precedence | INTEGERRequired. Integer within documented constraints. | Surface-owned precedence used to choose among transcript sources. Constraints: Lower numbers win. Policy is documented by the Results surface; clients do not choose by inspecting raw Ed-Fi payloads. | No closed enum | 10 | EXTEND + RESTRICT ritd-005-policy-config |
source_evidence | JSONBReturned only when includeSourceEvidence=true and authorized. JSON value matching documented schema. | Structured source evidence: canonical_record ids, descriptor refs, source resource names, and soft-delete evidence. Constraints: Must be a JSON object or array of typed references. Must not include raw payload_json blobs or secrets. | No closed enum | {"resource":"CourseTranscript","canonical_record_id":"018f..."} | RENAME + RESTRICT ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Settled report-card statement for one student, subject, course, section, or reporting period.
Lifecycle. Created when report-card rollups settle. Superseded entries remain available through point-in-time reads.
Relationships. Belongs to one student. May reference result records, working grade, MAP score, or gate pass evidence.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
report_card_entry_id | UUIDRequired. PostgreSQL UUID. | Stable id for this report-card statement. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000501 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
course_id | TEXTNullable. Text within documented constraints. | Course this entry concerns when it is course-scoped. Constraints: Must reference People & Orgs/Curriculum course when present. | No closed enum | course_algebra_1 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
section_id | TEXTNullable. Text within documented constraints. | Class or section this entry concerns when section-scoped. Constraints: Must reference People & Orgs class/section when present. | No closed enum | class-algebra-1-a | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
reporting_period_id | TEXTRequired. Text within documented constraints. | Typed reporting period for this statement. Constraints: Must reference canonical academic session/period. | No closed enum | rp_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
grade_value | TEXTNullable. Text within documented constraints. | Published grade or level shown on the report card. Constraints: 0 to 64 visible characters. Must align with grade_scale_id when present. | No closed enum | A- | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
narrative | TEXTNullable. Text within documented constraints. | Optional teacher/system narrative shown on the report card. Constraints: 0 to 4000 visible characters. Must not be the only source of typed status. | No closed enum | Strong growth in equations; continue fractions practice. | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
status | TEXT enumRequired. One documented enum value. | Lifecycle state of this report-card entry. Constraints: Must be one documented value. | draft - Visible only to authorized staff and not final for the reporting period.final - Published durable report-card statement.superseded - Replaced by a later effective-dated report-card entry.voided - Retained for audit but excluded from current report-card reads. | final | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
evidence_links | JSONBRequired. JSON value matching documented schema. | Structured links to result, MAP, mastery, or gate evidence used for this statement. Constraints: Must be a JSON array of typed references. No raw source payloads. | No closed enum | [{"type":"result_record","id":"018f..."}] | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
policy_version | TEXTRequired. Text within documented constraints. | Policy/config version used to calculate this statement. Constraints: Must reference alpha.policy_config rows used by the rollup. | No closed enum | policy_2026_06_03 | EXTEND + RESTRICT ritd-005-policy-config |
begin_date | DATENullable. ISO 8601 calendar date. | First date this report-card statement is point-in-time valid. Constraints: Null means excluded from point-in-time reads. | No closed enum | 2026-05-30 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
end_date | DATENullable. ISO 8601 calendar date. | Last date this statement is valid; null means still active after begin_date. Constraints: Must be null or >= begin_date. | No closed enum | 2026-06-30 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
is_time_locatable | BOOLEANRequired on effective-dated rows. true or false. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false. | No closed enum | true | RESTRICT ritd-015-report-card-gates |
Durable pass, fail, cooldown, or retry permission for an advancement or mastery gate.
Lifecycle. Created after a gate result settles. Updated by new attempts or cooldown policy; historical rows remain point-in-time evidence.
Relationships. Belongs to one student. References one gate content/test and one result record when available.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
gate_pass_id | UUIDRequired. PostgreSQL UUID. | Stable id for this gate state row. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000601 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
gate_content_id | TEXTRequired. Text within documented constraints. | Content test or gate this pass concerns. Constraints: Must reference Content. Content owns blank gate/test metadata. | No closed enum | content_alg_1_mastery_gate | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
result_record_id | UUIDNullable. PostgreSQL UUID. | Most recent result record deciding this gate state. Constraints: Must reference alpha.result_record when present. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
gate_status | TEXT enumRequired. One documented enum value. | Current durable gate state for this effective window. Constraints: Must be one documented value. | passed - The student currently has permission or credit for the gate.failed - The latest settled gate outcome did not pass.cooldown - The student failed and must wait until next_eligible_at before retaking.retry_allowed - The student may retake the gate now.blocked - The gate cannot be decided because required policy or evidence is missing. | passed | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
passed_at | TIMESTAMPTZNullable. UTC timestamp. | UTC timestamp when the student passed the gate. Constraints: Required when gate_status is passed. Null otherwise. | No closed enum | 2026-03-21T14:30:00Z | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
next_eligible_at | TIMESTAMPTZNullable. UTC timestamp. | UTC time a student may retake after cooldown. Constraints: Required when gate_status is cooldown. Computed from alpha.policy.gate_retake_cooldown. | No closed enum | 2026-03-24T14:30:00Z | EXTEND + RESTRICT ritd-005-policy-config |
attempt_count | INTEGERRequired. Integer within documented constraints. | Number of settled attempts considered for this gate state. Constraints: Must be >= 0. Stuck-attempt policy reads this value. | No closed enum | 2 | EXTEND + RESTRICT ritd-005-policy-config |
policy_version | TEXTRequired. Text within documented constraints. | Policy/config version for cutoff and cooldown rules. Constraints: Must reference alpha.policy_config. | No closed enum | policy_2026_06_03 | EXTEND + RESTRICT ritd-005-policy-config |
begin_date | DATENullable. ISO 8601 calendar date. | First date this gate state is point-in-time valid. Constraints: Null means excluded from point-in-time reads. | No closed enum | 2026-03-21 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
end_date | DATENullable. ISO 8601 calendar date. | Last date this gate state is valid; null means still active after begin_date. Constraints: Must be null or >= begin_date. | No closed enum | 2026-04-01 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
is_time_locatable | BOOLEANRequired on effective-dated rows. true or false. | Surface-computed boolean telling consumers whether begin_date is known enough for point-in-time reads. Constraints: begin_date NULL means false and the row is excluded from point-in-time computation. end_date NULL means active after begin_date. Both null means false. | No closed enum | true | RESTRICT ritd-015-report-card-gates |
Immutable history of actual mastery-test results used to derive highest mastered grade and working grade at any as-of date.
Lifecycle. Appended when a mastery-gate result settles. Corrections append superseding ledger rows; historical rows remain queryable by asOfDate. Summary tables and course placements never overwrite this ledger.
Relationships. Belongs to one student. References one settled result_record. References one gate Content item and one Curriculum track level/grade. References the policy config used for the mastery cutoff.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
mastery_ledger_id | UUIDRequired. PostgreSQL UUID. | Stable id for this immutable mastery-test ledger row. Constraints: Unique within tenant. Generated by the surface or deterministic migration mapping. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a005001 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
result_record_id | UUIDRequired. PostgreSQL UUID. | Settled result record for the mastery-gate attempt. Constraints: Must reference alpha.result_record. The referenced result must be a mastery_gate or equivalent gate result. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000101 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
gate_content_id | TEXTRequired. Text within documented constraints. | Content test or test_bank gate this attempt answered. Constraints: Must reference Content. Do not infer a gate from a display title. | No closed enum | content_math_g7_exit_bank | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
track_id | TEXTRequired. Text within documented constraints. | Curriculum track whose level/grade the gate certifies. Constraints: Must reference Curriculum track. Track definitions stay in Curriculum. | No closed enum | track_common_core_math_k12 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
track_level_id | TEXTRequired. Text within documented constraints. | Curriculum track level or grade certified by the gate. Constraints: Must reference a level that belongs to track_id. Used to compare mastered grades within a subject. | No closed enum | track_level_math_7 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
grade_level | NUMERIC(5,2)Required. Decimal number within documented constraints. | Numeric grade level certified by this gate attempt. Constraints: Must be comparable within subject and track. Comes from Curriculum track-level registry, not a parsed gate name. | No closed enum | 7.00 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
score_percent | NUMERIC(5,2)Required. 0.00 through 100.00 | Percent score earned on the mastery-gate attempt. Constraints: 0 through 100 inclusive. Compared with alpha.policy.mastery_cutoff by the surface. | No closed enum | 92.50 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
mastery_cutoff_policy_ref | TEXTRequired. Text within documented constraints. | Policy config row that supplies the cutoff for this gate decision. Constraints: Must reference alpha.policy_config where policy_name=alpha.policy.mastery_cutoff. Do not store or read a client-local cutoff. | No closed enum | alpha.policy.mastery_cutoff:2026-06-03 | EXTEND + RESTRICT ritd-005-policy-config |
passed_mastery_gate | BOOLEANRequired. true or false. | Whether score_percent met the policy cutoff for this gate attempt. Constraints: True iff score_percent >= the resolved cutoff for mastery_cutoff_policy_ref. False rows remain history but do not raise HMG. | No closed enum | true | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
attempted_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when the mastery-test attempt was completed. Constraints: Must be UTC. Used for ordering attempts on the same gate. | No closed enum | 2026-03-21T14:30:00Z | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
effective_date | DATERequired. ISO 8601 calendar date. | First date this ledger row can affect HMG and working-grade as-of reads. Constraints: ISO 8601 date. Must not be null because HMG is point-in-time. | No closed enum | 2026-03-21 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
superseded_by_mastery_ledger_id | UUIDNullable. PostgreSQL UUID. | Later correction row that supersedes this ledger row. Constraints: Must reference alpha.mastery_ledger in the same tenant when present. Ordinary as-of reads exclude rows superseded on or before the requested date. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a005002 | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
source_evidence_refs | JSONBRequired. JSON value matching documented schema. | Structured references to result, gate, test_bank/form, scorer, and migration evidence. Constraints: Must be a JSON array of typed references. Must not include raw answer payloads or copied Curriculum definitions. | No closed enum | [{"type":"result_record","id":"018f..."},{"type":"policy_config","id":"alpha.policy.mastery_cutoff:2026-06-03"}] | EXTEND ritd-015-report-card-gates ritd-014-working-grade-advancement ritd-005-policy-config |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Point-in-time answer for the highest grade a student has mastered in one subject as of any date.
Lifecycle. Computed from alpha.mastery_ledger for the requested asOfDate. If no actual mastery-test result exists, the surface may use a summary-table or course-placement fallback and must label that fallback. When tests and summaries disagree, tests win.
Relationships. Belongs to one student. Reads mastery_ledger rows for actual test evidence. May reference fallback summary/course-placement evidence only when no qualifying test result exists.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
as_of_date | DATERequired. ISO 8601 calendar date. | Point-in-time date for the HMG answer. Constraints: ISO 8601 date. Current reads are still represented as as-of reads. | No closed enum | 2026-06-05 | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
highest_mastered_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Highest grade level mastered as of the date. Constraints: Null only when null_reason is present. Derived from actual mastery-test results before any fallback is considered. | No closed enum | 7.00 | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
evidence_source | TEXT enumRequired. One documented enum value. | Which evidence family produced the HMG answer. Constraints: Must be one documented value. mastery_test_results wins over summary_table_fallback and course_placement_fallback. | mastery_test_results - Actual mastery-gate test results exist as of the requested date and are the authoritative source.summary_table_fallback - No actual mastery-test result exists as of the requested date, so the surface used a legacy summary table only as fallback evidence.course_placement_fallback - No actual mastery-test result or usable summary row exists as of the requested date, so the surface used course placement only as fallback evidence.none - No usable actual or fallback evidence exists as of the requested date. | mastery_test_results | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
mastery_cutoff_policy_ref | TEXTRequired. Text within documented constraints. | Policy config used to decide which mastery-test rows count as passing. Constraints: Must reference alpha.policy_config where policy_name=alpha.policy.mastery_cutoff. The common 89.5 value is read from policy; it is not embedded in consumer SQL. | No closed enum | alpha.policy.mastery_cutoff:2026-06-03 | EXTEND + RESTRICT ritd-005-policy-config |
source_mastery_ledger_ids | JSONB arrayRequired. JSON value matching documented schema. | Ledger row ids that support the returned grade. Constraints: Empty only when evidence_source is summary_table_fallback, course_placement_fallback, or none. Must be a JSON array of ids, not raw payloads. | No closed enum | ["018f4b4e-9c7a-7d3d-8b2f-2f673a005001"] | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
fallback_source_refs | JSONBRequired. JSON value matching documented schema. | Structured references to summary-table or course-placement fallback evidence. Constraints: Empty array when evidence_source is mastery_test_results. Fallback refs are audit evidence only and never override mastery_ledger rows. | No closed enum | [] | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
policy_version | TEXTRequired. Text within documented constraints. | Policy/config version for the HMG resolver. Constraints: Must reference alpha.policy_config. Changing policy produces a new answer version. | No closed enum | hmg_resolver_v2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable. One documented enum value. | Why highest_mastered_grade is null. Constraints: Required when highest_mastered_grade is null. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | not_enough_history | EXTEND + RESTRICT ritd-005-policy-config |
computed_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when the surface produced this HMG answer. Constraints: Must be UTC. Used for freshness and report-answer audit. | No closed enum | 2026-06-05T14:31:00Z | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
Surface-owned grade-equivalent level for one student and subject as of a date.
Lifecycle. Recomputed when mastery-test ledger rows, MAP effective grade, mastery state, report-card evidence, fallback evidence, or policy inputs change. Actual mastery-test results are authoritative; summary tables and course placements are fallback evidence only.
Relationships. Belongs to one student. References MAP effective-grade and mastery evidence where available.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
as_of_date | DATERequired. ISO 8601 calendar date. | Point-in-time date for the working-grade answer. Constraints: ISO 8601 date. Current reads are still asOfDate reads. | No closed enum | 2026-06-03 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
working_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Surface-owned grade-equivalent level as of the date. Constraints: May be null only when null_reason is present. Do not recompute in clients. Must honor the actual-test-before-fallback evidence priority. | No closed enum | 7.40 | EXTEND ritd-011-rit-effective-grade |
highest_mastered_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Highest mastered grade input used by the working-grade resolver. Constraints: Read from alpha.highest_mastered_grade for the same student, subject, and as_of_date. May be null only when HMG has no evidence. | No closed enum | 7.00 | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
input_kind | TEXT enumRequired. One documented enum value. | Primary evidence family used to produce the value. Constraints: Must be one documented value. mastery_test_results wins over summary_table_fallback and course_placement_fallback when present. | mastery_test_results - Actual mastery-test results drove the grade/level answer; this source wins over summaries and placements.map_effective_grade - MAP effective-grade output drove the value where policy allows MAP-based placement.student_kc_state - Four-state KC state drove the value.report_card - Report-card evidence drove the value.teacher_override - Authorized human override drove the value.summary_table_fallback - Legacy summary table was used only because no qualifying mastery-test result existed.course_placement_fallback - Course placement was used only because no qualifying mastery-test result or summary row existed.mixed - Multiple evidence families contributed, with actual mastery-test results taking precedence when present. | mixed | EXTEND ritd-011-rit-effective-grade |
baseline_effective_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Baseline MAP effective grade used by advancement. Constraints: May be null before a MAP baseline exists. | No closed enum | 6.80 | EXTEND ritd-011-rit-effective-grade |
sy_start_working_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Working grade at school-year start used by advancement. Constraints: May be null before school-year-start state exists. | No closed enum | 7.00 | EXTEND ritd-014-working-grade-advancement |
evidence_priority | TEXTRequired. Text within documented constraints. | Plain explanation of which evidence won and why. Constraints: Must say actual mastery-test results win when they exist. Must name fallback use when evidence_source is summary_table_fallback or course_placement_fallback. Must name the HMG+1 tiebreak when it resolves an enrollment disagreement. | No closed enum | mastery_test_results_won_over_summary | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
source_evidence_refs | JSONBRequired. JSON value matching documented schema. | Structured references to HMG, mastery ledger, MAP, report-card, or fallback evidence used. Constraints: Must be a JSON array of typed references. Must not include raw source payloads. | No closed enum | [{"type":"highest_mastered_grade","student_id":"stu_timeback_10017","as_of_date":"2026-06-05"}] | DERIVED READ ritd-014-working-grade-advancement ritd-015-report-card-gates ritd-005-policy-config |
formula_version | TEXTRequired. Text within documented constraints. | Named formula/config version used. Constraints: Must reference alpha.policy_config. | No closed enum | working_grade_v2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable. One documented enum value. | Why working_grade is null. Constraints: Required when working_grade is null. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | not_enough_history | EXTEND + RESTRICT ritd-005-policy-config |
Surface-owned K-8 growth metric: max(0, currentWorkingGrade - max(baselineEffectiveGrade, syStartWorkingGrade)).
Lifecycle. Read model recalculated from working_grade and baseline inputs for the requested asOfDate.
Relationships. Belongs to one student. Reads working_grade and MAP effective-grade inputs.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
as_of_date | DATERequired. ISO 8601 calendar date. | Point-in-time date for advancement. Constraints: ISO 8601 date. | No closed enum | 2026-06-03 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
current_working_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Working grade now. Constraints: May be null only with null_reason. | No closed enum | 7.40 | EXTEND ritd-014-working-grade-advancement |
baseline_effective_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Baseline effective grade from MAP. Constraints: May be null before baseline exists. | No closed enum | 6.80 | EXTEND ritd-014-working-grade-advancement |
sy_start_working_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | School-year-start working grade. Constraints: May be null before start state exists. | No closed enum | 7.00 | EXTEND ritd-014-working-grade-advancement |
advancement_value | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Surface-owned advancement value from the formula. Constraints: Must be >= 0 when present. Must equal max(0, current - max(baseline, sy_start)). | No closed enum | 0.40 | EXTEND ritd-014-working-grade-advancement |
formula_version | TEXTRequired. Text within documented constraints. | Formula/config version used. Constraints: Must reference alpha.policy_config. | No closed enum | advancement_v2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable. One documented enum value. | Why advancement_value is null. Constraints: Required when advancement_value is null. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | not_enough_history | EXTEND + RESTRICT ritd-005-policy-config |
Student-facing answer for how much of one course is complete, how much XP remains, and which evidence source produced the answer.
Lifecycle. Materialized by Results when app-reported Caliper progress, Analytics XP/completion rollups, Curriculum expected-XP refs, or relevant student state changes. Missing evidence returns null fields with null_reason instead of a client-side formula.
Relationships. Belongs to one student. References one Curriculum course by course_id. References Analytics rollup evidence by source_analytics_rollup_refs. References Curriculum denominator evidence by source_curriculum_refs.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
course_id | TEXTRequired. Text within documented constraints. | Curriculum course id whose progress is being answered. Constraints: Must reference the course in Curriculum. The course tree and components stay in Curriculum. Used as a typed filter on the course-progress endpoint. | No closed enum | course_math_grade_7_main | EXTEND ritd-036-course-grade-progress |
course_title | TEXTNullable display field. Text within documented constraints. | Course display title copied only as a display snapshot for this progress answer. Constraints: May be null when not authorized or unavailable. Not a join key; course_id is the relationship. Must not be used to infer subject or grade. | No closed enum | Math Grade 7 Main Sequence | EXTEND ritd-036-course-grade-progress |
grade_level | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Working grade level associated with this course progress row. Constraints: May be null for ungraded courses. Comes from Curriculum/track metadata, not MAP/RIT/R90. Used to aggregate grade-level progress. | No closed enum | 7.00 | EXTEND ritd-036-course-grade-progress |
as_of_date | DATERequired. ISO 8601 calendar date. | Date the progress answer is valid for. Constraints: ISO 8601 date. Current progress reads are represented as as-of reads. Used with student_id, subject_id, and course_id as the answer key. | No closed enum | 2026-06-03 | EXTEND ritd-036-course-grade-progress |
xp_remaining | NUMERIC(14,3)Nullable when evidence is missing. Decimal number within documented constraints. | Expected XP remaining in this course after applying the selected progress evidence. Constraints: Must be nonnegative when present. This is the canonical work-left answer; it is not allowed to override direct app-reported percent_complete. Null requires null_reason. | No closed enum | 120.000 | EXTEND ritd-036-course-grade-progress |
total_xp | NUMERIC(14,3)Nullable when Curriculum denominator evidence is missing. Decimal number within documented constraints. | Total expected XP for the course denominator. Constraints: Must be positive when present. Comes from Curriculum expected-XP refs. Must not double-count container and leaf expected_xp. | No closed enum | 400.000 | EXTEND ritd-036-course-grade-progress |
percent_complete | NUMERIC(7,3)Nullable when progress cannot be answered. 0.000 through 100.000 | Course percent complete shown to apps and reports. Constraints: 0 through 100 inclusive when present. Direct app percent is rendered as reported within policy bounds. When XP-shaped evidence wins, percent_complete = 100 * (1 - xp_remaining / total_xp). | No closed enum | 70.000 | EXTEND ritd-036-course-grade-progress |
progress_source_kind | TEXT enumRequired for populated rows. One documented enum value. | Which precedence branch produced the progress answer. Constraints: Must be one documented value. app_reported_percent wins over xp_remaining and completed_xp_estimate. unknown is allowed only with null_reason. | app_reported_percent - The delivering app reported percent complete directly.xp_remaining - The source supplied remaining XP and Curriculum supplied total XP.completed_xp_estimate - Results estimated completion from completed XP when stronger evidence was missing.unknown - Required evidence is missing; null_reason explains the gap. | app_reported_percent | EXTEND ritd-036-course-grade-progress |
evidence_kind | TEXT enumRequired for populated rows. One documented enum value. | More specific evidence family behind progress_source_kind. Constraints: Must name the source family instead of leaving clients to inspect refs. Examples include Caliper course progress percent or Analytics XP remaining rollup. unknown is allowed only with null_reason. | caliper_course_progress_percent - Events preserved an app-reported course progress percent.analytics_xp_remaining_rollup - Analytics supplied XP remaining evidence.analytics_completed_xp_rollup - Analytics supplied completed XP evidence used as a fallback estimate.unknown - No acceptable evidence is available. | caliper_course_progress_percent | EXTEND ritd-036-course-grade-progress |
source_analytics_rollup_refs | JSONB arrayRequired; empty only when no Analytics evidence applies. JSON value matching documented schema. | Structured references to Analytics rollup rows used as evidence. Constraints: Must be a JSON array. Refs only; do not copy Analytics rows. Must stay empty rather than inventing evidence. | No closed enum | ["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"] | EXTEND ritd-036-course-grade-progress |
source_curriculum_refs | JSONB arrayRequired. JSON value matching documented schema. | Structured references to Curriculum course/expected-XP denominator evidence. Constraints: Must be a JSON array. Refs only; do not copy Curriculum trees. Required even when no direct Analytics evidence applies. | No closed enum | ["alpha.curriculum_course:course_math_grade_7_main"] | EXTEND ritd-036-course-grade-progress |
policy_ref | TEXTRequired. Text within documented constraints. | Named Results progress policy used for evidence precedence, denominator handling, and percent derivation. Constraints: Must reference a versioned alpha.policy.* progress policy. Changing the policy changes computed_at/versioned answer behavior. Consumers do not embed this logic. | No closed enum | alpha.policy.results.progress.v2026-06-16 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable. One documented enum value. | Why progress fields are null or unknown. Constraints: Required when xp_remaining, total_xp, or percent_complete is unavailable. Must be none/null for a complete answer. Consumers surface the gap instead of filling locally. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | source_missing | EXTEND ritd-036-course-grade-progress |
computed_at | TIMESTAMPTZRequired. UTC timestamp. | UTC time Results produced this progress answer. Constraints: Must be UTC. Used for freshness and evidence audits. Does not replace as_of_date. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-036-course-grade-progress |
Student-facing answer for grade-level work remaining, percent complete across the main sequence, and pace versus the school calendar.
Lifecycle. Materialized by Results from course progress answers and active-path state. Recomputed when course progress, working grade, track state, Curriculum main-course totals, or calendar elapsed-year evidence changes.
Relationships. Belongs to one student. Aggregates student_course_progress rows for main courses. References Analytics evidence rows and calendar refs through source arrays. Reads Curriculum main-sequence expected-XP structure by reference.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
grade_level | NUMERIC(5,2)Required. Decimal number within documented constraints. | Grade level whose main-sequence progress is being answered. Constraints: Must be a comparable numeric grade value. Comes from Curriculum/track metadata, not MAP/RIT/R90. Part of the primary key. | No closed enum | 7.00 | EXTEND ritd-036-course-grade-progress |
working_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Working grade input used to identify the active grade path. Constraints: May be null only when null_reason explains missing state. Read from Results working_grade. Not the same as age_grade or highest_mastered_grade. | No closed enum | 7.40 | EXTEND ritd-036-course-grade-progress |
as_of_date | DATERequired. ISO 8601 calendar date. | Date the grade-level progress answer is valid for. Constraints: ISO 8601 date. Current progress reads are represented as as-of reads. Part of the primary key. | No closed enum | 2026-06-03 | EXTEND ritd-036-course-grade-progress |
active_path_state | TEXT enumRequired. One documented enum value. | Where the student is relative to the grade-level main sequence. Constraints: Must be one documented value. Determines which XP remains in grade_level_xp_remaining. finished requires grade_level_xp_remaining=0 when denominator exists. | not_started - The student has not started the grade's main sequence; remaining XP equals the main-sequence total.in_main_sequence - The student is in the main sequence; remaining XP is current main-course remaining plus later main-course XP.in_hole_filling - The student is temporarily in hole-filling/remediation; remaining XP is the active hole-filling remaining work.finished - The grade-level main sequence is finished; remaining XP is zero.unknown - Required state is missing; null_reason explains the gap. | in_main_sequence | EXTEND ritd-036-course-grade-progress |
grade_level_xp_remaining | NUMERIC(14,3)Nullable when evidence is missing. Decimal number within documented constraints. | Active-path XP remaining for this grade-level answer. Constraints: Must be nonnegative when present. not_started equals main_sequence_total_xp. finished equals zero. in_main_sequence equals current main-course remaining plus later main-course expected XP. in_hole_filling equals active hole-filling remaining. | No closed enum | 160.000 | EXTEND ritd-036-course-grade-progress |
main_sequence_total_xp | NUMERIC(14,3)Nullable when Curriculum denominator evidence is missing. Decimal number within documented constraints. | Total expected XP for the grade's main-course sequence. Constraints: Must be positive when present. This is always the denominator for grade percent_complete. Hole-filling/remediation/catalog courses do not expand this denominator. | No closed enum | 500.000 | EXTEND ritd-036-course-grade-progress |
percent_complete | NUMERIC(7,3)Nullable when progress cannot be answered. 0.000 through 100.000 | Grade-level percent complete over the main sequence denominator. Constraints: 0 through 100 inclusive when present. Aggregates direct main-course percent_complete evidence when available. Falls back to 100 * (1 - grade_level_xp_remaining / main_sequence_total_xp) when direct course percent is absent and XP-shaped evidence is available. Consumers render this field instead of recomputing it. | No closed enum | 68.000 | EXTEND ritd-036-course-grade-progress |
elapsed_school_year_percent | NUMERIC(7,3)Nullable when calendar evidence is missing. 0.000 through 100.000 | Percent of the relevant school-year calendar elapsed as of as_of_date. Constraints: 0 through 100 inclusive when present. Comes from People & Orgs calendar/enrollment context. Used only for pacing comparison. | No closed enum | 82.000 | EXTEND ritd-036-course-grade-progress |
pacing_status | TEXT enumRequired. One documented enum value. | Pace of actual grade-level progress relative to elapsed school-year percent. Constraints: Must be one documented value. Computed under policy_ref thresholds. unknown is used when progress or calendar evidence is missing. | behind_pace - percent_complete is below the elapsed-calendar threshold under policy.on_pace - percent_complete is within the policy band for elapsed school year.ahead_of_pace - percent_complete is above the elapsed-calendar threshold under policy.unknown - Progress or calendar evidence is missing. | behind_pace | EXTEND ritd-036-course-grade-progress |
source_course_progress_refs | JSONB arrayRequired. JSON value matching documented schema. | Structured references to course-progress rows aggregated into this grade answer. Constraints: Must be a JSON array. Refs only; do not copy course-progress rows. Required for populated grade progress. | No closed enum | ["alpha.student_course_progress:stu_timeback_10017|math|course_math_grade_7_main|2026-06-03"] | EXTEND ritd-036-course-grade-progress |
source_analytics_rollup_refs | JSONB arrayRequired; empty only when no Analytics evidence applies. JSON value matching documented schema. | Structured references to Analytics rollup rows used by contributing course-progress rows. Constraints: Must be a JSON array. Refs only; do not copy Analytics rows. Useful for authorized audits and convergence checks. | No closed enum | ["alpha.analytics_completion_rollup:completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"] | EXTEND ritd-036-course-grade-progress |
source_calendar_refs | JSONB arrayRequired; empty only when pacing is unknown. JSON value matching documented schema. | Structured references to calendar/enrollment rows used for elapsed_school_year_percent. Constraints: Must be a JSON array. Refs only; do not copy calendar tables. Empty array requires pacing_status=unknown or null_reason. | No closed enum | ["alpha.school_calendar:school_north_valley:2026-06-03"] | EXTEND ritd-036-course-grade-progress |
policy_ref | TEXTRequired. Text within documented constraints. | Named Results progress policy used for active-path remaining XP, denominator choice, and pacing thresholds. Constraints: Must reference a versioned alpha.policy.* progress policy. Consumers do not embed this logic. Changing policy can produce a new computed answer. | No closed enum | alpha.policy.results.progress.v2026-06-16 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable. One documented enum value. | Why progress or pacing fields are null or unknown. Constraints: Required when grade_level_xp_remaining, main_sequence_total_xp, percent_complete, or pacing evidence is unavailable. Consumers surface the gap instead of filling locally. none/null means the answer is populated. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | source_missing | EXTEND ritd-036-course-grade-progress |
computed_at | TIMESTAMPTZRequired. UTC timestamp. | UTC time Results produced this grade-level progress answer. Constraints: Must be UTC. Used for freshness and evidence audits. Does not replace as_of_date. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-036-course-grade-progress |
Plain term-scoped MAP result keyed by TimeBack student, subject, canonical term, and norms set. Defaults to the NWEAMap highest-RIT test_of_record for report/test-of-record workflows.
Lifecycle. Updated by NWEAMap projection after CDF import or real-time result observation. One row per student/subject/term/norms set for ordinary reads.
Relationships. Belongs to one student. References one NWEAMap assessment_result_projection row as source evidence.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
map_score_id | UUIDRequired. PostgreSQL UUID. | Stable id for this public MAP score row. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000701 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
student_email | CITEXTNullable joined read field. Case-insensitive text within documented constraints. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key. | No closed enum | alex.rivera@example.edu | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
term_season | TEXT enumRequired. One documented enum value. | Canonical term season derived at write time. Constraints: Must be one documented value. Never parse from TermName at read time. | fall - Fall term.winter - Winter term.spring - Spring term.summer - Summer term. | spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
school_year | TEXTRequired. Text within documented constraints. | Canonical school year for the MAP score. Constraints: Format YYYY-YY. Set by term resolver, not regex in consumers. | No closed enum | 2025-26 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
nwea_account_id | TEXTRequired. Text within documented constraints. | NWEA district/account id read through the People & Orgs district org boundary. Constraints: Must come from parent org alpha.org.nwea_district_id. Results must not create another NWEA account source of truth. | No closed enum | NWEA-ALPHA-PHYSICAL | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
brand | TEXTRequired joined read field. Text within documented constraints. | Brand cohort tag joined from People & Orgs for reports. Constraints: Locked registry tag at nwea_account grain. Do not duplicate as Results-owned source of truth. | No closed enum | Alpha | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
modality | TEXT enumRequired joined read field. One documented enum value. | Physical or virtual NWEA account boundary. Constraints: Must be physical or virtual. No hybrid value. | physical - Student belongs to the physical-school NWEA account boundary.virtual - Student belongs to the virtual-school NWEA account boundary. | physical | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
school_level | TEXT enumNullable joined read field. One documented enum value. | Locked school-level tag joined from People & Orgs for reports. Constraints: Allowed values are WL, LL, L1, L2, MS, HS. Governed People & Orgs value. Not a Results-owned tag. Every report filtering by school level uses this field and value set instead of inventing another list. | WL - Wonder Level, the governed Alpha school-level tag used for early learners.LL - Lower Level, the governed Alpha school-level tag used for lower elementary reporting.L1 - Level 1, the governed Alpha school-level tag used for the first Alpha level band.L2 - Level 2, the governed Alpha school-level tag used for the second Alpha level band.MS - Middle School, the governed Alpha school-level tag.HS - High School, the governed Alpha school-level tag. | MS | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
age_grade | TEXTNullable joined read field. Text within documented constraints. | Age-grade cohort dimension joined for reports. Constraints: Governed People & Orgs value. Not parsed from MAP test name. | No closed enum | grade_6 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
tenure_bucket | TEXTNullable joined read field. Text within documented constraints. | Student tenure bucket computed from admission_date and alpha.policy.tenure_buckets. Constraints: Must be computed by the surface. No dashboard hardcoding of band edges. | No closed enum | 1-2_years | EXTEND + RESTRICT ritd-005-policy-config |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
rit | INTEGERNullable. Integer within documented constraints. | Selected MAP RIT score. Constraints: 100 through 350 when present. Selected by NWEAMap highest-RIT test_of_record rule. | No closed enum | 238 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
standard_error | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | MAP test standard error. Constraints: Non-negative when present. | No closed enum | 3.20 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
percentile | INTEGERNullable. Integer within documented constraints. | MAP percentile for the selected norms set. Constraints: 0 through 99 when present. Ceiling students use alpha.map_99_level for additional signal. | No closed enum | 94 | RESTRICT ritd-010-norms-discipline |
achievement_quintile | TEXTNullable. Text within documented constraints. | NWEA achievement quintile when available. Constraints: Preserve exported value within NWEA constraints. Not a substitute for Growth X or effective grade. | No closed enum | High | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
test_start_at | TIMESTAMPTZNullable. UTC timestamp. | Parsed timestamp for the selected sitting. Constraints: UTC when parseable. Raw date/time stays in source evidence when parsing fails. | No closed enum | 2026-05-04T14:00:00Z | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
source_projection_id | UUIDRequired. PostgreSQL UUID. | NWEAMap assessment_result_projection row that produced this public score. Constraints: Must reference NWEAMap projection evidence. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000001 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Student-facing current MAP context for GOALS and similar apps: latest active Growth MAP by test date, with latest active screener/non-growth fallback only when no Growth MAP exists.
Lifecycle. View refreshed by the same NWEAMap import/projection facts as map_score. Selection policy is latest-growth-first and versioned in policy_ref.
Relationships. Belongs to one student. References one NWEAMap assessment_result_projection row as source evidence. Does not replace alpha.map_score's per-term highest-RIT test_of_record report row.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
map_current_score_id | TEXTRequired. Text within documented constraints. | Stable id for this current-MAP view row. Constraints: Unique within tenant. Includes the selected source row and norms set. | No closed enum | map_10017_math_spring_current_2025 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
student_email | CITEXTNullable joined read field. Case-insensitive text within documented constraints. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key. | No closed enum | alex.rivera@example.edu | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
term_season | TEXT enumRequired. One documented enum value. | Canonical term season for the selected current MAP row. Constraints: Must be one documented value. Resolved at import/projection time. | fall - Fall term.winter - Winter term.spring - Spring term.summer - Summer term. | spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
school_year | TEXTRequired. Text within documented constraints. | Canonical school year for the selected current MAP row. Constraints: Format YYYY-YY or the tenant's canonical school-year format. Set by term resolver, not regex in consumers. | No closed enum | 2025-26 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
nwea_account_id | TEXTRequired. Text within documented constraints. | NWEA district/account id read through the People & Orgs district org boundary. Constraints: Must come from parent org alpha.org.nwea_district_id. Results must not create another NWEA account source of truth. | No closed enum | NWEA-ALPHA-PHYSICAL | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
brand | TEXTRequired joined read field. Text within documented constraints. | Brand cohort tag joined from People & Orgs for reports. Constraints: Locked registry tag at nwea_account grain. Do not duplicate as Results-owned source of truth. | No closed enum | Alpha | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
modality | TEXT enumRequired joined read field. One documented enum value. | Physical or virtual NWEA account boundary. Constraints: Must be physical or virtual. No hybrid value. | physical - Student belongs to the physical-school NWEA account boundary.virtual - Student belongs to the virtual-school NWEA account boundary. | physical | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
level | TEXTNullable joined read field. Text within documented constraints. | School-level/cohort label joined from People & Orgs for GOALS context. Constraints: Governed People & Orgs value. Not a Results-owned tag. | No closed enum | middle | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
age_grade | TEXTNullable joined read field. Text within documented constraints. | Age-grade cohort dimension joined for context. Constraints: Governed People & Orgs value. Not parsed from MAP test name. | No closed enum | 06 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
tenure_bucket | TEXTNullable joined read field. Text within documented constraints. | Student tenure bucket computed from admission_date and alpha.policy.tenure_buckets. Constraints: Must be computed by the surface. No dashboard hardcoding of band edges. | No closed enum | 1-2 | EXTEND + RESTRICT ritd-005-policy-config |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
rit | INTEGERNullable. Integer within documented constraints. | Selected current MAP RIT score. Constraints: 100 through 350 when present. Selected by latest-growth-first policy, not highest-RIT test_of_record. | No closed enum | 210 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
standard_error | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | MAP test standard error for the selected row. Constraints: Non-negative when present. | No closed enum | 3.20 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
percentile | INTEGERNullable. Integer within documented constraints. | MAP percentile for the selected current MAP row and norms set. Constraints: 0 through 99 when present. Norms set is explicit on the row. | No closed enum | 74 | RESTRICT ritd-010-norms-discipline |
achievement_quintile | TEXTNullable. Text within documented constraints. | NWEA achievement quintile when available. Constraints: Preserve exported value within NWEA constraints. | No closed enum | High | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
growth_measure_yn | TEXT enumNullable. One documented enum value. | Whether the selected MAP row is a Growth MAP measurement. Constraints: Y rows win over non-Y rows. N or null is allowed only as screener/non-growth fallback when no active Growth MAP exists. | Y - Growth MAP row; preferred for current MAP.N - Non-growth or screener row; fallback only. | Y | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
current_map_reason | TEXT enumRequired. One documented enum value. | Why this row is the current MAP context. Constraints: Must be one documented value. latest_growth wins over latest_screener_fallback. | latest_growth - Selected because it is the latest active Growth MAP row.latest_screener_fallback - Selected because no active Growth MAP row exists, so the latest active non-growth/screener row is used. | latest_growth | EXTEND + RESTRICT ritd-005-policy-config |
test_id | TEXTNullable. Text within documented constraints. | Source test id for the selected current MAP row. Constraints: Audit/context field only. Do not parse it for subject, grade, or current-map selection. | No closed enum | nwea_math_6plus | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
test_start_at | TIMESTAMPTZNullable. UTC timestamp. | Parsed timestamp for the selected current MAP sitting. Constraints: UTC when parseable. Used by the surface policy to pick the latest row. | No closed enum | 2026-05-28T13:00:00Z | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
source_projection_id | TEXTRequired. Text within documented constraints. | NWEAMap assessment_result_projection row that produced this current MAP context. Constraints: Must reference NWEAMap projection evidence. | No closed enum | projection_map_10017_math_spring | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
policy_ref | TEXTRequired. Text within documented constraints. | Named current-MAP selection policy. Constraints: Must equal a versioned latest-growth-first policy. Changing this policy creates a new documented selection rule. | No closed enum | alpha.policy.results.current_map.v2026-06-17.latest-growth-first | EXTEND + RESTRICT ritd-005-policy-config |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
Authorized audit view of all MAP sittings, including retakes and soft-deleted rows. Ordinary consumers use map_score.
Lifecycle. Created by NWEAMap import/projection. Soft-deleted when later exports stop sending a row; never hard-deleted in normal retention.
Relationships. Belongs to one student. References raw NWEAMap row evidence.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
map_sitting_id | UUIDRequired. PostgreSQL UUID. | Stable id for one MAP sitting audit row. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000801 | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
test_id | TEXTRequired. Text within documented constraints. | NWEA TestID for this sitting. Constraints: Required for deterministic tie-break and audit. | No closed enum | 1110000001 | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
test_start_at | TIMESTAMPTZNullable. UTC timestamp. | Parsed sitting start timestamp. Constraints: UTC when parseable. | No closed enum | 2026-05-04T14:00:00Z | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
rit | INTEGERNullable. Integer within documented constraints. | MAP RIT score for this sitting. Constraints: Eligible for test_of_record only when numeric 100 through 350. | No closed enum | 238 | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
percentile | INTEGERNullable. Integer within documented constraints. | MAP percentile for this sitting. Constraints: 0 through 99 when present. | No closed enum | 94 | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
growth_measure_yn | TEXTNullable. Text within documented constraints. | NWEA GrowthMeasureYN flag retained for comparison and audit. Constraints: Preserve TRUE/FALSE/blank. Does not override highest-RIT test_of_record. | No closed enum | TRUE | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
is_test_of_record | BOOLEANRequired. true or false. | Whether this sitting is the selected test_of_record. Constraints: At most one true row per tenant/account/student/subject/term. False when deleted or invalid RIT. | No closed enum | true | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
test_of_record_reason | TEXT enumRequired. One documented enum value. | Reason this sitting was selected or excluded. Constraints: Must be one documented value. | highest_rit - Selected because it has the highest valid RIT in the student/subject/term group.latest_start_time_tiebreak - Selected after a RIT tie by later test start time.test_id_tiebreak - Selected after a start-time tie by deterministic TestID ordering.ineligible_invalid_rit - Excluded because RIT is missing, nonnumeric, or outside 100 through 350.ineligible_deleted - Excluded because the sitting is soft-deleted. | highest_rit | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
source_evidence | JSONBRequired for audit reads. JSON value matching documented schema. | Structured NWEA source references and selected raw values for authorized audit. Constraints: Must not include secrets. Raw NWEA fields not in public Alpha remain here or in the NWEAMap 1EdTech surface. | No closed enum | {"raw_table":"nweamap.raw_assessment_results","row_id":"018f..."} | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
deleted_at | TIMESTAMPTZNullable. UTC timestamp. | Soft-delete timestamp. Null means active; non-null rows stay available for authorized audit reads and are excluded from ordinary current reports. Constraints: Never hard-delete audit-significant Results rows. Non-null values must be UTC. Legal erasure flows are separate privacy workflows. | No closed enum | 2026-06-03T18:55:00Z | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
delete_reason | TEXT enumNullable. One documented enum value. | Why a sitting was soft-deleted. Constraints: Required when deleted_at is non-null when inferable. | missing_from_replacement_export - A later authoritative export stopped sending the row.retake_superseded - Import evidence indicates the row was replaced by a retake.invalidated_or_suppressed_by_nwea - Import evidence indicates NWEA invalidated or suppressed the sitting.unknown - The row disappeared but the surface cannot infer the specific reason. | retake_superseded | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
modified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when this Results row or projection last changed. Powers modifiedSince polling. Constraints: Must be UTC. Must be monotonic for a row version. Used by poll-based eventing because webhooks are deferred. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-020-axis-query-model |
One row per student, subject, term, and goal strand with strand RIT, standard error, range, adjective, and goal_gap.
Lifecycle. Generated from the selected MAP score/projection when goal slots are present.
Relationships. Belongs to one student and one MAP score.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
map_goal_strand_id | UUIDRequired. PostgreSQL UUID. | Stable id for this goal-strand row. Constraints: Unique within tenant. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000901 | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
goal_slot | INTEGERRequired. 1 through 5 | Original NWEA goal slot number represented by this row. Constraints: 1 through 5 inclusive for public Alpha. 6 through 8 remain audit-only until architecture changes. | No closed enum | 1 | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
goal_strand | TEXTRequired. Text within documented constraints. | Plain strand name from NWEA goal name. Constraints: 1 to 255 visible characters. Do not parse it for subject or grade. | No closed enum | Algebraic Thinking | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
strand_rit | INTEGERNullable. Integer within documented constraints. | RIT score for this goal strand. Constraints: 100 through 350 when present. | No closed enum | 242 | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
strand_standard_error | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Standard error for the strand RIT. Constraints: Non-negative when present. | No closed enum | 4.10 | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
strand_range | TEXTNullable. Text within documented constraints. | NWEA range text for this strand. Constraints: Preserve NWEA text. Do not parse for calculations. | No closed enum | 238-246 | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
strand_adjective | TEXTNullable. Text within documented constraints. | NWEA adjective describing strand performance. Constraints: Preserve exported value; do not use as numeric score. | No closed enum | High | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
overall_rit | INTEGERNullable. Integer within documented constraints. | Overall test RIT used to compute goal_gap. Constraints: Must equal selected MAP score rit for the same row. | No closed enum | 238 | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
goal_gap | INTEGERNullable. Integer within documented constraints. | Surface-computed strand_rit minus overall_rit. Constraints: Computed by Results. Null when either input is null. | No closed enum | 4 | RENAME + RESTRICT + EXTEND ritd-008-map-goal-strands ritd-000-alpha-storage-model |
One typed growth-window row carrying observed growth, projected/typical growth, Growth X, 2X target, and target flags.
Lifecycle. Generated whenever MAP scores and NWEA growth fields are available for a term/window/norms set.
Relationships. Belongs to one student. Usually references current and prior MAP score rows.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
growth_window | TEXT enumRequired. One documented enum value. | Typed growth window. Constraints: Must be one documented value. Not derived by client column switching. | fall_to_fall - Growth measured from Fall to next Fall.fall_to_winter - Growth measured from Fall to Winter.fall_to_spring - Growth measured from Fall to Spring.winter_to_winter - Growth measured from Winter to next Winter.winter_to_spring - Growth measured from Winter to Spring.spring_to_spring - Growth measured from Spring to next Spring. | fall_to_spring | EXTEND ritd-009-growth-x-target |
observed_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | NWEA observed growth for the window. Constraints: May be null when no prior/future score exists. | No closed enum | 14.00 | EXTEND ritd-009-growth-x-target |
projected_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | NWEA projected growth for the window under norms_set. Constraints: Must not mix 2020 and 2025 norms. May be null if NWEA does not publish the projection. | No closed enum | 7.00 | EXTEND ritd-009-growth-x-target |
typical_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Typical growth value for the window and norms set. Constraints: Must carry norms_set. May be null when not published. | No closed enum | 7.00 | RESTRICT ritd-010-norms-discipline |
growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Observed growth divided by projected growth. Constraints: Computed by Results. Null when projected_growth is null or zero. | No closed enum | 2.0000 | EXTEND ritd-009-growth-x-target |
growth_x_target | NUMERIC(8,4)Required. Decimal number within documented constraints. | Configured Growth X target for this row. Constraints: Default comes from alpha.policy.growth_x_target, currently 2.0. Policy changes require config version change. | No closed enum | 2.0000 | EXTEND + RESTRICT ritd-005-policy-config |
on_track_for_growth_x_target | BOOLEANNullable. true or false. | Whether current/projected evidence is on track for target Growth X. Constraints: Computed by Results. Null when required inputs are missing. | No closed enum | true | EXTEND ritd-009-growth-x-target |
projected_gap | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Projected growth points above or below the Growth X target. Constraints: Computed by Results. Positive means above target. | No closed enum | 0.00 | EXTEND ritd-009-growth-x-target |
null_reason | TEXT enumNullable. One documented enum value. | Why growth_x or target fields are null. Constraints: Required when growth_x is null. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | no_projected_growth | RESTRICT ritd-010-norms-discipline |
One MAP observation or calculator output bound to exactly one norms set so reports can flip 2020/2025 safely.
Lifecycle. Generated with MAP score/calculator outputs; never mixes norms inside a row.
Relationships. Belongs to one map_score.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
map_score_id | UUIDRequired. PostgreSQL UUID. | MAP score this normed output belongs to. Constraints: Must reference alpha.map_score. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000701 | RESTRICT ritd-010-norms-discipline |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
percentile | INTEGERNullable. Integer within documented constraints. | Percentile under this norms set. Constraints: 0 through 99 when present. | No closed enum | 94 | RESTRICT ritd-010-norms-discipline |
achievement_quintile | TEXTNullable. Text within documented constraints. | Achievement quintile under this norms set. Constraints: Preserve NWEA value when supplied. Do not use for 99-level calculation. | No closed enum | High | RESTRICT ritd-010-norms-discipline |
norms_source | TEXTRequired. Text within documented constraints. | Source family for this normed output. Constraints: Must state whether the value came from NWEA export or Alpha calculator. | No closed enum | nwea_cdf | RESTRICT ritd-010-norms-discipline |
calculator_version | TEXTNullable. Text within documented constraints. | Calculator version when the value is computed by Alpha. Constraints: Required for Alpha-calculated outputs. | No closed enum | norms_calc_2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
Surface-owned translation from percentile to RIT, or RIT to percentile, under one subject, grade, term season, and norms set. GOALS and report apps call this read model instead of carrying NWEA norms tables.
Lifecycle. Generated from the active published-norms version and calculator_version. Recomputed when norms_set or calculator config changes; historical rows remain reproducible by version.
Relationships. Reads the single surface norms/calculator registry. Can be joined to MAP score and GOALS inputs by subject_id, grade_level, term_season, and norms_set.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
grade_level | NUMERIC(4,1)Required. Decimal number within documented constraints. | Grade level used for the norms translation. Constraints: 0.0 through 12.9 when present. Must be the grade level expected by the active norms table/config. | No closed enum | 7.0 | EXTEND ritd-010-norms-discipline ritd-011-rit-effective-grade |
term_season | TEXT enumRequired. One documented enum value. | MAP season used for the norms translation. Constraints: Must be fall, winter, spring, or summer. Resolved by the surface, not by app parsing. | fall - Fall MAP season.winter - Winter MAP season.spring - Spring MAP season.summer - Summer MAP season. | spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
translation_direction | TEXT enumRequired. One documented enum value. | Direction of the requested surface translation. Constraints: Must be one documented value. Determines which input/output fields are required. | percentile_to_rit - Input is a percentile; the surface returns the corresponding RIT under the selected norms set.rit_to_percentile - Input is a RIT score; the surface returns the corresponding percentile under the selected norms set. | percentile_to_rit | EXTEND ritd-010-norms-discipline ritd-011-rit-effective-grade |
input_percentile | INTEGERNullable; required for percentile_to_rit. Integer within documented constraints. | Requested percentile. Constraints: 1 through 99. Must be null when translation_direction is rit_to_percentile. | No closed enum | 99 | EXTEND ritd-010-norms-discipline ritd-011-rit-effective-grade |
input_rit | INTEGERNullable; required for rit_to_percentile. Integer within documented constraints. | Requested RIT score. Constraints: 100 through 350. Must be null when translation_direction is percentile_to_rit. | No closed enum | 252 | EXTEND ritd-010-norms-discipline ritd-011-rit-effective-grade |
output_rit | INTEGERNullable; required for percentile_to_rit. Integer within documented constraints. | Surface-returned RIT score for the requested percentile. Constraints: 100 through 350. Computed by the surface from NWEA published norms and documented interpolation/extrapolation rules. | No closed enum | 252 | EXTEND ritd-010-norms-discipline ritd-011-rit-effective-grade |
output_percentile | INTEGERNullable; required for rit_to_percentile. Integer within documented constraints. | Surface-returned percentile for the requested RIT. Constraints: 1 through 99. 99 remains a ceiling; use alpha.map_99_level for above-ceiling growth. | No closed enum | 99 | EXTEND ritd-010-norms-discipline ritd-011-rit-effective-grade |
source_point_kind | TEXT enumRequired. One documented enum value. | Whether this translation point is published, interpolated, extrapolated, or policy-derived. Constraints: Must be one documented value. NWEA-published points are preserved exactly. | nwea_published - The point is directly reproduced from NWEA-published data.interpolated - The point is interpolated between published NWEA points.alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.policy_derived - The point is derived from named alpha.policy.* configuration. | nwea_published | EXTEND ritd-010-norms-discipline ritd-011-rit-effective-grade |
calculator_version | TEXTRequired. Text within documented constraints. | Version of the norms/calculator used. Constraints: Must reference alpha.policy_config. Changing the norms/calculator creates a new answer version. | No closed enum | percentile_rit_2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable. One documented enum value. | Why a translation output is null. Constraints: Required when output_rit or output_percentile is null. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | missing_policy_config | EXTEND + RESTRICT ritd-005-policy-config |
A legacy Results report fixture used for Results MAP report compatibility. It is not the GOALS grade2RIT/R90 source; GOALS RIT->grade uses the skill-seeded NWEAMAP master directly or through the Analytics mirror. Consumers never keep a local copy.
Lifecycle. Kept for Results report compatibility while the R90 master lives in NWEAMAP. Superseded fixture versions remain readable only for historical Results answers.
Relationships. Legacy Results report fixtures may be read beside alpha.map_percentile_translation; GOALS grade2RIT/R90 relationships point to NWEAMAP or the Analytics mirror instead.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
grade_level | NUMERIC(4,1)Required. Decimal number within documented constraints. | Grade level this R90 row describes. Constraints: 0.0 through 12.9 when present. | No closed enum | 7.0 | EXTEND ritd-011-rit-effective-grade ritd-010-norms-discipline |
term_season | TEXT enumRequired. One documented enum value. | MAP season for this R90 point. Constraints: Must be fall, winter, spring, or summer. | fall - Fall MAP season.winter - Winter MAP season.spring - Spring MAP season.summer - Summer MAP season. | spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
rit50_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | RIT50 grade point reproduced from NWEA-published data where available. Constraints: NWEA-published points are preserved exactly. Interpolation must carry source_point_kind. | No closed enum | 7.10 | EXTEND ritd-011-rit-effective-grade |
rit90_grade | NUMERIC(5,2)Required. Decimal number within documented constraints. | Legacy Results fixture RIT90/R90 grade point for this subject/grade/season/norms row. Constraints: This is Alpha extrapolation unless source_point_kind says nwea_published. Do not use as the GOALS grade2RIT/R90 oracle; use NWEAMAP/Analytics. | No closed enum | 6.40 | EXTEND ritd-011-rit-effective-grade ritd-010-norms-discipline |
r90_rit | INTEGERRequired. Integer within documented constraints. | RIT value for the legacy R90 fixture point. Constraints: 100 through 350. GOALS RIT->grade must come from the skill-seeded NWEAMAP master or Analytics mirror. | No closed enum | 231 | EXTEND ritd-011-rit-effective-grade ritd-010-norms-discipline |
source_point_kind | TEXT enumRequired. One documented enum value. | Provenance class for the R90 point. Constraints: Must be one documented value. Usually alpha_extrapolated for R90. | nwea_published - The point is directly reproduced from NWEA-published data.interpolated - The point is interpolated between published NWEA points.alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.policy_derived - The point is derived from named alpha.policy.* configuration. | alpha_extrapolated | EXTEND ritd-011-rit-effective-grade ritd-010-norms-discipline |
calculator_version | TEXTRequired. Text within documented constraints. | Version of the legacy Results fixture calculator. Constraints: Must reference alpha.policy_config. Not an owner/version marker for the NWEAMAP grade2RIT/R90 master. | No closed enum | rit_calc_2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
status | TEXT enumRequired. One documented enum value. | Lifecycle state of this R90 row. Constraints: Only active rows drive current calculators. | draft - Config is being prepared and is not used by surface computations.active - Config is the current value read by the surface for its effective window.superseded - Config has been replaced but remains available for historical answers.deprecated - Config should not be used for new calculations and remains only for audit. | active | EXTEND + RESTRICT ritd-005-policy-config |
RIT50 grade, RIT90 grade, effective grade, Alpha minimum RIT, and predicted RIT with provenance for published vs interpolated/extrapolated points.
Lifecycle. Generated for MAP score rows when calculator config is active.
Relationships. Belongs to one MAP score and one student.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
rit | INTEGERRequired. Integer within documented constraints. | MAP RIT input for the calculator. Constraints: 100 through 350. | No closed enum | 238 | EXTEND ritd-011-rit-effective-grade |
rit50_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Grade level where students at this RIT get about 50 percent correct, grounded in NWEA-published data where available. Constraints: May be interpolated only where NWEA has no direct point. | No closed enum | 7.10 | EXTEND ritd-011-rit-effective-grade |
rit90_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Alpha extrapolated grade level for about 90 percent correctness. Constraints: This is not NWEA-published. Must carry source_point_kind alpha_extrapolated when extrapolated. | No closed enum | 6.40 | EXTEND ritd-011-rit-effective-grade |
effective_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Lowest grade a student can master and still move MAP growth under Alpha policy. Constraints: Computed by Results calculator. May be null only with null_reason. | No closed enum | 6.40 | EXTEND ritd-011-rit-effective-grade |
alpha_minimum_rit | INTEGERNullable. Integer within documented constraints. | Minimum RIT Alpha expects for the effective grade target. Constraints: Alpha extrapolation/config output. Must carry calculator_version. | No closed enum | 231 | EXTEND ritd-011-rit-effective-grade |
alpha_predicted_rit | INTEGERNullable. Integer within documented constraints. | Predicted future RIT under Alpha growth assumptions. Constraints: Computed by Results. Must not be computed in skill packs. | No closed enum | 252 | EXTEND ritd-011-rit-effective-grade |
source_point_kind | TEXT enumRequired. One documented enum value. | Whether the calculator point is published, interpolated, extrapolated, or policy-derived. Constraints: Must be one documented value. | nwea_published - The point is directly reproduced from NWEA-published data.interpolated - The point is interpolated between published NWEA points.alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.policy_derived - The point is derived from named alpha.policy.* configuration. | alpha_extrapolated | EXTEND ritd-011-rit-effective-grade |
calculator_version | TEXTRequired. Text within documented constraints. | Version of the RIT calculator used. Constraints: Must reference alpha.policy_config. | No closed enum | rit_calc_2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
null_reason | TEXT enumNullable. One documented enum value. | Why a calculator output is null. Constraints: Required when effective_grade is null. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | missing_policy_config | EXTEND + RESTRICT ritd-005-policy-config |
Ordered per-student, per-subject time series point with RIT, observed vs typical growth, Growth X, norms set, and TimeBack-era flag.
Lifecycle. Generated across MAP terms for growth-over-time reports.
Relationships. Belongs to one student. References one map_score per point when present.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
term_order | INTEGERRequired. Integer within documented constraints. | Surface-owned chronological order for this student's subject timeline. Constraints: Must be >= 1. Never parse term strings in clients. | No closed enum | 6 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
rit | INTEGERNullable. Integer within documented constraints. | Selected MAP RIT at this point. Constraints: 100 through 350 when present. | No closed enum | 238 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
observed_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Observed growth since the prior comparable point/window. Constraints: Computed by Results or copied from NWEA where applicable. | No closed enum | 14.00 | EXTEND ritd-009-growth-x-target |
typical_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Typical growth under norms_set. Constraints: Must not mix norms sets. | No closed enum | 7.00 | RESTRICT ritd-010-norms-discipline |
growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Growth X for this timeline segment. Constraints: Computed by Results. Null with documented null_reason. | No closed enum | 2.0000 | EXTEND ritd-009-growth-x-target |
timeback_era | TEXT enumRequired. One documented enum value. | Whether this point is before or during TimeBack era. Constraints: Computed by alpha.policy.school_year_boundaries. Default split: 2025-26 and later is timeback. | pre_timeback - School year is 2024-25 or earlier under current policy.timeback - School year is 2025-26 or later under current policy. | timeback | EXTEND + RESTRICT ritd-005-policy-config |
previous_map_score_id | UUIDNullable. PostgreSQL UUID. | Prior MAP score used for observed growth. Constraints: Must reference alpha.map_score when present. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000650 | EXTEND ritd-009-growth-x-target |
null_reason | TEXT enumNullable. One documented enum value. | Why growth fields are null. Constraints: Required when growth_x is null. | not_enough_history - Required prior-term or baseline input does not exist yet.no_projected_growth - NWEA did not publish projected growth for the requested window.no_valid_rit - The sitting has no valid RIT for calculation.missing_policy_config - The surface lacks active policy/config for this calculation.not_applicable - The field does not apply to this row by design. | not_enough_history | RESTRICT ritd-010-norms-discipline |
Counts how many grade levels above the 99th-percentile threshold a student's RIT sits, so ceiling growth remains visible.
Lifecycle. Generated for normed MAP scores with percentile/RIT inputs and active 99-level threshold config.
Relationships. Belongs to one MAP score.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
percentile | INTEGERRequired. Integer within documented constraints. | NWEA percentile for the selected score. Constraints: Usually 99 for rows where levels_above_99 is positive. 0 through 99. | No closed enum | 99 | RESTRICT ritd-010-norms-discipline |
rit | INTEGERRequired. Integer within documented constraints. | MAP RIT score. Constraints: 100 through 350. | No closed enum | 268 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
threshold_99_rit | INTEGERRequired. Integer within documented constraints. | RIT threshold for 99th percentile under this subject/grade/norms set. Constraints: Must come from published/interpolated/extrapolated threshold config. Must carry threshold_source_kind. | No closed enum | 252 | EXTEND ritd-011-rit-effective-grade |
levels_above_99 | NUMERIC(6,2)Required. Decimal number within documented constraints. | Grade levels above the 99th percentile threshold. Constraints: Computed by Results. 0 when RIT is at or below threshold. | No closed enum | 1.60 | EXTEND ritd-011-rit-effective-grade |
threshold_source_kind | TEXT enumRequired. One documented enum value. | Provenance class for the threshold point. Constraints: Must be one documented value. | nwea_published - The point is directly reproduced from NWEA-published data.interpolated - The point is interpolated between published NWEA points.alpha_extrapolated - The point is an Alpha extrapolation, such as RIT90 or 99-level thresholds.policy_derived - The point is derived from named alpha.policy.* configuration. | alpha_extrapolated | EXTEND ritd-011-rit-effective-grade |
calculator_version | TEXTRequired. Text within documented constraints. | Calculator/config version used for threshold and levels. Constraints: Must reference alpha.policy_config. | No closed enum | rit_calc_2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
Classifies one student/subject/term into a growth x achievement quadrant without client calculations.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
student_email | CITEXTNullable joined read field. Case-insensitive text within documented constraints. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key. | No closed enum | alex.rivera@example.edu | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
growth_window | TEXT enumRequired. One documented enum value. | Typed growth window used for the Growth X value in this quadrant row. Constraints: Must be one documented value. Endpoint defaults may choose the school report window, but the row still carries the resolved window. | fall_to_fall - Growth measured from Fall to next Fall.fall_to_winter - Growth measured from Fall to Winter.fall_to_spring - Growth measured from Fall to Spring.winter_to_winter - Growth measured from Winter to next Winter.winter_to_spring - Growth measured from Winter to Spring.spring_to_spring - Growth measured from Spring to next Spring. | fall_to_spring | EXTEND ritd-009-growth-x-target |
rit | INTEGERNullable. Integer within documented constraints. | Selected test-of-record RIT for the report row. Constraints: Read from alpha.map_score. | No closed enum | 238 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Surface-owned Growth X for the selected window. Constraints: Read from alpha.map_growth_window. No client calculation. | No closed enum | 2.0000 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
quadrant | TEXT enumNullable. One documented enum value. | Report quadrant under active threshold policy. Constraints: Must be one documented value when inputs exist. | high_growth_high_achievement - Growth X and achievement are both at or above the configured report threshold.high_growth_low_achievement - Growth X is high while achievement is below the configured threshold.low_growth_high_achievement - Achievement is high while Growth X is below the configured threshold.low_growth_low_achievement - Both Growth X and achievement are below the configured thresholds. | high_growth_high_achievement | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
intervention_flag | BOOLEANRequired. true or false. | Whether this row meets policy for intervention or celebration workflow. Constraints: Computed by Results report policy. | No closed enum | false | EXTEND + RESTRICT ritd-005-policy-config |
Summarizes sittings, soft deletes, and selected highest-RIT test of record for one student/subject/term.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
sitting_count | INTEGERRequired. Integer within documented constraints. | Number of all-sittings rows in the group. Constraints: Must be >= 0. Computed by the surface. | No closed enum | 3 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
highest_rit_sitting_id | UUIDNullable. PostgreSQL UUID. | MAP sitting selected as test_of_record. Constraints: References alpha.map_sitting when present. | No closed enum | 018f4b4e-9c7a-7d3d-8b2f-2f673a000801 | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
deleted_sitting_count | INTEGERRequired. Integer within documented constraints. | Number of soft-deleted sittings in the group. Constraints: Must be >= 0. | No closed enum | 1 | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
selection_explanation | TEXTRequired. Text within documented constraints. | Plain explanation of why the selected sitting is test_of_record. Constraints: Must mention highest-RIT rule or null reason. Do not expose client dedupe instructions. | No closed enum | Selected highest valid RIT; later lower retake remains audit evidence. | RENAME + RESTRICT ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
Report-ready ordered growth timeline; same facts as map_longitudinal_point with cohort fields added.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
student_email | CITEXTNullable joined read field. Case-insensitive text within documented constraints. | Student email shown for teacher/parent lookup convenience. It is not a stable key and cannot replace student_id. Constraints: Nullable because not every authorized read returns email. Case-insensitive email format when present. Must never be used as the sole reconciliation key. | No closed enum | alex.rivera@example.edu | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
term_order | INTEGERRequired. Integer within documented constraints. | Surface-owned chronological order. Constraints: Must be >= 1. | No closed enum | 6 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
rit | INTEGERNullable. Integer within documented constraints. | RIT at this timeline point. Constraints: Read from alpha.map_longitudinal_point. | No closed enum | 238 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
observed_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Observed growth for this segment. Constraints: Computed by Results. | No closed enum | 14.00 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Growth X for this segment. Constraints: Computed by Results. | No closed enum | 2.0000 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
timeback_era | TEXT enumRequired. One documented enum value. | Pre-TimeBack vs TimeBack classification. Constraints: Computed by policy. | pre_timeback - School year is 2024-25 or earlier under current policy.timeback - School year is 2025-26 or later under current policy. | timeback | EXTEND + RESTRICT ritd-005-policy-config |
Lets reports regenerate under 2020 or 2025 norms by changing normsSet, with no local norms tables.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
rit | INTEGERNullable. Integer within documented constraints. | RIT held constant while norms-dependent fields change. Constraints: Read from alpha.map_score. | No closed enum | 238 | CUT + RENAME + EXTEND ritd-006-map-identity-cohort ritd-007-map-test-of-record |
percentile | INTEGERNullable. Integer within documented constraints. | Percentile under norms_set. Constraints: 0 through 99 when present. | No closed enum | 94 | RESTRICT ritd-010-norms-discipline |
effective_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Effective grade under norms_set/calculator config. Constraints: Read from alpha.map_effective_grade. | No closed enum | 6.40 | EXTEND ritd-011-rit-effective-grade |
growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Growth X under norms_set. Constraints: Read from alpha.map_growth_window. | No closed enum | 2.0000 | EXTEND ritd-009-growth-x-target |
Breaks Growth X into observed, projected, typical, target, and gap fields by typed growth window.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
growth_window | TEXT enumRequired. One documented enum value. | Typed growth window. Constraints: Must be one documented value. | fall_to_fall - Growth measured from Fall to next Fall.fall_to_winter - Growth measured from Fall to Winter.fall_to_spring - Growth measured from Fall to Spring.winter_to_winter - Growth measured from Winter to next Winter.winter_to_spring - Growth measured from Winter to Spring.spring_to_spring - Growth measured from Spring to next Spring. | fall_to_spring | EXTEND ritd-009-growth-x-target |
observed_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Observed growth points. Constraints: Read from alpha.map_growth_window. | No closed enum | 14.00 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
projected_growth | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Projected growth points. Constraints: Read from alpha.map_growth_window. | No closed enum | 7.00 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Observed / projected growth. Constraints: Computed by Results. | No closed enum | 2.0000 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
target_gap | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | Difference from configured Growth X target. Constraints: Computed by Results. | No closed enum | 0.00 | EXTEND + RESTRICT ritd-005-policy-config |
Returns the Growth X answer for a cohort by averaging each student's individual Growth X ratio at the documented group grain. It explicitly does not divide total observed growth by total projected growth.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
group_dimension | TEXT enumRequired. One documented enum value. | Cohort dimension used for the group row. Constraints: Must be one documented value. School-level and tenure filters use locked registries. | school_level - Group by the locked WL/LL/L1/L2/MS/HS school-level tag from People & Orgs.tenure_bucket - Group by the locked tenure bucket computed by the surface from admission_date and alpha.policy.tenure_buckets.brand - Group by the locked brand tag at the NWEA-account boundary.modality - Group by physical or virtual modality at the NWEA-account boundary.school - Group by the enrolled school sourcedId through People & Orgs.cohort - Group by an authorized named cohort returned by People & Orgs. | school_level | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
group_key | TEXTRequired. Text within documented constraints. | Value of the selected group_dimension. Constraints: For school_level, must be WL, LL, L1, L2, MS, or HS. For tenure_bucket, must be one alpha.policy.tenure_buckets value. For brand/modality/school/cohort, must come from People & Orgs authorized joins. | No closed enum | MS | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTRequired for term-scoped rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
growth_window | TEXT enumRequired. One documented enum value. | Typed growth window used for the group Growth X answer. Constraints: Must be one documented value. | fall_to_fall - Growth measured from Fall to next Fall.fall_to_winter - Growth measured from Fall to Winter.fall_to_spring - Growth measured from Fall to Spring.winter_to_winter - Growth measured from Winter to next Winter.winter_to_spring - Growth measured from Winter to Spring.spring_to_spring - Growth measured from Spring to next Spring. | fall_to_spring | EXTEND ritd-009-growth-x-target |
student_count | INTEGERRequired. Integer within documented constraints. | Number of students with an eligible individual Growth X ratio in this group. Constraints: Must be >= 0. Students with null individual growth_x are excluded and counted in excluded_student_count. | No closed enum | 47 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
excluded_student_count | INTEGERRequired. Integer within documented constraints. | Number of otherwise in-scope students excluded because their individual Growth X ratio is null. Constraints: Must be >= 0. Null reasons remain on alpha.map_growth_window rows. | No closed enum | 3 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
average_growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Average of each eligible student's individual growth_x ratio. Constraints: Computed by Results as avg(alpha.map_growth_window.growth_x). Never compute as sum(observed_growth) / sum(projected_growth). Null when student_count is 0. | No closed enum | 2.1240 | EXTEND ritd-009-growth-x-target |
growth_x_target | NUMERIC(8,4)Required. Decimal number within documented constraints. | Configured target used to interpret the group answer. Constraints: Default is alpha.policy.growth_x_target. Policy version must be recorded. | No closed enum | 2.0000 | EXTEND + RESTRICT ritd-005-policy-config |
students_at_or_above_target_count | INTEGERRequired. Integer within documented constraints. | Eligible students whose individual Growth X meets or exceeds target. Constraints: Must be >= 0. Computed from individual ratios, not total growth sums. | No closed enum | 29 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
policy_version | TEXTRequired. Text within documented constraints. | Policy/config version used for group eligibility and target. Constraints: Must reference alpha.policy_config. | No closed enum | growth_x_group_v2026_06 | EXTEND + RESTRICT ritd-005-policy-config |
computed_at | TIMESTAMPTZRequired. UTC timestamp. | UTC timestamp when the surface produced this group row. Constraints: Must be UTC. | No closed enum | 2026-06-05T14:31:00Z | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
Report-ready frames for student_progress_animation without local 99-level, Growth X, or effective-grade math.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
frame_index | INTEGERRequired. Integer within documented constraints. | Ordered frame number. Constraints: Must be >= 0. | No closed enum | 12 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
frame_date | DATERequired. ISO 8601 calendar date. | Date represented by the frame. Constraints: ISO 8601 date. | No closed enum | 2026-06-03 | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
working_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Working grade for this frame. Constraints: Read from alpha.working_grade. | No closed enum | 7.40 | EXTEND ritd-014-working-grade-advancement |
effective_grade | NUMERIC(5,2)Nullable. Decimal number within documented constraints. | Effective grade for this frame when MAP input exists. Constraints: Read from alpha.map_effective_grade. | No closed enum | 6.40 | EXTEND ritd-011-rit-effective-grade |
growth_x | NUMERIC(8,4)Nullable. Decimal number within documented constraints. | Growth X visible at this frame. Constraints: Read from alpha.map_growth_window. | No closed enum | 2.0000 | EXTEND ritd-009-growth-x-target |
levels_above_99 | NUMERIC(6,2)Nullable. Decimal number within documented constraints. | 99-level value visible at this frame. Constraints: Read from alpha.map_99_level. | No closed enum | 1.60 | EXTEND ritd-011-rit-effective-grade |
Compares TimeBack Production old answers and Alpha surface answers for RIT, Growth X, HMG, mastery, and minutes reconciliation keys. Migration uses studentId as the typed single-student filter for one-student cutover checks; raw NWEA StudentID is not accepted here.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
student_id | TEXTRequired. Text within documented constraints. | TimeBack student id used by teachers, parents, and reports. This replaces NWEA StudentID in public Alpha views and aliases the OneRoster user identity. Constraints: Required for every per-student Results fact. Must reference the People & Orgs student identity in the same tenant. Do not parse or substitute NWEA StudentID for this field. | No closed enum | stu_timeback_10017 | RENAME ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject_id | TEXT enumRequired. One documented enum value. | Canonical alpha.subject value used for Results reports and formulas after write-time source alias folding. Consumers filter on this typed field instead of parsing test names, NWEA Subject, or TimeBack metadata strings. Constraints: Closed enum: math, reading, language, science, vocabulary, writing. MAP-measured subset is math, reading, language, science. Vocabulary and writing proxy to language for MAP RIT/Growth X reads. FastMath source aliases proxy to math for MAP/reporting but must never persist as subject_id=fastmath. Social Studies, bare ELA groups, blank/None/Other/General/Unknown, and dev/screener junk are excluded or quarantined by the adapter, not emitted as public subjects. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | RESTRICT ritd-005-policy-config ritd-010-norms-discipline |
canonical_term_id | TEXTNullable; required for MAP/RIT/Growth X rows. Text within documented constraints. | Typed academic term id. This is the term field clients use instead of parsing NWEA TermName. Constraints: Must reference the canonical academic-session/term registry for the tenant. When the source only has NWEA TermName, the ingest adapter resolves it before writes become public Alpha rows. | No closed enum | term_2025_26_spring | RESTRICT ritd-010-norms-discipline ritd-020-axis-query-model |
import_id | TEXTNullable. Text within documented constraints. | Import id whose materialized rows are being reconciled, when the comparison follows a raw-ingest batch. Constraints: When present, must reference source evidence written by POST /alpha/results/v1/imports. Used for migration cutover evidence, not as the student key. | No closed enum | import_timeback_prod_results_2026_06_08T15 | EXTEND ritd-003-canonical-result-shape ritd-028-axis-privacy-retention ritd-000-alpha-storage-model |
source_shape | TEXT enumNullable; required when import_id is present. One documented enum value. | Source-shaped producer family used by the import being reconciled. Constraints: Must be one documented raw_import_source_shape value when present. Do not infer source shape from producer_batch_id text. | timeback_assessment_result - Raw TimeBack Production assessment/result row. The caller sends the source row as-is; Results resolves student, subject, term, content/test family, score evidence, KC evidence, mastery, XP, and report rows server-side.nwea_map_assessment_result - Raw NWEA MAP Growth CDF AssessmentResults row. The caller sends NWEA field names such as StudentID, TermName, Subject, TestID, TestRITScore, NormsReferenceData, and GoalN fields; Results routes through the NWEAMap base contract and materializes public MAP reads server-side. | timeback_assessment_result | EXTEND ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
metric_kind | TEXT enumRequired. One documented enum value. | Metric being reconciled. Constraints: Must be one documented value. | rit - RIT per student/subject/term.growth_x - Growth X per student/subject/term.highest_mastered_grade - Highest mastered grade per student/subject/as-of date.student_kc_state - Four-state KC state per student/KC.minutes - Minutes per student/day, read from Events surface. | growth_x | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
kc_id | TEXTNullable; required for student_kc_state metric. Text within documented constraints. | Curriculum KC id for KC-state reconciliation. Constraints: Must reference Curriculum KC when metric_kind is student_kc_state. | No closed enum | kc_linear_equations | EXTEND ritd-004-student-knowledge-graph |
activity_date | DATENullable; required for minutes metric. ISO 8601 calendar date. | Date for Events minutes reconciliation. Constraints: Minutes belong to Events, but reconciliation reports show the comparison key. | No closed enum | 2026-06-03 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
old_value | TEXTNullable. Text within documented constraints. | Value returned by old TimeBack Production for this key. Constraints: Stored as text for cross-metric comparison display. Do not use as canonical Results value. | No closed enum | 2.0000 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
alpha_value | TEXTNullable. Text within documented constraints. | Value returned by the Alpha surface for this key. Constraints: Stored as text for comparison display. Canonical value remains in the source Alpha object. | No closed enum | 2.0000 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
reconcile_status | TEXT enumRequired. One documented enum value. | Whether old and Alpha answers match for this key. Constraints: Must be one documented value. | match - Old production and Alpha surface answers are identical for the reconciliation key.mismatch - Both sides returned values but they differ.missing_old - The Alpha surface has a value that old production did not return.missing_alpha - Old production has a value the Alpha surface did not return.not_applicable - The metric is not expected for this key. | match | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
mismatch_detail | TEXTNullable. Text within documented constraints. | Human-readable explanation when values differ. Constraints: Required when reconcile_status is mismatch. Should name the earliest source artifact or adapter evidence if known. | No closed enum | Old value used local dedupe; Alpha used highest-RIT test_of_record. | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
Golden rows and hashes used by the skill pack to prove it asks the surface correctly without carrying logic.
Lifecycle. Read-only report view generated by the Results surface. Consumers and skill packs call it; they do not reproduce its calculations.
Relationships. Reads from Results-owned source objects and authorized joined cohort fields.
| Field | Type | Meaning | Allowed values | Example | Provenance |
|---|---|---|---|---|---|
tenant_id | UUIDRequired. PostgreSQL UUID. | Platform tenant boundary. Every Results row belongs to exactly one tenant and reads must match the JWT tenant claim. Constraints: Required on every persisted Results object. Must reference platform.tenant(tenant_id). Must match the authenticated tenant_id claim. | No closed enum | 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 | PASS-THROUGH ritd-026-axis-tenant-routing |
example_id | TEXTRequired. Text within documented constraints. | Stable id of the worked example. Constraints: Unique within tenant and report_id. | No closed enum | map_quadrants_2025_norms_demo | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
report_id | TEXT enumRequired. One documented enum value. | Report view the example exercises. Constraints: Must be one documented report view. | map_quadrants - MAP quadrants report.retake_audit - MAP retake audit report.growth_over_time - Growth-over-time report.norms_isolation - Norms-isolation variant.growth_breakdown - Growth breakdown report.group_growth_x - Group Growth X report using average of student ratios.closed_loop_reconciliation - Closed-loop reconciliation report. | map_quadrants | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
norms_set | TEXT enumRequired for normed MAP rows. One documented enum value. | NWEA norms set used for the observation, calculator output, or report row. One row never mixes norms. Constraints: Allowed values are currently 2020 or 2025. Consumers regenerate a report under another norms set by changing the normsSet parameter, not by shipping norms tables. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | RESTRICT ritd-010-norms-discipline |
request_params | JSONBRequired. JSON value matching documented schema. | Exact surface request parameters for the worked example. Constraints: Must be a JSON object. May include endpoint path and query parameters but no credentials. | No closed enum | {"normsSet":"2025","subject":"math"} | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
expected_row_count | INTEGERRequired. Integer within documented constraints. | Number of rows the surface should return for the example. Constraints: Must be >= 0. | No closed enum | 42 | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
expected_result_hash | TEXTRequired. Text within documented constraints. | Hash of the canonical response used by skill-pack self-checks. Constraints: Use sha256-prefixed digest. Hash the platform answer, not local computed output. | No closed enum | sha256:bc932e2b | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
verified_at | TIMESTAMPTZRequired. UTC timestamp. | UTC time the surface last verified the answer key. Constraints: Must be UTC. | No closed enum | 2026-06-03T18:55:00Z | EXTEND ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
Parameters
These are typed API inputs. Do not parse terms, subjects, NWEA fields, or report windows in a client.
| Name | Type | Required | Meaning | Allowed values | Example | Trace |
|---|---|---|---|---|---|---|
studentId | TEXT | Required on student sub-collection routes. | TimeBack student id. Never use NWEA StudentID in public Alpha requests. | No closed enum | stu_timeback_10017 | ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
subject | TEXT enum | Optional filter unless endpoint requires subject. | Canonical alpha.subject id after write-time alias folding. MAP endpoints accept the MAP-measured subset; vocabulary/writing source subjects proxy to language for MAP reads, and FastMath source aliases proxy to math without becoming a public subject. | math - Canonical mathematics subject. MAP-measured; FastMath source aliases proxy to math for MAP reporting but never persist as subject_id=fastmath.reading - Canonical reading subject. MAP-measured; reading, phonics, phonetic, and oral-reading source aliases fold here when the adapter can resolve them.language - Canonical language arts subject. MAP-measured; English and Language Arts aliases fold here, and vocabulary/writing proxy here for MAP RIT and Growth X reporting.science - Canonical science subject. MAP-measured.vocabulary - Canonical vocabulary subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language.writing - Canonical writing subject for curriculum/result records. For MAP RIT and Growth X, the proxy subject is language. | math | ritd-005-policy-config ritd-010-norms-discipline |
asOfDate | DATE | Optional; defaults are endpoint-specific. | Point-in-time date used for highest mastered grade, working grade, report cards, gate passes, track state, and mastery state. | No closed enum | 2026-06-03 | ritd-020-axis-query-model ritd-015-report-card-gates |
canonicalTermId | TEXT | Optional filter. | Typed term id used instead of parsing NWEA TermName. | No closed enum | term_2025_26_spring | ritd-010-norms-discipline ritd-020-axis-query-model |
normsSet | TEXT enum | Required on norm-sensitive report views. | Selects 2020 or 2025 NWEA norms. Changing this parameter regenerates a report under another norms set. | 2020 - Use NWEA 2020 norms for achievement and growth comparisons.2025 - Use NWEA 2025 norms for achievement and growth comparisons. | 2025 | ritd-010-norms-discipline |
growthWindow | TEXT enum | Required on growth-window reads when not implied by term pair. | Typed growth window. Clients never switch over NWEA growth-column names. | fall_to_fall - Growth measured from Fall to next Fall.fall_to_winter - Growth measured from Fall to Winter.fall_to_spring - Growth measured from Fall to Spring.winter_to_winter - Growth measured from Winter to next Winter.winter_to_spring - Growth measured from Winter to Spring.spring_to_spring - Growth measured from Spring to next Spring. | fall_to_spring | ritd-009-growth-x-target |
gradeLevel | NUMERIC(4,1) | Required on percentile/RIT translation reads and grade-level progress reads; optional on course-progress reads. | Typed grade level used for percentile/RIT translation or for Results grade-level progress/pacing reads. It is never inferred from MAP/RIT/R90 grade-band percent. | No closed enum | 7.0 | ritd-036-course-grade-progress |
termSeason | TEXT enum | Required on percentile/RIT translation reads. | MAP season used for percentile <-> RIT translation; clients do not parse this from term strings. | fall - Fall MAP season.winter - Winter MAP season.spring - Spring MAP season.summer - Summer MAP season. | spring | ritd-010-norms-discipline ritd-020-axis-query-model |
translationDirection | TEXT enum | Required on percentile/RIT translation reads. | Chooses percentile_to_rit or rit_to_percentile so one endpoint can serve both GOALS conversions. | percentile_to_rit - Input is a percentile; the surface returns the corresponding RIT under the selected norms set.rit_to_percentile - Input is a RIT score; the surface returns the corresponding percentile under the selected norms set. | percentile_to_rit | ritd-010-norms-discipline ritd-011-rit-effective-grade |
inputPercentile | INTEGER | Required only when translationDirection=percentile_to_rit. | Percentile to translate to RIT using the surface norms calculator. | No closed enum | 99 | ritd-010-norms-discipline ritd-011-rit-effective-grade |
inputRit | INTEGER | Required only when translationDirection=rit_to_percentile. | RIT score to translate to percentile using the surface norms calculator. | No closed enum | 252 | ritd-010-norms-discipline ritd-011-rit-effective-grade |
groupDimension | TEXT enum | Required on group Growth X report reads. | Cohort dimension used by alpha.report_group_growth_x. | school_level - Group by the locked WL/LL/L1/L2/MS/HS school-level tag from People & Orgs.tenure_bucket - Group by the locked tenure bucket computed by the surface from admission_date and alpha.policy.tenure_buckets.brand - Group by the locked brand tag at the NWEA-account boundary.modality - Group by physical or virtual modality at the NWEA-account boundary.school - Group by the enrolled school sourcedId through People & Orgs.cohort - Group by an authorized named cohort returned by People & Orgs. | school_level | ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
groupKey | TEXT | Required on group Growth X report reads. | Value of the selected groupDimension, such as MS for school_level or 1-2_years for tenure_bucket. | No closed enum | MS | ritd-006-map-identity-cohort ritd-001-results-boundary-alias-map |
sittingScope | TEXT enum | Optional; defaults to test_of_record. | Controls whether MAP reads return the selected test of record or all sittings. | test_of_record - Return the selected highest-RIT current row only.all - Return raw audit sittings including retakes and soft-deleted rows when authorized. | test_of_record | ritd-007-map-test-of-record ritd-028-axis-privacy-retention |
courseId | TEXT | Required on course-transcript detail routes; optional filter on transcript lists. | Platform3 course sourcedId used for Ed-Fi course transcript answers. It resolves through OneRoster/People & Orgs and never through a local Results course table. | No closed enum | course_algebra_1 | ritd-031-edfi-academic-record-transcript ritd-001-results-boundary-alias-map |
includeSourceEvidence | BOOLEAN | Optional; defaults to false. | When true and authorized, transcript endpoints include source canonical_record ids, descriptor provenance, and soft-delete evidence. It never returns raw payload_json blobs or secrets. | No closed enum | false | ritd-031-edfi-academic-record-transcript ritd-000-alpha-storage-model |
metricKind | TEXT enum | Optional filter on closed-loop reconciliation. | Typed reconciliation metric. Use this instead of separate report-specific endpoints for RIT, Growth X, HMG, KC state, or minutes cutover checks. | rit - RIT per student, subject, and term.growth_x - Growth X per student, subject, term, growth window, and norms set.highest_mastered_grade - Highest mastered grade per student, subject, and as-of date.student_kc_state - Four-state KC state per student and KC.minutes - Minutes per student and activity date, sourced from Events but reconciled in the report row. | growth_x | ritd-017-report-ready-views-skill-pack-gate ritd-030-axis-report-oracle |
sourceShape | TEXT enum | Required in raw import request bodies. | Names the producer row shape carried in records[]. It tells Results which server-side adapter to run; it is not a request to pre-normalize rows in the caller. | timeback_assessment_result - Raw TimeBack Production assessment/result row. The caller sends the source row as-is; Results resolves student, subject, term, content/test family, score evidence, KC evidence, mastery, XP, and report rows server-side.nwea_map_assessment_result - Raw NWEA MAP Growth CDF AssessmentResults row. The caller sends NWEA field names such as StudentID, TermName, Subject, TestID, TestRITScore, NormsReferenceData, and GoalN fields; Results routes through the NWEAMap base contract and materializes public MAP reads server-side. | nwea_map_assessment_result | ritd-003-canonical-result-shape ritd-000-alpha-storage-model |
modifiedSince | TIMESTAMPTZ | Optional polling filter. | Returns rows changed after this UTC timestamp. | No closed enum | 2026-06-03T18:55:00Z | ritd-020-axis-query-model |
Skill-pack leak guard
The Results surface exists so a thin skill pack can produce real reports by calling the platform. A client must not carry norms tables, sitting dedupe, growth-window switches, term parsing, mastery/decay math, next-task ranking, track copying, XP formulas, progress joins, transcript descriptors/precedence, Ed-Fi parsing, content-effectiveness counters, or school-day/minutes logic. If a client needs any item below, the surface leaked and the fix belongs upstream.
Use normsSet=2020 or normsSet=2025. The surface owns NWEA norms isolation.
Use current-map for GOALS/student-facing current MAP, map-scores for term test-of-record reports, and map-sittings with sittingScope=all for audit rows.
Use typed growthWindow values and report endpoints; do not switch over NWEA growth column names.
Use canonicalTermId, term_season, school_year, and asOfDate fields.
Read alpha.student_kc_state, including initial_mastery, current_retention, durable_mastery, fluency_state, and next_due_at.
Call /alpha/results/v1/next-task. Apps render the typed task ref; they do not choose lessons, reviews, practice, or gate retries.
Read alpha.student_track_state. Curriculum owns track definitions; Results owns one student's position and switch history.
Read alpha.xp_ledger. Results writes append-only awards, discounts, penalties, and reversals from policy and settled attempts.
Read course-progress and grade-level-progress. Do not join Analytics completion-rollups, Curriculum course trees, Events evidence, calendars, or MAP/RIT/R90 to compute remaining XP, percent complete, active-path state, or pacing.
Read alpha.advancement; the surface owns the K-8 growth formula.
Read course_attempt_result, credit_type, grade_type, answer_precedence, and source_evidence from the Results transcript views; the surface resolves descriptors and chooses among StudentAcademicRecord, CourseTranscript, and Grade rows.
Use typed academic-record, course-transcript, course-grade, and transcript-result fields instead of payload_json extraction in the client.
Academic-record and transcript objects are SQL views over edfi.canonical_record; Alpha clients and migrations must not create copied result tables.
Read alpha.content_effectiveness. Results recomputes validated_by_count, failed_by_count, and effectiveness_rate from settled result evidence.
Use the report-ready reconciliation and policy-backed reads. Minutes are keyed by Events at (student, day), and Results only exposes the comparison answer.
Credential existence belongs to alpha.app_credential and vault references, not Results rows.
Provenance
| Alpha name | Plain name | Change | Source | Meaning | ITD |
|---|---|---|---|---|---|
alpha.result_record | Result record | RENAME + EXTEND | oneroster.results for section gradebook outcomes; alpha.result_record_extension for non-section Alpha outcomes | Settled score/status for one student on one work item or test. | ritd-003-canonical-result-shape |
alpha.gradebook_item | Gradebook item | RENAME | oneroster.line_items | The assignment, activity, assessment, or gradebook column that can produce a result. | ritd-002-gradebook-result-boundary |
alpha.score_scale | Score scale | RENAME + RESTRICT | oneroster.score_scales, oneroster.line_item_score_scales, oneroster.result_score_scales | How a score is interpreted for a gradebook item or result; ambiguity is rejected before persistence. | ritd-002-gradebook-result-boundary |
alpha.result_kc_evidence | Result skill evidence | RENAME + EXTEND | oneroster.result_learning_objective_ids plus alpha.result_kc_evidence_extension | Per-result links to curriculum KCs with score evidence. | ritd-004-student-knowledge-graph |
alpha.report_card_entry | Report card entry | EXTEND | alpha.report_card_entry keyed to student/result/gradebook/MAP evidence FKs | Settled, effective-dated report-card statement for one student, subject, course, or section. | ritd-015-report-card-gates |
alpha.gate_pass | Gate pass | EXTEND | alpha.gate_pass keyed to result_record/content test FKs | Durable pass, fail, cooldown, or retry permission for an advancement gate. | ritd-015-report-card-gates |
alpha.student_kc_state | Student knowledge state | EXTEND | alpha.student_kc_state keyed to OneRoster student FK and Curriculum KC FK | Per-student overlay on the shared curriculum graph with initial_mastery, current_retention, durable_mastery, fluency_state, next_due_at, and evidence refs. | ritd-004-student-knowledge-graph |
alpha.student_track_state | Student track state | EXTEND | alpha.student_track_state keyed to OneRoster student FK and Curriculum track/track_level/segment FKs | One row per student and track: current level, current segment, placement evidence, status, and switched_to_track_id. | ritd-032-student-track-state |
alpha.student_course_progress | Student course progress | EXTEND | alpha.student_course_progress keyed to student/subject/course/asOfDate | One course progress answer with xp_remaining, total_xp, percent_complete, evidence kind, and source refs. | ritd-036-course-grade-progress |
alpha.student_grade_level_progress | Student grade-level progress | EXTEND | alpha.student_grade_level_progress keyed to student/subject/grade/asOfDate | One grade-level progress and pacing answer using active-path XP remaining over the main-sequence total XP denominator. | ritd-036-course-grade-progress |
alpha.next_task | Next task | DERIVED READ | Read computed from student_kc_state, student_track_state, gate_pass, Curriculum frontier/course members, and Policy | One surface call returning a typed task ref: new lesson, review, practice, gate retry, or no task. | ritd-034-next-task-selection |
alpha.xp_ledger | XP ledger | EXTEND | alpha.xp_ledger keyed to result_record/content/attempt evidence FKs | The source of truth for awarded XP per attempt, including negative awards for gaming or cheating signals. | ritd-033-xp-ledger |
alpha.content_effectiveness | Content effectiveness | EXTEND | alpha.content_effectiveness keyed to Content item FK and result evidence FKs | Validated-by count, failed-by count, and effectiveness rate for a Content item after scored result evidence. | ritd-016-content-effectiveness-derived-read |
alpha.working_grade | Working grade | EXTEND | alpha.working_grade keyed to student/subject/asOfDate and source evidence FKs | Current surface-owned grade-equivalent level for a student and subject as of a date. | ritd-014-working-grade-advancement |
alpha.advancement | Advancement | EXTEND | alpha.advancement keyed to working_grade/MAP evidence FKs | max(0, currentWorkingGrade - max(baselineEffectiveGrade, syStartWorkingGrade)). | ritd-014-working-grade-advancement |
alpha.map_score | MAP score | CUT + RENAME + EXTEND | nweamap.assessment_result_projection plus Alpha MAP extension sidecars | Plain current MAP result keyed by TimeBack student, subject, and term. | ritd-006-map-identity-cohort |
alpha.map_sitting | MAP sitting | RENAME + RESTRICT | nweamap.assessment_result_projection/raw_assessment_results with sittingScope=all | Audit view of all MAP sittings including retakes and soft-deleted rows when authorized. | ritd-007-map-test-of-record |
alpha.map_goal_strand | MAP goal strand | RENAME + RESTRICT + EXTEND | view-unpivot of NWEA Goal1Name..Goal8Adjective fields from nweamap.raw_assessment_results | One row per student, subject, term, and goal strand with strand_rit, standard_error, and goal_gap. | ritd-008-map-goal-strands |
alpha.map_growth_window | MAP growth window | EXTEND | alpha.map_growth_extension keyed to nweamap.assessment_result_projection | One typed growth-window row with observed growth, projected growth, Growth X, target, and norms set. | ritd-009-growth-x-target |
alpha.map_normed_result | Normed MAP result | RESTRICT | nweamap.assessment_result_projection NormsReferenceData plus typed Alpha norms parameter | MAP result/calculator output bound to exactly one norms set, currently 2020 or 2025. | ritd-010-norms-discipline |
alpha.map_effective_grade | Effective grade | EXTEND | alpha.map_effective_grade_extension keyed to NWEAMap projection and calculator config | RIT50 grade, RIT90 grade, effective grade, Alpha minimum RIT, and Alpha predicted RIT. | ritd-011-rit-effective-grade |
alpha.map_longitudinal_point | MAP growth point | EXTEND | alpha.map_longitudinal_extension keyed to NWEAMap projection rows across terms | Ordered per-student, per-subject time series point with TimeBack-era flag. | ritd-012-longitudinal-series |
alpha.map_99_level | 99-level | EXTEND | alpha.map_99_level_extension keyed to NWEAMap projection and threshold config | How many grade levels above the 99th-percentile threshold a student's RIT sits. | ritd-013-ninety-nine-levels |
alpha.academic_record_view | Academic record | RENAME + RESTRICT | edfi.canonical_record where resource_name/record_kind = StudentAcademicRecord | Cumulative academic achievement for one student: term, school year, school, GPA/class-rank fields, attempted credits, earned credits, diplomas, honors, and report-card references. | ritd-031-edfi-academic-record-transcript |
alpha.course_transcript_view | Course transcript | RENAME + RESTRICT | edfi.canonical_record where resource_name/record_kind = CourseTranscript, joined to StudentAcademicRecord references | Final course performance for one student in a term or school year: course, attempt result, final letter/numeric grade, attempted credits, earned credits, credit type/category, repeat code, and transcript evidence. | ritd-031-edfi-academic-record-transcript |
alpha.course_grade_view | Course grade | RENAME + RESTRICT | edfi.canonical_record where resource_name/record_kind = Grade, with GradebookEntry references when present | A settled course/grading-period grade that belongs in Results only after it is a durable academic record, not while it is merely an event or blank assignment. | ritd-031-edfi-academic-record-transcript |
alpha.transcript_result_view | Transcript result | RENAME + RESTRICT | Union/read view over alpha.academic_record_view, alpha.course_transcript_view, and alpha.course_grade_view | One report-ready row for questions like a student's final grade and earned credits for a course in a term. | ritd-031-edfi-academic-record-transcript |
alpha.result_source_evidence | Result source evidence | EXTEND | alpha.result_source_evidence keyed to adapter/import/audit FKs | Immutable adapter/import/source references that let migration reconcile old DB and Alpha surface answers. | ritd-003-canonical-result-shape |
alpha.map_percentile_translation | Percentile/RIT translation | EXTEND | NWEA published norms plus Alpha calculator config | Converts percentile to RIT or RIT to percentile under one subject, grade, season, and norms set. | ritd-010-norms-discipline |
alpha.map_r90_norm_point | R90 norm point | EXTEND | Alpha R90/RIT90 extrapolation over NWEA-published RIT50 norms | The one R90 table used by effective grade, GOALS, and related MAP calculators; no local copies. | ritd-011-rit-effective-grade |
alpha.report_group_growth_x | Group Growth X report | EXTEND | Results report-ready view over per-student alpha.map_growth_window.growth_x rows | Cohort Growth X answer for school level, tenure, brand, modality, school, or cohort groupings. | ritd-017-report-ready-views-skill-pack-gate |
alpha.map_percentile_translation | Percentile/RIT translation | EXTEND | NWEA published norms plus Alpha calculator config | Converts percentile to RIT or RIT to percentile under one subject, grade, season, and norms set. | ritd-010-norms-discipline |
alpha.map_r90_norm_point | R90 norm point | EXTEND | Alpha R90/RIT90 extrapolation over NWEA-published RIT50 norms | Legacy R90 fixture row for Results report compatibility. GOALS grade2RIT/R90 uses the skill-seeded NWEAMAP master directly or through Analytics. | ritd-011-rit-effective-grade |
alpha.report_group_growth_x | Group Growth X report | EXTEND | Results report-ready view over per-student alpha.map_growth_window.growth_x rows | Cohort Growth X answer for school level, tenure, brand, modality, school, or cohort groupings. | ritd-017-report-ready-views-skill-pack-gate |
| # | Rule | Results application |
|---|---|---|
| 1 | Tag registry vs. real column | Results uses real columns for every relationship, join key, sort key, computed input, uniqueness key, and not-null fact: student_id, content_id, kc_id, track_id, current_track_level_id, current_segment_id, subject, term_id, school_year, result_kind, source_adapter_id, xp_award_id, content_effectiveness_id, course_id, transcript_record_id, academic_record_id, credit_type, and outcome_status. If the column is sourced from OneRoster, NWEAMap, or Ed-Fi it is a view column; if Alpha creates it, it is an extension column. Ed-Fi descriptors resolve through edfi.descriptor_code, never a local Results tag table. |
| 2 | Point-in-time default | Report cards, transcripts, course grades, student_track_state, working grade, gate pass state, student_kc_state, XP awards, content effectiveness, and MAP term facts are read by asOfDate. begin_date NULL means the row has no locatable start and is excluded from point-in-time computation; end_date NULL means active for any asOfDate on or after begin_date; both NULL means excluded; is_time_locatable is exposed on effective-dated Results rows. Current reads are asOfDate reads, not a separate current-only shortcut. |
| 3 | Typed field, no read-time parsing | subject, canonical_term_id, term_season, school_year, result_kind, source_kind, test_type, growth_window, norms_set, initial_mastery, current_retention, durable_mastery, fluency_state, next_task_type, track_status, gate_status, xp_award_reason, course_attempt_result, grade_type, credit_type, and transcript_term are typed fields with alias folds or descriptor resolution at write/view time. Consumers never parse test names, NWEA TermName, Ed-Fi descriptor labels, URLs, or free comments. |
| 4 | Policy numbers are config | mastery cutoff, retention model, stuck-attempt threshold, gate retake cooldown, proxy-subject rules, XP award formula, repeat-attempt discount, effort signal weighting, Growth X target, RIT calculator coefficients, 99-level thresholds, school-year boundaries, progress XP-remaining precedence, pacing thresholds, rewards, and mastery decay are alpha.policy.* config read by the surface. |
| 5 | Event, result, gradebook are not collapsed | Events records moments; Results records settled outcomes and scores; gradebook/report-card rows are rollups that may reference results. Results never stores launch, view, hint, or scrub moments as results. |
| 6 | Two graphs, two homes | Curriculum owns the shared curriculum graph. Results owns alpha.student_kc_state, the per-student overlay over that graph, with four named states on one row: initial_mastery, current_retention, durable_mastery, and fluency_state. Mastery is never a field on the student record and the shared map is never copied into Results. |
| 7 | NWEA account boundary | Results reads the NWEA account through the stock OneRoster org tree: type=district means Brand x Modality and carries alpha.org.nwea_district_id. Results does not create a second NWEA account source of truth. |
| 8 | Secrets are not fields or tags | Results rows may record that a third-party producer generated an outcome, but credentials stay in alpha.app_credential and secret vault references. No result, MAP score, or adapter row stores a credential value. |
| 9 | Tenure bands are config | If Results filters or groups outcome reports by tenure, it reads alpha.policy.tenure_buckets and student admission_date from People & Orgs instead of hardcoding band edges. |
| 10 | Content effectiveness is derived from Results | Results is the system of record for outcome evidence and recomputes alpha.content_effectiveness after each scored result that references the content the student used. The read is keyed to Content items and carries validated_by_count, failed_by_count, and effectiveness_rate. Apps never increment counters and Results never copies Content title/body/kind fields. |
| 11 | External results enter through named adapters | College Board, AP Classroom, Barron's, Princeton Review, NWEA, Ed-Fi student academic record imports, and platform-native producers enter through named adapters that write either the proper 1EdTech base surface or Alpha extension storage at the boundary, including the QTI EAP5/EAP6 canonical response plus isCorrect when item-level response evidence exists. App code never half-maps producer results or transcript rows. |
| 12 | Test type is typed on test object | Results reads test_type and is_mastery_gate from Content/QTI objects through references to the content/test version in force when the result settled. It never infers them from display names and never stores copied Content/QTI source fields in Alpha extension tables. |
| 13 | XP ledger is immutable history | Awarded XP lives in alpha.xp_ledger as a ledger, not as mutable state or event rows. It is computed by the Results surface per attempt from Content expected_xp, accuracy, effort signals, repeat-attempt discount, passive-activity verification, and cheating/gaming penalties. Gates, events, engines, and apps never write canonical XP awards. |
| 14 | Course and grade progress are Results reads | Results exposes alpha.student_course_progress and alpha.student_grade_level_progress as the student-facing answers for course progress, grade-level progress, remaining XP, and pacing. Analytics completion/XP rollups, Curriculum main-course expected-XP structure, Events Caliper progress evidence, and People & Orgs calendar/enrollment facts are inputs. Clients call Results and never join those modules to compute progress. |
| 15 | Locked vocabulary | student_kc_state and student_track_state are state; alpha.xp_ledger is a ledger; working grade, advancement, course progress, and content effectiveness are measures; report-ready reads are views; GOALS hours-to-target-date is a prediction. Results does not use projection except for event-sourcing internals. |