Generated by bun run conformance:render — do not edit by hand.
Denominator: pinned Coverage Map docs/conformance/maps/xapi-v2.0.json (generated 2026-06-22). See conform-ed ADR-0013 (map) and emergent ADR-0028 (overlay).
| Profile |
Requirements |
Done |
Partial |
Other |
Progress |
| attachment |
1 |
1 |
0 |
0 |
████████████████ 100% |
| context |
2 |
2 |
0 |
0 |
████████████████ 100% |
| statement |
8 |
8 |
0 |
0 |
████████████████ 100% |
| Req |
Level |
Status |
Evidence |
Statement |
| XAPI-ATT-1 |
MUST |
✅ done |
xapi:2.0:conf:attachment/XAPI-ATT-1 |
An Attachment MUST carry a usageType (IRI), a display Language Map, a contentType, a length and the sha2 hash of its contents. |
| Req |
Level |
Status |
Evidence |
Statement |
| XAPI-CTX-1 |
MUST |
✅ done |
xapi:2.0:conf:context/XAPI-CTX-1 |
When a Context references an Activity through contextActivities, each of parent, grouping, category and other is a list of Activities. |
| XAPI-CTX-2 |
MUST |
✅ done |
xapi:2.0:conf:context/XAPI-CTX-2 |
A Context’s contextAgents / contextGroups entries (IEEE 9274.1.1) carry the correct objectType and the related Agent / Group; a context statement reference is a StatementRef. |
| Req |
Level |
Status |
Evidence |
Statement |
| XAPI-STMT-1 |
MUST |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-1 |
A Statement MUST carry an actor, a verb and an object. |
| XAPI-STMT-2 |
MUST |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-2 |
An Agent MUST be identified by exactly one Inverse Functional Identifier — mbox, mbox_sha1sum, openid or account. |
| XAPI-STMT-3 |
MUST |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-3 |
An identified Group MUST have exactly one IFI; an anonymous Group (no IFI) MUST carry a member list. |
| XAPI-STMT-4 |
MUST |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-4 |
A Verb MUST carry an id that is an IRI. |
| XAPI-STMT-5 |
MUST |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-5 |
An Activity object MUST be identified by an id that is an IRI. |
| XAPI-STMT-6 |
MUST |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-6 |
An Activity Definition’s interactionType MUST be one of the ten CMI interaction types (true-false, choice, fill-in, long-fill-in, matching, performance, sequencing, likert, numeric, other), and the interaction sub-components MUST NOT appear without it. |
| XAPI-STMT-7 |
MUST |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-7 |
A Result Score’s scaled MUST be a decimal between -1 and 1 inclusive; when present, raw MUST fall within min and max. |
| XAPI-STMT-8 |
MUST NOT |
✅ done |
xapi:2.0:conf:statement/XAPI-STMT-8 |
A SubStatement’s object MUST NOT itself be a SubStatement (sub-statements do not nest). |
- 125 literal items — 92 modelled ✅, 0 partial 🟡, 0 gaps ❌
- Silent gaps (in spec, not modelled): none
- conform-ed extensions (modelled, not in spec): 1
xapi:2.0:conf:attachment/XAPI-ATT-1
- isStatementAttachment requires usageType (IRI), a display Language Map, contentType, length and the sha2 hash.
xapi:2.0:conf:context/XAPI-CTX-1
- contextActivities parent/grouping/category/other are validated as lists of IRI-identified Activities.
xapi:2.0:conf:context/XAPI-CTX-2
- The 2.0 contextAgents/contextGroups entries (IEEE 9274.1.1) are validated for the correct objectType and the related Agent/Group (isStatementContextAgent / isStatementContextGroup).
xapi:2.0:conf:statement/XAPI-STMT-1
- The LRS rejects a statement missing actor, verb or object (StatementV2Schema required fields).
xapi:2.0:conf:statement/XAPI-STMT-2
- Agent IFI form (mbox/mbox_sha1sum/openid/account) is validated; an actor with no IFI is rejected.
xapi:2.0:conf:statement/XAPI-STMT-3
- isGroupStatementObject requires one IFI for an identified Group, or a non-empty member list for an anonymous one.
xapi:2.0:conf:statement/XAPI-STMT-6
- interactionType is constrained to the ten CMI types (value-set verified against conform-ed’s InteractionTypeSchema), and interaction sub-components are rejected when interactionType is absent.
xapi:2.0:conf:statement/XAPI-STMT-7
- isStatementScore enforces scaled ∈ [-1, 1] and raw within [min, max].
xapi:2.0:conf:statement/XAPI-STMT-8
- isSubStatementObject rejects a SubStatement whose object is itself a SubStatement (no nesting).