Quality

Requirements, tests, evidence

A reviewed requirement matrix per component; test titles that carry the requirement IDs; one normalized evidence stream across testthat and vitest; drift guards that fail CI when any committed artifact stops matching a fresh run.

413reviewed requirements35 matrices
664distinct test recordsjs-unit · r-unit · text-review
100%requirement coverage411 evidenced
97%tests passing0 failing · 23 pending review
18 unresolved requirement IDs — referenced by a test but defined in no matrix: TXT-SYN-0101, TXT-SYN-0102, TXT-SYN-0103, TXT-SYN-0104, TXT-SYN-0105, TXT-SYN-0106, TXT-SYN-0200, TXT-SYN-0300, TXT-SYN-0400, TXT-SYN-0500, TXT-SYN-0600, TXT-SYN-0700, TXT-SYN-0800, TXT-SYN-0902, TXT-SYN-1000, TXT-SYN-1102, TXT-SYN-1103, TXT-SYN-1200. Exact-match resolution is unforgiving: a renamed or A/B-split requirement stops resolving silently, which is why this report exists.

2 reviewed requirements not yet referenced by any test: QC-CI-001, QC-CI-002

Components

ComponentKindMatrixReqsTestsResultStatus
TFL Engine
tfl-engine
Enginetfl-engine.md88110110 passingevidenced
Text Library
text
Text Librarytext.md8618823 pending reviewevidenced
Report Template Library
templates
Report Templatestemplates.md617676 passingevidenced
Traceability
traceability
Frameworktraceability.md163838 passingevidenced
Quality Framework
quality
Frameworkquality.md98261261 passingevidenced
Demographic and Baseline Characteristics
t-demographics
Displaydisplays.md642121 passingevidenced
Subject Disposition
t-disposition
Displaydisplays.md641919 passingevidenced
Summary of Populations
t-populations
Displaydisplays.md642525 passingevidenced
Summary of End of Study Data
t-end-of-study
Displaydisplays.md642525 passingevidenced
Time to Dermatologic Event by Treatment Group
f-derm-time-to-event
Displaydisplays.md642020 passingevidenced
Primary Endpoint Analysis: CIBIC+ — Summary at Week 24 — LOCF
t-cibic-week24
Displaydisplays.md642222 passingevidenced
CIBIC+ — Summary at Week 8 — LOCF
t-cibic-week8
Displaydisplays.md642222 passingevidenced
CIBIC+ — Summary at Week 16 — LOCF
t-cibic-week16
Displaydisplays.md642222 passingevidenced
CIBIC+ — Categorical Analysis — LOCF
t-cibic-categorical
Displaydisplays.md642222 passingevidenced
Primary Endpoint Analysis: ADAS-Cog (11) - Change from Baseline to Week 24 - LOCF
t-eff-adas-wk24
Displaydisplays.md642626 passingevidenced
ADAS-Cog (11) - Change from Baseline to Week 8 - LOCF
t-eff-adas-wk8
Displaydisplays.md642626 passingevidenced
ADAS-Cog (11) - Change from Baseline to Week 16 - LOCF
t-eff-adas-wk16
Displaydisplays.md642626 passingevidenced
ADAS-Cog (11) - Change from Baseline to Week 24 - Completers at Week 24, Observed Cases, Windowed
t-eff-adas-wk24-completers
Displaydisplays.md642626 passingevidenced
ADAS-Cog (11) - Change from Baseline to Week 24 in Male Subjects - LOCF
t-eff-adas-wk24-male
Displaydisplays.md642626 passingevidenced
ADAS-Cog (11) - Change from Baseline to Week 24 in Female Subjects - LOCF
t-eff-adas-wk24-female
Displaydisplays.md642626 passingevidenced
ADAS-Cog (11) - Mean and Mean Change from Baseline over Time
t-eff-adas-overtime
Displaydisplays.md642626 passingevidenced
ADAS-Cog (11) - Repeated Measures Analysis of Change from Baseline to Week 24
t-eff-adas-mmrm
Displaydisplays.md642626 passingevidenced
Mean NPI-X Total Score from Week 4 through Week 24 - Windowed
t-eff-npix-mean
Displaydisplays.md642626 passingevidenced
Overview of Treatment-Emergent Adverse Events
t-ae-overview
Displaydisplays.md642222 passingevidenced
Treatment-Emergent Adverse Events by System Organ Class and Preferred Term
t-ae-common
Displaydisplays.md642222 passingevidenced
Extent of Exposure to Study Drug
t-exposure
Displaydisplays.md641919 passingevidenced
Listing of Serious Adverse Events
l-ae-serious
Displaydisplays.md641818 passingevidenced
Summary of Concomitant Medications
t-conmeds
Displaydisplays.md642222 passingevidenced
Summary of Vital Signs at Baseline and End of Treatment
t-vitals
Displaydisplays.md642121 passingevidenced
Summary of Vital Signs Change from Baseline at End of Treatment
t-vitals-change
Displaydisplays.md642020 passingevidenced
Summary of Weight and Weight Change from Baseline at End of Treatment
t-weight
Displaydisplays.md642020 passingevidenced
Incidence of Treatment Emergent Adverse Events by Treatment Group
t-ae-incidence
Displaydisplays.md642525 passingevidenced
Incidence of Treatment Emergent Serious Adverse Events by Treatment Group
t-sae-incidence
Displaydisplays.md642525 passingevidenced
Summary of Number of Subjects By Site
t-subjects-by-site
Displaydisplays.md642323 passingevidenced
Subject Disposition
f-disposition
Displaydisplays.md641818 passingevidenced

How the loop works

  1. 1MatrixA reviewed Markdown table in quality/requirements/, one row per requirement.
  2. 2Test titleTests name the IDs they evidence: "DSP-AE-001: overview counts match ADAE (#1)". Guard tests in both suites enforce the convention.
  3. 3Evidencescripts/evidence.mjs normalizes testthat and vitest into one evidence.json per module, with the data → ARD → display traceability object attached.
  4. 4PageThis site joins the matrix extract to the evidence set and publishes it.
  5. 5Guardsrequirements:check and evidence:check fail CI when a committed artifact drifts from a fresh run.

Requirement ID scheme

All IDs match ^[A-Z]{2,4}-[A-Z]+-\d+[A-D]?$ — unchanged from safety.viz, because every downstream tool depends on it.

Test naming, both suites: "<REQ-ID>[, <REQ-ID>]: <description> (#1)".

Reproduce

npm ci
npx vitest run                         # the JS suite
Rscript qc/run-tests.R                 # testthat → qc/testthat-results.json
node scripts/requirements.mjs          # matrices → docs/requirements/*.json
node scripts/evidence.mjs              # both suites → docs/evidence/*/evidence.json
node scripts/requirements.mjs --check  # drift guard
node scripts/evidence.mjs --check      # drift guard
node scripts/site.mjs                  # this site → site/_build/