The Traceability Workspace¶
Audience: everyone doing design control; §5 additionally for quality managers.
The Traceability workspace is the home for reading traceability across a scope — requirement coverage, risks, chains, reference coverage, and training oversight. It is an overview hub with a tile per view; each tile shows a headline metric and a status, and links to a focused sub-page. The nav entry appears only if you hold a traceability permission in some scope (like Admin and Scope configuration), and the hub aggregates across all the scopes where you do.
1. The hub and per-view permissions¶
Traceability opens the hub — "QMS health at a glance — pick a view." Its tiles:
| Tile | What it shows |
|---|---|
| Requirement coverage | covered / total, and a gap count (§2) |
| Risk traceability | risk count and a gap count (§4) |
| Reference coverage | the scope's document-citation completeness rules and any gaps (§6) — shown only where a scope has configured at least one rule |
| Requirement chains | stakeholder requirements satisfied / total, gaps (§3) |
| Obligations | recurring-duty freshness — "{{ok}}/{{total}} OK" (see Recurring obligations §4) |
| Training compliance | overdue count / on track (§5) |
| Validation | user needs validated / total, and a gap count (§7) |
| GSPR conformity | applicable clauses complied with / total, and a gap count (§8) |
Access is two-tier, enforced server-side and reflected in the UI (a hidden tile is never the only protection — the sub-page's data endpoint enforces the same rule, and the routes are guarded):
VIEW_TRACEABILITY— the engineering-trace views (requirement coverage, risk, document coverage, requirement chains, the validation matrix, and GSPR conformity). Granted to scope members by default, so today's reach is preserved; row-level security still bounds the data to what you may see.VIEW_TRAINING_COMPLIANCE— the training-oversight view only. This is deliberately more restricted (it is personal-data-sensitive: who is overdue), held by the quality-manager role.
Everything is scope-aware: you see a view for the scopes where you hold its permission, and the data is RLS-bounded to those scopes.
Some tiles follow your project's vocabulary. Validation, GSPR conformity and Requirement chains appear only where the project actually declares those axes — where it uses user needs and validation cases, regulatory references, or stakeholder requirements (see key rules §0 for how a project declares its element kinds). A 62304 supplier project that verifies against requirements it is handed simply has no validation lane, so a permanent empty 0 of 0 there would be a reproach for something it was never asked to do. The rule is declaration-or-content: a project that declares the axis keeps the tile even while it is still empty, and a project that holds such items keeps it even if nobody declared anything — content is never hidden. The verification and coverage views are not conditioned this way: a project that writes requirements and never verifies them has a real gap, and that stays loud.
One project at a time. The tiles roll up across every project you can see, but each focused sub-page shows a single project — the one chosen in the toolbar's Project context switcher. With All projects selected, a sub-page that needs one project shows a Select a project prompt instead of data; pick one there and the toolbar follows (see The project context).
The whole picture in one PDF. The hub header also carries a Traceability report (PDF) action,
gated by VIEW_TRACEABILITY exactly like the trace tiles. It downloads one derived PDF compiling the
scope's whole traceability picture: a front-page gap digest (the unhealthy items across the
scope — unsatisfied/unverified requirements, the risk gap counts, coverage-rule gaps, user needs not
validated, applicable GSPR clauses not complied with, unjustified N/A exclusions, suspect links), then
sectioned tables for the requirement chains, the requirement-verification status of each software
requirement (its evidence class — unverified / planned only / verified, ADR-0088), the risk chains,
the document-relation coverage, the validation matrix (§7), and the GSPR conformity clauses
(§8). Like every export it is derived at export — a
point-in-time compilation, labelled "as
at export" and not a controlled document (two exports on different days may legitimately differ,
by design). It is per-scope: with a single traceability scope the button downloads that scope's
report directly; across several, it opens a short menu to pick which scope. The same report also
rides in the scope audit pack — see exports §6.
2. Requirement coverage¶
"How many of this scope's requirements are covered — each requirement covered by at least one
inbound 'verifies' or 'satisfies' link." A requirement counts as covered when it has at least
one inbound Verifies OR Satisfies link. The evidence is counted separately per requirement and
shown as chips — and the verifies evidence is split by class (ADR-0088): planned ×N (a
verification designated — a plan, or a report not yet released) and verified ×N (an executed,
released report) — beside satisfied ×N. They mean different things (a software requirement is
verified by evidence; a stakeholder requirement is satisfied by software requirements; a plan is not
yet an executed report). The covered verdict itself is unchanged. See trace-links
§1 and §5.
The page gives you:
- The headline — "{{count}} of {{total}} requirements covered" (or "Every requirement is covered.").
- A Filter by kind control (Functional / Non-functional / Stakeholder / Safety / …) so you can ask coverage of a single kind.
- The enumerable gap list — the requirements not yet covered — and the covered list with each requirement's evidence chips.
- The requirements registry — every defined key with its Kind, Priority, Document, Last changed version, Links, and a Text excerpt. A key with any suspect link touching it is flagged, with the hint to review it on its document.
3. Requirement chains¶
Coverage answers each hop in isolation; the Requirement chains view walks the whole path an auditor walks: "Stakeholder requirement → satisfying software requirements → verification evidence, walked end to end." Rows are the scope's stakeholder requirements (requirement items of kind Stakeholder — the specification lane, distinct from user needs / the Validation matrix §7; see trace-items §7.2); each expands to the software requirements that satisfy it, and each of those to its verification evidence. Because chains branch and have unequal depth (one stakeholder requirement may feed several software requirements, some ending without a verification hop), the screen is expandable rows, not a rectangular grid.
Each chain carries honest, non-suppressible roll-up flags:
- Not satisfied — "No software requirement satisfies this stakeholder requirement."
- Satisfied, unverified — "A satisfying software requirement carries no verification evidence — satisfied is not verified." (reported per software requirement, not averaged away).
- Planned only (ADR-0088) — the chain is satisfied and every verification is designated, but the
evidence is all planned (a plan, not an executed report). A quiet amber flag — the honest
intermediate between Satisfied, unverified and clean. Each evidence chip shows its class and, for a
verified one, its release date (
QMS-DEV-VER-011 · v4 · verified 2026-07-19vs… · planned). - Suspect on path — a link somewhere on the chain is suspect; re-attest it on its source document (see trace-links §4).
The headline aggregates — "{{satisfied}} of {{total}} stakeholder requirements satisfied", "{{count}} fully verified", "{{count}} planned only" (shown when > 0), "{{count}} suspect on the path".
The auditor's matrix is an export. The flat traceability matrix — one row per complete path, stakeholder key → software key → evidence document/version, with per-hop suspect state and the roll-up flag — is a Download matrix (CSV) on this page, not the screen. That CSV is the artifact auditors mean by "traceability matrix", and it feeds the validation-report generator.
4. Risk traceability¶
"Hazard → control → requirement / verification → residual risk, with completeness gaps." Rows are the scope's risks; each expands to the controls that mitigate it, each control's Implemented by target(s) (a requirement item or an SOP/WI document) and its Verified by document, and the risk's initial and residual scores. The completeness gaps are surfaced as counts and per-row hints, each naming where and how to close it:
- Risk without control, and its variant residual recorded without a control.
- Control not implemented / Control not verified — with Add mitigation… / Add
verification… remedies (see trace-links §2). A control's verification renders its
evidence class (ADR-0088): a planned-only verification reads as planned, never as a green
verified; the not verified gap still fires only when there is no
Verifieslink at all. - Residual not acceptable.
An accepted-without-reduction risk — an initial risk you judged acceptable, with no control and no residual — is shown as complete ("Accepted without reduction — the initial risk is acceptable, so no control is required."), not as a gap. Scores render as recorded tokens; nothing is computed (see trace-items §4).
The same derivations back the in-document Risk table grid (columns Controls, Impl. by, Verified by, Gaps under Derived (from links)), scoped to a single document — so an author sees a risk's coverage while authoring it, and this scope-wide view rolls all documents together.
5. Training compliance (quality managers)¶
The QMB training-compliance oversight — scope compliance numbers, overdue and aging, expiring
certifications — lives here, at the Training compliance view, gated by
VIEW_TRAINING_COMPLIANCE. It moved out of My training on purpose: My training is your personal
view (your obligations, your certifications), while oversight ("who is overdue") is a different
audience and a more sensitive surface. The content and the numbers are unchanged — see
training.md §3 for what each figure means and how "overdue" is defined.
6. Reference coverage (the references web)¶
The Reference coverage view is the home for whole-document references — the navigational web of
which document points at which — and the completeness rules over it (ADR-0049 §4). Pick a scope;
each rule is an entry point that opens a coverage-first result ("N of M covered" + progress, the
uncovered documents first with in-place gap closing, the covered ones collapsed, and a list↔grid
toggle). An "Explore ad hoc…" expander runs the same query as a plain-language sentence.
This view is a pure references web (ADR-0085): every trace claim — verifies / satisfies /
derives-from — lives on the trace-link layer, so the relation layer keeps only references (plus
system-managed lifecycle provenance). The rule builder and the ad-hoc explorer offer only the two
references reading directions, closing a gap in place adds a references edge, and a completeness
rule can name no other relation type: one that tried would be refused, with a message pointing at
where claim completeness is answered — Requirement coverage (§2) and Requirement chains (§3).
Rule management is gated by CONFIGURE_REVIEW_POLICY; the in-place gap fix follows the same
draft-only rule as any structure change (see trace-links §3).
The rules are the opt-in. Citation completeness — "every quality record cites its governing SOP" — is a house rule a scope adopts, not a duty every scope owes. A scope that has configured no coverage rule therefore shows no Reference coverage tile on the hub, and its Traceability report carries no document-coverage section: nothing is hidden, there is simply nothing this scope has asked to be measured on. Configure the first rule (from the view itself, reachable by its route) and both appear. The same grammar governs the Requirement chains, Validation and GSPR tiles, each on its own declaration.
7. Validation matrix¶
"User need → validating validation-cases / records, with the design-elements that realize the requirements." The Validation matrix answers the validation axis of the V-model — did you build the right thing? — which is distinct from verification (did you build the thing right?). Rows are the scope's user needs; each expands to the validation evidence that Validates it — a validation case, or a whole Validation Plan / Report document linked at document level.
Each row carries an honest, non-suppressible flag:
- Not validated — "No validation-case or validation record validates this user need." The hard gap: a need with nothing confirming it.
- Planned only — "Validation is designated but the evidence is still only planned — a plan, not an executed, released validation record. Release the validation record to make it validated." The amber middle state — the validation is appointed but not yet run.
- Suspect on path — a
Validateslink on the row is suspect (the need's content changed since it was attested); re-attest it on the source document.
The three states are the same ADR-0088 evidence classing the requirement views use, read for the
Validates link (see trace-links §6):
- validated — an executed, released validation record (a document of a verification-evidence type) validates the need. Its chip reads "validated {{date}}".
- planned — the
Validateslink exists but its source is a plan or an unreleased draft. Its chip reads "planned". "Planned" is never dressed up as done — releasing the executed record is what turns it into validated. - not validated — there is no
Validateslink at all (the chip reads "no validation").
The headline aggregates — "{{validated}} of {{total}} user needs validated", "{{count}} genuinely validated", "{{count}} planned only" (when > 0), and "{{count}} suspect on the path" (when > 0). Below the needs, a Design realization panel ("Design-elements that satisfy requirements — the V-model's "how".") lists the design elements that Satisfies the scope's requirements — the design leg of the same axis.
CSV and report. A Download matrix (CSV) action exports the flat auditor's matrix (one row per need → validation evidence, with class and gap). The same content is a validation-matrix section of the scope traceability report (§1) and rides in the audit pack (permission-conditionally, like every trace section).
8. GSPR conformity¶
"Regulatory-ref clause → complying requirements / design-elements, with the verification state of each complier." The GSPR conformity view is the conformity table an auditor reads against MDR Annex I (or any regulation/standard you authored as regulatory references — see trace-items §7.5). Rows are the scope's regulatory-reference clauses in clause order; each expands to the requirements / design elements that Complies with it, and each complier's verification state.
Each clause shows its applicability — applicable, not applicable, or not assessed — and carries honest flags:
- Not covered — "This applicable clause has no requirement or design-element that complies with it. Author a complies-with link from a requirement." An applicable principle with nothing claiming conformity.
- Coverage unverified — "The clause is complied with, but no complying requirement carries released verification evidence — the compliance is designated, not yet demonstrated." The compliance is claimed, but the evidence is planned-only (the same ADR-0088 class as everywhere else).
- N/A — no justification — the hard gap (see below).
- Suspect on path — a
Complies withorVerifieslink on the row is suspect; re-attest it on the source document.
Why an unjustified N/A is a hard gap — not a soft warning. When a clause is marked Not applicable but carries no justification, the view raises a red flag: "This clause is marked not-applicable but carries no justification — an unjustified exclusion is an audit finding. Record the justification on the clause." This is deliberate, and it is counted as a hard gap, not a gentle reminder, because an auditor reads an unexplained "not applicable" as evasion — a principle quietly excluded to avoid demonstrating conformity. The honest posture is to state why each excluded clause does not apply (e.g. "the device has no patient-contacting materials"). The authoring grid warns you of the same thing as you type (see trace-items §8); the conformity view is where it becomes a counted gap and lands in the report's gap digest.
The headline aggregates — "{{covered}} of {{applicable}} applicable clauses complied with" and "{{count}} conformant" (a distinct, stronger claim: covered and verified), then the gap counts, led by "{{count}} N/A without justification" as the hard gap, followed by "{{count}} not covered", "{{count}} coverage unverified", and "{{count}} suspect on the path" (each shown only when > 0). A complying requirement's evidence renders its class — "verified {{date}}" / "planned" / "unverified" — and a properly justified exclusion reads "Not applicable — justification recorded."
CSV and report. A Download matrix (CSV) action exports the flat conformity matrix. The same content is a GSPR-conformity section of the scope traceability report (§1) and rides in the audit pack — so the unjustified-N/A hard gaps surface in the report's front-page gap digest too.
Governing decisions: ADR-0080 (the workspace — hub + focused sub-pages, two-tier per-view permissions VIEW_TRACEABILITY / VIEW_TRAINING_COMPLIANCE, server-enforced & route-guarded, training oversight moved out of My training), ADR-0084 (Stage C — the validation matrix & GSPR conformity views, derived read models, VIEW_TRACEABILITY-gated, joined to the one project context, tiled on the hub, sectioned in the report & audit pack; the unjustified-N/A hard gap), ADR-0085 (relation-layer consolidation — one trace vocabulary on the trace-link layer, the references card & Document-coverage view become the pure references web), ADR-0088 (verification evidence classes — planned vs. verified, derived at the read layer, reused for the validates link & conformity coverage), ADR-0077 §6 + Clarification §4 (requirement coverage — verifies OR satisfies, separate counts), ADR-0086 (requirement chains + the CSV matrix export), ADR-0087 (the scope traceability report — one derived PDF over the read models, downloaded from the hub and carried in the audit pack), ADR-0079/0082 (risk traceability view + the document-scoped grid), ADR-0049 (document relations & completeness rules), ADR-0071 (training compliance content), ADR-0089 (the obligations tile + oversight sub-page), ADR-0093 (the one project context — sub-pages read the toolbar switcher, the neutral "Select a project" state).