Skip to main content

πŸ“Š Implementation Status & Capability Matrix

Evalium β€” Execution Ledger Edition (Authoritative)

This document tracks the implementation state of Evalium’s capabilities in a single, canonical view.

It is intentionally layered to distinguish:

  • what defines the truth of the system
  • what constitutes first-class product functionality
  • what enables adoption and usability
  • what is derived or future-facing

Important reading rule Section placement reflects importance to platform integrity, not engineering effort or commercial value.

  • If a capability in Section A is wrong, the product fails under scrutiny.
  • Capabilities in later sections may be essential for adoption, but they do not redefine truth.

Column Definitions​

ColumnMeaning
CapabilityStable, broad name (non-industry-specific)
DescriptionWhat the capability does
BackendBackend/API/domain implementation state
WorkflowEnd-to-end operational workflow state
FrontendUI surface state (including intentional deferrals)
K / O / EWhich KOE modes use it
WORM ScopeExecution, Scaffolding, or N/A
Defensibility ControlsAppend-only, Snapshot, Context, Verification, Step-Up
Current Implementation NotesHow it exists today
Dependencies / BlockersWhat must exist first
Source DocsCanonical references

Status Lens (Backend-First Execution)​

Evalium is intentionally developed backend-first. Matrix rows should be read with this lens:

  • Backend answers: are primitives/contracts/enforcement implemented and testable?
  • Workflow answers: is the operational flow usable end-to-end at the API/engine level?
  • Frontend answers: is there a production UI surface for this capability?

Status values used across the three dimensions:

  • Implemented
  • Partial
  • Planned
  • Not Started
  • Deferred (by design) (intentional frontend postponement while backend matures)
  • N/A

Backend Maturity Gate​

A capability is considered backend-mature when all are true:

  • Contract is stable (schema/API semantics fixed enough for frontend activation).
  • Enforcement is active where required (RLS, idempotency, verification/context policy).
  • Regression coverage exists (smoke/integration tests listed in notes).
  • Canonical docs are aligned (FOUNDATION, architecture, security/policy docs).

KOE Consistency Note: K/O/E features must consume the Phase A primitives consistently. See the KOE Primitive Consistency Map in Section B.


πŸŸ₯ Section A β€” Core Execution Ledger (Non-Negotiable)

These capabilities define forensic truth. They are not optional and must remain stable over time.

CapabilityDescriptionBackendWorkflowFrontendK/O/EWORM ScopeDefensibility ControlsImplementation NotesDependenciesSource Docs
Append-Only SubmissionsDurable execution records are never mutatedImplementedImplementedN/AK O EExecutionAppend-onlysubmissions, submission_items treated as immutableβ€”FOUNDATION.md
Amend (Not Edit)Corrections via additive recordsImplementedImplementedN/AK O EExecutionAppend-only, Historysubmission_score_versions, correction batchesβ€”FOUNDATION.md, ADR-0010
Void (Not Delete)Logical invalidation with audit trailImplementedImplementedN/AK O EExecutionAppend-only, ReasonSubmission/evidence void endpoints append ledger events (submission.voided, evidence.voided); submissions move to status=voided; evidence void supported for submission + item scope and blocks further evidence actionsStep-up authFOUNDATION.md
Version SnapshotsFreeze definition at execution timeImplementedImplementedN/AK O EExecutionSnapshotversion_snapshot stored on submissionβ€”FOUNDATION.md
Execution Ledger BoundarySeparate runtime vs durable dataImplementedImplementedN/AK O EExecutionLifecycle separationdelivery_sessions vs submissionsβ€”FOUNDATION.md, LEDGER-BOUNDARY-AND-ENFORCEMENT.md
Verification Levels (L1–L4)Trust grading of execution eventsImplementedImplementedN/AK O EExecutionVerificationverification_level_policies drive context/step-up requirements; submissions, evidence, review actions, claims/disputes, and evaluation publish enforce policy at write boundaryStep-up authFOUNDATION.md
Contextual BindingRequire context for high-trust eventsImplementedImplementedN/AK O EExecutionContextPolicy-driven context enforcement across submissions/evidence/review/claims/disputes/evaluation publish via validateVerificationContextWithPolicyTxPolicy engineFOUNDATION.md
Step-Up IdentityRe-authentication for high-risk actionsImplementedImplementedN/AK O EExecutionStep-Upstep_up_proofs issued on auth verify (magic link) and validated by context (auth.step_up + method/id + expiry + actor match); evaluation publish + L4 actions require valid proofAuth workroles-and-access-control.md
Ledger-Derived ReportingReports from snapshots, not live joinsImplementedImplementedN/AK O EExecutionSnapshotReporting models built from submissions with async projection jobs (submission/range/remediation/telemetry); coverage includes summary, question-health, and range-backfill smokes (backend/tests/test_reporting_all.sh)β€”architecture
Execution Truth CanonLedger is final source of historyImplementedImplementedN/AK O EExecutionAllEnforced by architectureβ€”FOUNDATION.md
Idempotent Writes (Keyed)Prevent duplicate execution writesImplementedImplementedN/AK O EN/AConsistencyidempotency_keys now protects all targeted durable/admin write surfaces: sessions; assignments; users/roles/groups/import; subjects/import; submissions/evidence/approval/hash/void/subject-links; claims/disputes; engagements; remediation create/apply/revert; compliance job creation; evaluation + bucket authoring (including feedback/sections/items); question + passage authoring; programme administration; reporting projection/percentile maintenance. Smoke coverage includes backend/tests/admin_idempotency.sh, backend/tests/authoring_idempotency.sh, backend/tests/programmes_idempotency.sh, backend/tests/reporting_idempotency.sh, backend/tests/results_remediation_idempotency_key.sh, backend/tests/compliance_idempotency.sh, and backend/tests/engagements_idempotency.sh.β€”FOUNDATION.md
Delegated Authority ProvenanceRecord acting-on-behalf relationshipsImplementedImplementedN/AK O EExecutionProvenanceAuthority context accepted on submissions + evidence decisions; remediation batch create/apply/revert writes authority context into compliance ledger outbox metadata; defensibility smoke validates submission approval + remediation authority contextA1, A3FOUNDATION.md
Visibility EventsCapture view/export/client-access eventsImplementedImplementedN/AK O EExecutionVisibilityView/export events emit visibility metadata (visibilityType, visibilityChannel); Glass Box access treated as visibility event; evidence access logged on submission view when evidence is present; subject list/detail reads logged; assignment link redeem logs visibility; programme/engagement list/detail/timeline/glass-box reads logged; enrolment list/detail/progress/user reads loggedA1FOUNDATION.md, architecture
Retention Intent MarkersRetain/hold metadata on recordsImplementedImplementedN/AK O EExecutionRetentionSubmission-level retain_until/retention_basis/hold_flag markers added; defaults now derived from active retention_policies on submitComplianceFOUNDATION.md
Enforcement Mode DeclarationCapability enforcement modes (mandatory/optional/situational/future)ImplementedImplementedN/AK O EN/AEnforcementEnforcement mode registry seeded in defensibility_enforcement_modesFOUNDATION, ScorecardFOUNDATION.md
Identity & Attribution (Actor vs Subject)Separate subject-of-record from actor identityImplementedImplementedN/AK O EExecutionAttributionSubject/asset scaffolding + assignment subjects auto-link to submissions at submit-time; manual submission subject links remainSubjectsdocs/implementation/observational-implementation.md

