| nweamap_source_contract | NWEA MAP Growth CDF bundle plus MAP_Export_Field_Descriptions.xlsx is the upstream specification; platform docs pass through NWEA field definitions by reference and document only platform-owned sidecar metadata or behavior | NITD 000 source contract |
| nweamap_raw_export_mirror | raw persistence mirrors the five NWEA CDF files 1:1 with NWEA field names and semantics, scoped by tenant, NWEA account, term, import batch, source file, source row number, source row hash, ingest timestamp, and deletion state | NITD 001 mirror export |
| nweamap_single_result_view | real-time MAP result observations and daily CDF backfill update one module-owned current result projection; no separate NWEA helper table and no separate batch table ship | NITD 002 single result view |
| nweamap_test_of_record_highest_rit | test of record is the highest valid TestRITScore per tenant, NWEA account, student, subject, and term; valid MAP RIT is 100 through 350, ties choose latest TestStartDate/TestStartTime then larger TestID | NITD 003 test of record highest rit |
| nweamap_soft_delete_retention | when a previously ingested row disappears from the next authoritative export for the same tenant, NWEA account, term, file, and natural identity, mark it soft-deleted with deletion metadata and never hard-delete through the public surface | NITD 004 soft delete |
| nweamap_sitting_scope_parameter | assessment result reads expose sittingScope with values test_of_record and all; clients choose the documented scope instead of learning internal tables or re-implementing dedupe | NITD 005 sitting scope parameter |
| nweamap_write_granularity | SHIP public bulk-only CDF bundle import through POST /nweamap/v1/imports; DEFER public per-row POST, PUT, PATCH, and DELETE until three integrator decisions in 90 days prove bundle import plus read-back blocks the served job | NITD 006 axis write granularity |
| nweamap_read_shape | SHIP list endpoints for CDF collections, detail reads for imports and assessment result rows, and narrow current-result projections controlled by sittingScope; DEFER unrestricted nested sub-collections and Alpha report graphs until Alpha approves a report-graph ITD or three integrator decisions in 90 days prove list/detail/projection reads block the served job | NITD 007 axis read shape |
| nweamap_query_model | SHIP documented filters, stable sort keys, limit-based opaque cursor paging, and modifiedSince for imports, pass-through CDF collection lists, and assessment result projection reads | NITD 008 axis query model |
| nweamap_concurrency_model | DEFER If-Match and per-resource ETags because the public NWEAMap surface has no mutable row overwrite route; re-open with any approved public PUT, PATCH, or DELETE route | NITD 009 axis concurrency model |
| nweamap_idempotency_model | SHIP canonical bundle content hash plus optional Idempotency-Key stored in platform.idempotency_key; same bundle repeats return prior/no-op status and key reuse with different content returns 409 | NITD 010 axis idempotency model |
| nweamap_auth_shape | SHIP platform HS256 Bearer JWTs with tenantId, role or roles, and scopes nweamap:import, nweamap:read, and nweamap:admin; DEFER school, class, and person scoped claims until repeated decisions prove tenant-level access blocks the served job | NITD 011 axis auth shape |
| nweamap_eventing_model | SHIP polling through modifiedSince and cursor-paged lists; DEFER webhooks until three integrator decisions in 90 days show polling blocks MAP sync/report jobs or a platform-wide webhook substrate ships | NITD 012 axis eventing model |
| nweamap_error_envelope | SHIP platform typed RFC 7807 Problems with stable NWEAMap codes, requestId, traceId, fieldErrors, and rowErrors for import failures | NITD 013 axis error envelope |
| nweamap_tenant_routing | SHIP platform tenant-in-JWT routing with request tenantId route-token match; nweaAccountId is a required tenant-local partition for imports and a query filter for reads, not a platform tenant | NITD 014 axis tenant routing |
| nweamap_conformance_evidence | SHIP local executable evidence: workbook/header parity, CDF import round trip, row counts, idempotent re-import, highest-RIT retake fixture, soft-delete replacement fixture, typed Problem fixtures, live smoke tests, surface QC, integration app, and skill-pack leak check; DEFER official NWEA certification claim | NITD 015 axis conformance evidence |
| nweamap_privacy_retention | SHIP tenant-scoped rows, audit linkage, redaction from logs and Problems except minimal repair evidence, and soft deletion; DEFER age-based retention windows and public erasure APIs until platform privacy policy names the required workflow | NITD 016 axis privacy retention |
| nweamap_list_endpoints | SHIP list endpoints for imports, students, assessment results, class assignments, program assignments, and accommodations, all tenant- and NWEA-account scoped with cursor paging and documented filters | NITD 017 axis list endpoints |
| nweamap_report_oracle_boundary | DEFER report-oracle, report-contract, golden-cell, and report-verification primitives on the 1EdTech surface; exact MAP Quadrants report cells, norms=2020|2025 verification, Growth X, Alpha report-specific RIT50/RIT90/Effective Grade assembly, and Alpha report graphs belong to the Alpha surface. R6 carves out the module-owned PowerPath RIT-to-grade reference table/lookup as NWEAMAP-owned portable MAP reference data, not a report oracle. Any skill-pack eval asking 1edtech/skill_pack to regenerate Alpha reports must move to alpha/skill_pack | NITD 018 report oracle boundary |