AlphaTest · Blueprint · Integrator API · Data dictionary

Build a typed blueprint client without guessing.

This is the field-level contract for creating, polling, listing, reading, calibrating, and auditing Platform3 Content-backed blueprints. CASE owns standards, Content owns immutable test_specs, Results/Analytics own post-administration calibration evidence, and AlphaTest owns only orchestration and bounded working proof.

Contract baseline · 27 July 2026 · JSON over /v1 · approved architecture (56 decisions)

Start here

The governed demo mastery-gate catalog is ready: the checked-in schema-v6 governed-source catalog pins the demo-tenant STAAR and Iowa Content versions, nine public tested-standard rows, twenty positive Content KC×DOK cells, and one literal 100-percent policy target per source. Manifest alphatest-public-inventory-bindings-2026-07-24.v2 binds 9/9 rows to 20/20 cells through twenty unique, non-circular public-owner/Content/CASE evidence locators while preserving 20 cells and 52 items. For catalog revision 6e23e29f806a20a72e80bd266d2143e4df1ae8c6ae40bbba615fa410a4483450, an authenticated and authorized exact-match request returns 202, creates an Operation, and proceeds to live Content/CASE proof. Authentication remains request-scoped: invalid, expired, under-scoped, or wrong-tenant JWTs fail normally and never change catalog readiness. ITD-054, ITD-056, binding authority, auth/catalog correction evidence.
Three module-scoped origins are live and verified. For mastery gates set ALPHATEST_BLUEPRINT_URL=https://alphatest-andymontgomery-9773s-projects.vercel.app/blueprint/integrator_api/implementation@mastery_gate/api. For adaptive diagnostics set ALPHATEST_BLUEPRINT_URL=https://alphatest-andymontgomery-9773s-projects.vercel.app/blueprint/integrator_api/implementation@adaptive_diagnostic/api. For weekly unit tests and quizzes set ALPHATEST_BLUEPRINT_URL=https://alphatest-andymontgomery-9773s-projects.vercel.app/blueprint/integrator_api/implementation@formative/api. A public GET to any exact base is the health probe; each returns 200 JSON identifying its accepted testKind and ready service status. Authenticated resource paths append /v1 to the chosen base. Each origin accepts only its named discriminator. Mastery and formative have released success fixtures. The adaptive create route is mounted and auth-enforced, but remains in the ITD-043 deferred window: a schema-valid request returns typed non-retryable 422 adaptive-kc-corpus-not-onboarded before operation creation or writes; its authenticated reads compose live Platform3 Content. Do not guess /v1 at this documentation URL or the product root. Platform3 tenant onboarding—not an AlphaTest mint route—issues the short-lived same-tenant JWT. ITD-003, ITD-031, ITD-040, ITD-043, ITD-047, mastery/adaptive wire evidence, formative wire evidence.

The AcmeTest maintainer can implement all three request variants, poll one lifecycle, recover wire-faithful blueprint summaries, fetch Content-owned detail, and audit every mastery-gate coverage row without guessing which system owns a fact.

Who

The engineer maintaining AcmeTest who currently commits hand-curated test banks.

Job

POST a test request, poll its operation, receive a native Content test_spec id, list/fetch it, and verify standard-by-standard coverage.

Systems of record

CASE owns standards and revisions. Content owns list items, blueprint detail, and all seven test-spec sidecar fields. AlphaTest owns only orchestration and 30-day working evidence.

Native identifiers

Blueprint ids and immutable version ids are Content values; standards/KCs are CASE GUIDs; operation ids are AlphaTest UUIDs.

Ownership key: AlphaTest orchestration is tenant-scoped and purged 30 days after terminal state. CASE pass-through and Content pass-through are owner-published facts, never authoritative local mirrors. Every consequential field links to the bundled approved Architecture ITD set; the bundled HTML is content-identical to the approved artifact modulo one non-semantic trailing newline.

Schema index

Wire conventions and scalar types

ConceptWire type / rangeRulesProvenance
Content test_spec idstring, 1–255 bytesOpaque, case-sensitive Platform3 Content pass-through. Never parse, shorten, or synthesize.ITD-001, 019
CASE GUIDstring, 1–255 bytesOpaque identifier returned by live CASE. Valid only with its source/revision provenance; aliases are rejected.ITD-001, 019
Operation idstring(uuid)Opaque AlphaTest orchestration id returned by create and used only for polling.ITD-002, 019
Instantstring(date-time)RFC 3339 UTC, terminal Z, exactly millisecond precision in responses.ITD-025
Gradestring enumPK, K, 112, or college. No numeric coercion.ITD-003, 043
DOKinteger, 1–4Webb depth of knowledge. Coverage passes only when slot DOK is greater than or equal to source-required DOK.ITD-004, 018
Request idstring, 1–128 bytesServer-generated opaque correlation value; safe for support logs, contains no tenant payload.ITD-022

Nullability key: “No” means the field must be present and non-null. “Yes” means JSON null is permitted. “No*” means the field is conditional/optional: omit it when its condition is false; explicit null is invalid.

HTTP headers

HeaderRequiredMeaning / validationFailure
AuthorizationEvery tenant-data endpoint; omitted only for the base health probeBearer <JWT> with verified sub, tenantId, role, iat, and exp. Customer routes allow reviewer and integrator within their verified tenant; optional scope can only narrow the role maximum. The calibration-delta command instead requires role reports_service plus explicit blueprint:calibration:write and grants no customer read/create permission. Authentication, role, scope, and tenant checks precede idempotency, catalog evaluation, and every upstream call. Platform3 tenant onboarding issues integrator credentials for the published base URL; AlphaTest provides no public mint route, accepts no caller-selected tenant, and does not forward the client token upstream. Issuer, audience, and credential handoff are tenant-onboarding facts, not caller-selectable wire fields. The two short-lived reviewer tokens are a conformance harness, not API input or catalog state. ITD-031, ITD-040, ITD-047, ITD-056401 authentication-required; 403 insufficient-scope or forbidden. A conforming caller whose JWT passes these checks may not receive a reviewer-preflight error.
Idempotency-KeyBoth POST routes1–255 visible ASCII characters; surrounding whitespace and control characters are invalid. Scoped to verified tenant + route for 24 hours. Same key + canonical body replays the original 202. On create, changed-body reuse is 409 idempotency-key-reused; on calibration delta, changed-body or changed-content delta reuse is 409 calibration-delta-conflict. ITD-010, ITD-045400 missing-idempotency-key; route-specific 409
Content-TypePOSTapplication/json; body ≤256 KiB. Unknown fields and explicit nulls are rejected.413 payload-too-large; 415 unsupported-media-type; 400 malformed-json
ETag / If-None-MatchSuccessful GETEvery GET emits a strong opaque validator. The published Vercel edge evaluates If-None-Match before the AlphaTest handler: an exact or weak matching validator, a matching member of a validator list, or * returns 304 with no body; a non-match or malformed value reaches the handler and returns the normal 200. Send the exact strong validator for portable polling. Do not send If-Match or If-Unmodified-Since on GET: the edge can return a plain-text 412 PRECONDITION_FAILED outside AlphaTest's problem envelope. ITD-009, published-wire evidence304, normal 200, or intermediary 412 for unsupported conditional kinds
LocationSuccessful POSTRelative operation reference ./operations/{id}, identical to Operation.href. Resolve it against the effective POST URL; do not prepend an origin or construct a root-absolute /v1 path. This preserves polling at both the standalone module origin and the canonical path-mounted product origin.ITD-002, ITD-040
Retry-After429 and retryable 503 responsesNon-negative decimal integer seconds, 1–3600; never an HTTP-date. Clients wait at least this duration before retry. ITD-021, ITD-024Required when the problem has retryable: true.
Tenant rule: tenantId is forbidden in path, query, body, and tenant-selection headers. It comes only from the verified JWT. Cross-tenant and unknown ids share the same 404 shape. AlphaTest never forwards the client token or accepts a caller-supplied Content credential. ITD-014, ITD-028

Write request schemas

One discriminator, three contracts. testKind selects the required Scope, rigor, and Criteria variant. Unknown fields, explicit nulls, wrong variants, and unreconciled totals are validation errors; the server never silently drops intent.

CreateBlueprintRequest

Exactly one blueprint per request. All listed fields are required unless a row says optional or conditionally required.

JSON fieldTypeNullMeaning / allowed values / validationOwner + provenance
testKindenumNomastery_gate, adaptive_diagnostic, formative. Selects conditional requirements; never inferred. Each published kind-scoped origin accepts only its matching discriminator. A wrong discriminator returns 400 validation-failed with errors[].pointer="/testKind" and code="invalid_enum". At the live adaptive origin, a schema-valid matching request reaches the release gate and returns typed 422 adaptive-kc-corpus-not-onboarded. Choose the origin from deployment status; never assume one deployment accepts every enum member.AlphaTest · ITD-003, ITD-043, mastery/adaptive evidence, formative evidence
subjectstring, 1–100 Unicode scalar valuesNoLeading/trailing Unicode whitespace is removed; interior whitespace is preserved; comparison is case-sensitive and Unicode NFC-normalized. Empty-after-trim fails validation. Used for blueprint intent only; canonical standards come from CASE GUIDs.AlphaTest request · ITD-043
gradeGradeNoTarget grade/band selector.AlphaTest request · ITD-043
scopeScopeNoNamed assessments/frameworks or bounded CASE standard set, depending on test kind.CASE refs + AlphaTest selector · ITD-004, 043
itemCountinteger, 1–500NoExact total to allocate. Sum of final slot counts and DOK/interaction distributions must equal it.AlphaTest · ITD-018
timeBudgetMinutesinteger, 1–480NoWhole-minute design budget. Allocation must reconcile to it; not an administration timer.AlphaTest · ITD-018
rigorPolicyRigorPolicyNoRequired DOK and allowed QTI interaction constraints.AlphaTest · ITD-005, 018
criteriaCriteriaNoDiscriminated by testKind; exact object variant required.AlphaTest · ITD-043
supersedesContent test_spec idNo*Optional (omitted, not null). Existing same-tenant immutable blueprint corrected by this new request.Content pass-through · ITD-009

Scope

FieldTypeNullRule
sourceAssessmentsSourceAssessmentRef[], 1–50No*Required only for mastery_gate; otherwise forbidden and omitted. Entries are unique by sourceKey and by (contentTestSpecId, contentVersion). Every complete entry must exactly match one approved governed source-catalog entry; every referenced Content blueprint must match both immutable values, have assessment_role=spec, and expose a nonempty complete kc_coverage object. Caller labels alone are never assessment evidence.
frameworkGuidsCASE GUID[], 1–20No*Required for adaptive_diagnostic; optional narrowing context for formative; forbidden for mastery_gate, whose version-pinned Content specs define the assessed union. When present, values are unique, live CASE frameworks; explicit null is invalid.
standardGuidsCASE GUID[], 1–500No*Required for formative (bounded unit set); optional pool target for diagnostic; forbidden for mastery gate. When optional and unused it is omitted, never null.
knowledgeComponentGuidsCASE GUID[], 1–500No*Required for diagnostic unless every target standard has live CASE association to at least one KC; optional otherwise. When unused it is omitted, never null.

CASE pass-through + kind rules · ITD-004, 043, 035, 054

RigorPolicy

FieldTypeNullRule
modeenumNohighest_required or specified_distribution. Mastery gate requires highest_required.
dokDistributionobjectNo*Keys 14; non-negative integer counts; sum exactly itemCount. Required for specified mode, optional target for highest-required mode; omit when unused, never null.
interactionTypesstring[], 1–20NoUnique QTI 3 interaction identifiers, each 1–80 ASCII characters. These are constraints for the bank, not locally authored item types.

AlphaTest allocation · ITD-018

Criteria — exactly one variant

Every listed field in the selected variant is required and non-null; fields from either other variant are forbidden.

testKindRequired non-null fieldsValidation / meaningProvenance
mastery_gatetype literal binary_mastery; minimumPercent integer 1–100; requiredStandardPercent integer 1–100Defines gate pass and per-standard floor; gap list is still reported on failure. This is blueprint policy, not a stored result.ITD-043
adaptive_diagnostictype literal stopping_policy; stoppingPolicyRef string 1–255 bytesReference is owned by mastery_engine. Blueprint records the required policy; it does not implement or copy scale calibration. The schema remains defined while successful creation is release-gated.ITD-043
formativetype literal per_standard; minimumPercent integer 1–100Immediate per-standard criterion for a bounded unit. No gate-superset claim.ITD-043

Mastery-gate source contract

SourceAssessmentRef — exactly six public fields

