Pinned Coverage Maps
These JSON files are vendored, version-pinned copies of the Coverage Maps
generated by @conform-ed/coverage (conform-ed ADR-0013). They are the denominator
the emergent conformance overlay is authored against (emergent ADR-0028).
Do not hand-edit them — they are generated artifacts. To repin, regenerate in
conform-ed (bun run --cwd packages/coverage coverage:generate), copy the map here,
and update coverageMapSha256 in the matching overlay under ../overlays/. The
gate fails if an overlay’s recorded sha does not match its pinned map (forcing
re-reconciliation whenever the upstream model/schema moves).
Most maps are pinned at conform-ed develop commit 01c48e6 (the ADR-0017 value-set tip). The
seven information-model maps re-pinned there now additionally carry valueSets — each map’s
controlled vocabularies, value-set-verified against conform-ed’s Zod enums (ADR-0017): every
published member safeParses against the enum that models it, so the published vocabulary and
conform-ed’s model are proven identical. The re-pin from 618f351 is purely additive for these
seven (identical items / conformance requirements / model coverage; only the valueSets array and
its three rollup keys are new). The two gap-heavy QTI 2.x maps stay at 618f351 — emergent does not
implement the 2.x binding and conform-ed models no QTI 2.x controlled vocabulary, so the re-pin is a
no-op for them. lti-v1.3.json was re-pinned 2c01155 → 01c48e6 (2026-06-23): the ADR-0017 work
added hand-authored curated information-model denominators for the prose-only LTI profiles (Core
launch, Deep Linking content items, NRPS container, Proctoring) + the role-vocabulary value-sets,
growing the map 46 → 283 items reconciling 0 silent gaps — a fuller denominator only; the 27
behavioural conformance requirements (the LTI board) are unchanged. cmi5-v1.0.json and the four
xAPI / VC / H5P maps are introduced at 01c48e6 (ADR-0017 curated-denominator + value-set work).
Maps with residues.normalisations carry the documented XSD→Zod renames (conform-ed-side, not
emergent gaps) — see ADR-0013.
| Map | Source (@conform-ed/coverage) |
conform-ed commit | value-sets |
|---|---|---|---|
open-badges-v3.0.json |
maps/open-badges-v3.0.json |
01c48e6 |
4 |
clr-v2.0.json |
maps/clr-v2.0.json |
01c48e6 |
5 |
case-v1.1.json |
maps/case-v1.1.json |
01c48e6 |
3 |
oneroster-v1.2.json |
maps/oneroster-v1.2.json |
01c48e6 |
5 |
common-cartridge-v1.3.json |
maps/common-cartridge-v1.3.json |
01c48e6 |
3 |
common-cartridge-v1.4.json |
maps/common-cartridge-v1.4.json |
01c48e6 |
2 |
qti-v3.0.1.json |
maps/qti-v3.0.1.json |
01c48e6 |
9 |
qti-v2.1.json |
maps/qti-v2.1.json |
618f351 |
— |
qti-v2.2.json |
maps/qti-v2.2.json |
618f351 |
— |
lti-v1.3.json |
maps/lti-v1.3.json |
01c48e6 |
4 |
xapi-v2.0.json |
maps/xapi-v2.0.json |
01c48e6 |
1 |
xapi-v1.0.3.json |
maps/xapi-v1.0.3.json |
01c48e6 |
1 |
vc-data-model-v2.0.json |
maps/vc-data-model-v2.0.json |
01c48e6 |
— |
h5p-v1.json |
maps/h5p-v1.json |
01c48e6 |
1 |
cmi5-v1.0.json |
maps/cmi5-v1.0.json |
01c48e6 |
2 |
cat-v1.0.json |
maps/cat-v1.0.json |
037f29b |
3 |
caliper-v1.2.json |
maps/caliper-v1.2.json |
191b7b5 |
1 |
The three QTI maps are the gap-heavy XSD maps: each carries hundreds of silent gaps, triaged by
category (gapGroups in the overlay, ADR-0028) rather than per leaf — QTI 3.0.1 by subtree
(content model / expression operators / ARIA / structural tail, since emergent implements 3.0
natively), QTI 2.1 / 2.2 by a single catch-all (emergent is QTI 3.0-native and does not implement
the 2.x binding). caliper-v1.2 is pinned with an entirely not-applicable overlay — emergent’s
analytics rail is xAPI (the LRS + cmi5 runtime), not Caliper, so it ships no Caliper Sensor and emits
no Caliper Envelope/Event/Entity; the eight conformance MUSTs and the whole caliper:1.2:def:* model
are triaged not-applicable by a single catch-all, exactly like the QTI 2.x maps. Pinning it (rather
than leaving it to the conform-ed catalogue alone) puts the consciously-declined parallel analytics
spec on emergent’s board as a visible, reasoned row for a certifier.
The four maps introduced at 01c48e6 overlay emergent roles reached through real surfaces: xapi-v2.0
/ xapi-v1.0.3 track the LRS (apps/lrs, which validates statements against conform-ed’s
StatementV2Schema and advertises both versions); vc-data-model-v2.0 records that the OB 3.0 / CLR
2.0 credentials emergent assembles are sound at the base W3C Verifiable Credentials layer (issuer
role; holder/verifier/embedded-proof are not-applicable); h5p-v1 tracks the .h5p package importer
(h5p.json validated against H5pPackageManifestSchema; the library/semantics manifests are the
embedded H5P runtime’s concern, not-applicable). cmi5-v1.0 is the cmi5.xml course-structure-document
map, and emergent is a cmi5 importer/validator (parseCmi5PackageArchive): it enforces CS-1 / CS-2
/ CS-3 / CS-4 / CS-6 (rejecting non-IRI or duplicate course/block/AU/objective ids, an AU with no
launchable url, an AU masteryScore outside the [0,1]-inclusive bound, and bad objective idrefs;
value-set-checking AU moveOn against Cmi5MoveOnSchema), with CS-5 not-applicable (launchMethod not
consumed). Its other cmi5 role — the LMS runtime (AU launch + the cmi5-defined xAPI statements) —
is a separate surface this document map does not measure, exercised by the conform-ed cmi5 CATAPULT
lane. cat-v1.0 (Computerized Adaptive Testing, pinned at 037f29b, the curated CAT data-model + REST-operations
map introduced one commit before 01c48e6) is now pinned: per ADR-0037 emergent ships a basic-but-real in-process
Rasch/EAP reference engine behind the CatV1_0 seam and claims the platform/delivery role, so the overlay marks the
delivery + section profiles done and the operations profile partial (the standardized REST/OAuth transport binding is
deferred to the future engine swap, not walked here). Where emergent emits a controlled
vocabulary as bare hand-built literals rather than through schema-validated assembly (the OneRoster
REST envelope), a value-set drift guard in the feature’s test suite asserts those literals stay within
the value-set-verified enums.
oneroster-v1.2.json additionally carries the transport axis (conform-ed ADR-0013): the
three service documents’ OpenAPI paths walked into operation / parameter / security
items. These are a distinct axis from the information model — never reconciled, so excluded from
the render’s model-coverage figure (reported separately) — that the §4 REST-binding requirements
(OR-5, OR-GB-5, OR-RES-3, OR-AR-3, OR-TR-1…5) cross-link to.
lti-v1.3.json is the hybrid LTI 1.3 + Advantage map (ADR-0033): the AGS profile has a literal
denominator (the AGS OpenAPI’s five media-type schemas, lifted into components.schemas from their
illustrative inline form — conform-ed vendor/lti/v1_3/PROVENANCE.md) plus its paths transport
axis (7 operations, 6 query filters, no declared security scheme); and since the ADR-0017 re-pin
(01c48e6) Core launch, Deep Linking content items, NRPS membership container and Proctoring carry
hand-authored curated information-model denominators (no published schema exists for them), with
the LTI role vocabulary as value-sets. The whole map reconciles 0 silent gaps with 7 honest
extensions (conform-ed’s contracts model the curated denominators in full). The overlay tracks the
tool role only (emergent is an LTI tool, not a platform); cited is 0 throughout (the prose is
prose-case “must”, not RFC-2119 MUST).
Until @conform-ed/coverage is published, the pin is this committed copy. Once it
ships to npm, the repin step becomes a dependency bump + copy.