Skip to content

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 2c0115501c48e6 (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.