The server exact-matches all six fields to one approved catalog entry for the verified JWT tenant. contentVersionId is deliberately not caller-supplied: the catalog pins it to Content's immutable latest_version_id.

FieldTypeNullMeaning / validationOwner + provenance
sourceKeystring, 1–120 lowercase ASCII charsNoMatches [a-z0-9]+(?:[._-][a-z0-9]+)*; unique in the request and exact-matched to the caller-tenant catalog.Catalog · ITD-035, 054
contentTestSpecIdstring, 1–255 bytesNoOpaque Content id. Item read returns equal content_id; sidecar read returns equal spec_id.Content · ITD-035
contentVersionstring, 1–80 bytesNoExact public catalog version. Immutable identity is separately proven by catalog content_version_id against item latest_version_id; the sidecar need not repeat either.Catalog + Content item · ITD-035
namestring, 1–120 Unicode scalarsNoTrimmed, NFC-normalized approved display name; exact match, never standards authority.Catalog
jurisdictionstring, 1–80 Unicode scalarsNoTrimmed, NFC-normalized jurisdiction or publisher; exact match.Catalog
assessmentVersionstring, 1–80 Unicode scalarsNoApproved assessment edition; exact match and distinct from both Content version fields.Catalog
Bracketed immutable read: AlphaTest reads the Content item and verifies content_id plus latest_version_id, reads the sidecar and verifies spec_id, assessment_role=spec, and complete positive kc_coverage, then reads the item again. Changed latest_version_id, an unavailable source, empty coverage, or failed CASE proof returns 503 source-assessment-unavailable with zero target Content writes. ITD-035.

GovernedSourceRelease — checked-in release oracle

Manifest fieldType / nullabilityConstraint and mismatch detectionAuthority
schema_versionliteral integer 6; non-nullAny other version is rejected. The published JSON Schema is a partial machine validator: it constrains the release-critical members it declares; the checked-in catalog plus the active ITDs and release-build verifier define and enforce the remaining members.ITD-054
catalog_ownerstring, 1–255; non-nullPolicy owner only; never a caller-selected principal.AlphaTest testing director
release_stateenum blocked_pending_reviewer_credential_preflight | ready; non-nullCurrent value: ready. This is immutable catalog-content state: the manifest, exact source pins, bindings, and literal targets passed. Ephemeral evaluator-token availability cannot flip it; each caller is authenticated separately.ITD-054, ITD-056
evaluated_atInstant; non-nullEvaluation time of this immutable catalog revision; does not replace receipt observation times.AlphaTest release process
catalog_revision_hashlowercase hex string, exactly 64 characters; non-nullSHA-256 digest of catalog content, not credentials. Current value is 6e23e29f806a20a72e80bd266d2143e4df1ae8c6ae40bbba615fa410a4483450.ITD-056
catalog_revision_hash_scopestring, 1+ characters; non-nullCanonical digest input description: sha256(JSON.stringify({schema_version,source_assessments,authorities,calibration_lifecycle_contract})). Clients compare it as an opaque published rule.catalog schema, ITD-056
governing_itd, credential_governing_itdliterals ITD-054 and ITD-056; non-nullResolve to the active public-inventory manifest and request-scoped authentication correction. ITD-055 remains superseded audit history and a conformance-harness definition.ITD-054, ITD-056
applicable_tenant_idsstring[], 1–100; unique, non-nullCurrently exactly ["demo"]; verified JWT tenant must match an entry and cannot be remapped.Verified identity + testing director
authoritiesobject with six required catalog members; non-null; server/release-build validated, not declared by the published JSON SchemaFive string members name ownership: source_blueprint (Content), standards (CASE), outcome_evidence (Results), calibration_artifact (Analytics), and calibration_policy (testing director recorded in Content). The sixth, public_inventory_binding_manifest, is an object requiring string members authority, authority_version, approval_event_ref, and evidence_record. The catalog hash covers the complete object. The current published JSON Schema neither requires nor rejects authorities; closure and member validation are release-build/server obligations.ITD-001, ITD-054
calibration_lifecycle_contractobject; non-null; partially schema-constrainedDefines the five-field source identity, initial policy evidence, later empirical-revision owners [results, analytics], per-owner GET route/credential slots, receipt fields, release rule, and forbidden substitutes. The published schema requires identity, initial evidence, owners, cardinality, and promotion rule and fixes the owner pair; it does not close the object or validate every nested member. The release-build/server validator enforces the full checked-in shape. Null post-administration references are valid before administrations exist and cannot authorize a later delta.ITD-045, 054
source_assessmentsGovernedSourceCatalogEntry[], 2–50; non-nullUnique by tenant + source and tenant + immutable Content identity. Every entry carries at least one public tested-standard row, one binding manifest, and exactly one literal target. A blocked entry remains descriptive catalog truth but cannot create a target blueprint.Testing director + Content + CASE
release_behaviorobject; non-null; partially schema-constrainedCurrent values fix create_http_status=202, problem_type=null, operation_created=true, and quickstart_state=ready. ready_gate names the 9/9-row, 20/20-cell, 20-cell/52-item manifest proof and request-scoped authentication rule; failure_atomicity preserves zero-write behavior for catalog/proof failures; empirical_revision_trigger governs later Reports deltas. The published schema validates only the members it declares; the release-build/server validator enforces the complete checked-in shape.ITD-054, ITD-056
evidence_refsrelative path[], 1–20; non-nullResolves to Content/CASE governance, two-stage calibration, binding, and credential evidence for the same revision. Evidence contains no JWT, secret, student record, or learning fact.Release evidence

Current file: schema_version: 6, release_state: ready, applicable_tenant_ids: ["demo"], two ready sources, nine public rows, twenty positive Content cells, twenty externally evidenced bindings, preserved 20-cell/52-item totals, two literal perfect-score targets, and create_http_status: 202. ITD-054, ITD-056.

GovernedSourceCatalogEntry

Manifest fieldType / nullabilityConstraint and mismatch detectionAuthority
tenant_idstring, 1–255 bytes; non-nullEquals verified JWT tenantId; no remap or fallback.ITD-054
source_keystring, 1–120; non-nullUnique key matching SourceAssessmentRef grammar.Testing director
content_test_spec_idopaque string, 1–255 bytes; non-nullEquals Content item content_id and sidecar spec_id.Content reference
content_versionopaque string, 1–80 bytes; non-nullPublic exact-match value; not read from sidecar.Catalog
content_version_idopaque string, 1–255 bytes; non-nullBoth bracketing item reads return it as latest_version_id.Content item · ITD-035
namestring, 1–120 Unicode scalars; non-nullExact request match.Testing director
jurisdiction_or_publisherstring, 1–80 Unicode scalars; non-nullExact request jurisdiction match.Testing director
assessment_versionstring, 1–80 Unicode scalars; non-nullExact request match.Testing director
subjectstring, 1–100 Unicode scalars; non-nullExact normalized request-subject applicability.Testing director
grade_rangeobject; non-nullminimum/maximum are Grade members; request grade falls inclusively within.Testing director
release_stateliteral enum member ready; non-nullBoth governed sources and the enclosing catalog are ready under manifest v2. A valid request proceeds; authentication failures remain request-local.ITD-054, ITD-056
tested_standard_inventoryobject[], 1–500; non-nullEvery row requires nonempty source_standard_code, label, evidence_locator, and runtime_mapping_disposition; it carries either reporting_category or domain. dok is integer 1–4 or literal unstated. A row is not runtime coverage until an owner-approved binding names its exact code and a positive Content cell.Published public inventory · ITD-054
public_inventory_cell_binding_manifestPublicInventoryCellBindingManifest; non-nullPer-source release proof. STAAR binds 4 public rows to 12 positive cells; Iowa binds 5 rows to 8 cells. Both use authority version alphatest-public-inventory-bindings-2026-07-24.v2 and are ready.Captured spec-owner promotion + public owner + Content + CASE · ITD-054
calibrationobject; non-null; partially schema-constrainedRequires target id, literal metric equivalent_raw_score_percent, literal target 100, literal relation mastery_implies_at_least, immutable policy version, scoring-policy object, approval object, and empirical revision bindings. The published schema requires those top-level members and fixes metric/target/relation, but it does not close this object; full member validation is performed by the release-build/server validator.Testing director + named source owner · ITD-054
calibration.scoring_policy_refobject; non-null; release-build/server validatedRequires nonempty owner, exact source_assessment_version, HTTPS public_reference, and literal owner_record_state=operator_approved_public_policy. Optional blueprint/curriculum links remain named-owner evidence. The published JSON Schema requires the object to exist but does not declare its nested properties.Named source owner · ITD-054
calibration.approvalobject; non-null; release-build/server validatedRequires approved_by, RFC 3339 approved_at, and explicit scope; current approval covers initial policy calibration and governed release. The published JSON Schema requires the object to exist but does not declare its nested properties.Testing director · ITD-054
calibration.empirical_revision_bindingsJSON Schema-closed object with exactly results and analytics; non-nullThe published schema requires both members and sets additionalProperties: false. Each binding carries nullable native_reference_id and receipt_ref, non-null dereference route and least-privilege credential slot, a complete expected identity tuple, and a stable state. The current null ids mean “not yet applicable before administration”; they block only a later empirical delta, not initial policy calibration or the ready mastery-gate create.Results / Analytics · ITD-045, 056
calibration.empirical_revision_bindings.*.expected_identityJSON Schema-closed object; non-nullThe published schema sets additionalProperties: false. Exactly tenant_id, source_key, content_test_spec_id, content_version_id, and calibration_target_id are permitted; every value must byte-match its entry before a later delta can use the binding.Content + catalog · ITD-054

STAAR and Iowa have complete initial policy evidence, public inventories, and authoritative row-to-cell associations. Their Results/Analytics native references are independently null because no administration has yet produced empirical evidence; the JSON Schema distinguishes that later lifecycle state from initial release readiness. ITD-054.

PublicInventoryCellBindingManifest — per-source release gate

FieldTypeNullMeaning / validationOwner + provenance
stateenum blocked_missing_owner_approved_bindings | readyNoready only when every expected public row appears at least once and every expected positive Content cell appears exactly once under the same version pins.ITD-054
authority, authority_versionstring ≥1 or nullYesBoth null only while blocked. At ready, both identify either a pinned owner endpoint/query or a testing-director-approved binding manifest; labels and inferred domain similarity are forbidden substitutes.Named owner / testing director · ITD-054
expected_public_row_countinteger ≥1NoExact number of governed public inventory rows: currently 4 for STAAR and 5 for Iowa.Published public inventory · ITD-054
expected_positive_content_cell_countinteger ≥1NoExact number of positive source Content KC×DOK cells: currently 12 for STAAR and 8 for Iowa.Version-pinned Content kc_coverage · ITD-054
bindingsPublicInventoryCellBinding[]; non-nullNoCurrently 12 STAAR plus 8 Iowa entries. They cover all rows and cells, preserve unique-cell cardinality and total item count, use unique external evidence locators, and reject missing row, duplicate cell, changed count/GUID/DOK/version, unknown-row, circular-evidence, inferred-authority, and lower-target-DOK mutations.ITD-054

PublicInventoryCellBinding — owner-approved row-to-cell fact

FieldTypeNullMeaning / validationOwner + provenance
source_keystring ≥1NoExact parent governed source key.Catalog · ITD-054
public_row_codestring ≥1NoExact tested_standard_inventory.source_standard_code; unknown rows fail.Published public inventory · ITD-054
content_test_spec_id, content_version_idopaque strings ≥1NoMust byte-match the parent source and both bracketed Content item reads.Content · ITD-054
source_case_guidopaque CASE GUID string ≥1NoNames one positive Content KC cell and must dereference in pinned CASE evidence.Content + CASE · ITD-054
source_dokinteger enum 1–4NoExact DOK coordinate of the positive Content cell. It does not rewrite a public inventory row whose public DOK is unstated.Content · ITD-054
source_cell_countinteger ≥1NoMust equal the positive cell count; totals and unique-cell cardinality are preserved before and after binding.Content · ITD-054
binding_authority, binding_authority_versionstring ≥1NoPin the owner endpoint/query or testing-director-approved manifest that explicitly associates this public row with this Content cell.Named binding authority · ITD-054
approved_by, approved_atstring ≥1; RFC 3339 date-timeNoIdentity and timestamp of binding approval; neither can be inferred from source labels.Binding authority · ITD-054
evidence_refstring ≥1NoDereferenceable immutable receipt for the association. A local guess, Content coverage alone, or CASE item text alone is invalid.Binding authority · ITD-054