🟧 Section B β€” Primary Platform Capabilities (First-Class)

These are core product features built on top of the ledger.

CapabilityDescriptionBackendWorkflowFrontendK/O/EWORM ScopeDefensibility ControlsImplementation NotesDependenciesSource Docs
Knowledge Delivery (K)Structured question-based executionImplementedImplementedDeferred (by design)KExecutionSnapshotStrong backend maturityβ€”KOE-model.md
Observation Delivery (O)Structured capture of observed workImplementedImplementedDeferred (by design)OExecutionContextFindings enforcement live (comment/evidence) with finding.detected ledger events; approval endpoints include approve/reject/request-changes/reopen with approval_status transitions; four-eyes enforced via evaluation version reviewPolicy; auto-approve supported via autoApprove; submission subjects + assignment subjects links in place; batch_id copied into submissionsContext rulesKOE-model.md
Observation FindingsDefects / issues logged during OImplementedImplementedDeferred (by design)OExecutionAppend-only, Contextfinding.detected ledger events + reporting.report_findings projection (with ledger_event_id); evidence/comment required before approval; reporting exposes /reporting/findings?submissionId=... for claims/disputes linkageObservation Deliverydocs/implementation/observational-implementation.md
Claims / AssertionsDurable professional verdictsImplementedPartialDeferred (by design)K O EExecutionAppend-only, SnapshotClaim objects + sources (submission/submission item/ledger event) + authority/context stored; L4 sources require full verification context; validity windows enforced (valid_from/valid_until + expiry without deletion) + validAt list filter + validityStatus response; list/get/create + event append live; lifecycle events (asserted,amended,withdrawn,voided,note) with status updatesA1, A3, A8docs/implementation/implementation-phasing-and-maturity-plan.md
Dispute LifecycleFormal challenge/response containersImplementedPartialDeferred (by design)K O EExecutionAppend-only, AuditDispute containers + event stream (opened, challenge, response, resolution, withdrawn, note); L4 targets require context on creation/events; status derived via events; list/get/create + event append + event list live; UI and dispute review workflow pendingClaims / Assertionsdocs/implementation/implementation-phasing-and-maturity-plan.md
Subjects (People/Assets)First-class subjects of recordImplementedImplementedDeferred (by design)OScaffoldingreferenceSubjects/asset schema + CRUD + import/filter APIs + submission subject links live with org/tenant scoping; assignment-based visibility implemented via assignment_subjects + assignment target read policy; multi-subject assignment linking supportedObservation Deliverydocs/implementation/observational-implementation.md
Evidence Delivery (E)Artefact capture as execution eventsImplementedImplementedDeferred (by design)EExecutionContextFirst-class, ledger-bound, policy-driven; standalone + inline + mixed implemented; smokes upload to MinIO and ledger includes hashing + storage tier + storage-tier workerUpload workflowKOE-model.md, architecture, evidence-ledger-implementation.md
Inline EvidenceEvidence attached to K/O itemsImplementedImplementedDeferred (by design)K OExecutionContextInline entry point with item-level ledger events; reuses evidence coreEvidence coreKOE-model.md, architecture, evidence-ledger-implementation.md
Mixed EvidenceAnswer + evidence in same itemImplementedImplementedDeferred (by design)K O EExecutionContextMixed answer + artefact flow with item-linked ledger eventsEvidence coreKOE-model.md, architecture, evidence-ledger-implementation.md
Standalone EvidenceEvidence as primary task outputImplementedImplementedDeferred (by design)EExecutionContextSubmission with zero items + ledger decisionsEvidence coreKOE-model.md, architecture, evidence-ledger-implementation.md
Evidence Integrity VerificationHash checks against stored artefactsImplementedImplementedDeferred (by design)K O EExecutionIntegrityevidence_integrity_checks queue + worker; on-demand enqueue via /submissions/\{id\}/evidence/verify (or item route) writes evidence.integrity.checked ledger eventsEvidence coreimplementation-phasing-and-maturity-plan.md, evidence-ledger-implementation.md
AssignmentsIssue executable tasksImplementedPartialDeferred (by design)K O EScaffoldingSnapshotCore issuance + redeem + monitor + override + schedules are live (POST /assignments, POST /assignments/redeem, GET /assignments/\{id\}/monitor, POST /assignments/\{id\}/override, POST /assignments/schedules) with validity windows (validFrom, validUntil) and durable override records. Command-centre monitor label mapping is now explicit for frontend consistency: backend `invitedstartedcompleted
Delivery SessionsRuntime execution windowImplementedPartialDeferred (by design)K O EScaffoldingN/ASession create/answer/submit + event/probe APIs are live (POST /evaluations/\{id\}/sessions, POST /evaluations/\{id\}/sessions/\{sessionId\}/answers, POST /evaluations/\{id\}/sessions/\{sessionId\}/submit, POST /evaluations/\{id\}/sessions/\{sessionId\}/events, GET /evaluations/\{id\}/sessions/\{sessionId\}/lockdown/probe) and remain non-durable runtime state. UX gap now tracked: explicit proctor command contract (pause/resume/terminate with normalized reason/metadata semantics) is not yet a first-class backend action surface.Assignments + proctor command contractFOUNDATION.md, UX-OPERATIONS.md
ProgrammesReusable execution templatesImplementedImplementedDeferred (by design)K O EScaffoldingSnapshotWell-implementedβ€”architecture
Engagements / ProjectsInstance-level execution threadImplementedImplementedDeferred (by design)K O EScaffoldingreferenceCore tables + timeline + glass-box feed in place; lifecycle guardrails block assignment/session starts when engagement is not open; programme enrolments now accept engagementId so orchestrated assignments inherit engagement context and submissions persist it end-to-end (TestProgrammeProgressLifecycle, backend/tests/engagements_programme_linkage.sh)Programmesarchitecture
Client Glass BoxRead-only execution visibilityImplementedPartialDeferred (by design)K O EProjectionSnapshotBackend lenses (assignment/submission/engagement/programme) + link-principal auth are implemented with scope-id enforcement, read-only middleware, amendment history, and normalized verification summaries (not_required for L1/L2). Coverage includes integration tests (TestGlassBoxAssignmentLinkPrincipal) and smoke suite (backend/tests/test_glassbox_all.sh, including backend/tests/glassbox_engagement.sh). Remaining gap is frontend glass-box views.Engagementsarchitecture, glass-box-implementation.md
Role & Capability EnginePermission enforcementImplementedImplementedN/AAllN/AAuthorizationCapability-basedβ€”roles-and-access-control.md
Magic Link AccessLow-friction accessImplementedImplementedN/AAllN/AAuthViewer tier existsβ€”roles-and-access-control.md

KOE Primitive Consistency Map (Phase A Consumption)​

KOE CapabilityPhase A Primitives Consumed
Knowledge Delivery (K)A1 Lifecycle, A2 Snapshots, A3 Amendments, A4 Authority, A5 Visibility, A7 Enforcement, A8 Identity & Attribution
Observation Delivery (O)A1 Lifecycle, A2 Snapshots, A3 Amendments, A4 Authority, A5 Visibility, A7 Enforcement, A8 Identity & Attribution
Evidence Delivery (E)A1 Lifecycle, A2 Snapshots, A3 Amendments, A4 Authority, A5 Visibility, A7 Enforcement, A8 Identity & Attribution

Proof Runs (Consistency Evidence)​

Proof RunPrimitives Exercised
backend/tests/test_delivery_all.shA1, A2, A5, A6
backend/tests/test_observations_all.shA1, A3, A8 (subjects visibility + batch_id + findings gating)
backend/tests/evidence_ledger_events.sh + backend/tests/evidence_standalone.sh + backend/tests/evidence_inline.shA1, A3, A5, A6, A7
backend/tests/test_defensibility_all.shA4, A6, A7
backend/tests/test_glassbox_all.shA2, A5
backend/tests/test_hashing_all.shA2, A6
backend/tests/test_reporting_all.shA2

🟨 Section C β€” Supporting & Enabling Capabilities

Important for adoption and usability, but not defining truth. Frontend deferrals in this section are intentional while backend contracts and primitives are hardened.

CapabilityDescriptionBackendWorkflowFrontendK/O/EWORM ScopeDefensibility ControlsImplementation NotesDependenciesSource Docs
Offline CaptureExecute without connectivityPlannedPlannedDeferred (by design)O EScaffoldingSync rulesFull spec existsSync APIoffline-delivery-implementation.md
Offline SyncBatch submit execution eventsPlannedPlannedDeferred (by design)O EScaffoldingIntegrityRequires batch endpointsLedger APIoffline-delivery-implementation.md
Smart PasteStructured paste for authoringPlannedPlannedDeferred (by design)N/AN/AN/ASpec existsauthoring pipelinesmart_paste_feasibility_updates_addendum_v_1.md
Structured Error & Validation ContractStable API error semantics for localisable UX flowsPartialPartialDeferred (by design)AllN/AConsistencyPlatform already emits stable top-level error envelopes (code, message, optional details) and domain-specific status/reason enums. Remaining work is cross-surface field-error normalization + warning/error contract alignment for authoring and operations workflows so UI can localise and gate actions consistently without parsing raw strings.Shared error schema + endpoint contract testsSTATUS-AND-READINESS-CONTRACT.md, UX-SHARED-COMPONENTS-CONTRACT.md
Bulk ImportUsers, assignments, contentPartialPartialDeferred (by design)N/AN/AN/ACSV preview/commit import is live for users, subjects, assignments, and authoring content (POST /users/import/preview, POST /users/import/commit, POST /subjects/import/preview, POST /subjects/import/commit, POST /assignments/import/preview, POST /assignments/import/commit, POST /questions/import/preview, POST /questions/import/commit, POST /passages/import/preview, POST /passages/import/commit, POST /evaluations/import/preview, POST /evaluations/import/commit) with keyed idempotent commit semantics on commit endpoints. Preview response shapes are now normalized (valid/errors always arrays, never null) across import surfaces, with smoke assertions tightened to assert array types and counts. CI guardrail scripts/check_openapi_import_preview_shapes.sh now enforces required valid/errors/total contract fields in OpenAPI preview schemas. Smoke coverage: backend/tests/users_import_idempotency.sh, backend/tests/observation_subjects_import.sh, backend/tests/observation_subjects_import_idempotency.sh, backend/tests/bulk_import_content_types.sh, backend/tests/assignments_import_idempotency.sh, backend/tests/questions_import_idempotency.sh, backend/tests/passages_import_idempotency.sh, backend/tests/evaluations_import_idempotency.sh (authoring suite includes question/passage/evaluation import smokes).Import engineProduct docs
Domain-Scoped Taxonomy EngineControlled taxonomy with domain separationPartialPartialDeferred (by design)N/AN/AN/ABackend taxonomy foundation is live with facets/terms, retire/restore, where-used counts, content assignment endpoints for questions/evaluations, hierarchy primitives, and inventory taxonomy filters. taxonomy_term_relations provides relation-first parent/child links with strict-tree default and cycle rejection; read lineage endpoints are available (GET /api/v1/taxonomy/terms/\{id\}/children, GET /api/v1/taxonomy/terms/\{id\}/ancestors). Inventory list surfaces now support taxonomy filters (terms_any, terms_all, optional include_descendants) on questions and evaluations. Domains remain explicitly separated (content, skills, subjects, identity) with RLS and content-domain assignment enforcement. Submission version_snapshot now freezes taxonomy references (evaluationTaxonomyTermIds, questions.{questionVersionId}.taxonomyTermIds) for defensible reconstruction. Cross-domain mapping foundation is now in place with versioned mapping sets/rules and resolver APIs (POST /api/v1/taxonomy/skill-mapping-sets, POST /api/v1/taxonomy/skill-mapping-sets/\{id\}/versions, POST /api/v1/taxonomy/skill-mapping-sets/\{id\}/versions/\{versionId\}/publish, GET /api/v1/taxonomy/skill-mappings/resolve). Capabilities taxonomy.read / taxonomy.manage are active. OpenAPI publication is in place for taxonomy endpoints. Remaining gap (parked while authoring hardening is prioritized): bind resolver output into skills projection workers/outcomes with persisted mapping-version provenance facts.Inventory APIs + mapping-resolution -> skills projection integration (parked)content-library-approach.md, taxonomy-engine-evolution-proposal.md, COMPONENT-INTERACTION-MAP.md
Content Library Hardening ProgrammeMulti-phase hardening of inventory and packsPartialPartialDeferred (by design)K O EN/AN/AMilestone 1 (terminology alignment) completed. Inventory hardening phase 1 (richer filters/sort) completed. Taxonomy foundation phase (domain-scoped backend primitives) completed. Inventory hardening phase 2 saved-filter slice is now live with shared inventory-view engine + paired question/evaluation endpoints. Lifecycle parity increment is now live with explicit archive/restore endpoints on both inventories. Soft-delete harmonization increment is now live for question delete fallback (question_in_use -> archive). Collection presets/taxonomy conventions increment is now live via canonical inventory-view filter schema + preset keys (status.*, taxonomy.focus) with taxonomy descendants conventions. Bulk metadata actions parity is now live via paired bulk endpoints (POST /questions/bulk, POST /evaluations/bulk) supporting archive, restore, and taxonomyReplace with dryRun + per-item outcomes. Dependency/where-used graph parity is now live via paired usage endpoints (GET /questions/\{id\}/usage, GET /evaluations/\{id\}/usage) with structured dependency blocks. Normalized readiness/status projection contract enforcement is now live (shared canonical status/reason taxonomy + response contract tests + CI OpenAPI drift guardrail). Packs lineage read slice is now live (GET /content-packs/\{id\}/revisions/\{revisionId\}/lineage) including install chain + submission snapshot linkage metrics. Planned next now explicitly includes publish-propagation orchestration (publish + guided propagation impact model with active-run safeguards), granular saved-view sharing ACLs (named user/group grants beyond personal/shared), and packs workflow expansion on top of lineage read surfaces. Parity rule: where capabilities apply to both Questions and Evaluations, backend delivery is paired by default unless an explicit documented exception exists.Taxonomy + inventory roadmap executioncontent-library-approach.md, STATUS-AND-READINESS-CONTRACT.md, UX-AUTHORING.md
Compliance Case OrchestrationCase-level legal workflow over async privacy jobsPartialPartialDeferred (by design)AllScaffoldingAudit, VerificationCompliance Centre v1 backend is live for jobs/ledger/actions (/api/v1/compliance/jobs, /api/v1/compliance/forget, /api/v1/compliance/restrict, /api/v1/compliance/dsar-export, /api/v1/compliance/privacy-pack, /api/v1/compliance/unlink, /api/v1/compliance/ledger, /api/v1/compliance/retention/incidents). Missing UX-aligned backend layer now tracked: first-class request/case entity, case timeline projection, DSAR extension-notification enforcement, review/redaction stage tracking, and structured deny/partial legal-basis outcomes.Compliance jobs + ledger + case projection modelcompliance-centre.md, compliance-centre-v1-handover.md, UX-GOVERNANCE-COMPLIANCE.md
Proof Readiness & KOE Status LensDerived, explainable operator-facing status across submission, engagement, programme, and glass-box lensesPartialPartialDeferred (by design)K O EProjectionSnapshot, Context, Verification, Step-UpContract defined for dual-time readiness (defensibleAtExecution vs readyNow), explainable KOE/readiness reason codes, capability-based redaction, and a triage-friendly exceptions queue (state, owner, firstSeenAt, lastSeenAt, suppressedUntil). Phase 1 backend rollout is live for submission surfaces: canonical derived koeStatus + proofReadiness blocks now emit on core submission DTOs (GET /submissions/\{id\}, user/evaluation submission lists) and glass-box submission detail (GET /glass-box/submissions/\{id\}) with stable reason-code unit coverage and shared OpenAPI schemas. Phase 2 increment now wires dual-time policy refs on submission detail, submission lists, and glass-box detail (policyRefExecution, policyRefCurrent) using execution snapshot verification policy vs current active-version policy, with batched list-policy lookup by submission IDs (no N+1) and policy_requirements_tightened when readyNow is stricter. Phase 3 increment enforces reason redaction for link-principal glass-box submission responses by default, with explicit token capability override (canViewReadinessReasons=true) and integration/smoke contract coverage proving internal detail/list surfaces retain full reasons while glass-box defaults remain redacted. Phase 4 queue scaffold is live for submission lens: derived queue read + triage endpoints (GET /defensibility/exceptions/submissions, POST /defensibility/exceptions/submissions/{submissionId}/triage) plus explicit lifecycle refresh automation (POST /defensibility/exceptions/submissions/refresh) that upserts active exceptions and resolves cleared items while preserving triage ownership/suppression semantics. Phase 5 rollup increment is now live with engagement/programme exception rollup read surfaces (GET /defensibility/exceptions/engagements, GET /defensibility/exceptions/programme-requirements) including aggregated reason codes and affected-submission counts, and refresh sync now manages lifecycle state across submission, engagement, and programme lenses in one pass. Phase 6 now adds independent rollup triage writes (POST /defensibility/exceptions/engagements/{engagementId}/triage, POST /defensibility/exceptions/programme-requirements/{programmeRequirementId}/triage) so operators can acknowledge/suppress at each lens without mutating execution truth. Phase 7 adds persisted verification-policy snapshot versioning beyond raw level (version_snapshot.verificationPolicy.policyRef + policy profile fields) and readiness refs now prefer snapshot-captured policy refs with profile-based current-policy refs for dual-time defensibility reconstruction. Phase 8 now centralizes canonical status/reason taxonomy in a shared backend contract package and enforces it across readiness + exceptions responses with unit/integration contract coverage and tighter OpenAPI enums. Remaining gaps are now workflow-facing (lens-specific action UX), not missing backend policy snapshot provenance.Canonical reason taxonomy + policy version refs + projection tables + redaction enforcement + contract testsSTATUS-AND-READINESS-CONTRACT.md, KOE-model.md, architecture
Question Library (Inventory & Management)Organize and manage question assetsPartialPartialDeferred (by design)K O EN/AN/ABackend inventory management is live through question and passage authoring surfaces: list/get/filter (GET /questions, GET /questions/\{id\}, GET /passages, GET /passages/\{id\}), metadata lifecycle (POST/PATCH/DELETE /questions/\{id\}, POST /questions/\{id\}/archive, POST /questions/\{id\}/restore, passage CRUD), version lifecycle (POST /questions/\{id\}/versions, POST /questions/\{id\}/publish), and passage/question linkage (PUT /passages/\{id\}/questions). Question delete now follows in-use safety semantics (409 question_in_use + archive fallback) instead of FK-error behavior when referenced by authored/execution records. Question inventory supports richer filters/sort in list APIs (status, full-text query, qtype, contributes-to-score, created/updated sorting) plus taxonomy-term list filters (terms_any / terms_all, optional include_descendants). Taxonomy term assignment is available via /api/v1/taxonomy/questions/\{id\}/terms. Saved-filter views (virtual folders) are now live via /api/v1/questions/views and /api/v1/questions/views/{viewId} with personal/shared visibility and canonical filter conventions (including preset keys + taxonomy descendants semantics). Bulk actions are now live via /api/v1/questions/bulk (archive, restore, taxonomyReplace, dryRun). Usage/where-used graph is now live via /api/v1/questions/\{id\}/usage including authored evaluation references and passage link references. Remaining gaps: granular saved-view sharing ACL (named user/group grants) and packs-linked lineage exposure where applicable.authoring model + taxonomy foundationquestion-library-mvp.md, content-library-approach.md, UX-AUTHORING.md
Evaluation Library (Inventory & Management)Organize and manage evaluation assetsPartialPartialDeferred (by design)K O EN/AN/ABackend inventory management is live through evaluation authoring surfaces: list/get/create/update/delete (GET/POST /evaluations, GET/PATCH/DELETE /evaluations/\{id\}, POST /evaluations/\{id\}/archive, POST /evaluations/\{id\}/restore), version lifecycle (GET/POST /evaluations/\{id\}/versions, POST /evaluations/\{id\}/versions/\{versionId\}/publish, GET /evaluations/\{id\}/versions/active), structure management (sections/items/buckets), and quality tooling (POST /evaluations/\{id\}/validate, POST /evaluations/\{id\}/preview, GET /evaluations/\{id\}/usage). Evaluation inventory supports richer filters/sort in list APIs (search, status, created-by owner facet, created/updated/title sorting) plus taxonomy-term list filters (terms_any / terms_all, optional include_descendants). Taxonomy term assignment is available via /api/v1/taxonomy/evaluations/\{id\}/terms. Saved-filter views (virtual folders) are now live via /api/v1/evaluations/views and /api/v1/evaluations/views/{viewId} with personal/shared visibility and canonical filter conventions (including preset keys + taxonomy descendants semantics). Bulk actions are now live via /api/v1/evaluations/bulk (archive, restore, taxonomyReplace, dryRun). Usage/where-used graph now includes dependency details on /api/v1/evaluations/\{id\}/usage (assignments, programme requirements, content pack items) in addition to in-use counts. Remaining gaps: granular saved-view sharing ACL (named user/group grants) and packs lineage/provenance expansion workstream.authoring model + taxonomy foundationevaluation-library-roadmap.md, content-library-approach.md, UX-AUTHORING.md
Content Packs (Published Revisions + Install)Reusable bundles of approved evaluation versionsPartialPartialDeferred (by design)K O EN/ASnapshotBackend pack curation is live with keyed idempotent writes for create/update/detail/list + item add/update/delete/reorder + publish revision snapshot + install (GET/POST /content-packs, GET/PATCH /content-packs/\{id\}, POST /content-packs/\{id\}/items, PATCH/DELETE /content-packs/\{id\}/items/\{itemId\}, POST /content-packs/\{id\}/publish, POST /content-packs/\{id\}/revisions/\{revisionId\}/install). Packs provenance read surface is now live for revision lineage (GET /content-packs/\{id\}/revisions/\{revisionId\}/lineage) exposing revision->item->source version->install chain with submission snapshot linkage metrics (submissionCount, snapshotLinkedSubmissionCount). Smoke coverage in backend/tests/content_packs.sh (wired into backend/tests/test_authoring_all.sh) now exercises publish/install plus lineage retrieval; integration coverage includes content_packs_lineage_integration_test.go. Next packs workstream: workflow expansion on top of lineage read surfaces.Versioning + lineage modellibrary roadmaps, content-library-approach.md, STATUS-AND-READINESS-CONTRACT.md
White-LabelingBranding per tenantPlannedPlannedPlannedN/AN/AN/ACommercial featureTenant config + theming metadatawhite-labeling-roadmap.md
LocalisationMulti-language supportPartialPartialDeferred (by design)AllN/AN/AQuestion payloads support locales + defaultLocale; question read surfaces support ?lang= projection (GET /questions/\{id\}, GET /questions) with projected version.payload + resolved/fallback version.locale, validated as BCP-47. Passage create/update normalize plain JSON into canonical localized envelope (defaultLocale + locales, default en) and passage reads support ?lang= projection with resolved-locale fallback. Additional projections now support lang for submission/reporting/glass-box snapshots, submission write response snapshots, and evaluation preview passage content (GET /submissions/\{id\}, GET /session-attempts/{submissionId}, GET /session-attempts/{submissionId}/export, GET /glass-box/submissions/\{id\}, POST /evaluations/\{id\}/sessions/\{sessionId\}/submit, POST /evaluations/\{id\}/preview). Localized snapshot responses now include localeProjection metadata (requestedLocale, fallbackUsed, servedLocales) to make projection/fallback behavior explicit. CI guardrail scripts/check_openapi_localization.sh protects OpenAPI contract + shared LangQueryParam; smoke coverage consolidated via backend/tests/test_localisation_all.sh (questions_crud.sh, passages_crud.sh, localisation_projection.sh). Planned UX/runtime layer: Inlang Paraglide-JS message keys everywhere (no hardcoded strings) plus capability-gated text override mode with precedence org override -> tenant override -> product default and auditable publish/rollback.Locale strategy + override resolver + localization capability modelProduct docs, UX-FRONTEND-CONVENTIONS.md, UX-SHARED-COMPONENTS-CONTRACT.md
AccessibilityWCAG / ATAG complianceN/AN/APlannedAllN/AN/ABackend-neutral (no server-side blockers). UX standard is WCAG 2.2 AA with explicit task-tier/mobile policy for field-heavy usage (Tier A mobile-safe, Tier C desktop-optimized with handoff). ATAG scope is now explicit for authoring/admin surfaces: objective A (accessible authoring UI) and objective B (support/preserve accessible authored output, including validation checks where content types support them). Screen-level interface guardrails are now documented across authoring, runtime, operations, review, insights, glass box, claims/disputes, identity/access, compliance, packs, and audit explorer UX specs. Planned guardrails are CI-enforced accessibility lint/compile gates, shared-component a11y checks, critical-flow a11y E2E checks, and release keyboard/screen-reader smoke gates.Frontend CI guardrails + shared component test harness + critical-flow a11y test plan + authoring accessibility validation contractFOUNDATION.md, architecture, UX-ACCESSIBILITY-STANDARDS-AND-GUARDRAILS.md, UX-MOBILE-AND-TASK-TIER-POLICY.md, UX-AUTHORING.md, UX-CHECKLIST.md
Frontend Contract & Shared Primitives FoundationDeterministic cross-surface client behavior and reusable UI contract building blocksImplementedPlannedPlannedAllN/AN/ABackend contract maturity is now sufficient to activate frontend contract layer + shared primitives as first build step (status mapping, idempotency/CSRF handling, canonical drawer/link/table/status-chip semantics). Tracked as prerequisite for every frontend surface to avoid per-page fetch/state drift.Frontend contract module + shared shell implementation + readiness P0 gatesfrontend-implementation-status-matrix.md, UX-FRONTEND-READINESS-CHECKLIST.md, UX-SHARED-COMPONENTS-CONTRACT.md
Candidate Delivery Field Resilience UXPreserve safe completion in low-connectivity/unstable-runtime conditionsPartialPlannedPlannedK O EScaffoldingIntegrity, VerificationRuntime API baseline is implemented; explicit field resilience UX (autosave/reconcile/retry-safe submit, deterministic reconnect states, operator/candidate recovery guidance) is now tracked as a planned frontend differentiator and release gate before delivery rollout at scale.Delivery runtime state model + offline/resilience policy + release device matrixUX-RUNTIME-CANDIDATE-DELIVERY.md, UX-FRONTEND-READINESS-CHECKLIST.md, UX-MOBILE-AND-TASK-TIER-POLICY.md, offline-delivery-implementation.md
Defensibility Action GuidanceConvert readiness/KOE reason codes into explicit operator next actionsPartialPartialPlannedK O EProjectionSnapshot, Context, VerificationBackend now emits stable reason-coded readiness/KOE blocks and triage queues; remaining gap is frontend/operator workflow guidance that maps reason codes to deterministic remediation actions without mutating execution truth.Canonical reason taxonomy + readiness/exception surfaces + review/operations UX contractsSTATUS-AND-READINESS-CONTRACT.md, UX-INSIGHTS.md, UX-REVIEW-AND-APPROVAL.md, UX-OPERATIONS.md
Defensibility Exception Noise ControlsKeep high-volume exception queues actionable via triage hygiene and visibility controlsPartialPartialPlannedK O EProjectionSnapshot, Context, VerificationSubmission/engagement/programme exception queues and triage states are implemented (open, acknowledged, resolved, suppression windows, owner); planned frontend layer now tracks digest/SLA and suppression-hygiene UX so queues do not degrade into non-actionable noise.Defensibility exception APIs + operations/insights queue UX + observability hooksSTATUS-AND-READINESS-CONTRACT.md, UX-OPERATIONS.md, UX-INSIGHTS.md, frontend-implementation-status-matrix.md
Translation Override WorkspaceCapability-gated text override and publish workflow (org -> tenant -> product fallback)PartialPlannedPlannedAllN/AN/ALocalization projection/fallback is live at API layer; explicit override workspace (edit/review/publish/rollback/audit trail) is now tracked as planned product capability so translations are editable without code deploys while preserving deterministic fallback behavior.Localization resolver + capability model + auditable override storeUX-FRONTEND-CONVENTIONS.md, UX-SHARED-COMPONENTS-CONTRACT.md, UX-FRONTEND-READINESS-CHECKLIST.md, frontend-implementation-status-matrix.md

🟦 Section D β€” Derived & Advanced Capabilities (Future)

These exist because the ledger exists.

CapabilityDescriptionBackendWorkflowFrontendK/O/EWORM ScopeDefensibility ControlsImplementation NotesDependenciesSource Docs
Skills InferenceDerive skills from evidencePlanned (parked)Planned (parked)Planned (parked)K O EDerivedTraceabilityParked follow-ups after authoring hardening: persist skill outcome/provenance facts per submission (mapping_set_version_id, mapping_rule_id, source term IDs), add mapping binding resolution by tenant/org/programme/evaluation/version, expose explain APIs from persisted facts, and publish projection freshness/processing states so Insights can distinguish fresh/processing/stale/failed safely.Ledger maturity + taxonomy mapping foundationskills-and-competencies-TDD.md, taxonomy-engine-evolution-proposal.md, UX-INSIGHTS.md
Competency ProfilesLong-term capability viewsPlanned (parked)Planned (parked)Planned (parked)AllDerivedSnapshotUX target is clear (heatmap + evidence-basis explainability), but backend prerequisites are still outstanding: user-profile projection tables/read models, scope-chip metadata (mapping/eval/framework/run labels), recalculation job lifecycle surfaces, and deterministic explain payloads rooted in persisted skill evidence facts.Skills inference + projection workers + explain contractsskills-and-competencies.md, UX-INSIGHTS.md
State HashingCryptographic state fingerprintImplementedImplementedDeferred (by design)AllExecutionIntegrityEngagement + submission state hash endpoints with ledger eventsEngagements, Submissionsarchitecture
RatificationSigned approval of stateImplementedImplementedDeferred (by design)AllExecutionStep-UpEngagement + submission + claim + dispute ratification append ratified ledger events with step-up + idempotency; smoke coverage includes backend/tests/engagements_ratification.sh, backend/tests/claims_disputes_ratification.sh, and backend/tests/test_hashing_all.shHashingarchitecture, glass-box-implementation.md
External LRS / xAPIExternal evidence feedsPlannedPlannedPlannedAllProjectionSnapshotFuture integrationLedgerarchitecture

πŸ”’ WORM Scope Clarification (Explicit)

ScopeMeaning
ExecutionAppend-only, permanent, defensible truth
ScaffoldingMutable runtime or orchestration state
DerivedComputed from execution records
N/ADoes not store execution truth

Only Execution-scoped data MUST follow WORM rules.


πŸ“Œ Final Notes

  • This matrix is authoritative.

  • No feature may be implemented without being represented here.

  • No feature may violate Section A invariants.

  • Language remains intentionally broad; customer-specific terminology belongs in an alias layer, not core docs.

  • This file complements, but does not replace:

    • FOUNDATION.md
    • architecture
    • roles-and-access-control.md
    • KOE-model.md