Quality / traceability

Framework

Traceability — evidence

The data to ARD to display to sentence chain: provenance envelopes, iteration ledgers, and the trace panel that answers all five questions about any number on the site.

16reviewed requirementstraceability.md
23test recordsjs-unit · r-unit
0failing23 passing
56%requirement coverage9/16 evidenced

Requirements

IDAreaRequirementEvidence typeResult
TRC-ARD-001ProvenanceThe evidence set's traceability object is assembled from the display's current output manifest and the ARD's provenance envelope, carrying ADaM datasets, ARD file and hash, display spec, spec hash, iteration and source commit.js-unit2 passing
TRC-ARD-002ProvenanceA missing manifest, a missing ARD, or an ARD with no provenance yields a traceability object of nulls and empty lists rather than an exception.js-unit2 passing
TRC-ARD-003ProvenanceEvery ADaM dataset named in the ARD provenance is surfaced with its content hash, so the data behind a number is identifiable.js-unit1 passing
TRC-ARD-004ProvenanceWhen the output manifest records no ARD hash, one is computed from the committed ard.json so the chain is never hash-less.js-unitno test
TRC-ITER-001IterationsThe iteration timeline merges iterations.yaml entries with the manifests found under outputs/<slug>/, so it renders from either source alone.js-unitno test
TRC-ITER-002IterationsThe live iteration is the one named by outputs/<slug>/current.json; with no pointer, or a pointer to a version that does not exist, the highest vNNN present is used.js-unitno test
TRC-ITER-003IterationsA ledger entry with no corresponding output directory is rendered and flagged rather than dropped.js-unitno test
TRC-BIND-001BindingsA binding address parses into display, analysis, statistic name and qualifiers per contracts §5, including group= and variable_level=.js-unit2 passing
TRC-BIND-002BindingsA binding resolves only when exactly one ARD row matches; zero matches and multiple matches are both unresolved, with the reason recorded.js-unit4 passing
TRC-BIND-003BindingsAn unresolved binding renders as a visibly marked, non-numeric placeholder carrying its reason — a stale number is never displayed in its place.js-unit1 passing
TRC-BIND-004BindingsA resolved binding renders as a clickable element carrying its display, address, analysis and statistic, so the trace panel needs no lookup service.js-unit3 passing
TRC-CHAIN-001TraceThe build emits a trace index keyed by display slug carrying datasets, dataset hashes, both spec files, the ARD file and hash, the iteration, and the source commit.js-unitno test
TRC-CHAIN-002TraceEvery trace index entry links to that display's gallery page and its evidence page, closing the loop from a sentence back to the requirement.js-unitno test
TRC-DOC-001DocumentThe CSR reader normalizes the assembled document tolerantly — sections, nested sections, text blocks and display placements — and renders a documented empty state when no assembly exists.js-unitno test
TRC-DOC-003DocumentA {{xref:section:…}} reference resolves to an in-page link and a {{xref:display:…}} reference to a trace handle carrying the display's assigned number; an unresolved reference degrades to readable text and never leaks the marker.js-unit4 passing
TRC-DOC-002DocumentProse that still carries {{ard:…}} markers at render time is resolved against the committed ARDs, so the trace panel works whether or not the assembler pre-resolved the bindings.js-unit2 passing

Test records

ResultSuiteTestRequirementsFile
passjs-unitbinding addresses TRC-BIND-001: an address parses into display, analysis, statistic and qualifiers (#1)TRC-BIND-001tests/unit/site-binding.test.js
passjs-unitbinding addresses TRC-BIND-001: an address with no qualifiers parses with an empty filter set (#1)TRC-BIND-001tests/unit/site-binding.test.js
passjs-unitbinding resolution TRC-BIND-002: a binding matching exactly one ARD row resolves to its value (#1)TRC-BIND-002tests/unit/site-binding.test.js
passjs-unitbinding resolution TRC-BIND-002: a binding matching no ARD row is unresolved (#1)TRC-BIND-002tests/unit/site-binding.test.js
passjs-unitbinding resolution TRC-BIND-002: a binding matching several ARD rows is unresolved with a reason (#1)TRC-BIND-002tests/unit/site-binding.test.js
passjs-unitbinding resolution TRC-BIND-002: a binding naming a display with no generated ARD is unresolved (#1)TRC-BIND-002tests/unit/site-binding.test.js
passjs-unitbound prose TRC-BIND-003: an unresolved binding renders a marked placeholder, never a number (#1)TRC-BIND-003tests/unit/site-binding.test.js
passjs-unitbound prose TRC-BIND-004: a resolved binding renders as a clickable element carrying its address (#1)TRC-BIND-004tests/unit/site-binding.test.js
passjs-unitbound prose TRC-BIND-004: scale and digits qualifiers turn a stored proportion into a percentage (#1)TRC-BIND-004tests/unit/site-binding.test.js
passjs-unitbound prose TRC-BIND-004: statistics format for display without losing list values (#1)TRC-BIND-004tests/unit/site-binding.test.js
passjs-unitbound prose TRC-DOC-002: a value the assembler already resolved is used even without an ARD (#1)TRC-DOC-002tests/unit/site-binding.test.js
passjs-unitbound prose TRC-DOC-002: markers left in the assembled document are resolved at render time (#1)TRC-DOC-002tests/unit/site-binding.test.js
passjs-unitcross-references TRC-DOC-003: a display reference becomes a trace handle with its assigned number (#1)TRC-DOC-003tests/unit/site-binding.test.js
passjs-unitcross-references TRC-DOC-003: a section reference becomes an in-page link (#1)TRC-DOC-003tests/unit/site-binding.test.js
passjs-unitcross-references TRC-DOC-003: an unresolved reference degrades to text and never leaks the marker (#1)TRC-DOC-003tests/unit/site-binding.test.js
passjs-unitcross-references TRC-DOC-003: prose rendering resolves bindings and cross-references together (#1)TRC-DOC-003tests/unit/site-binding.test.js
passjs-unitthe traceability object TRC-ARD-001: the chain is assembled from the manifest and the ARD provenance envelope (#1)TRC-ARD-001tests/unit/evidence-traceability.test.js
passjs-unitthe traceability object TRC-ARD-001: the git commit falls back to the ARD envelope when the manifest omits it (#1)TRC-ARD-001tests/unit/evidence-traceability.test.js
passjs-unitthe traceability object TRC-ARD-002: a display with no manifest and no ARD yields nulls, not an exception (#1)TRC-ARD-002tests/unit/evidence-traceability.test.js
passjs-unitthe traceability object TRC-ARD-002: an ARD with an empty provenance envelope still produces a usable object (#1)TRC-ARD-002tests/unit/evidence-traceability.test.js
passjs-unitthe traceability object TRC-ARD-003: every ADaM dataset in the envelope carries its content hash (#1)TRC-ARD-003tests/unit/evidence-traceability.test.js
passr-unitDSP-ALL-001: every display renders a table that actually contains numbers (#1)DSP-ALL-001test-displays.R
passr-unitDSP-ALL-002: every display declares a regulatory identifier and a source line (#1)DSP-ALL-002test-displays.R

Traceability

No generated output yet, so the data → ARD → display chain is empty.

Provenance

Generated
2026-07-27T04:44:02.378Z
Environment
os Darwin 23.6.0 · node v24.14.0 · vitest 2.1.9 · r 4.3.3
CI run
Not recorded for this evidence set