All fields are required and non-null. The current catalog contains exactly twenty instances; each evidence_ref resolves to a distinct anchor in the non-circular authority record. ITD-054, dated 9-row/20-cell evidence.

SourceCalibrationTarget — derived, never caller supplied

Every mastery-gate source reference resolves to exactly one target with the same source key, Content id, and immutable version. AlphaTest derives this object from the exact-tenant governed catalog and dereferences its native evidence; a customer cannot assert or override it.

FieldTypeNullMeaning / validationOwner + provenance
calibrationTargetIdstring, 1–512 bytesNoOpaque stable identifier copied byte-for-byte from the matching entry’s calibration.calibration_target_id in the governed-source catalog; callers and clients MUST NOT derive it from display fields. The policy owner may normalize a human assessment version inside this identifier—for example catalog assessment_version="Level 11" is pinned as cal:iowa-math-g5-l11:Level-11:perfect-score-v1. The catalog literal wins.Testing-director policy · ITD-044
sourceKeystring, 1–120 lowercase ASCII charsNoExact governed source key; one-to-one with a request source.Governed catalog
contentTestSpecId, contentVersionIdopaque Content ids, 1–255 bytesNoExact source assessment identity and immutable version established by bracketed Content reads.Content · ITD-035, 044
metricliteralNoExactly equivalent_raw_score_percent. Percentile, projected-pass probability, and confidence-only metrics are invalid.ITD-044
targetValueliteral number 100NoExactly 100 percent of available raw-score points; 99.99 and every lower value fail closed.ITD-044
relationliteralNoExactly mastery_implies_at_least.ITD-044
calibrationPolicyVersionstring, 1–255 bytesNoImmutable testing-director policy version used to derive and later revise this target.Testing-director policy
scoringPolicyRefstring, 1–2048 bytesNoVersion-pinned reference to the named source assessment scoring policy; dereference must succeed.Named source owner
evidenceRefsstring[], 1–100; each 1–2048 bytesNoFor initial creation: named source-policy, public-inventory, Content, and CASE evidence references. For a later empirical revision: native same-tenant Results result_record and Analytics artifact references are additionally mandatory. AlphaTest stores references and safe trace metadata, never scores, attempts, external-score values, or mastery facts.Source owner / Content / CASE; later Results / Analytics
approvedAt, approvedByInstant / principal id 1–255 bytesNoTesting-director approval time and principal; both are immutable.Testing-director policy

Perfect-score semantics: satisfying the complete blueprint coverage and mastery criteria is calibrated to earn 100 percent of available raw-score points under the named source assessment's version-pinned scoring policy. Content stores these objects in passing_rule.sourceCalibrationTargets; public detail and coverage projections preserve each target unchanged. Missing, duplicate, mismatched, non-100, or non-dereferenceable initial policy evidence fails before Content write. Results/Analytics dereferenceability is evaluated only for a later calibration delta; authoritative public-row bindings are a separate prerequisite for initial creation. ITD-044, ITD-054.

Reports calibration-delta command

Narrow machine authority: this is not a customer PATCH. Only a same-tenant reports_service token with explicit blueprint:calibration:write may submit it. AlphaTest dereferences every native Results/Analytics reference, takes a tenant+blueprint revision lock, and creates an immutable Content successor only when the delta preserves every 100-percent target and the exhaustive equal-or-higher-DOK coverage proof. ITD-045, ITD-047.

CalibrationDeltaRequest

JSON fieldTypeNullMeaning / validationOwner + provenance
delta_idstring, 1–255 bytesNoOpaque Reports id. Reuse with different canonical content is 409 calibration-delta-conflict.Reports · ITD-045
calibration_target_idstring, 1–512 bytesNoExact current calibration target id for this source.Content passing_rule
source_keystring, 1–120 lowercase ASCII charsNoExact current governed source key; must bind to the target and blueprint.Governed catalog
base_content_version_idopaque Content version id, 1–255 bytesNoMust equal the current immutable blueprint version while the revision lock is held. Older values are 409 calibration-delta-stale.Content
sequenceinteger, 1–2,147,483,647NoExactly the next value for verified tenant + blueprint + source. Repeated or skipped values are stale; the server never silently rebases.AlphaTest bounded revision metadata
generated_atInstantNoReports generation time; cannot be future-skewed by more than five minutes and never controls server ordering.Reports
analytics_artifact_refstring, 1–2048 bytesNoNative same-tenant Analytics artifact reference; must dereference under separate least-privilege server credentials.Analytics
result_record_refsstring[], 1–500; uniqueNoNative same-tenant Results result_record references. Only references and safe traces enter AlphaTest.Results
external_score_evidence_refsstring[], 0–100; uniqueNoMay be empty but not null. Native evidence refs only; no copied external score values.Results / Analytics
analysis_policy_versionstring, 1–255 bytesNoImmutable Reports analysis-policy version used to emit this recommendation.Reports
reason_codesstring[], 1–20; each 1–80 lowercase ASCII charsNoUnique stable machine reasons; explanatory only and never sufficient without dereferenceable evidence.Reports
proposed_changesProposedCalibrationChangesNoExactly the permitted criteria/DOK recommendations; at least one member must be present.Reports recommendation; AlphaTest validates deterministically

ProposedCalibrationChanges

FieldTypeNullRule
minimumPercentinteger, 1–100No*Optional; omitted when unchanged. Applied only if every source's literal 100-percent target remains satisfied.
requiredStandardPercentinteger, 1–100No*Optional; omitted when unchanged. Cannot weaken the perfect-score or gap-proof contract.
minimum_dok_by_case_guidobject<CASE GUID, DOK>, 1–500 keysNo*Optional; every key must already belong to the blueprint proof. The resulting target DOK remains at or above every source DOK; keys cannot add, remove, merge, or duplicate source cells.

Unknown members, explicit nulls, an empty object, or a change outside these three fields return 422 validation-failed. A structurally valid proposal that would weaken proof returns 422 calibration-delta-would-weaken-proof with zero Content writes.

CalibrationRevisionReceipt — present on a ready calibration operation

FieldTypeNullMeaning / validation
predecessor_content_test_spec_id, predecessor_content_version_idopaque Content idsNoSnapshot identity; predecessor bytes remain unchanged.
successor_content_test_spec_id, successor_content_version_idopaque Content idsNoDistinct immutable successor linked by supersedes; the successor id equals Operation blueprintId.
calibration_target_id, applied_sequencestring / integer ≥1NoExact applied target and sequence.
before_criteria_hash, after_criteria_hash, coverage_proof_hashlowercase SHA-256 hex, exactly 64 charsNoCanonical hashes let Reports prove the applied change and unchanged exhaustive proof.
evidence_refsstring[], 1–701NoNative evidence references validated for this delta; never expanded into learning facts.
content_trace_idstring, 1–255 bytesNoOpaque successful Content create/readback correlation id.
replaybooleanNotrue only when identical idempotency key, body, and delta id replay the same operation and successor with zero extra Content writes.

Reports retains this receipt. AlphaTest keeps only bounded idempotency/revision working metadata and 30-day audit composition. ITD-045, ITD-046

Request and response fixtures

Release status: all three kind-scoped base URLs are published and live. The mastery-gate and formative bodies below return 202 → Operation → ready for their released fixture identities and preserve mount-safe relative polling. The adaptive body is a serializer template whose matching live origin currently returns the ITD-043 deferred-window 422 adaptive-kc-corpus-not-onboarded; it is not a 202 success fixture. The reports calibration-delta schema is the pinned ITD-045 future contract, but the route is not mounted at any published origin today: mastery and formative probes both return the falsely worded 404 route-not-found, and clients must not interpret it as blueprint absence or availability elsewhere. ITD-040, ITD-043, ITD-045, mastery/adaptive wire evidence, formative wire evidence.

mastery_gate serializer fixture — exact ready demo identities

{
  "testKind": "mastery_gate",
  "subject": "Mathematics",
  "grade": "5",
  "scope": {"sourceAssessments": [
    {"sourceKey":"staar-math-g5-v2024","contentTestSpecId":"48ef5339-849a-42e3-b640-5e9bb3321749","contentVersion":"1","name":"STAAR Grade 5 Mathematics","jurisdiction":"TX","assessmentVersion":"2024"},
    {"sourceKey":"iowa-math-g5-l11","contentTestSpecId":"05567d25-b8bc-4675-ba5c-94bb65acbfdf","contentVersion":"1","name":"Iowa Assessments Mathematics Level 11 (Grade 5)","jurisdiction":"IA","assessmentVersion":"Level 11"}
  ]},
  "itemCount": 52,
  "timeBudgetMinutes": 90,
  "rigorPolicy": {"mode":"highest_required","interactionTypes":["choiceInteraction","textEntryInteraction"]},
  "criteria": {"type":"binary_mastery","minimumPercent":90,"requiredStandardPercent":80}
}

Live eligibility: all six public fields of each source exact-match the ready demo catalog. The schema-v6 owner-approved manifest covers all nine public rows and all twenty positive Content KC×DOK cells exactly once while preserving the governed itemCount=52. With ALPHATEST_BLUEPRINT_URL set to the exact published base, a valid same-tenant ALPHATEST_TOKEN, and an Idempotency-Key, this body receives 202 and an Operation; ready still depends on live exact-version Content reads, CASE dereferences, equal-or-higher-DOK proof, and Content readback. Credentials come from Platform3 tenant onboarding and are intentionally not embedded in public documentation. ITD-035 immutable Content count authority, binding gate fields, ITD-040 mounted origin, ITD-054 manifest release, ITD-056 ready create.

adaptive_diagnostic serializer template — create success release-gated

{
  "testKind": "adaptive_diagnostic",
  "subject": "Mathematics",
  "grade": "5",
  "scope": {
    "frameworkGuids": ["33333333-3333-4333-8333-333333333333"],
    "knowledgeComponentGuids": ["44444444-4444-4444-8444-444444444444"]
  },
  "itemCount": 35,
  "timeBudgetMinutes": 60,
  "rigorPolicy": {"mode":"specified_distribution","dokDistribution":{"1":5,"2":15,"3":12,"4":3},"interactionTypes":["choiceInteraction","extendedTextInteraction"]},
  "criteria": {"type":"stopping_policy","stoppingPolicyRef":"mastery-engine/policies/placement-v1"}
}
Live adaptive deferred-window contract; template identities are not runnable. The published adaptive base is https://alphatest-andymontgomery-9773s-projects.vercel.app/blueprint/integrator_api/implementation@adaptive_diagnostic/api. Do not POST this exact body as a success fixture: its placeholder framework and KC identities are not owner-published. A structurally valid adaptive request with a same-tenant JWT reaches the mounted create route and returns 422 adaptive-kc-corpus-not-onboarded, retryable: false, and the Platform3 #1138 reference before receipt lookup, operation creation, upstream mutation, or local writes. The origin's authenticated list/detail/coverage routes remain live Content-backed reads. Posting the body to the mastery origin instead yields discriminator-level 400 validation-failed. Reopen adaptive create success only when one exact tenant independently exposes stable framework/package discovery, owner-typed adaptive KCs, and successful dereference of every selected KC; then separately certify 202 → ready, native Content readback, coverage-not-applicable, and sanitized CASE/Content traces. Rules, scoped 422 contract, ITD-043, upstream evidence, published-wire evidence.

formative live fixture — released demo CASE identities

{
  "testKind": "formative",
  "subject": "Mathematics",
  "grade": "5",
  "scope": {"standardGuids":["99065f53-1e7c-5e8a-b266-a0470936a43b","146878f0-12dc-55d6-8c3d-0d8c43976501"]},
  "itemCount": 10,
  "timeBudgetMinutes": 20,
  "rigorPolicy": {"mode":"specified_distribution","dokDistribution":{"1":2,"2":6,"3":2,"4":0},"interactionTypes":["choiceInteraction","matchInteraction"]},
  "criteria": {"type":"per_standard","minimumPercent":80}
}
Live formative contract. POST this exact body to https://alphatest-andymontgomery-9773s-projects.vercel.app/blueprint/integrator_api/implementation@formative/api/v1/blueprints with a same-tenant Bearer JWT, Content-Type: application/json, and a fresh Idempotency-Key. The two bounded unit standards are owner-released CASE identities and are dereferenced live before Content write. The DOK counts total itemCount=10, every standard receives at least one allocatable slot, and criteria.type=per_standard is required. Success is 202 with Location: ./operations/{uuid}; identical replay returns the same operation. The ready detail preserves passingRule.testKind=formative, passingRule.criteria.minimumPercent=80, Content-owned kcCoverage and itemTypeMix, and numeric ratio maxItemOverlap=1. Coverage returns typed 409 coverage-not-applicable with retryable omitted; change the request rather than retrying it unchanged. The mastery origin still rejects this discriminator. rules, detail wrapper, overlap ratio, ITD-043, sanitized 202/CASE/Content evidence.

