Who
The engineer maintaining AcmeTest who currently commits hand-curated test banks.
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.
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.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.
The engineer maintaining AcmeTest who currently commits hand-curated test banks.
POST a test request, poll its operation, receive a native Content test_spec id, list/fetch it, and verify standard-by-standard coverage.
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.
Blueprint ids and immutable version ids are Content values; standards/KCs are CASE GUIDs; operation ids are AlphaTest UUIDs.
| Concept | Wire type / range | Rules | Provenance |
|---|---|---|---|
| Content test_spec id | string, 1–255 bytes | Opaque, case-sensitive Platform3 Content pass-through. Never parse, shorten, or synthesize. | ITD-001, 019 |
| CASE GUID | string, 1–255 bytes | Opaque identifier returned by live CASE. Valid only with its source/revision provenance; aliases are rejected. | ITD-001, 019 |
| Operation id | string(uuid) | Opaque AlphaTest orchestration id returned by create and used only for polling. | ITD-002, 019 |
| Instant | string(date-time) | RFC 3339 UTC, terminal Z, exactly millisecond precision in responses. | ITD-025 |
| Grade | string enum | PK, K, 1…12, or college. No numeric coercion. | ITD-003, 043 |
| DOK | integer, 1–4 | Webb depth of knowledge. Coverage passes only when slot DOK is greater than or equal to source-required DOK. | ITD-004, 018 |
| Request id | string, 1–128 bytes | Server-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.
| Header | Required | Meaning / validation | Failure |
|---|---|---|---|
Authorization | Every tenant-data endpoint; omitted only for the base health probe | Bearer <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-056 | 401 authentication-required; 403 insufficient-scope or forbidden. A conforming caller whose JWT passes these checks may not receive a reviewer-preflight error. |
Idempotency-Key | Both POST routes | 1–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-045 | 400 missing-idempotency-key; route-specific 409 |
Content-Type | POST | application/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-Match | Successful GET | Every 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 evidence | 304, normal 200, or intermediary 412 for unsupported conditional kinds |
Location | Successful POST | Relative 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-After | 429 and retryable 503 responses | Non-negative decimal integer seconds, 1–3600; never an HTTP-date. Clients wait at least this duration before retry. ITD-021, ITD-024 | Required when the problem has retryable: true. |
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.Exactly one blueprint per request. All listed fields are required unless a row says optional or conditionally required.
| JSON field | Type | Null | Meaning / allowed values / validation | Owner + provenance |
|---|---|---|---|---|
testKind | enum | No | mastery_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 |
subject | string, 1–100 Unicode scalar values | No | Leading/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 |
grade | Grade | No | Target grade/band selector. | AlphaTest request · ITD-043 |
scope | Scope | No | Named assessments/frameworks or bounded CASE standard set, depending on test kind. | CASE refs + AlphaTest selector · ITD-004, 043 |
itemCount | integer, 1–500 | No | Exact total to allocate. Sum of final slot counts and DOK/interaction distributions must equal it. | AlphaTest · ITD-018 |
timeBudgetMinutes | integer, 1–480 | No | Whole-minute design budget. Allocation must reconcile to it; not an administration timer. | AlphaTest · ITD-018 |
rigorPolicy | RigorPolicy | No | Required DOK and allowed QTI interaction constraints. | AlphaTest · ITD-005, 018 |
criteria | Criteria | No | Discriminated by testKind; exact object variant required. | AlphaTest · ITD-043 |
supersedes | Content test_spec id | No* | Optional (omitted, not null). Existing same-tenant immutable blueprint corrected by this new request. | Content pass-through · ITD-009 |
| Field | Type | Null | Rule |
|---|---|---|---|
sourceAssessments | SourceAssessmentRef[], 1–50 | No* | 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. |
frameworkGuids | CASE GUID[], 1–20 | No* | 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. |
standardGuids | CASE GUID[], 1–500 | No* | Required for formative (bounded unit set); optional pool target for diagnostic; forbidden for mastery gate. When optional and unused it is omitted, never null. |
knowledgeComponentGuids | CASE GUID[], 1–500 | No* | 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. |
| Field | Type | Null | Rule |
|---|---|---|---|
mode | enum | No | highest_required or specified_distribution. Mastery gate requires highest_required. |
dokDistribution | object | No* | Keys 1…4; non-negative integer counts; sum exactly itemCount. Required for specified mode, optional target for highest-required mode; omit when unused, never null. |
interactionTypes | string[], 1–20 | No | Unique QTI 3 interaction identifiers, each 1–80 ASCII characters. These are constraints for the bank, not locally authored item types. |
AlphaTest allocation · ITD-018
Every listed field in the selected variant is required and non-null; fields from either other variant are forbidden.
| testKind | Required non-null fields | Validation / meaning | Provenance |
|---|---|---|---|
mastery_gate | type literal binary_mastery; minimumPercent integer 1–100; requiredStandardPercent integer 1–100 | Defines gate pass and per-standard floor; gap list is still reported on failure. This is blueprint policy, not a stored result. | ITD-043 |
adaptive_diagnostic | type literal stopping_policy; stoppingPolicyRef string 1–255 bytes | Reference 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 |
formative | type literal per_standard; minimumPercent integer 1–100 | Immediate per-standard criterion for a bounded unit. No gate-superset claim. | ITD-043 |
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.
| Field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
sourceKey | string, 1–120 lowercase ASCII chars | No | Matches [a-z0-9]+(?:[._-][a-z0-9]+)*; unique in the request and exact-matched to the caller-tenant catalog. | Catalog · ITD-035, 054 |
contentTestSpecId | string, 1–255 bytes | No | Opaque Content id. Item read returns equal content_id; sidecar read returns equal spec_id. | Content · ITD-035 |
contentVersion | string, 1–80 bytes | No | Exact 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 |
name | string, 1–120 Unicode scalars | No | Trimmed, NFC-normalized approved display name; exact match, never standards authority. | Catalog |
jurisdiction | string, 1–80 Unicode scalars | No | Trimmed, NFC-normalized jurisdiction or publisher; exact match. | Catalog |
assessmentVersion | string, 1–80 Unicode scalars | No | Approved assessment edition; exact match and distinct from both Content version fields. | Catalog |
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.| Manifest field | Type / nullability | Constraint and mismatch detection | Authority |
|---|---|---|---|
schema_version | literal integer 6; non-null | Any 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_owner | string, 1–255; non-null | Policy owner only; never a caller-selected principal. | AlphaTest testing director |
release_state | enum blocked_pending_reviewer_credential_preflight | ready; non-null | Current 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_at | Instant; non-null | Evaluation time of this immutable catalog revision; does not replace receipt observation times. | AlphaTest release process |
catalog_revision_hash | lowercase hex string, exactly 64 characters; non-null | SHA-256 digest of catalog content, not credentials. Current value is 6e23e29f806a20a72e80bd266d2143e4df1ae8c6ae40bbba615fa410a4483450. | ITD-056 |
catalog_revision_hash_scope | string, 1+ characters; non-null | Canonical 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_itd | literals ITD-054 and ITD-056; non-null | Resolve 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_ids | string[], 1–100; unique, non-null | Currently exactly ["demo"]; verified JWT tenant must match an entry and cannot be remapped. | Verified identity + testing director |
authorities | object with six required catalog members; non-null; server/release-build validated, not declared by the published JSON Schema | Five 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_contract | object; non-null; partially schema-constrained | Defines 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_assessments | GovernedSourceCatalogEntry[], 2–50; non-null | Unique 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_behavior | object; non-null; partially schema-constrained | Current 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_refs | relative path[], 1–20; non-null | Resolves 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.
| Manifest field | Type / nullability | Constraint and mismatch detection | Authority |
|---|---|---|---|
tenant_id | string, 1–255 bytes; non-null | Equals verified JWT tenantId; no remap or fallback. | ITD-054 |
source_key | string, 1–120; non-null | Unique key matching SourceAssessmentRef grammar. | Testing director |
content_test_spec_id | opaque string, 1–255 bytes; non-null | Equals Content item content_id and sidecar spec_id. | Content reference |
content_version | opaque string, 1–80 bytes; non-null | Public exact-match value; not read from sidecar. | Catalog |
content_version_id | opaque string, 1–255 bytes; non-null | Both bracketing item reads return it as latest_version_id. | Content item · ITD-035 |
name | string, 1–120 Unicode scalars; non-null | Exact request match. | Testing director |
jurisdiction_or_publisher | string, 1–80 Unicode scalars; non-null | Exact request jurisdiction match. | Testing director |
assessment_version | string, 1–80 Unicode scalars; non-null | Exact request match. | Testing director |
subject | string, 1–100 Unicode scalars; non-null | Exact normalized request-subject applicability. | Testing director |
grade_range | object; non-null | minimum/maximum are Grade members; request grade falls inclusively within. | Testing director |
release_state | literal enum member ready; non-null | Both 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_inventory | object[], 1–500; non-null | Every 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_manifest | PublicInventoryCellBindingManifest; non-null | Per-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 |
calibration | object; non-null; partially schema-constrained | Requires 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_ref | object; non-null; release-build/server validated | Requires 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.approval | object; non-null; release-build/server validated | Requires 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_bindings | JSON Schema-closed object with exactly results and analytics; non-null | The 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_identity | JSON Schema-closed object; non-null | The 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.
| Field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
state | enum blocked_missing_owner_approved_bindings | ready | No | ready 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_version | string ≥1 or null | Yes | Both 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_count | integer ≥1 | No | Exact number of governed public inventory rows: currently 4 for STAAR and 5 for Iowa. | Published public inventory · ITD-054 |
expected_positive_content_cell_count | integer ≥1 | No | Exact number of positive source Content KC×DOK cells: currently 12 for STAAR and 8 for Iowa. | Version-pinned Content kc_coverage · ITD-054 |
bindings | PublicInventoryCellBinding[]; non-null | No | Currently 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 |
| Field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
source_key | string ≥1 | No | Exact parent governed source key. | Catalog · ITD-054 |
public_row_code | string ≥1 | No | Exact tested_standard_inventory.source_standard_code; unknown rows fail. | Published public inventory · ITD-054 |
content_test_spec_id, content_version_id | opaque strings ≥1 | No | Must byte-match the parent source and both bracketed Content item reads. | Content · ITD-054 |
source_case_guid | opaque CASE GUID string ≥1 | No | Names one positive Content KC cell and must dereference in pinned CASE evidence. | Content + CASE · ITD-054 |
source_dok | integer enum 1–4 | No | Exact 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_count | integer ≥1 | No | Must equal the positive cell count; totals and unique-cell cardinality are preserved before and after binding. | Content · ITD-054 |
binding_authority, binding_authority_version | string ≥1 | No | Pin 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_at | string ≥1; RFC 3339 date-time | No | Identity and timestamp of binding approval; neither can be inferred from source labels. | Binding authority · ITD-054 |
evidence_ref | string ≥1 | No | Dereferenceable 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.
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.
| Field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
calibrationTargetId | string, 1–512 bytes | No | Opaque 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 |
sourceKey | string, 1–120 lowercase ASCII chars | No | Exact governed source key; one-to-one with a request source. | Governed catalog |
contentTestSpecId, contentVersionId | opaque Content ids, 1–255 bytes | No | Exact source assessment identity and immutable version established by bracketed Content reads. | Content · ITD-035, 044 |
metric | literal | No | Exactly equivalent_raw_score_percent. Percentile, projected-pass probability, and confidence-only metrics are invalid. | ITD-044 |
targetValue | literal number 100 | No | Exactly 100 percent of available raw-score points; 99.99 and every lower value fail closed. | ITD-044 |
relation | literal | No | Exactly mastery_implies_at_least. | ITD-044 |
calibrationPolicyVersion | string, 1–255 bytes | No | Immutable testing-director policy version used to derive and later revise this target. | Testing-director policy |
scoringPolicyRef | string, 1–2048 bytes | No | Version-pinned reference to the named source assessment scoring policy; dereference must succeed. | Named source owner |
evidenceRefs | string[], 1–100; each 1–2048 bytes | No | For 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, approvedBy | Instant / principal id 1–255 bytes | No | Testing-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_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.| JSON field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
delta_id | string, 1–255 bytes | No | Opaque Reports id. Reuse with different canonical content is 409 calibration-delta-conflict. | Reports · ITD-045 |
calibration_target_id | string, 1–512 bytes | No | Exact current calibration target id for this source. | Content passing_rule |
source_key | string, 1–120 lowercase ASCII chars | No | Exact current governed source key; must bind to the target and blueprint. | Governed catalog |
base_content_version_id | opaque Content version id, 1–255 bytes | No | Must equal the current immutable blueprint version while the revision lock is held. Older values are 409 calibration-delta-stale. | Content |
sequence | integer, 1–2,147,483,647 | No | Exactly the next value for verified tenant + blueprint + source. Repeated or skipped values are stale; the server never silently rebases. | AlphaTest bounded revision metadata |
generated_at | Instant | No | Reports generation time; cannot be future-skewed by more than five minutes and never controls server ordering. | Reports |
analytics_artifact_ref | string, 1–2048 bytes | No | Native same-tenant Analytics artifact reference; must dereference under separate least-privilege server credentials. | Analytics |
result_record_refs | string[], 1–500; unique | No | Native same-tenant Results result_record references. Only references and safe traces enter AlphaTest. | Results |
external_score_evidence_refs | string[], 0–100; unique | No | May be empty but not null. Native evidence refs only; no copied external score values. | Results / Analytics |
analysis_policy_version | string, 1–255 bytes | No | Immutable Reports analysis-policy version used to emit this recommendation. | Reports |
reason_codes | string[], 1–20; each 1–80 lowercase ASCII chars | No | Unique stable machine reasons; explanatory only and never sufficient without dereferenceable evidence. | Reports |
proposed_changes | ProposedCalibrationChanges | No | Exactly the permitted criteria/DOK recommendations; at least one member must be present. | Reports recommendation; AlphaTest validates deterministically |
| Field | Type | Null | Rule |
|---|---|---|---|
minimumPercent | integer, 1–100 | No* | Optional; omitted when unchanged. Applied only if every source's literal 100-percent target remains satisfied. |
requiredStandardPercent | integer, 1–100 | No* | Optional; omitted when unchanged. Cannot weaken the perfect-score or gap-proof contract. |
minimum_dok_by_case_guid | object<CASE GUID, DOK>, 1–500 keys | No* | 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.
| Field | Type | Null | Meaning / validation |
|---|---|---|---|
predecessor_content_test_spec_id, predecessor_content_version_id | opaque Content ids | No | Snapshot identity; predecessor bytes remain unchanged. |
successor_content_test_spec_id, successor_content_version_id | opaque Content ids | No | Distinct immutable successor linked by supersedes; the successor id equals Operation blueprintId. |
calibration_target_id, applied_sequence | string / integer ≥1 | No | Exact applied target and sequence. |
before_criteria_hash, after_criteria_hash, coverage_proof_hash | lowercase SHA-256 hex, exactly 64 chars | No | Canonical hashes let Reports prove the applied change and unchanged exhaustive proof. |
evidence_refs | string[], 1–701 | No | Native evidence references validated for this delta; never expanded into learning facts. |
content_trace_id | string, 1–255 bytes | No | Opaque successful Content create/readback correlation id. |
replay | boolean | No | true 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
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.{
"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.
{
"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"}
}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.{
"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}
}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.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.
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-025–ITD-028, ITD-035, ITD-040, ITD-054, ITD-056.
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.
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.| JSON field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
id | UUID | No | Opaque tenant-scoped polling id. | AlphaTest · ITD-019 |
href | string, exactly 49 ASCII bytes | No | Exactly ./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 |
object | literal blueprint_operation | No | Discriminator. | ITD-002 |
status | enum | No | accepted, 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 |
blueprintId | Content test_spec id | Yes | Null before ready; non-null and dereferenceable at ready. | Content · ITD-025 |
failure | OperationFailure | Yes | Non-null only at failed. | AlphaTest · ITD-021, 035 |
calibrationRevision | CalibrationRevisionReceipt | Omitted unless applicable; never null | Absent 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 |
upstreamTraces | UpstreamTrace[], 0 or more | No | Ordered safe evidence; ready includes successful CASE and Content traces. No fixed maximum. | ITD-015 |
createdAt, modifiedAt | Instant | No | RFC 3339 UTC with millisecond precision. createdAt is immutable for one operation; modifiedAt never precedes it and never regresses across later polls. | ITD-025 |
requestId | Request id (string, 1–128 bytes) | No | HTTP response correlation id; the shared scalar bound applies without a resource-specific override. | ITD-022 |
| Field | Type | Null | Rule |
|---|---|---|---|
code | enum | No | coverage_incomplete, coverage_unverifiable, source_assessment_unavailable, upstream_unavailable, content_persistence_failed. |
summary | string, 1–500 Unicode scalars | No | Safe summary; never an upstream body. |
uncoveredSourceRefs | string[], 1–500 | No* | Present only for coverage failures; otherwise omitted. |
retryable | boolean | No | Whether retry with the original request and idempotency key is safe. |
| JSON field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
contentTestSpecId | string, 1–255 bytes | No | Verbatim Content content_test_spec_id; native id. | Content list · ITD-037 |
title | string, 1–500 Unicode scalars | No | Verbatim owner-published title. | Content list |
subject | string, 1–255 bytes | No | Opaque Content subject value; no local translation. | Content list |
grade | string, 1–255 bytes | No | Opaque Content grade value; no local translation. | Content list |
status | string, 1–80 ASCII bytes | No | Verbatim Content status; clients allow additive values. | Content list |
latestVersionId | string, 1–255 bytes | No | Verbatim Content latest_version_id. | Content list |
updatedAt | Instant | No | Content updated_at, RFC 3339 UTC milliseconds. | Content list |
links | object<string, URI-reference>, 0–20 | No | Opaque Content link map; keys 1–80 ASCII bytes, values 1–2048 bytes. Preserve unknown additive keys. | 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.
| JSON field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
contentTestSpecId, title, subject, grade, status, latestVersionId, updatedAt, links | same as BlueprintSummary | No | Content item facts; constraints match summary. | Content item · ITD-037 |
kcCoverage | object<CASE GUID, DokCounts>, 1–500 keys | No | Projection of kc_coverage. Each value contains only dok1…dok4 positive integers 1–500; at least one positive cell. Keys dereference verbatim in CASE. | Content sidecar · ITD-027, 035 |
itemTypeMix | object<QTI interaction type, integer>, 1–20 keys | No | Projection of item_type_mix; positive counts only, total equals KC-coverage count. | Content sidecar |
difficultyConstraints | JSON object, 1–32 keys, ≤16 KiB | No | Verbatim normalized difficulty_constraints; unknown additive keys are preserved. | Content sidecar |
passingRule | object | No | Wire-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.calibrationPolicyVersion | string, 1–120 ASCII bytes | Required for mastery_gate; omitted for other kinds | Immutable 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 |
minForms | integer, 1–100 | No | Projection of min_forms. | Content sidecar |
maxItemOverlap | number (ratio), 0–1 inclusive | No | Verbatim 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 |
enemyItemRule | JSON object, 0–32 keys, ≤16 KiB | No | Verbatim 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.
| Upstream field | Type / nullability | Required check | Provenance |
|---|---|---|---|
spec_id | string 1–255; non-null | Equals Content item id. | ITD-035 |
assessment_role | literal spec; non-null | Any other value is 424. | ITD-035 |
kc_coverage, item_type_mix, difficulty_constraints, passing_rule, min_forms, max_item_overlap, enemy_item_rule | seven required non-null fields | Projected 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 |
version | not required; if present opaque | Never immutable identity. Catalog pin is checked against item latest_version_id before and after this read. | ITD-035 |
{
"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.
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.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.
| Field | Type | Null | Meaning / validation | Owner + provenance |
|---|---|---|---|---|
sourceRef | string, 1–512 bytes | No | Stable opaque reference unique to source Content id + version + CASE GUID + DOK. Clients compare but never parse it. | AlphaTest working proof · ITD-027, 035 |
sourceKey | string, 1–120 lowercase ASCII characters | No | Approved 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 |
sourceContentTestSpecId | Content test_spec id | No | Exact dereferenced spec_id; equals the request's contentTestSpecId. | Content pass-through · ITD-035 |
sourceContentVersion | string, 1–80 bytes | No | Exact dereferenced Content version; equals the request's contentVersion. | Content pass-through · ITD-035 |
sourceName | string, 1–120 Unicode scalar values | No | Exact echo of the governed catalog name; display only. | Governed catalog value · ITD-035, 054 |
sourceJurisdiction | string, 1–80 Unicode scalar values | No | Exact echo of the governed catalog jurisdiction; display only, with no truncation. | Governed catalog value · ITD-035, 054 |
sourceAssessmentVersion | string, 1–80 Unicode scalar values | No | Exact echo of the governed catalog assessmentVersion; distinct from sourceContentVersion. | Governed catalog value · ITD-035, 054 |
sourceStandardCode | string, 1–255 Unicode scalar values | No | Exact 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, sourceDomain | string, 1–255 Unicode scalar values | No* | 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 |
sourceEvidenceLocator | string, 1–2048 Unicode scalar values | No | Exact 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 |
sourceStandardGuid | CASE GUID | No | Outer key of the source kc_coverage object, resolved live through CASE CFItems. | Content + CASE pass-through · ITD-035 |
sourceDok | DOK or literal unstated | No | Exact 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 |
contentCellDok | DOK | No | DOK encoded by the positive dok1…dok4 source Content cell. This keeps owner-published Content rigor distinct from an unstated public source DOK. | Content pass-through · ITD-035 |
sourceItemCount | integer, 1–500 | No | Positive count from that source cell. Sum and unique-cell cardinality must be preserved through mapping. | Content pass-through · ITD-027, 035 |
targetStandardGuid | CASE GUID | No | Mapped target standard, resolved live through CASE CFItems. | CASE pass-through · ITD-027 |
mapping | MappingProvenance | No | Identity or governed CASE association proof; never a fabricated identity association. | CASE pass-through · ITD-035 |
slotId | string, 1–100 bytes | No | Identifies 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 |
requiredDok | DOK | No | Equals 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 |
mappingDisposition | enum | No | equal_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 |
status | literal | No | Always 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 |
calibration | CoverageCalibration | No | Unchanged 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 |
| Field | Type | Null | Rule |
|---|---|---|---|
target | SourceCalibrationTarget | No | Byte-equivalent semantic projection of the matching Content passing_rule.sourceCalibrationTargets entry. |
status | literal verified | No | A ready mastery gate cannot expose missing, ambiguous, invalid, or unavailable calibration as partial coverage. |
evidenceRefs | string[], 1–100 | No | Exactly 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. |
| Field | Type | Null | Rule |
|---|---|---|---|
kind | enum | No | identity or case_association. Identity requires equal source/target GUIDs and equal item revisions. |
sourceItemRevision | string, 1–255 bytes | No | Opaque revision from the live source CFItem read. |
targetItemRevision | string, 1–255 bytes | No | Opaque revision from the live target CFItem read; equals sourceItemRevision for identity. |
associationGuid | CASE GUID | No* | Required only for case_association; forbidden for identity. The live association origin/destination must match the row. |
associationRevision | string, 1–255 bytes | No* | Required only for case_association; exact opaque revision from the live association read. |
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.
| Field | Type | Null | Rule | Provenance |
|---|---|---|---|---|
dependency | enum | No | case, content, results, or analytics. | AlphaTest safe evidence projection · ITD-015 |
host | string(hostname), 1–253 | No | Configured upstream hostname only; lowercase ASCII/Punycode, no port, path, credentials, query, IP literal, or local mock. | AlphaTest safe evidence projection · ITD-015, ITD-022 |
correlationId | string, 1–255 | No | Opaque upstream correlation response value. | Upstream response pass-through · ITD-015 |
resourceId | string, 1–255 bytes | Omitted unless attributable; never null | Optional 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 |
phase | enum | Omitted unless applicable; never null | Exactly 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 |
responseClass | enum | No | Exactly 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 |
observedAt | Instant | No | Server 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
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.| Query | Type / default | Behavior | Provenance |
|---|---|---|---|
subject_id | string, 1–255 bytes; omitted, never null | Opaque 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_id | string, 1–255 bytes; omitted, never null | Opaque 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 |
modifiedSince | Instant; omitted, never null | Inclusive 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 |
limit | integer; default 25 | Inclusive 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 |
cursor | string, 1–2048 bytes; omitted, never null | Opaque 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 |
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.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.
| Query | Type / default | Behavior | Provenance |
|---|---|---|---|
page_size | integer; default 25 | Inclusive 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 |
cursor | string, 1–2048 bytes; omitted | Opaque 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 |
| Field | Type | Null | Meaning | Provenance |
|---|---|---|---|---|
object | literal | No | Always list. | AlphaTest envelope · ITD-037 |
data | BlueprintSummary[] or CoverageRow[] | No | Possibly 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 |
nextCursor | string, 1–2048 bytes | Yes | Null 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 |
requestId | Request id | No | Current HTTP correlation. | AlphaTest request projection · ITD-015 |
upstreamTraces | UpstreamTrace[], 1 or more | No; never omitted | Ordered, 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.
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.
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.| Field | Type | Null | Meaning |
|---|---|---|---|
type | HTTPS URI, 1–2048 chars | No | Stable https://alphatest.dev/problems/{slug}; slug is exactly one catalog member below. |
title | string, 1–120 chars | No | Stable short title for the type. |
status | integer, 400–599 | No | Same as HTTP status. |
detail | string, 1–2000 chars | No | Safe occurrence detail, never secrets/upstream body. |
instance | string, 1–2048 chars | No | Request-specific opaque URI path. |
request_id | Request id | No | Support correlation. |
errors | array, 1–100 | No* | 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). |
retryable | boolean | No* | 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
| Status | Stable slug(s) | When |
|---|---|---|
| 400 / 422 | validation-failed, malformed-json, missing-idempotency-key | 400 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. |
| 401 | authentication-required | Missing, expired, malformed, or unverifiable JWT. |
| 403 | insufficient-scope, forbidden | insufficient-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 |
| 404 | blueprint-not-found, operation-not-found | Absent or other-tenant id; indistinguishable. |
| 409 | idempotency-key-reused, supersedes-conflict, coverage-not-applicable | Respectively: 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. |
| 409 | calibration-delta-conflict, calibration-delta-stale | conflict 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 / 415 | payload-too-large, unsupported-media-type | POST body exceeds 256 KiB, or Content-Type is not application/json. |
| 422 | source-assessment-not-onboarded | The 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 |
| 422 | adaptive-kc-corpus-not-onboarded | Scoped 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 |
| 422 | calibration-evidence-not-onboarded | For 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 |
| 422 | calibration-target-missing, calibration-target-ambiguous, calibration-target-invalid, calibration-evidence-invalid | Respectively: 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 |
| 422 | calibration-delta-would-weaken-proof | The 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 |
| 424 | upstream-contract-mismatch | A 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 |
| 429 | rate-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 |
| 500 | internal-error | Unexpected safe failure with request_id; retryable omitted. |
| 503 | public-inventory-binding-unavailable | A 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 |
| 503 | upstream-unavailable, tenant-binding-unavailable, source-assessment-unavailable, calibration-evidence-unavailable | upstream-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 |
{"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."}]}blueprint_operations — owner: blueprint module| Column | Type | Null | Constraint / meaning | Wire trace |
|---|---|---|---|---|
tenant_id | text | No | Verified JWT claim; PK member, never exposed. | Authorization |
id | uuid | No | PK (tenant_id,id). | Operation.id |
status | text | No | CHECK operation status enum. | status |
request_hash | bytea | No | SHA-256 canonical semantics; request body is not durably copied here. | request |
content_test_spec_id | text | Yes | Opaque Content ref; null until allocated. | blueprintId |
test_kind | text | No | CHECK three-kind enum; supports nonterminal quota/diagnosis only. | testKind |
failure_code, failure_summary | text | Yes | Both null unless failed; no upstream bodies. | failure |
created_at, modified_at, terminal_at | timestamptz | terminal nullable | DB clock; terminal_at set once. | timestamps |
purge_after | timestamptz | Yes | Null 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| Column | Type | Null | Constraint / meaning |
|---|---|---|---|
tenant_id, operation_id | text / uuid | No | Tenant-scoped FK to blueprint_operations; every read/join includes both values. |
source_content_test_spec_id, source_content_version, source_standard_guid, source_dok | text / smallint | No | Remaining 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_version | text | No | source_key is the approved manifest reference; the remaining values are its exact customer-facing labels. None substitutes for live Content/CASE proof. |
source_item_count | integer | No | CHECK > 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_revision | text | No | Opaque live CASE pass-throughs. Source and target GUID/revision pairs must match for identity. |
mapping_kind | text | No | CHECK identity or case_association. |
case_association_guid, association_revision | text | Yes | Both non-null only for case_association; both null for identity. Association origin, destination, and revision are live-verified. |
slot_id, required_dok | text / smallint | No | Target slot reference and its minimum DOK; CHECK 1–4 and required_dok >= source_dok. |
status | text | No | covered, uncovered, or unverifiable. Content POST is forbidden unless every exhaustive source cell is present exactly once and covered. |
purge_after | timestamptz | Yes | Null 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| Column | Type | Null | Constraint / meaning |
|---|---|---|---|
tenant_id, operation_id | text/uuid | No | Tenant-scoped FK. |
sequence | integer | No | Dense per-operation ordering; PK member. |
dependency, host, correlation_id, response_class | text | No | Required safe trace base matching UpstreamTrace; response_class must be 2xx for readiness proof. |
resource_id, phase | text | Yes | Nullable 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_after | timestamptz | purge nullable | Observed/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| Column | Type | Null | Constraint / meaning |
|---|---|---|---|
tenant_id, route, key_hash | text/bytea | No | Unique tuple; raw key never stored. |
request_hash | bytea | No | Canonical semantic hash used to detect mismatched reuse. |
operation_id | uuid | No | Tenant-scoped FK to replayed operation. |
created_at, expires_at | timestamptz | No | expires_at is exactly 24 hours after create; purge index. |
blueprint_calibration_revisions — owner: blueprint module| Column | Type | Null | Constraint / meaning |
|---|---|---|---|
tenant_id, blueprint_content_id, source_key, sequence | text / bigint | No | Composite 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_id | text / bytea / uuid | No | (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_id | text | successor fields nullable until ready | Opaque native Content references only. Predecessor/successor bodies and criteria are never copied here. |
before_criteria_hash, after_criteria_hash, coverage_proof_hash | bytea | after nullable until ready | Canonical proof hashes only; no Results/Analytics facts. |
evidence_ref_hash | bytea | No | Hash of the sorted native reference set for replay/conflict detection; the referenced outcomes and scores remain upstream. |
created_at, terminal_at, purge_after | timestamptz | terminal/purge nullable while nonterminal | DB 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| Column | Type | Null | Constraint / meaning |
|---|---|---|---|
tenant_id_hash | text | No | Non-reversible tenant-safe hash used only for quota partitioning. |
route_class | text | No | Literal read in v1; part of index (tenant_id_hash, route_class, occurred_at). |
occurred_at | timestamptz | No | Database time; rows older than 120 seconds are deleted during quota consumption. |
request_id | text | No | Primary 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 | Availability/input | Response | Scope | Endpoint-specific problems |
|---|---|---|---|---|
POST /v1/blueprints | Required 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:write | All 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-deltas | Not 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:write | Current: 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/blueprints | Exactly 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:read | validation-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:read | validation-failed; authentication-required; insufficient-scope; blueprint-not-found; rate-limited; upstream-contract-mismatch; internal-error; upstream-unavailable; tenant-binding-unavailable |
GET /v1/blueprints/{id}/coverage | cursor + 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:read | validation-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 operation | validation-failed; authentication-required; insufficient-scope; forbidden; operation-not-found; rate-limited; internal-error; upstream-unavailable |
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
| Promise | Dictionary evidence | Authority | Misalignment is detectable when… |
|---|---|---|---|
| One field selects all three kinds | testKind, Scope, Criteria | AlphaTest policy | The object variant does not match testKind, or unknown/null fields are accepted. |
| Superset gate fails closed | SourceAssessmentRef, CoverageRow, OperationFailure | Pinned Content source + live CASE + target Content | A 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 input | BlueprintDetail, kcCoverage, itemTypeMix | Content test_spec sidecar | KC 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 translation | Content id, CASE GUID | Content / CASE | A prefix is parsed, an alias substitutes for a GUID, or AlphaTest invents a blueprint id. |
| Real upstream composition | create, list, detail, coverage, calibration delta | Content/CASE wire evidence on initial create; Results/Analytics wire evidence on later calibration delta; service-auth proof | A 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 platform | Persistence dictionary | AlphaTest working state only | A local table stores authoritative blueprint, standard, attempt, score, external-score, result, or mastery facts, or a read answers from a remembered-id index. |
| Tenant isolation | JWT, tenant-first keys | Verified identity | An 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 onboarding | GovernedSourceCatalogEntry, 422 contract | Testing-director approval + public inventory + Content/CASE live proof | An 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 literal | SourceCalibrationTarget, detail projection, coverage projection | Content passing_rule + testing-director policy + public source policy + Content/CASE initial evidence; native Results/Analytics evidence for later revisions | A 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-regressing | CalibrationDeltaRequest, receipt, bounded state | Reports recommendation + Results/Analytics evidence + new Content test_spec | A stale/conflicting delta writes, predecessor bytes change, replay creates a second successor, a target falls below 100, or coverage cardinality/count/DOK proof weakens. |
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.503 tenant-binding-unavailable (ITD-031).tenantId=demo) and isolation (tenantId=reviewer-blueprint) JWTs from the server-only signing secret before deployed smoke and both reviewer halves. Both require iss=alphatest-loop, aud=alphatest-blueprint-reviewer, nonempty sub, role reviewer, scopes exactly blueprint:read blueprint:write, unique jti, and a 600-second lifetime. A missing isolation fixture makes isolation evidence fail or inconclusive; it does not rewrite the ready catalog or make a valid customer request return 503. ITD-056, sanitized correction evidence.422 source-assessment-not-onboarded, while stale/unreadable approved entries return 503 source-assessment-unavailable and write no target (ITD-054).implementation@adaptive_diagnostic origin serves health and authenticated Content-backed reads, and its mounted create route returns typed non-retryable 422 adaptive-kc-corpus-not-onboarded before writes. The mastery-gate origin separately rejects the adaptive discriminator at 400 validation-failed / invalid_enum. Reopen adaptive 202 success only on independently observable exact-tenant CASE discovery, owner-typed KC, and dereference facts; then certify 202 → ready → stopping-policy Content readback, coverage-not-applicable, and sanitized CASE/Content traces (ITD-043, upstream evidence, published-wire evidence).per_standard criteria, returns 202 with relative polling, and round-trips Content detail with maxItemOverlap=1. It remains kind-scoped: mastery/adaptive discriminators are invalid there. Calibration-deltas are not mounted at this or any other published origin; the observed 404 wording is a disclosed surface-wide implementation gap (ITD-043, wire evidence).test_kind, status, and sort are deferred until Content publishes and live probes prove the complete semantics pinned in ITD-038; AlphaTest does not scan or partially map them.consume_blueprint_read_quota succeed; an absent or failing limiter returns 503 upstream-unavailable, never a process-local or fail-open substitute (ITD-024).supersedes; the only additional write is the reports-service calibration command, which also creates a distinct immutable successor and cannot mutate history (ITD-009, ITD-045).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.