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
38test recordsjs-unit · r-unit
0failing38 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-unitGate: treatment consistency STD-GATE-001: a display whose arm counts differ from the study model fails the gate, and the error names the display, the arm and both numbers (#59)STD-GATE-001tests/unit/study-model.test.js
passjs-unitGate: treatment consistency STD-GATE-002: two displays reporting the same analysis set with different counts in one document is an error naming both, even when one of them matches the model (#59)STD-GATE-002tests/unit/study-model.test.js
passjs-unitGate: treatment consistency STD-GATE-003: a display with no population record is a named warning, never a silent pass; one with no arm grouping is warned and not counted as checked (#59)STD-GATE-003tests/unit/study-model.test.js
passjs-unitGate: treatment consistency STD-GATE-004: an analysis set the model does not declare is an error, not a skipped check (#59)STD-GATE-004tests/unit/study-model.test.js
passjs-unitGate: treatment consistency STD-GATE-005: the committed report assembles green on the gate, every placed display is gated by arm, and none of them read the alternate lane (#60)STD-GATE-005tests/unit/study-model.test.js
passjs-unitStudy model STD-MODEL-001: library/study.yaml loads with three arms in print order and every analysis set counted per arm (#59)STD-MODEL-001tests/unit/study-model.test.js
passjs-unitStudy model STD-MODEL-002: every assembly that declares treatment groups declares the model's arms, in the model's order (#59)STD-MODEL-002tests/unit/study-model.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
passr-unitDSP-INTXT-001: the in-text demographics redraw is the report's Table 11-1 — mean and range, percentages, race as White/Caucasian or other — from the same ARD as the full table (#63)DSP-INTXT-001test-displays.R
passr-unitDSP-INTXT-002: the in-text incidence redraw is the report's Table 12-1 — terms at 5% or more in any arm, flat, in title case, an asterisk where the placebo comparison has p < 0.15 (#63)DSP-INTXT-002test-displays.R
passr-unitDSP-INTXT-003: the in-text weight redraw is the report's Table 12-4 — n and mean per arm for baseline and the changes at Week 24 and end of treatment — from the weight table's own ARD (#63)DSP-INTXT-003test-displays.R
passr-unitSTD-MODEL-003: the treatment vocabulary and the analysis-set registry resolve from the study model, not from code (#59)STD-MODEL-003test-study-model.R
passr-unitSTD-MODEL-004: every count the model declares is what the default lane's ADSL holds, per arm and per set (#59)STD-MODEL-004test-study-model.R
passr-unitSTD-MODEL-005: every committed ARD carries a population record that agrees with the study model for its analysis set (#59)STD-MODEL-005test-study-model.R
passr-unitSTD-SRC-001: the default registry serves every pilot dataset from the study's own package, and only the two datasets it lacks come from the alternate (#60)STD-SRC-001test-study-model.R
passr-unitSTD-SRC-002: the pilot's ADVS prepares without derived-record or timepoint columns the alternate carries, and its series keys match (#60)STD-SRC-002test-study-model.R

Traceability

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

Provenance

Generated
2026-09-02T23:20:56.918Z
Environment
os Darwin 23.6.0 · node v24.14.0 · r 4.3.3
CI run
Not recorded for this evidence set