Verified live mastery-gate response → 202 Operation

Runnable contract: send the exact body above to ${ALPHATEST_BLUEPRINT_URL}/v1/blueprints with Authorization: Bearer ${ALPHATEST_TOKEN}, Content-Type: application/json, and a fresh Idempotency-Key. The published implementation returns an Operation at its current lifecycle state; identifiers, timestamps, status, and blueprintId are timing-dependent. A 202 body may still be accepted with a null blueprintId, as illustrated below, or may already be a later state including ready with a non-null blueprintId when synchronous work finishes before serialization. Fields that do not apply to this operation are omitted rather than serialized as null.

POST /v1/blueprints HTTP/1.1
Authorization: Bearer ${BLUEPRINT_PROD_REVIEWER_JWT}
Idempotency-Key: demo-grade5-math-2026-01
Content-Type: application/json

{ ...the exact mastery_gate request above... }

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: ./operations/0d804c2c-7b30-42bf-a9d4-1091fe7dfa16

{"id":"0d804c2c-7b30-42bf-a9d4-1091fe7dfa16","href":"./operations/0d804c2c-7b30-42bf-a9d4-1091fe7dfa16","object":"blueprint_operation","status":"accepted","blueprintId":null,"failure":null,"upstreamTraces":[],"createdAt":"2026-07-25T12:10:00.000Z","modifiedAt":"2026-07-25T12:10:00.000Z","requestId":"req_01"}

Polling rule: resolve Location against the effective POST URL; it must equal href. Same Idempotency-Key plus the same canonical body replays this Operation. Poll whenever the returned status is nonterminal; if the 202 body is already ready, use its non-null blueprintId immediately. Do not require calibrationRevision on creation operations. A valid caller may not receive reviewer-credential-preflight-required; invalid credentials fail before catalog evaluation. ITD-002, ITD-010, ITD-037 wire fidelity, ITD-056.

Ready Operation lifecycle shape — normative contract

GET /v1/operations/0d804c2c-7b30-42bf-a9d4-1091fe7dfa16 HTTP/1.1
Authorization: Bearer <verified JWT with blueprint:read>

HTTP/1.1 200 OK
Content-Type: application/json
ETag: "op-0d804c2c-v4"

{"id":"0d804c2c-7b30-42bf-a9d4-1091fe7dfa16","href":"./operations/0d804c2c-7b30-42bf-a9d4-1091fe7dfa16","object":"blueprint_operation","status":"ready","blueprintId":"content_test_spec_opaque","failure":null,"upstreamTraces":[{"dependency":"content","host":"content.platform3.example","correlationId":"content_req_source_before","resourceId":"48ef5339-849a-42e3-b640-5e9bb3321749","phase":"source-item-before","responseClass":"2xx","observedAt":"2026-07-25T12:10:00.100Z"},{"dependency":"content","host":"content.platform3.example","correlationId":"content_req_source_sidecar","resourceId":"48ef5339-849a-42e3-b640-5e9bb3321749","phase":"source-sidecar","responseClass":"2xx","observedAt":"2026-07-25T12:10:00.200Z"},{"dependency":"content","host":"content.platform3.example","correlationId":"content_req_source_after","resourceId":"48ef5339-849a-42e3-b640-5e9bb3321749","phase":"source-item-after","responseClass":"2xx","observedAt":"2026-07-25T12:10:00.300Z"},{"dependency":"case","host":"case.platform3.example","correlationId":"case_req_9","resourceId":"11111111-1111-4111-8111-111111111111","responseClass":"2xx","observedAt":"2026-07-25T12:10:00.800Z"},{"dependency":"content","host":"content.platform3.example","correlationId":"content_req_create","responseClass":"2xx","observedAt":"2026-07-25T12:10:01.600Z"},{"dependency":"content","host":"content.platform3.example","correlationId":"content_req_readback","resourceId":"content_test_spec_opaque","responseClass":"2xx","observedAt":"2026-07-25T12:10:01.900Z"}],"createdAt":"2026-07-25T12:10:00.000Z","modifiedAt":"2026-07-25T12:10:02.000Z","requestId":"req_01"}

Ready invariant: createdAt and href are immutable; trace observations and modifiedAt are monotonic. The example deliberately shows all three source-bracketing phase values and both legal resourceId shapes: native ids are present when attributable, while the target Content collection-create trace omits the id captured only after that call. A real operation has one before/sidecar/after trio per governed source plus the CASE and target Content evidence its request required. Initial creation proves the owner-approved 9-row/20-cell binding manifest, persists once, and compares Content readback. It does not fabricate Results/Analytics calls before outcomes exist. Creation operations omit calibrationRevision at every status. ITD-015, ITD-025ITD-028, ITD-035, ITD-040, ITD-054, ITD-056.

Reports delta future contract — not mounted today

Schema example, not a runnable response fixture. ITD-045 pins the request and eventual 202 receipt shape below, but every currently published Blueprint origin lacks this route. Mastery and formative wire probes return 404 route-not-found with misleading detail; no published origin returns the illustrated 202 today. mastery gap receipt, formative gap receipt.
POST /v1/blueprints/content_test_spec_opaque/calibration-deltas HTTP/1.1
Authorization: Bearer ${REPORTS_SERVICE_JWT}
Idempotency-Key: delta-align-0007
Content-Type: application/json

{"delta_id":"delta-0007","calibration_target_id":"cal:staar-math-g5-v2024:2024:perfect-score-v1","source_key":"staar-math-g5-v2024","base_content_version_id":"version_uuid_opaque","sequence":7,"generated_at":"2026-07-24T12:00:00.000Z","analytics_artifact_ref":"analytics:alignment:artifact_opaque","result_record_refs":["results:result_record_opaque"],"external_score_evidence_refs":["analytics:external-score-evidence_opaque"],"analysis_policy_version":"alignment-v3","reason_codes":["external_alignment_delta"],"proposed_changes":{"minimumPercent":92}}

HTTP/1.1 202 Accepted
Location: ./operations/42c6d55d-ae55-4f75-a9c5-eefbb750f3c9

{"id":"42c6d55d-ae55-4f75-a9c5-eefbb750f3c9","href":"./operations/42c6d55d-ae55-4f75-a9c5-eefbb750f3c9","object":"blueprint_operation","status":"queued","blueprintId":null,"failure":null,"upstreamTraces":[],"createdAt":"2026-07-24T12:00:01.000Z","modifiedAt":"2026-07-24T12:00:01.000Z","requestId":"req_delta_07"}

When the route mounts, ready will carry the distinct successor Content id and a complete CalibrationRevisionReceipt; before ready, that property is omitted. The pinned contract requires identical replay to return the same operation/successor with replay: true, while a changed body, stale base, repeated/skipped sequence, unavailable evidence, or weakened proof writes nothing. Until a published-origin probe observes the route, branch on the current 404 route-not-found implementation gap and do not send production deltas. ITD-045, ITD-046.

Response resource schemas

Wire-faithful split: list returns only fields Content publishes in list items. Detail composes the Content item with its seven-field test-spec sidecar. Missing detail-only fields never make a valid list row fail, and a field with no owner-published source is absent rather than synthesized. ITD-037.
Client-visible projection corrections: the deployed v1 wire returns the Operation's current lifecycle value in the 202 body (which may be accepted or a later state including ready), omits inapplicable calibrationRevision properties, and projects mastery-gate passingRule.calibrationPolicyVersion and passingRule.sourceCalibrationTargets as direct members of passingRule. Those concrete JSON rules refine the lifecycle shorthand in ITD-002 and the semantic calibration description in ITD-044 under the wire-fidelity rule in ITD-037; they do not change Content ownership, calibration cardinality, or perfect-score semantics. This note is normative for typed public-v1 clients.

Operation

JSON fieldTypeNullMeaning / validationOwner + provenance
idUUIDNoOpaque tenant-scoped polling id.AlphaTest · ITD-019
hrefstring, exactly 49 ASCII bytesNoExactly ./operations/{id}, where {id} is the canonical 36-character UUID that byte-matches this Operation's id. It is identical to the POST Location value, stays unchanged across polls, and is resolved against the effective POST URL. Any root-absolute value or mismatched id is a contract error.AlphaTest · ITD-040
objectliteral blueprint_operationNoDiscriminator.ITD-002
statusenumNoaccepted, queued, resolving, persisting, ready, failed. A 202 response carries the operation's current state: it may be accepted or another nonterminal value, or already ready when synchronous work has completed. Only ready and failed are terminal.AlphaTest lifecycle projection · ITD-002, ITD-037 wire fidelity, timing-dependent fixture
blueprintIdContent test_spec idYesNull before ready; non-null and dereferenceable at ready.Content · ITD-025
failureOperationFailureYesNon-null only at failed.AlphaTest · ITD-021, 035
calibrationRevisionCalibrationRevisionReceiptOmitted unless applicable; never nullAbsent from every blueprint-creation operation and from a delta operation before it is ready; present only on a ready calibration-delta operation. Typed clients must model this as an optional property, not a required nullable property.AlphaTest projection for Reports · ITD-045, ITD-037 wire fidelity, live fixture
upstreamTracesUpstreamTrace[], 0 or moreNoOrdered safe evidence; ready includes successful CASE and Content traces. No fixed maximum.ITD-015
createdAt, modifiedAtInstantNoRFC 3339 UTC with millisecond precision. createdAt is immutable for one operation; modifiedAt never precedes it and never regresses across later polls.ITD-025
requestIdRequest id (string, 1–128 bytes)NoHTTP response correlation id; the shared scalar bound applies without a resource-specific override.ITD-022

OperationFailure

FieldTypeNullRule
codeenumNocoverage_incomplete, coverage_unverifiable, source_assessment_unavailable, upstream_unavailable, content_persistence_failed.
summarystring, 1–500 Unicode scalarsNoSafe summary; never an upstream body.
uncoveredSourceRefsstring[], 1–500No*Present only for coverage failures; otherwise omitted.
retryablebooleanNoWhether retry with the original request and idempotency key is safe.

BlueprintSummary — list item only

JSON fieldTypeNullMeaning / validationOwner + provenance
contentTestSpecIdstring, 1–255 bytesNoVerbatim Content content_test_spec_id; native id.Content list · ITD-037
titlestring, 1–500 Unicode scalarsNoVerbatim owner-published title.Content list
subjectstring, 1–255 bytesNoOpaque Content subject value; no local translation.Content list
gradestring, 1–255 bytesNoOpaque Content grade value; no local translation.Content list
statusstring, 1–80 ASCII bytesNoVerbatim Content status; clients allow additive values.Content list
latestVersionIdstring, 1–255 bytesNoVerbatim Content latest_version_id.Content list
updatedAtInstantNoContent updated_at, RFC 3339 UTC milliseconds.Content list

Forbidden dependencies: this type never contains or requires testKind, scope, itemCount, timeBudgetMinutes, rigorPolicy, slots, distributions, policyVersion, or supersedes. Their absence cannot cause 424. ITD-037.

BlueprintDetail — Content item + sidecar

JSON fieldTypeNullMeaning / validationOwner + provenance
contentTestSpecId, title, subject, grade, status, latestVersionId, updatedAt, linkssame as BlueprintSummaryNoContent item facts; constraints match summary.Content item · ITD-037
kcCoverageobject<CASE GUID, DokCounts>, 1–500 keysNoProjection of kc_coverage. Each value contains only dok1dok4 positive integers 1–500; at least one positive cell. Keys dereference verbatim in CASE.Content sidecar · ITD-027, 035
itemTypeMixobject<QTI interaction type, integer>, 1–20 keysNoProjection of item_type_mix; positive counts only, total equals KC-coverage count.Content sidecar
difficultyConstraintsJSON object, 1–32 keys, ≤16 KiBNoVerbatim normalized difficulty_constraints; unknown additive keys are preserved.Content sidecar
passingRuleobjectNoWire-faithful public projection of Content passing_rule. It contains testKind (enum mastery_gate, adaptive_diagnostic, or formative) and criteria (the matching Criteria variant); neither is nullable. Read the discriminator at passingRule.testKind and kind-specific threshold fields under passingRule.criteria. For mastery_gate, the live projection also places passingRule.calibrationPolicyVersion and passingRule.sourceCalibrationTargets directly on the wrapper. passingRule.criteria.calibrationPolicyVersion and passingRule.criteria.sourceCalibrationTargets are not wire fields. Caller-supplied calibration fields remain forbidden.Content sidecar pass-through · ITD-026, ITD-037 wire fidelity, ITD-044 calibration semantics, live-shape example
passingRule.calibrationPolicyVersionstring, 1–120 ASCII bytesRequired for mastery_gate; omitted for other kindsImmutable policy version projected verbatim from the governed catalog's calibration.calibration_policy_version. It is a direct member of passingRule, never a member of criteria, and must equal the version used in every target id and target member for the blueprint.Governed catalog → Content passing_rule pass-through · ITD-044, ITD-054, catalog
minFormsinteger, 1–100NoProjection of min_forms.Content sidecar
maxItemOverlapnumber (ratio), 0–1 inclusiveNoVerbatim projection of Content max_item_overlap. This value is a dimensionless overlap ratio, never an item count; clients must preserve fractional values. AlphaTest pins 1 for formative blueprints (full overlap permitted for the single static form). Content wire validation rejects values above 1; see the sanitized 400 validation receipt.Content sidecar pass-through · ITD-026, ITD-037 · wire evidence
enemyItemRuleJSON object, 0–32 keys, ≤16 KiBNoVerbatim normalized enemy_item_rule; empty object means no constraint.Content sidecar

