Skip to content

XAPI 2.0 — conformance status

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).

Information-model coverage (vs conform-ed model)

Section titled “Information-model coverage (vs conform-ed model)”
  • 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).