CASE 1.1 is a boundary adapter; competency nodes become durable referents
Status: accepted
With CASE 1.1 contracts complete in @conform-ed/contracts and the competency lane
starting, the QTI-vs-OneRoster question repeated (ADR-0001 vs ADR-0012): does CASE
become the canonical competency model, or a boundary projection? Examining the spec
against the existing model also exposed two genuine domain gaps: cross-framework
associations (crosswalks like provider-B1.2 exactMatchOf CEFR-B1) were structurally
unrepresentable (competency_node_edge is scoped to one framework version), and node
identity was per-version, so longitudinal mastery history threaded across editions by
nodeKey convention only.
Decision
Section titled “Decision”- The neutral competency core stays canonical; CASE is a totality-gated boundary adapter (consumer first, provider later), following the ADR-0012 pattern: staging snapshots, reconcile service, CASE GUIDs/URIs held in boundary mappings — never as core identity. CASE terms (CFItem, CFDocument, fullStatement) stay at the contracts boundary per the one-vocabulary rule.
- But CASE’s deepest lesson is absorbed into core: competency nodes become durable
referents.
competency_nodesplits into a durable node (the object of longitudinal mastery history, stable across editions) and per-edition node revisions carrying statement text and metadata. Person evidence/state and OB3/CLR/qualification alignments reference the durable node; psychometric pooling and reproducibility reference the edition. This extends the Person-rooted durable-history principle to the object side of competency history. - Associations widen to the CASE vocabulary and may cross frameworks. The
parent|prerequisite|relatedenum grows toward CASE’s association types (exactMatchOf, isPartOf, precedes, replacedBy, isTranslationOf, …), and cross-framework associations become representable — crosswalks and framework translations are core language-platform features, not boundary exotica. - CASE’s descriptive field set enters core as neutral columns (coding scheme, item type, education level, language, abbreviated statement, …).
Why the QTI precedent inverts again
Section titled “Why the QTI precedent inverts again”- CASE is semantically richer only on the descriptive layer. Emergent’s hardest competency concerns — immutable editions for research reproducibility (ADR-0005, ADR-0007), evidence, derived state, time-aware content alignment — are all outside CASE’s scope and would survive as extensions under any re-base; the extension, not the standard, would carry the load-bearing invariants.
- CASE’s native lifecycle (mutable documents, status dates,
replacedBy) runs against the frozen-snapshot grain research requires; re-basing would mean enforcing our most critical invariant against the adopted standard’s semantics. - The dual-model cost that justified the QTI pivot is absent: CASE is flat and enumerable (~20 CFItem fields, 10 association types), so boundary mapping is bounded and provable by a round-trip CI gate.
- 1EdTech CASE conformance tests service behavior; a projection satisfies it.
Considered and rejected
Section titled “Considered and rejected”- Re-base on CASE core + extensions. Its real strengths — durable item identity and native authoring of subject packs as CASE documents — were respectively absorbed into core (durable nodes) and judged servable by a totality-gated provider projection. What remained exclusive to re-base was wire-shape storage, which is mostly liability (spec-evolution coupling, mutable-document semantics).
- Minimal expansion (fields + crosswalk table only). Cheapest, but leaves the longitudinal node-identity flaw — the exact category of omission the standards-first strategy exists to catch early, and far harder to fix after evidence pipelines build on per-version nodes.
Consequences
Section titled “Consequences”- Schema rework before any consumer lands: durable
competency_node+ per-edition revision table; evidence/state/alignment FKs re-point to durable nodes (+ edition where pooling requires it); association table replaces the version-scoped edge table. Zero application code uses these tables today (seeds/tests only), so this is an ADR-0010-style in-place reshape — the cost is at its historic minimum. - The CASE consumer follows the OneRoster consumer architecture (batches, staging snapshots, reconcile); imported framework updates create new editions with node continuity via CASE GUID bindings.
- Emergent-authored frameworks (subject packs) gain a provider/export path as CASE CFPackages, gated by the same round-trip totality test as OneRoster (ADR-0012).
docs/architecture/competency-framework-model.mdneeds updating to the durable node + revision model.