No request shadow exists. itemCount, timeBudgetMinutes, slots, distributions, policyVersion, and supersedes are absent. Totals are auditable from owner-published kcCoverage.

ContentTestSpecSidecar — upstream read contract

Upstream fieldType / nullabilityRequired checkProvenance
spec_idstring 1–255; non-nullEquals Content item id.ITD-035
assessment_roleliteral spec; non-nullAny other value is 424.ITD-035
kc_coverage, item_type_mix, difficulty_constraints, passing_rule, min_forms, max_item_overlap, enemy_item_ruleseven required non-null fieldsProjected exactly as BlueprintDetail; a required-field omission is 424. In particular, max_item_overlap remains Content's numeric 0–1 ratio and is not converted to an item count.ITD-026, 037, field contract
versionnot required; if present opaqueNever immutable identity. Catalog pin is checked against item latest_version_id before and after this read.ITD-035

BlueprintDetail — complete shape example

{
  "contentTestSpecId":"content_test_spec_opaque",
  "title":"Grade 5 Mathematics Mastery Gate",
  "subject":"mathematics",
  "grade":"5",
  "status":"active",
  "latestVersionId":"version_uuid_opaque",
  "updatedAt":"2026-07-17T15:30:01.850Z",
  "links":{"self":"/v1/blueprints/content_test_spec_opaque"},
  "kcCoverage":{"11111111-1111-4111-8111-111111111111":{"dok3":20},"22222222-2222-4222-8222-222222222222":{"dok2":32}},
  "itemTypeMix":{"choiceInteraction":42,"textEntryInteraction":10},
  "difficultyConstraints":{"mode":"highest_required","dokDistribution":{"2":32,"3":20}},
  "passingRule":{"testKind":"mastery_gate","criteria":{"type":"binary_mastery","minimumPercent":90,"requiredStandardPercent":80},"calibrationPolicyVersion":"perfect-score-v1","sourceCalibrationTargets":[{"calibrationTargetId":"cal:staar-math-g5-v2024:2024:perfect-score-v1","sourceKey":"staar-math-g5-v2024","contentTestSpecId":"48ef5339-849a-42e3-b640-5e9bb3321749","contentVersionId":"3d97f34f-dfeb-4884-82eb-45f19f5c638c","metric":"equivalent_raw_score_percent","targetValue":100,"relation":"mastery_implies_at_least","calibrationPolicyVersion":"perfect-score-v1","scoringPolicyRef":"https://tea.texas.gov/student-assessment/testing/staar/staar-mathematics-resources","evidenceRefs":["https://tea.texas.gov/student-assessment/testing/staar/staar-mathematics-resources","https://tea.texas.gov/data-reports/staar/staar-grade-5-math-blueprint.pdf","https://tea.texas.gov/data-reports/staar/2014-5-math-assessed-curriculum.pdf","binding-authority-record.json#binding-staar-math-g5-v2024-99065f53-1e7c-5e8a-b266-a0470936a43b-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-146878f0-12dc-55d6-8c3d-0d8c43976501-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-3692d85c-9ef4-5eea-9705-8633922df5c0-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-5ca0ad9b-73ca-5949-a392-803bac7982ac-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-c098879e-9a10-5d40-82e6-3ab8d105388c-dok3","binding-authority-record.json#binding-staar-math-g5-v2024-d5c806c6-f390-500f-9853-5d3b6f518650-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-0c0837c3-a438-5c5e-93dd-0fedae6f58b4-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-2a262944-5d5b-5bbd-a48d-4398b14ed14a-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-62d8db15-6909-58f0-8c00-ce1d9d0f04e0-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-db89557e-29db-5cfb-a874-d64d21698e31-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-462c1f48-938d-5e03-959a-b8abc8d5eee8-dok3","binding-authority-record.json#binding-staar-math-g5-v2024-abfcea62-5d8b-5432-9fc4-eeb799906448-dok1"],"approvedAt":"2026-07-17T00:00:00.000Z","approvedBy":"alphatest-spec-owner"},{"calibrationTargetId":"cal:iowa-math-g5-l11:Level-11:perfect-score-v1","sourceKey":"iowa-math-g5-l11","contentTestSpecId":"05567d25-b8bc-4675-ba5c-94bb65acbfdf","contentVersionId":"84575057-3ea7-4a19-b41f-f4605d9716fd","metric":"equivalent_raw_score_percent","targetValue":100,"relation":"mastery_implies_at_least","calibrationPolicyVersion":"perfect-score-v1","scoringPolicyRef":"https://itp.education.uiowa.edu/documents/Assessment-Brief-Alignment-Final.pdf","evidenceRefs":["https://itp.education.uiowa.edu/documents/Assessment-Brief-Alignment-Final.pdf","binding-authority-record.json#binding-iowa-math-g5-l11-3692d85c-9ef4-5eea-9705-8633922df5c0-dok1","binding-authority-record.json#binding-iowa-math-g5-l11-c098879e-9a10-5d40-82e6-3ab8d105388c-dok2","binding-authority-record.json#binding-iowa-math-g5-l11-d5c806c6-f390-500f-9853-5d3b6f518650-dok1","binding-authority-record.json#binding-iowa-math-g5-l11-146878f0-12dc-55d6-8c3d-0d8c43976501-dok1","binding-authority-record.json#binding-iowa-math-g5-l11-99065f53-1e7c-5e8a-b266-a0470936a43b-dok1","binding-authority-record.json#binding-iowa-math-g5-l11-5ca0ad9b-73ca-5949-a392-803bac7982ac-dok1","binding-authority-record.json#binding-iowa-math-g5-l11-0c0837c3-a438-5c5e-93dd-0fedae6f58b4-dok1","binding-authority-record.json#binding-iowa-math-g5-l11-2a262944-5d5b-5bbd-a48d-4398b14ed14a-dok1"],"approvedAt":"2026-07-17T00:00:00.000Z","approvedBy":"alphatest-spec-owner"}]},
  "minForms":2,
  "maxItemOverlap":0,
  "enemyItemRule":{"noTwoItemsOnSameKcInOneForm":true}
}

This is a typed read-shape example, not evidence that a new target blueprint currently exists. Every field must come from an owner-published Content source after release; request-only fields do not reappear. Initial targets cite public policy/Content/CASE evidence, not fabricated pre-administration Results or Analytics rows.

Coverage and upstream proof

Live for the governed demo mastery gate: after the verified create reaches ready, the returned Content id has an exhaustible 20-row coverage resource backed by the approved 9-row public inventory and 20-cell binding manifest. Clients page until nextCursor is absent; no partial or silently uncovered response is valid. ITD-054, ITD-056.

CoverageRow

One row binds one governed public tested-standard inventory row—through an approved PublicInventoryCellBinding—to one positive source Content kc_coverage GUID × DOK cell and its equal-or-higher target slot. A public inventory row may produce several rows, but every public row appears at least once and every positive Content cell exactly once; uniqueness and count-preservation checks prevent double counting. Rows compose the catalog, owner-approved binding, pinned source test_spec, live CASE reads, target Content blueprint, and AlphaTest's temporary crosswalk evidence; no caller-authored or inferred fact is allowed.

FieldTypeNullMeaning / validationOwner + provenance
sourceRefstring, 1–512 bytesNoStable opaque reference unique to source Content id + version + CASE GUID + DOK. Clients compare but never parse it.AlphaTest working proof · ITD-027, 035
sourceKeystring, 1–120 lowercase ASCII charactersNoApproved catalog key from the matching request source. It must still resolve to the same approved immutable Content id/version at read time.Testing-director catalog reference · ITD-054
sourceContentTestSpecIdContent test_spec idNoExact dereferenced spec_id; equals the request's contentTestSpecId.Content pass-through · ITD-035
sourceContentVersionstring, 1–80 bytesNoExact dereferenced Content version; equals the request's contentVersion.Content pass-through · ITD-035
sourceNamestring, 1–120 Unicode scalar valuesNoExact echo of the governed catalog name; display only.Governed catalog value · ITD-035, 054
sourceJurisdictionstring, 1–80 Unicode scalar valuesNoExact echo of the governed catalog jurisdiction; display only, with no truncation.Governed catalog value · ITD-035, 054
sourceAssessmentVersionstring, 1–80 Unicode scalar valuesNoExact echo of the governed catalog assessmentVersion; distinct from sourceContentVersion.Governed catalog value · ITD-035, 054
sourceStandardCodestring, 1–255 Unicode scalar valuesNoExact tested_standard_inventory[].source_standard_code. Every catalog code must appear in at least one owner-approved binding and coverage row; no ungoverned code may appear.Published inventory pass-through · ITD-054
sourceReportingCategory, sourceDomainstring, 1–255 Unicode scalar valuesNo*Exactly one is present, matching the bound catalog row’s reporting_category or domain; the other is omitted, never null.Published inventory pass-through · ITD-054
sourceEvidenceLocatorstring, 1–2048 Unicode scalar valuesNoExact catalog evidence_locator; audit locator only, never a replacement for the binding's explicit authority evidence or live Content/CASE resolution.Published inventory pass-through · ITD-054
sourceStandardGuidCASE GUIDNoOuter key of the source kc_coverage object, resolved live through CASE CFItems.Content + CASE pass-through · ITD-035
sourceDokDOK or literal unstatedNoExact public inventory DOK. It is unstated for all nine preserved demo rows and must never be replaced with the binding cell's numeric DOK or another guess.Published inventory pass-through · ITD-054
contentCellDokDOKNoDOK encoded by the positive dok1dok4 source Content cell. This keeps owner-published Content rigor distinct from an unstated public source DOK.Content pass-through · ITD-035
sourceItemCountinteger, 1–500NoPositive count from that source cell. Sum and unique-cell cardinality must be preserved through mapping.Content pass-through · ITD-027, 035
targetStandardGuidCASE GUIDNoMapped target standard, resolved live through CASE CFItems.CASE pass-through · ITD-027
mappingMappingProvenanceNoIdentity or governed CASE association proof; never a fabricated identity association.CASE pass-through · ITD-035
slotIdstring, 1–100 bytesNoIdentifies exactly one allocation in AlphaTest's retained crosswalk evidence; that allocation must resolve to the target CASE GUID and DOK represented in Content-owned kcCoverage. It is coverage evidence, not a field of BlueprintDetail.AlphaTest working proof · ITD-018, ITD-027, ITD-037
requiredDokDOKNoEquals the mapped slot's minimumDok. It must be greater than or equal to numeric sourceDok and contentCellDok; when sourceDok=unstated, it must equal the highest DOK supported by the target policy.Derived proof · ITD-027, 035, 054
mappingDispositionenumNoequal_or_higher_dok when public DOK is numeric; max_supported_due_to_unstated_source_dok when it is unstated. Must agree with the owner-approved binding, governed row, numeric Content cell, and actual target slot.Derived proof · ITD-054
statusliteralNoAlways covered on a ready blueprint. Missing, duplicate, stale, ambiguous, count-changing, or lower-DOK cells fail before Content POST and never appear as partial 200 data.AlphaTest · ITD-004, 035
calibrationCoverageCalibrationNoUnchanged target and evidence status for this row's governed source. Every row for the same source/version carries the same object.Content passing_rule + initial public-policy/Content/CASE evidence; later Results/Analytics evidence for revised targets · ITD-044, 054

CoverageCalibration

