Generated by bun run conformance:render — do not edit by hand.
Denominator: pinned Coverage Map docs/conformance/maps/clr-v2.0.json (generated 2026-06-22). See conform-ed ADR-0013 (map) and emergent ADR-0028 (overlay).
| Profile |
Requirements |
Done |
Partial |
Other |
Progress |
| displayer |
5 |
5 |
0 |
0 |
████████████████ 100% |
| host |
2 |
2 |
0 |
0 |
████████████████ 100% |
| issuer |
7 |
7 |
0 |
0 |
████████████████ 100% |
| Req |
Level |
Status |
Evidence |
Statement |
| CLR-DSP-1 |
MUST |
✅ done |
clr:2.0:conf:displayer/CLR-DSP-1 |
A displayer MUST verify a presented ClrCredential and correctly determine its state — valid, expired or revoked — before display, and MUST allow a viewer to trigger verification and retrieve the result. |
| CLR-DSP-2 |
MUST |
✅ done |
clr:2.0:conf:displayer/CLR-DSP-2 |
A displayer MUST present the record’s name, description, issuer name, issue date (validFrom), verification status, and the image when present. |
| CLR-DSP-3 |
MUST |
✅ done |
clr:2.0:conf:displayer/CLR-DSP-3 |
A ClrCredential MUST be treated as expired when the current date-time is after its validUntil. |
| CLR-DSP-4 |
MUST |
✅ done |
clr:2.0:conf:displayer/CLR-DSP-4 |
A ClrCredential MUST be treated as revoked when credentialStatus is present with type ‘1EdTechRevocationList’; credentialStatus.id MUST be the URL of the issuer’s credential status method. |
| CLR-DSP-5 |
MUST |
✅ done |
clr:2.0:conf:displayer/CLR-DSP-5 |
A displayer MUST support the Data Integrity proof cryptosuites and MUST verify credentials expressed against the W3C VC Data Model 2.0 context. |
| Req |
Level |
Status |
Evidence |
Statement |
| CLR-HST-1 |
MUST |
✅ done |
clr:2.0:conf:host/CLR-HST-1 |
The getCredentials response MUST return ClrCredentials, each independently verifiable; VC-JWT-signed credentials MUST be carried in compactJwsString. A host MUST import and re-export a ClrCredential with no data loss. |
| CLR-HST-2 |
MUST |
✅ done |
clr:2.0:conf:host/CLR-HST-2 |
A CLR API service error/status response MUST be reported through the imsx_statusInfo structure, carrying at least an imsx_codeMajor and imsx_severity. |
| Req |
Level |
Status |
Evidence |
Statement |
| CLR-ISS-1 |
MUST |
✅ done |
clr:2.0:conf:issuer/CLR-ISS-1 |
The @context MUST begin with the VC 2.0 context URI (https://www.w3.org/ns/credentials/v2) followed by the CLR 2.0 context URI. |
| CLR-ISS-2 |
MUST |
✅ done |
clr:2.0:conf:issuer/CLR-ISS-2 |
The type MUST be an unordered set containing ‘VerifiableCredential’ and ‘ClrCredential’. |
| CLR-ISS-3 |
MUST |
✅ done |
clr:2.0:conf:issuer/CLR-ISS-3 |
credentialSubject MUST be a ClrSubject that carries the learner’s achievements and the verifiable AchievementCredentials. |
| CLR-ISS-4 |
MUST |
✅ done |
clr:2.0:conf:issuer/CLR-ISS-4 |
The issuer MUST be a Profile identified by an IRI in the issuer.id property. |
| CLR-ISS-5 |
MUST |
✅ done |
clr:2.0:conf:issuer/CLR-ISS-5 |
An issued ClrCredential MUST be signed with a supported proof mechanism — a Data Integrity proof (eddsa-rdfc-2022 or ecdsa-sd-2023) or an external VC-JWT proof — and an embedded proof’s proofPurpose MUST be ‘assertionMethod’. |
| CLR-ISS-6 |
MUST |
✅ done |
clr:2.0:conf:issuer/CLR-ISS-6 |
The issued ClrCredential MUST contain all required fields (id, @context, issuer, validFrom, credentialSubject) and be valid: it MUST pass JSON-LD validation in safe mode. |
| CLR-ISS-7 |
MUST |
✅ done |
clr:2.0:conf:issuer/CLR-ISS-7 |
The ClrSubject MUST aggregate the learner’s record as a set of verifiable credentials (verifiableCredential), each itself a VerifiableCredential, alongside the achievements they evidence. |
- 409 literal items — 299 modelled ✅, 39 partial 🟡, 0 gaps ❌
- Silent gaps (in spec, not modelled): none
- conform-ed extensions (modelled, not in spec): none
clr:2.0:conf:displayer/CLR-DSP-1
- emergent verifies a third-party ClrCredential through the same conform-ed engine + host resolvers as Open Badges. Proven offline by driving the real verifyCredentialDocument service against a signed CLR + in-memory JWKS.
clr:2.0:conf:displayer/CLR-DSP-2
- The admin-console displayer renders the verdict, its axes, and the verified record’s fields (name, issuer, type, validity dates) via summarizeCredential — the same panel that renders Open Badges. Proven offline by the field-extraction test; the panel is covered by a render test.
clr:2.0:conf:displayer/CLR-DSP-3
- The verifier determines the validity-window state of a CLR (valid / expired / not-yet-valid). Proven offline against an authentic but expired ClrCredential.
clr:2.0:conf:displayer/CLR-DSP-4
- The verifier evaluates a CLR’s credentialStatus against its BitstringStatusList (active / revoked / suspended), fail-safe on an uncheckable status. Proven offline against a revoked CLR.
clr:2.0:conf:displayer/CLR-DSP-5
- The verifier supports both securing mechanisms — VC-JOSE and embedded eddsa-rdfc-2022 Data Integrity — for a ClrCredential, the same engine proven for Open Badges. Proven offline.
clr:2.0:conf:host/CLR-HST-1
- emergent now operates a CLR API host (capability-b; ADR-0038), sharing the OAuth2 authorization server with the Open Badges host. The getCredentials aggregation endpoint (GET /ims/clr/v2p0/credentials, scope-gated on the CLR credential.readonly) returns the learner’s owned, currently-valid ClrCredentials as the getClrCredentialsResponse envelope (compactJwsString for VC-JOSE, credential for embedded-proof). Proven offline: the shared assembler validates against conform-ed’s GetClrCredentialsResponseSchema.
clr:2.0:conf:host/CLR-HST-2
- The CLR host returns the imsx_statusInfo service-error envelope on any getCredentials failure (bad token, insufficient scope, unconfigured host), shared with the Open Badges host. Proven offline against conform-ed’s ImsxStatusInfoSchema.
clr:2.0:conf:issuer/CLR-ISS-1
- @context ordering (VC 2.0, then CLR 2.0, then OB 3.0) is enforced by the export assembler and asserted in the conformance lane against the official 1EdTech CLR JSON Schema.
clr:2.0:conf:issuer/CLR-ISS-2
- type is the unordered set { VerifiableCredential, ClrCredential }, asserted in the lane.
clr:2.0:conf:issuer/CLR-ISS-3
- credentialSubject is a ClrSubject carrying the learner identifier and the inner AchievementCredentials, each keeping its own per-org issuer; asserted in the lane. Each inner AchievementCredential now carries the canonical Achievement.image + its issuer Profile.image (ADR-0035) — the same always-resolving /img URLs the standalone OB export emits — so a CLR verifier renders badge art. Each inner issuer Profile is also spec-complete with the authored descriptive fields + derived parentOrg (ADR-0036). The platform-level CLR envelope issuer (null-org) stays deliberately minimal (name only) — the rich per-org Profiles ride on the inner achievements.
clr:2.0:conf:issuer/CLR-ISS-4
- ⚠️ The transcript issuer is the platform-default (null-org) Profile + signer; inner achievements keep their own org issuers. Proofs are VC-JOSE (compact JWS, EdDSA/Ed25519), verified externally via the published JWKS — not embedded data-integrity proofs.
clr:2.0:conf:issuer/CLR-ISS-5
- The ClrCredential is signed via the VC-JWT path (compact JWS, EdDSA/Ed25519) behind the KeySigner seam and is JWKS-verifiable; the lane asserts the signature verifies.
clr:2.0:conf:issuer/CLR-ISS-6
- The exported ClrCredential carries all required fields and validates against the official 1EdTech CLR 2.0 schema.
clr:2.0:conf:issuer/CLR-ISS-7
- The ClrSubject aggregates the learner’s inner AchievementCredentials in verifiableCredential; the lane asserts two inner credentials with their deterministic ids.