FieldTypeNullRule
targetSourceCalibrationTargetNoByte-equivalent semantic projection of the matching Content passing_rule.sourceCalibrationTargets entry.
statusliteral verifiedNoA ready mastery gate cannot expose missing, ambiguous, invalid, or unavailable calibration as partial coverage.
evidenceRefsstring[], 1–100NoExactly the target’s evidence refs: initial source-policy, inventory, Content, and CASE references for the first version; native Results/Analytics references additionally required for an empirical successor.

MappingProvenance

FieldTypeNullRule
kindenumNoidentity or case_association. Identity requires equal source/target GUIDs and equal item revisions.
sourceItemRevisionstring, 1–255 bytesNoOpaque revision from the live source CFItem read.
targetItemRevisionstring, 1–255 bytesNoOpaque revision from the live target CFItem read; equals sourceItemRevision for identity.
associationGuidCASE GUIDNo*Required only for case_association; forbidden for identity. The live association origin/destination must match the row.
associationRevisionstring, 1–255 bytesNo*Required only for case_association; exact opaque revision from the live association read.

Live CASE provenance · ITD-027, ITD-035

Coverage page — complete example

GET /v1/blueprints/content_test_spec_opaque/coverage?page_size=25 HTTP/1.1
Authorization: Bearer <verified JWT with blueprint:read>

HTTP/1.1 200 OK
Content-Type: application/json
ETag: "coverage-content_test_spec_opaque-v7-p1"

{
	  "object": "list",
	  "data": [{
	    "sourceRef": "48ef5339-849a-42e3-b640-5e9bb3321749:1:opaque-cell-001",
	    "sourceKey": "staar-math-g5-v2024",
	    "sourceContentTestSpecId": "48ef5339-849a-42e3-b640-5e9bb3321749",
	    "sourceContentVersion": "1",
    "sourceName": "STAAR Grade 5 Mathematics",
    "sourceJurisdiction": "TX",
    "sourceAssessmentVersion": "2024",
    "sourceStandardCode": "STAAR-G5-MATH-RC1",
    "sourceReportingCategory": "1",
    "sourceEvidenceLocator": "TEA Grade 5 Mathematics Blueprint, reporting category 1",
    "sourceStandardGuid": "11111111-1111-4111-8111-111111111111",
    "sourceDok": "unstated",
    "contentCellDok": 3,
    "sourceItemCount": 8,
    "targetStandardGuid": "11111111-1111-4111-8111-111111111111",
    "mapping": {"kind":"identity","sourceItemRevision":"case-rev-18","targetItemRevision":"case-rev-18"},
    "slotId": "slot-001",
    "requiredDok": 4,
    "mappingDisposition": "max_supported_due_to_unstated_source_dok",
    "status": "covered",
    "calibration": {"target":{"calibrationTargetId":"cal:staar-math-g5-v2024:2024:perfect-score-v1","sourceKey":"staar-math-g5-v2024","contentTestSpecId":"48ef5339-849a-42e3-b640-5e9bb3321749","contentVersionId":"3d97f34f-dfeb-4884-82eb-45f19f5c638c","metric":"equivalent_raw_score_percent","targetValue":100,"relation":"mastery_implies_at_least","calibrationPolicyVersion":"perfect-score-v1","scoringPolicyRef":"https://tea.texas.gov/student-assessment/testing/staar/staar-mathematics-resources","evidenceRefs":["https://tea.texas.gov/student-assessment/testing/staar/staar-mathematics-resources","https://tea.texas.gov/data-reports/staar/staar-grade-5-math-blueprint.pdf","https://tea.texas.gov/data-reports/staar/2014-5-math-assessed-curriculum.pdf","binding-authority-record.json#binding-staar-math-g5-v2024-99065f53-1e7c-5e8a-b266-a0470936a43b-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-146878f0-12dc-55d6-8c3d-0d8c43976501-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-3692d85c-9ef4-5eea-9705-8633922df5c0-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-5ca0ad9b-73ca-5949-a392-803bac7982ac-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-c098879e-9a10-5d40-82e6-3ab8d105388c-dok3","binding-authority-record.json#binding-staar-math-g5-v2024-d5c806c6-f390-500f-9853-5d3b6f518650-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-0c0837c3-a438-5c5e-93dd-0fedae6f58b4-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-2a262944-5d5b-5bbd-a48d-4398b14ed14a-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-62d8db15-6909-58f0-8c00-ce1d9d0f04e0-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-db89557e-29db-5cfb-a874-d64d21698e31-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-462c1f48-938d-5e03-959a-b8abc8d5eee8-dok3","binding-authority-record.json#binding-staar-math-g5-v2024-abfcea62-5d8b-5432-9fc4-eeb799906448-dok1"],"approvedAt":"2026-07-17T00:00:00.000Z","approvedBy":"alphatest-spec-owner"},"status":"verified","evidenceRefs":["https://tea.texas.gov/student-assessment/testing/staar/staar-mathematics-resources","https://tea.texas.gov/data-reports/staar/staar-grade-5-math-blueprint.pdf","https://tea.texas.gov/data-reports/staar/2014-5-math-assessed-curriculum.pdf","binding-authority-record.json#binding-staar-math-g5-v2024-99065f53-1e7c-5e8a-b266-a0470936a43b-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-146878f0-12dc-55d6-8c3d-0d8c43976501-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-3692d85c-9ef4-5eea-9705-8633922df5c0-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-5ca0ad9b-73ca-5949-a392-803bac7982ac-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-c098879e-9a10-5d40-82e6-3ab8d105388c-dok3","binding-authority-record.json#binding-staar-math-g5-v2024-d5c806c6-f390-500f-9853-5d3b6f518650-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-0c0837c3-a438-5c5e-93dd-0fedae6f58b4-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-2a262944-5d5b-5bbd-a48d-4398b14ed14a-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-62d8db15-6909-58f0-8c00-ce1d9d0f04e0-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-db89557e-29db-5cfb-a874-d64d21698e31-dok2","binding-authority-record.json#binding-staar-math-g5-v2024-462c1f48-938d-5e03-959a-b8abc8d5eee8-dok3","binding-authority-record.json#binding-staar-math-g5-v2024-abfcea62-5d8b-5432-9fc4-eeb799906448-dok1"]}
  }],
  "nextCursor": null,
  "requestId": "req_03",
  "upstreamTraces": [{"dependency":"content","host":"content.platform3.example","correlationId":"content_req_coverage_03","responseClass":"2xx","observedAt":"2026-07-17T15:31:00.000Z"}]
}

The source, public-inventory, calibration, and evidence values exactly echo the governed staar-math-g5-v2024 catalog entry. The CASE GUID, cell count, slot, and revisions are representative wire values because those facts are resolved live and are not copied into the catalog; this single-row excerpt is not the nine-row conformance receipt. The identity mapping omits both association fields, sourceDok remains honestly unstated, requiredDok=4 and the disposition show the mandated highest-supported-DOK rule, and a null cursor means the returned coverage sequence is complete. The collection-level Content trace omits resourceId and phase; clients must not synthesize either member.

UpstreamTrace

FieldTypeNullRuleProvenance
dependencyenumNocase, content, results, or analytics.AlphaTest safe evidence projection · ITD-015
hoststring(hostname), 1–253NoConfigured upstream hostname only; lowercase ASCII/Punycode, no port, path, credentials, query, IP literal, or local mock.AlphaTest safe evidence projection · ITD-015, ITD-022
correlationIdstring, 1–255NoOpaque upstream correlation response value.Upstream response pass-through · ITD-015
resourceIdstring, 1–255 bytesOmitted unless attributable; never nullOptional native CASE, Content, Results, or Analytics id for the traced call. Present on operation source-item, CASE, target readback, and other resource-addressed traces when the id is known at serialization. Omitted on BlueprintPage and CoveragePage collection traces and on a target Content collection-create trace captured before its response id is attached. Absence is preserved; clients must not require or synthesize this member. This trace-level omission does not weaken readiness: a ready operation still contains separate resource-attributable CASE and Content traces proving the required native ids.Owner-native id projected by AlphaTest; context-sensitive wire divergence under ITD-015 and ITD-037
phaseenumOmitted unless applicable; never nullExactly source-item-before, source-sidecar, or source-item-after. Present only on Content traces that bracket one governed mastery-gate source snapshot during blueprint creation. Omitted on collection pages, CASE traces, target Content create/readback traces, calibration traces, and every non-source-bracketing context.AlphaTest orchestration annotation for the Content bracket required by ITD-035; safe evidence constraints remain ITD-022
responseClassenumNoExactly one of 2xx, 4xx, or 5xx. 2xx means the dependency call succeeded and is the only member eligible for ready proof; 4xx records an upstream rejection/contract failure; 5xx records upstream or transport failure. Failed operations may expose any member.AlphaTest safe evidence projection · ITD-015
observedAtInstantNoServer observation time.AlphaTest observation · ITD-022

This is a discriminated, context-sensitive public projection: the five base members are always present; resourceId and phase are optional properties with the exact presence rules above. Evidence metadata only; raw upstream bodies, outcomes, scores, and credentials are forbidden. ITD-015, ITD-022, ITD-035, ITD-037, ITD-044

Collection queries and envelopes

Authoritative list: GET /v1/blueprints accepts exactly subject_id, target_grade_id, modifiedSince, limit, and cursor. It sends content_kind=test_spec plus those supplied values in one tenant-scoped Content list call, preserving the exact camelCase modifiedSince spelling, Content order, and opaque cursor. It never sends sort, locally reorders, scans, or remembers ids. Unknown or repeated public query keys and locally invalid values return 422 validation-failed before Content; if Content later rejects one of these published, locally valid filters, AlphaTest returns non-retryable 424 upstream-contract-mismatch. ITD-038, ITD-026.
QueryType / defaultBehaviorProvenance
subject_idstring, 1–255 bytes; omitted, never nullOpaque Content subject identifier; passed unchanged for exact match. Empty, repeated, or overlong values return 422 validation-failed at /query/subject_id before Content. This is not the free-text create-request subject, and AlphaTest does not infer one from the other.ITD-038
target_grade_idstring, 1–255 bytes; omitted, never nullOpaque Content target-grade identifier; passed unchanged for exact match. Empty, repeated, or overlong values return 422 validation-failed at /query/target_grade_id. AlphaTest does not translate a display-grade label locally.ITD-038
modifiedSinceInstant; omitted, never nullInclusive Content modification lower bound, passed through under this exact camelCase name. Invalid RFC 3339, non-UTC, non-millisecond, or repeated values return 422 validation-failed at /query/modifiedSince; modified_since is an unknown key.ITD-038
limitinteger; default 25Inclusive range 1–100. Fractions, signs, non-decimal forms, repeated values, and out-of-range values return 422 validation-failed at /query/limit before Content.ITD-038
cursorstring, 1–2048 bytes; omitted, never nullOpaque Content cursor; pass unchanged without decoding and do not combine with changed filters. Empty, repeated, or overlong values return 422 validation-failed at /query/cursor. No ordering guarantee exists beyond Content's returned order.ITD-038
Not public v1 query fields: test_kind, status, test_type, is_mastery_gate, modified_since, and sort each return 422 validation-failed before Content. Content has not published one selector that represents all three AlphaTest test kinds, and its live contract does not publish status or stable sort. These are explicit deferrals, not silently ignored preferences. ITD-038.

Coverage query

GET /v1/blueprints/{id}/coverage accepts exactly these two query parameters. Any other key, a repeated key, or an invalid value returns 422 validation-failed before reading coverage rows.

QueryType / defaultBehaviorProvenance
page_sizeinteger; default 25Inclusive range 1–100. Fractions, non-decimal forms, repeated values, values below 1, and values above 100 return 422 validation-failed with an error pointer of /query/page_size.Coverage subresource and bounded paging under ITD-027
cursorstring, 1–2048 bytes; omittedOpaque value echoed from the preceding page's nextCursor. Preserve it byte-for-byte; do not decode, synthesize, or reuse it for another blueprint or changed page_size. Invalid or repeated values return 422 validation-failed with an error pointer of /query/cursor.Coverage subresource and bounded opaque-cursor paging under ITD-027

BlueprintPage / CoveragePage

FieldTypeNullMeaningProvenance
objectliteralNoAlways list.AlphaTest envelope · ITD-037
dataBlueprintSummary[] or CoverageRow[]NoPossibly empty; never null. BlueprintSummary pages preserve Content's returned order; clients must not assume created-time sorting.Content list / AlphaTest coverage projection · ITD-027, ITD-037
nextCursorstring, 1–2048 bytesYesNull means no next page. When non-null, echo this exact opaque value as the next request's cursor.Content cursor or AlphaTest coverage cursor · ITD-027, ITD-038
requestIdRequest idNoCurrent HTTP correlation.AlphaTest request projection · ITD-015
upstreamTracesUpstreamTrace[], 1 or moreNo; never omittedOrdered, sanitized evidence for the upstream calls that produced this page. A successful BlueprintPage or CoveragePage includes at least the successful tenant-scoped Content call; raw upstream bodies and credentials are forbidden. Clients must model this as a required array, not an optional extension member.AlphaTest conformance evidence · ITD-015, ITD-037 wire fidelity

Coverage uses fixed sourceRef ascending order and accepts only cursor and page_size; the Content-backed blueprint collection uses cursor and limit.

Blueprint list — complete summary example

GET /v1/blueprints?subject_id=math&target_grade_id=5&modifiedSince=2026-07-01T00%3A00%3A00.000Z&limit=25 HTTP/1.1
Authorization: Bearer <verified JWT with blueprint:read>

HTTP/1.1 200 OK
Content-Type: application/json

{"object":"list","data":[{"contentTestSpecId":"content_test_spec_opaque","title":"Grade 5 Mathematics Mastery Gate","subject":"mathematics","grade":"5","status":"active","latestVersionId":"version_uuid_opaque","updatedAt":"2026-07-17T15:30:01.850Z","links":{"self":"/v1/blueprints/content_test_spec_opaque"}}],"nextCursor":null,"requestId":"req_list_01","upstreamTraces":[{"dependency":"content","host":"content.platform3.example","correlationId":"content_req_list_01","responseClass":"2xx","observedAt":"2026-07-17T15:30:02.000Z"}]}

The row has exactly the eight Content list facts and matches the shared Content item facts in the detail example for this id. The envelope additionally carries the required sanitized Content trace. Because this is a collection call, that trace omits resourceId and phase; neither member may be synthesized. It neither requires sidecar fields nor makes an N+1 detail call. ITD-015, ITD-037.

Error contract

One application error shape: every non-2xx response generated by the AlphaTest handler is RFC 9457 application/problem+json. The published hosting edge evaluates HTTP preconditions first; unsupported conditional kinds such as If-Match on GET can therefore produce an intermediary plain-text 412 PRECONDITION_FAILED before AlphaTest runs. The endpoint matrix catalogs application problems; the conditional-header row catalogs that observable edge boundary.

ProblemDetails

FieldTypeNullMeaning
typeHTTPS URI, 1–2048 charsNoStable https://alphatest.dev/problems/{slug}; slug is exactly one catalog member below.
titlestring, 1–120 charsNoStable short title for the type.
statusinteger, 400–599NoSame as HTTP status.
detailstring, 1–2000 charsNoSafe occurrence detail, never secrets/upstream body.
instancestring, 1–2048 charsNoRequest-specific opaque URI path.
request_idRequest idNoSupport correlation.
errorsarray, 1–100No*Present only for validation-failed: objects with RFC 6901 JSON Pointer pointer (1–512 chars), stable code (1–80 ASCII chars), and safe message (1–500 chars).
retryablebooleanNo*Required exactly where the catalog says; otherwise omitted, never null.

Content-Type: application/problem+json on every AlphaTest-generated 4xx/5xx response. A 304 conditional success has no body or Content-Type; a pre-handler edge 412 is explicitly outside this schema. ITD-009, ITD-013, published-wire evidence

StatusStable slug(s)When
400 / 422validation-failed, malformed-json, missing-idempotency-key400 covers malformed create JSON, create-body unknown/null fields, invalid create headers handled by AlphaTest, and deployment-specific discriminator rejection. At the published mastery-gate origin, adaptive_diagnostic and formative each produce 400 validation-failed with /testKind, invalid_enum, and the stable mastery-only message. Under the pinned but currently unmounted calibration-delta contract, unknown/null body fields are instead 422 validation-failed, as specified by ProposedCalibrationChanges. 422 validation-failed also covers an unknown, repeated, or locally invalid blueprint-list or coverage query and is rejected before the relevant upstream or coverage-row read under ITD-038/ITD-027. A locally valid shipped list filter that Content rejects is instead non-retryable 424. retryable is omitted for 400/422.
401authentication-requiredMissing, expired, malformed, or unverifiable JWT.
403insufficient-scope, forbiddeninsufficient-scope means an allowed customer role was attenuated below the customer route's required scope. forbidden means the calibration-delta caller is not reports_service with explicit blueprint:calibration:write, including reviewer/integrator tokens. Both are decided before idempotency or upstream access. ITD-047
404blueprint-not-found, operation-not-foundAbsent or other-tenant id; indistinguishable.
409idempotency-key-reused, supersedes-conflict, coverage-not-applicableRespectively: same key with a different canonical body; invalid immutable-successor relation; or coverage requested for a non-mastery_gate blueprint. None is retryable without changing the request.
409calibration-delta-conflict, calibration-delta-staleconflict means changed-body Idempotency-Key reuse or changed-content delta_id reuse. stale means base_content_version_id is not current or sequence is repeated/skipped; same-tenant detail may include current_version_id and next_sequence. Neither silently rebases and both write zero Content records. ITD-045
413 / 415payload-too-large, unsupported-media-typePOST body exceeds 256 KiB, or Content-Type is not application/json.
422source-assessment-not-onboardedThe verified tenant has no exact approved catalog entry, or another public source field, subject, grade, or applicability does not match. Returned before operation creation; detail names only the missing key; retryable: false. ITD-054
422adaptive-kc-corpus-not-onboardedScoped to the live published implementation@adaptive_diagnostic origin. A schema-valid adaptive request cannot proceed because Platform3 CASE has not published the exact-tenant discoverable, owner-typed adaptive KC corpus required by the release gate; the response is non-retryable and precedes receipt lookup, operation creation, upstream mutation, or local writes. This is the observable deferred-window adaptive contract. The mastery origin separately rejects adaptive_diagnostic at 400 validation-failed / invalid_enum. ITD-043, published-wire evidence
422calibration-evidence-not-onboardedFor initial creation, the exact tenant/source lacks approved public policy, complete tested-standard inventory, Content/CASE governance evidence, or one literal 100-percent target. For a later calibration delta, one or more required Results/Analytics owner bindings lacks an approved native reference or published owner route. The ready demo source pair satisfies the initial policy, inventory, and public-row binding stages; null post-administration bindings affect only later deltas. This problem is non-retryable and creates no Operation, Location, idempotency receipt, local write, or Content write. It differs from calibration-evidence-invalid, where supplied evidence fails dereference or identity validation. ITD-054, ITD-056
422calibration-target-missing, calibration-target-ambiguous, calibration-target-invalid, calibration-evidence-invalidRespectively: no target for a governed source/version; more than one; wrong source/version, metric, relation, target value, or policy identity; or a native evidence reference is absent, not found, wrong-tenant, or source/version mismatched. Creation and revision both fail before Content write; retryable: false. ITD-044
422calibration-delta-would-weaken-proofThe delta is structurally and evidentially valid but its proposed result would violate at least one literal 100-percent target, source-cell cardinality/count, exactly-one mapping, or equal-or-higher-DOK invariant. Zero Content writes; retryable: false. ITD-045, ITD-046
424upstream-contract-mismatchA reachable CASE, Content, Results, or Analytics response violates its pinned published schema or revision invariants, including Content rejecting a locally valid shipped list filter; retryable: false, no local fallback. Missing credentials, unonboarded sources, unavailable evidence, the unreleased adaptive KC corpus, and client use of unshipped query keys are never 424. ITD-038, ITD-043, ITD-044
429rate-limited, operation-limit-reached rate-limited follows 120 reads per verified tenant per trailing 60 seconds. operation-limit-reached applies when five nonterminal operations already exist. Both require retryable: true and integer-seconds Retry-After. ITD-024
500internal-errorUnexpected safe failure with request_id; retryable omitted.
503public-inventory-binding-unavailableA governed mastery-gate source lacks a complete owner-approved, version-pinned, count-preserving public-row-to-Content-cell manifest, or a positive/mutation check fails. Returned before Operation, idempotency receipt, local working state, CASE request, or target Content write. retryable: false; no Retry-After, because repeating the same request cannot repair a governed catalog. The shipped demo manifest currently passes 9/9 rows, 20/20 cells, 20 unique locators, 20-cell cardinality, 52-item preservation, and ten mutation classes; this slug remains part of the stable contract for regressions and future source onboarding. ITD-054
503upstream-unavailable, tenant-binding-unavailable, source-assessment-unavailable, calibration-evidence-unavailableupstream-unavailable is a transient dependency or transport failure after bounded retry. tenant-binding-unavailable is a missing, malformed, expired, mismatched, or under-scoped exact-tenant binding detected before any upstream call. source-assessment-unavailable means an approved entry is stale/unreadable or fails its Content/CASE probes. calibration-evidence-unavailable means required Results, Analytics, scoring-policy, Content, or CASE evidence is temporarily unreachable. All permit zero target writes, require retryable: true, and carry integer-seconds Retry-After. ITD-021, ITD-031, ITD-054, ITD-044

Validation problem example

{"type":"https://alphatest.dev/problems/validation-failed","title":"Request validation failed","status":400,"detail":"One field failed validation.","instance":"/v1/blueprints#req_04","request_id":"req_04","errors":[{"pointer":"/criteria/type","code":"wrong_variant","message":"mastery_gate requires binary_mastery criteria."}]}

Persistence dictionary — working artifacts only

Working state only: these tenant-scoped server-only tables support orchestration, crosswalk proof, safe upstream traces, idempotency, exact-base calibration sequencing, and shared rate limiting. They are purged by their stated retention; no local table is the blueprint, standard, result, score, external score, or mastery authority. Anon/authenticated datastore grants are revoked. ITD-001, 014, 016, 045.

blueprint_operations — owner: blueprint module

ColumnTypeNullConstraint / meaningWire trace
tenant_idtextNoVerified JWT claim; PK member, never exposed.Authorization
iduuidNoPK (tenant_id,id).Operation.id
statustextNoCHECK operation status enum.status
request_hashbyteaNoSHA-256 canonical semantics; request body is not durably copied here.request
content_test_spec_idtextYesOpaque Content ref; null until allocated.blueprintId
test_kindtextNoCHECK three-kind enum; supports nonterminal quota/diagnosis only.testKind
failure_code, failure_summarytextYesBoth null unless failed; no upstream bodies.failure
created_at, modified_at, terminal_attimestamptzterminal nullableDB clock; terminal_at set once.timestamps
purge_aftertimestamptzYesNull while nonterminal; terminal_at + 30 days.ITD-016

Indexes: unique (tenant_id,id); (tenant_id,status,modified_at) for tenant-local work limit; partial purge index on purge_after. No unscoped API query.

blueprint_crosswalk_rows — owner: blueprint module

ColumnTypeNullConstraint / meaning
tenant_id, operation_idtext / uuidNoTenant-scoped FK to blueprint_operations; every read/join includes both values.
source_content_test_spec_id, source_content_version, source_standard_guid, source_doktext / smallintNoRemaining PK members. Exactly one working row per positive source Content KC×DOK cell; source_dok CHECK 1–4.
source_key, source_assessment_name, source_jurisdiction, source_assessment_versiontextNosource_key is the approved manifest reference; the remaining values are its exact customer-facing labels. None substitutes for live Content/CASE proof.
source_item_countintegerNoCHECK > 0. Across an operation, source and mapped unique-cell cardinality and SUM(source_item_count) must remain equal.
source_item_revision, target_standard_guid, target_item_revisiontextNoOpaque live CASE pass-throughs. Source and target GUID/revision pairs must match for identity.
mapping_kindtextNoCHECK identity or case_association.
case_association_guid, association_revisiontextYesBoth non-null only for case_association; both null for identity. Association origin, destination, and revision are live-verified.
slot_id, required_doktext / smallintNoTarget slot reference and its minimum DOK; CHECK 1–4 and required_dok >= source_dok.
statustextNocovered, uncovered, or unverifiable. Content POST is forbidden unless every exhaustive source cell is present exactly once and covered.
purge_aftertimestamptzYesNull while nonterminal; terminal_at + 30 days. This working row never becomes a blueprint authority.

Misalignment probes: omitted cell, duplicate PK cell, changed total count, stale Content/CASE revision, association endpoint mismatch, ambiguous association, or required_dok < source_dok each fail before target Content POST. ITD-027, ITD-035.

blueprint_upstream_traces — owner: blueprint module

ColumnTypeNullConstraint / meaning
tenant_id, operation_idtext/uuidNoTenant-scoped FK.
sequenceintegerNoDense per-operation ordering; PK member.
dependency, host, correlation_id, response_classtextNoRequired safe trace base matching UpstreamTrace; response_class must be 2xx for readiness proof.
resource_id, phasetextYesNullable persistence of the two optional public trace properties; null projects as an omitted JSON member, never JSON null. phase CHECK is source-item-before, source-sidecar, or source-item-after and requires dependency='content'; resource_id is never filled with a collection sentinel or fallback id.
observed_at, purge_aftertimestamptzpurge nullableObserved/purge instants.

No URL path/query, body, JWT, source document, or credential column exists. ITD-015, ITD-022, ITD-035, ITD-037.

blueprint_idempotency_receipts — owner: blueprint module

ColumnTypeNullConstraint / meaning
tenant_id, route, key_hashtext/byteaNoUnique tuple; raw key never stored.
request_hashbyteaNoCanonical semantic hash used to detect mismatched reuse.
operation_iduuidNoTenant-scoped FK to replayed operation.
created_at, expires_attimestamptzNoexpires_at is exactly 24 hours after create; purge index.

ITD-010

blueprint_calibration_revisions — owner: blueprint module

ColumnTypeNullConstraint / meaning
tenant_id, blueprint_content_id, source_key, sequencetext / bigintNoComposite primary key and lock partition. Every query/join begins with verified tenant_id; sequence is positive and dense per source.
delta_id, delta_hash, operation_idtext / bytea / uuidNo(tenant_id,delta_id) unique; canonical hash detects changed-content reuse; operation FK enables deterministic replay.
base_content_version_id, successor_content_test_spec_id, successor_content_version_idtextsuccessor fields nullable until readyOpaque native Content references only. Predecessor/successor bodies and criteria are never copied here.
before_criteria_hash, after_criteria_hash, coverage_proof_hashbyteaafter nullable until readyCanonical proof hashes only; no Results/Analytics facts.
evidence_ref_hashbyteaNoHash of the sorted native reference set for replay/conflict detection; the referenced outcomes and scores remain upstream.
created_at, terminal_at, purge_aftertimestamptzterminal/purge nullable while nonterminalDB clock; purge is terminal time + 30 days.

Atomic rule: a transaction-scoped tenant+blueprint lock compares the base Content version and next source sequence before accepting work. Stale/conflicting requests write no Content successor; identical replay resolves through the existing operation and receipt. RLS is enabled and anon/authenticated grants are revoked. ITD-045, ITD-046.

blueprint_rate_limit_events — owner: blueprint module

ColumnTypeNullConstraint / meaning
tenant_id_hashtextNoNon-reversible tenant-safe hash used only for quota partitioning.
route_classtextNoLiteral read in v1; part of index (tenant_id_hash, route_class, occurred_at).
occurred_attimestamptzNoDatabase time; rows older than 120 seconds are deleted during quota consumption.
request_idtextNoPrimary key; exactly one quota event per accepted read.

Atomic rule: SECURITY DEFINER consume_blueprint_read_quota takes a transaction-scoped advisory lock for tenant + route, counts the trailing 60 seconds, and inserts or rejects. Only the server service role may execute; RLS is enabled and anon/authenticated grants are revoked. Limiter failure returns 503, never fail-open. ITD-024.

Endpoint contract matrix

EndpointAvailability/inputResponseScopeEndpoint-specific problems
POST /v1/blueprintsRequired Idempotency-Key + CreateBlueprintRequest; ≤256 KiB JSON. The mastery, adaptive, and formative origins each accept only their matching testKind. Formative additionally requires 1–500 unique, live, tenant-authorized CASE standardGuids, at least one allocatable item per standard, reconciled DOK/item totals, and criteria.type=per_standard.A conforming mastery or formative request returns 202 Operation and mount-safe relative Location; work can already be ready. A conforming adaptive request currently returns non-retryable 422 adaptive-kc-corpus-not-onboarded before operation creation or writes. The formative implementation dereferences every standard in live CASE, writes and reads back a native Content test_spec, and returns sanitized upstream traces. A wrong discriminator or malformed variant returns 400 validation-failed. Invalid credentials fail at 401/403 before idempotency or upstream calls.blueprint:writeAll origins: validation-failed, malformed-json, missing-idempotency-key; authentication-required; insufficient-scope; idempotency-key-reused, supersedes-conflict; payload-too-large, unsupported-media-type; upstream-contract-mismatch; operation-limit-reached; internal-error; upstream-unavailable, tenant-binding-unavailable. Mastery only: source-assessment-not-onboarded, source-assessment-unavailable, calibration-evidence-not-onboarded, calibration-target-missing, calibration-target-ambiguous, calibration-target-invalid, calibration-evidence-invalid, calibration-evidence-unavailable, public-inventory-binding-unavailable. Adaptive only: adaptive-kc-corpus-not-onboarded. mastery/adaptive evidence, formative evidence
POST /v1/blueprints/{contentTestSpecId}/calibration-deltasNot mounted at any published origin today. ITD-045 pins the future reports-service command: required Idempotency-Key + CalibrationDeltaRequest; ≤256 KiB JSON; exact same-tenant current blueprint id/version and next source sequence.Current mastery and formative wire probes return 404 route-not-found with detail incorrectly claiming the route is outside the documented v1 surface; adaptive also does not mount the command. This is a surface-wide implementation gap, not blueprint-not-found, not a successful calibration response, and not evidence that another published origin supports it. When mounted, the pinned response is a 202 Operation with mount-safe relative Location; ready identifies the immutable successor and calibrationRevision.Future contract: role reports_service + explicit blueprint:calibration:writeCurrent: 404 route-not-found. Future ITD-045 contract: validation-failed, malformed-json, missing-idempotency-key; authentication-required; forbidden; calibration-delta-conflict, calibration-delta-stale; calibration-evidence-invalid; calibration-delta-would-weaken-proof; payload-too-large, unsupported-media-type; blueprint-not-found; operation-limit-reached; upstream-contract-mismatch; internal-error; upstream-unavailable, tenant-binding-unavailable, calibration-evidence-unavailable. mastery gap evidence, formative gap evidence
GET /v1/blueprintsExactly subject_id, target_grade_id, exact camelCase modifiedSince, opaque cursor, and limit; no test_kind, status, sort, or local filtering/reordering.200 BlueprintPage of BlueprintSummary or edge-evaluated 304; absent sidecar/detail fields never cause 424. See conditional semantics.blueprint:readvalidation-failed; authentication-required; insufficient-scope; rate-limited; upstream-contract-mismatch; internal-error; upstream-unavailable; tenant-binding-unavailable
GET /v1/blueprints/{contentTestSpecId}Opaque same-tenant native Content id.200 BlueprintDetail or edge-evaluated 304; Content item plus all seven sidecar fields only. See conditional semantics.blueprint:readvalidation-failed; authentication-required; insufficient-scope; blueprint-not-found; rate-limited; upstream-contract-mismatch; internal-error; upstream-unavailable; tenant-binding-unavailable
GET /v1/blueprints/{id}/coveragecursor + page_size only. Row-level source-test crosswalk coverage applies only to mastery_gate.Mastery: 200 CoveragePage or edge-evaluated 304. Formative: typed 409 coverage-not-applicable with retryable omitted, because its narrow unit scope is represented by BlueprintDetail.kcCoverage, not a source-test crosswalk; change the request instead of retrying unchanged.blueprint:readvalidation-failed; authentication-required; insufficient-scope; blueprint-not-found; coverage-not-applicable; rate-limited; upstream-contract-mismatch; internal-error; upstream-unavailable; tenant-binding-unavailable
GET /v1/operations/{operationId}Opaque same-tenant UUID. Customer roles may read customer-created operations; reports_service with explicit calibration scope may read only its same-tenant calibration-delta operations.200 Operation or edge-evaluated 304; read-after-write consistent. Cross-kind, cross-tenant, and absent ids share 404 operation-not-found. See conditional semantics.blueprint:read, or narrow role reports_service + blueprint:calibration:write for its calibration operationvalidation-failed; authentication-required; insufficient-scope; forbidden; operation-not-found; rate-limited; internal-error; upstream-unavailable
Live client flow: choose the exact kind-scoped base URL and send that origin's matching request with a Platform3-issued JWT and Idempotency-Key. Mastery and formative success return 202; resolve relative Location or operation.href against the effective POST URL, poll to ready or failed, then dereference blueprintId. Adaptive create currently terminates at typed 422 adaptive-kc-corpus-not-onboarded with no operation or Location, while its Content-backed reads remain live. Mastery clients fetch coverage; formative clients read passingRule.criteria, kcCoverage, itemTypeMix, and maxItemOverlap from detail and expect coverage-not-applicable. Identical successful POST replay returns the same operation. A 401/403 is auth failure, not catalog state. Reports calibration is not mounted at any published origin. There is no PATCH, DELETE, bulk route, operation cancellation, or webhook in v1. ITD-040, ITD-043, ITD-045, mastery/adaptive evidence, formative evidence.

Compatibility: paths are versioned at /v1; additive response fields may appear and clients must ignore them; enum expansion is announced; removals or semantic breaks require a new major path and published overlap window. ITD-020

Traceability and gap detectability

PromiseDictionary evidenceAuthorityMisalignment is detectable when…
One field selects all three kindstestKind, Scope, CriteriaAlphaTest policyThe object variant does not match testKind, or unknown/null fields are accepted.
Superset gate fails closedSourceAssessmentRef, CoverageRow, OperationFailurePinned Content source + live CASE + target ContentA source is not approved/applicable, a public tested-standard row or source KC×DOK cell is omitted/duplicated/stale/unmapped/ambiguous, cell count changes, a stated requiredDok < sourceDok, an unstated DOK is guessed instead of forced to the highest supported target DOK, or a partial result is labeled ready.
Executable bank inputBlueprintDetail, kcCoverage, itemTypeMixContent test_spec sidecarKC or interaction totals disagree, a KC key is not a verbatim live CASE identifier, or an ownerless request-shadow field is synthesized.
Native ids, no translationContent id, CASE GUIDContent / CASEA prefix is parsed, an alias substitutes for a GUID, or AlphaTest invents a blueprint id.
Real upstream compositioncreate, list, detail, coverage, calibration deltaContent/CASE wire evidence on initial create; Results/Analytics wire evidence on later calibration delta; service-auth proofA route succeeds without the live owner calls required for that lifecycle stage, exact-tenant binding, bracketed immutable read, sanitized correlation traces, or Content readback comparison.
No shadow platformPersistence dictionaryAlphaTest working state onlyA local table stores authoritative blueprint, standard, attempt, score, external-score, result, or mastery facts, or a read answers from a remembered-id index.
Tenant isolationJWT, tenant-first keysVerified identityAn endpoint is anonymous, a query/join lacks verified-tenant scope, a service role inherits customer powers, a binding falls back across tenants, or cross-tenant ids differ observably from missing ids.
Governed source onboardingGovernedSourceCatalogEntry, 422 contractTesting-director approval + public inventory + Content/CASE live proofAn arbitrary caller id is accepted, a manifest entry lacks approval/applicability, request fields drift from the entry, or an unavailable approved source writes a target.
Perfect-score calibration is literalSourceCalibrationTarget, detail projection, coverage projectionContent passing_rule + testing-director policy + public source policy + Content/CASE initial evidence; native Results/Analytics evidence for later revisionsA source/version has zero or multiple targets, targetValue is not 100, relation/metric drifts, post-administration evidence is required before initial creation, or detail/coverage differ from Content.
Reports revisions are immutable and non-regressingCalibrationDeltaRequest, receipt, bounded stateReports recommendation + Results/Analytics evidence + new Content test_specA stale/conflicting delta writes, predecessor bytes change, replay creates a second successor, a target falls below 100, or coverage cardinality/count/DOK proof weakens.

Honest upstream contract boundary

The approved architecture pins only the upstream names needed at this seam: Content item content_id and latest_version_id; sidecar spec_id, assessment_role, and the seven native test-spec fields including passing_rule.sourceCalibrationTargets; CASE CFItem/CFAssociation identity and revision reads; and native tenant-scoped Results/Analytics evidence references. The sidecar is not required to repeat a version. All other camelCase names here are AlphaTest public projections carrying opaque owner values—not claims about extra upstream property names. A local mirror, copied outcome, fabricated external score, inferred assessment, or mock cannot satisfy readiness.

Release gates and deliberate v1 omissions

Benchmark and normative source

This dictionary follows Stripe’s API reference bar for predictable resources, authentication, error behavior, and per-operation clarity, and adds explicit range, nullability, upstream ownership, storage mapping, and ITD provenance. The sole normative design input is the approved Blueprint API architecture; no vendor bundle or upstream wire schema exists in this repository.