KB-4FC9

IU 4-Mothers Master Design Rev2 — WS1 Requirement Traceability Matrix (DRAFT 2026-05-27)

40 min read Revision 1
designmaster-design-rev2traceability-matrixws1iu-centered4-mothersevent-foundationdraftdocument-only2026-05-27

Master Design Rev2 — Requirement Traceability Matrix (WS1)

Path: knowledge/dev/design/v0.6-iu-4mothers-event-foundation-rev2/01-requirement-traceability-matrix.md Status: DRAFT Rev2 (document-only). Companion to 00-master-design-rev2.md. Date: 2026-05-27 Authority anchor: knowledge/dev/requirements/v0.6-iu-4mothers-event-foundation-rev2/00-requirement-brief-rev2.md revision 2 (Rev2 brief MP1–MP6 patched, user-approved 2026-05-27). Scope: every Rev2 requirement section → its design landing site, the law(s) it must respect, the PG artifact/registry/projection it touches, the existing infra reused, residual gap, and the sentinel test that verifies the binding. No production mutation. No final OSS selection. No law enactment.


§0. Reading guide

Each row is a contract: if the design diverges from the Rev2 brief on this row, the design is invalid. If a PG artifact or registry is candidate_requires_survey per Rev2 §12, it does not become a design dependency until the survey gate in WS8 (06-open-decisions-and-readiness.md §S1) closes.

Columns:

  • Rev2 § — requirement section in the brief.
  • Binding requirement — one-line restatement of the must.
  • Design landing site — file + section in this Rev2 design package.
  • Law boundary — constitutional / Điều clause this design respects (no-double-ownership matrix).
  • PG artifact / registry / projection — concrete PG-side SoT the design touches; tagged with evidence level from Rev2 §12.
  • Existing infra reused — old-infra row(s) from Rev2 §12 (with evidence_level).
  • Open gap — gap registered in Rev2 §12 GAP list or §19 Open Decisions.
  • Sentinel test — single binary check that would fail if the design later drifts.

Evidence-level shorthand: [VL]=verified_live, [KR]=KB_reported, [LT]=legacy_trace, [CRS]=candidate_requires_survey, [KG]=known_gap.


§1. Traceability matrix — §2 IU-Centered Doctrine

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§2 D2.1 IU is central; every workflow (2..500 step) lắp từ IU-backed step / IU bundle 04-iu-centered-4mothers-binding-design.md §1, §3 Điều 7, Điều 38, Điều 39, Hiến pháp NT2/NT4 information_unit [VL], iu_three_axis_envelope [VL] row 1, row 27 "No workflow_step_def row exists without a populated IU/IU-bundle binding column"
§2 D2.2 Build-once, reuse-many; IU body lives in exactly one place 04-… §2.1, 00-master-design-rev2.md §4 invariants Điều 38 information_unit.canonical_body_*, iu_version row 1, row 4 "Grep tasks.body + workflow_step_def.description_text for non-NULL non-render-only payloads → zero rows"
§2 D2.3 No duplicate text invariant — instruction / contract / policy text must go through IU ref + render layer 04-… §2.2, 03-event-5layer-realtime-dlq-design.md §2 (event payload refs-only) Điều 38, Điều 28 (Nuxt render shell) iu_route_* projection [VL], information_unit [VL] row 1, row 21 "task.body IS NULL OR task.body matches render-template marker only; event_outbox.payload carries iu_unit_id ref not body text"
§2 D2.4 4 Mothers = khuôn đúc, không sở hữu IU/queue/approval 04-… §4 (4 Mothers binding map) Điều 32 (approval), Điều 38/39 (IU), Điều 45 (queue) rows 9-15, row 16 "Approval call sites resolve to Điều 32 surface only; queue insert sites resolve to job_queue/event_outbox, not MOW/MOT-owned tables"
§2 D2.5 Uniform assembly primitive — 2-step và 500-step cùng schema 04-… §3.4 (uniform primitive), 02-step-state-machine-and-workflow-ui-design.md §6 (long-workflow UI) Điều 7 workflow_step_def, workflow_step_relations [VL] row 16 "workflows.step_count distribution covers 2..500 with single schema; no workflow_long_step_def-like sibling table"
§2 D2.6 Editing IU propagates by version policy; active workflow pins version; future workflow follows policy 04-… §5 (version policy), 06-open-decisions-and-readiness.md §S15 (OD15) Điều 38, Điều 30 (reversible by default) iu_version [VL], workflow_step_def.iu_pin_policy (design extension) row 1 OD15 IU version policy (pin vs auto-upgrade vs hybrid) "Bump an IU minor version → active workflow_run on that step continues on pinned version; new workflow_run picks per policy"

§2. Traceability matrix — §3 IU as Process Brick (11-field requirement)

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§3 field iu_unit_id Stable brick id 04-… §3.1 brick fields Điều 38 information_unit.iu_unit_id [VL] row 1 "FK from every step/task binding row resolves"
§3 field iu_version_id Version pin for workflow stability 04-… §3.1 + §5 version policy Điều 38 iu_version [VL] row 1 OD15 "workflow_run carries pinned version; render layer uses pinned"
§3 field iu_role_in_process Role enum (instruction | decision_gate | input_contract | output_contract | policy | checklist | SOP | validation_rule | event_hook | report_context) 04-… §3.2 role taxonomy Điều 38 new vocab dot_config vocab.iu_role_in_process.* (design proposal) row 15 (dot_config) new vocab key "Every IU brick binding has non-NULL iu_role_in_process ∈ vocab"
§3 field assembly_slot MOW step slot / MOT region / MOIT field group / MOUT block 04-… §4 (4 Mothers slot map) Điều 7 new iu_assembly_slot_registry (design proposal) row 26 (iu_piece_collection*) new registry "Every MOW step / MOT region / MOIT field group / MOUT block has a resolvable assembly_slot row"
§3 field precondition_config Trigger/guard rules by config 04-… §3.3 + 02-step-state-machine-… §4 (transition guard) Điều 45 §6.7 (state machine), Điều 30 state_machine_registry (OD9), reuse trigger model row 4 row 4 IU trigger in/out [VL] OD9 state_machine_registry placement "Step cannot transition ready→in_progress without precondition_config resolution succeeding"
§3 field postcondition_config Emitted events / output contracts / next-step signal 04-… §3.3 + 03-event-5layer-… §3 producers Điều 45 §6.6 (event ≠ job), Điều 0-G event_type_registry [VL], event_outbox [VL] row 9, row 10 "Step completion event MUST match a registered event_type before emit"
§3 field io_contract_refs MOIT/MOUT schema link 04-… §4.3 MOIT + §4.4 MOUT Điều 38 field_registry [CRS], input_form_registry [CRS], output_table_registry [CRS] rows 28-30 G7 survey gate "After survey gate: IU brick → MOIT form / MOUT table mapping resolves both ways"
§3 field executor_class_ref DOT / SQL / AI / human / external / notification / render 04-… §3.4 + 03-event-5layer-… §4 consumers Điều 45 §11.5 executor boundary executor_class_registry (G3) row 14, row 20 (DOT) G3 ownership boundary "MOT must call executor class registry row; MOT body cannot embed executor logic"
§3 field event_contract_ref Event types (register-before-emit) 04-… §3.3 + 03-event-5layer-… §3.1 register-before-emit Điều 45 §6.6, Điều 0-G event_type_registry [VL] row 10 "Producer emit refused if event_type not in registry"
§3 field kg_edge_refs Semantic deps / related IU / context pack 04-… §3.5 KG bridge Điều 39 iu_kg_edge (rev1 §1), iu_route_* [VL] row 21 "KG feedback propose-only path resolves to IU edges, never auto-mutates registry"
§3 field governance_state proposed | approved | active | deprecated | archived 04-… §6 governance lifecycle Điều 0-G, Điều 32 iu_lifecycle_log [VL] row 8 "IU lifecycle transitions appear in iu_lifecycle_log with prior + next state + actor"
§3 boundary IU does not own execute logic 04-… §3.6 boundary, 03-event-5layer-… §4.2 Điều 45 §11.5 "Grep information_unit body / IU contract artifacts for executor handler code → zero"

§3. Traceability matrix — §4 IU Bundle / Step Pack

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§4 R4.1 Bundle instead of merging IU (N members, ordered slots, typed roles, versioned, governed, lắp via registry, not hardcode) 04-… §3.7 bundle schema Điều 38, Điều 39 reuse iu_piece_collection + iu_piece_membership + iu_collection_template_* [VL] (mapped — confirm survey not required since rows are VL) row 26 "Bundle row references ≥2 IU members + ordered slot index + typed role; no copied IU body"
§4 R4.2 Bundle can represent step / task instruction pack / form context / output-report context 04-… §4 (slot map per role) Điều 7 bundle ↔ workflow_step_def / task_def / input_form / output_table mapping (design extension) rows 16, 19, 28-30 G7 "Each of 4 representation modes is unit-tested via a real bundle in design fixtures (deferred to phase 1)"
§4 R4.3 KG proposes bundle creation when co-usage strong but semantics tách biệt 04-… §3.5 KG bridge, 00-master-design-rev2.md §7 KG feedback Điều 39 iu_usage_evidence (design extension — see §10 row) row 21 usage-evidence registry GAP "KG propose-only emits propose_create_bundle event with evidence ref"
§4 R4.4 Bundle first-class brick — workflow_step_def can bind (a) 1 IU, (b) 1 bundle, (c) typed IU assembly view, (d) task template IU-backed 04-… §3.8 binding modes Điều 7 workflow_step_def.binding_kind + binding_ref (design extension) row 16 "Every step row has exactly one of {iu_ref, bundle_ref, assembly_view_ref, task_template_ref} populated"

§4. Traceability matrix — §5 4 Mothers

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§5.1 MOW IU Assembly Orchestrator; no duplicate IU content; chooses next step via event/trigger/condition; 2..500 uniform; long-running resume-safe / snapshot / replay; pins IU version; not queue owner / IU internals owner / approval owner 04-… §4.1 MOW binding Điều 7, Điều 45 (queue), Điều 38 (IU), Điều 32 (approval) workflows, workflow_steps, workflow_step_relations, workflow_change_requests [VL] rows 16, 17, 18 OD2 (proposal table shape), OD15 "MOW row holds graph + bindings, no IU body, no executor body, no approval logic"
§5.2 MOT Task envelope around IU instruction/context/IO; 4 UI regions render from ref; automated task uses same IU contract; MOT calls executor class — not executor; no approval logic 04-… §4.2 MOT binding + 02-step-state-machine-… §5 (task envelope) Điều 45 §11.5, Điều 28, Điều 32 tasks, task_checkpoints, task_comments [VL] row 19 G3 executor_class_registry "Task row body refs IU+bundle; no inline policy/instruction text; executor call sites traceable to executor_class_registry"
§5.3 MOIT field_registry + input_form_registry SoT for field/form; each field MAY link IU; form bound into IU-backed task/step context; direct vs staging by config; DOT assembles; Nuxt zero logic 04-… §4.3 MOIT binding Điều 33 v2.1, Điều 28, Điều 0-G field_registry [CRS], input_form_registry [CRS] rows 28, 29 G7 survey gate "After survey gate: every form has registry row; Nuxt <MOITForm formId /> has zero business logic"
§5.4 MOUT IU-backed views of PG/Directus state; report declares iu_id source + SQL/DOT function link; inline (in MOT region 3) + matrix (independent route); realtime via governed gateway; Nuxt zero logic; permission filter backend 04-… §4.4 MOUT binding + 03-event-5layer-… §5 realtime Điều 33 v2.1, Điều 28, Điều 37 v3.3 output_table_registry [CRS], dot_function_registry [CRS], iu_sql_link [VL] rows 5, 30, 31 G7, OD13 (dot_function_registry ownership) "MOUT block declares iu_id source + DOT/SQL function ref; Nuxt fetch route → backend gateway only"

§5. Traceability matrix — §6 Event 5-Layer

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§6.1 Producers Producers only emit; no business execution; sources PG DML trigger → outbox / IU axis / DOT lifecycle / cut transitions / workflow state / proposal / human decision / agent / external API via approved adapter; register-before-emit; JSON schema versioned (semver); capture-by-config 03-event-5layer-… §3 producers Điều 45 §6.6, Điều 0-G event_outbox, event_type_registry, event_pending [VL] rows 9, 10, 11 OD8 (schema compat mode) "Insert producer attempt with unknown event_type → refused with event_type_not_registered"
§6.2 Broker / Event Bus Event bus ≠ job queue; queue carries signal/ref not heavy body; topic/routing; fan-out; PG-native substrate; queue does not auto-run scripts 03-event-5layer-… §4 broker/queue split Điều 45 §6.6, §13.5 event_outbox, event_subscription, job_queue [VL] rows 9, 11, 12 "Queue row body size cap enforced; broker fan-out delivers ≥2 subscribers from one event"
§6.3 Consumers / Workers / Executors Executor class registry (DOT / SQL / AI / Human / External / Notification / Render); ACK/NACK/retry-with-exponential-backoff/timeout; idempotency key bắt buộc; replay; poison → job_dead_letter; lease + heartbeat; trace_id (W3C) / correlation_id / parent_span_id always carried; MOT is not executor 03-event-5layer-… §4 consumers + 00-master-design-rev2.md §6 invariants Điều 45 §11.5, §15.5 job_queue, job_dead_letter, queue_heartbeat, dot_iu_command_catalog, dot_iu_command_run [VL] rows 12, 14, 20 G3, G5 (idempotency_registry), G3 (executor_class_registry) "Worker without heartbeat in N s → flagged silent; replay needs registered idempotency key"
§6.4 Realtime Gateway Nuxt does NOT connect directly to core queue/event_outbox/NOTIFY; backend gateway filters permission + relevance; Governance UI sees summary/delta/red-flag/progress; SSE shell in Nuxt server route MAY exist but ONLY as shell calling backend gateway abstraction 03-event-5layer-… §5 realtime gateway Điều 33 v2.1, Điều 28, Điều 37 v3.3 new realtime_gateway_topic_registry (design extension) row 22 (iu_notification_event) OD4 (realtime gateway impl path) "grep Nuxt source for LISTEN/event_outbox/job_queue → zero direct connections"
§6.5 DLQ / Recovery / Governance job_dead_letter retry/replay/poison; idempotency registry; dlq_replay_request ledger (governance-approved); schema registry compat; audit timeline through MOUT; governance UI problem-first 03-event-5layer-… §6 DLQ + 02-step-state-machine-… §7 governance UI Điều 32 (approval), Điều 31 v1.2 (audit), Điều 45 §6.5 job_dead_letter [VL], dlq_replay_request (G4), idempotency_registry (G5) row 12 G4, G5 "DLQ replay without Điều 32 approval ID → refused"
§6.6 Reconcile checklist with Bắt sự kiện của PG(3).docx All 9 lessons binding 03-event-5layer-… §7 reconcile table Điều 45 "Each of 9 lessons appears at a design section + sentinel binding"

§6. Traceability matrix — §7 UI Requirements

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§7.1 Standard Process View Render workflow def graph (step / bundle / trigger / branching / parallel / sub-workflow boundary) from workflow_registry; zero hardcode; Proposal mode writes workflow_change_requests only; single UI for all roles + backend permission filter; supports 2..500 step via zoom/pan/collapse 02-step-state-machine-… §6 long-workflow UI + §8 proposal mode Điều 28, Điều 37 v3.3 workflows, workflow_steps, workflow_change_requests [VL] rows 16, 17 OD2 (generic vs per-domain proposal table) "Proposal mode never writes workflow_registry; all changes land in workflow_change_requests"
§7.2 Runtime Progress View Runtime instance status / deadline / PIC / output; drill-down step → task → IU content; resume-safe; long-running timeline + milestone; realtime via gateway, not Nuxt poll 02-step-state-machine-… §6 + §3 runtime state Điều 28, Điều 45 §15.5 workflow_run, step_run (extension), tasks [VL] row 19 OD15 IU version policy "Refresh during in_progress workflow_run preserves context; no Nuxt poll loop on PG"
§7.2.6 (MP5) Workflow status roll-up Red>Yellow>Green; workflow NOT green if mandatory active step red; skipped/not_applicable not incomplete; optional steps không kéo; config-driven; transition matrix + per-state weight + edge cases defer here 02-step-state-machine-… §5 roll-up rules Điều 30, Điều 33 v2.1 new workflow_rollup_policy row in state_machine_registry (G6) row 16 G6 "Workflow with 1 mandatory failed step never resolves to Green roll-up"
§7.3 Step/Task 9-state model 9 binding states with semantic + traffic-light + icon + text label; minimum floor; transition matrix deferred here 02-step-state-machine-… §3 9-state floor + §4 transition matrix Điều 45 §6.7 (≥9-state) state_machine_registry (G6) row 16, row 19 G6 placement, OD9, OD12 (derived states accept/defer) "Step state column constrained to 9 base codes; derived state if accepted has separate column"
§7.3.1 Traffic-light first Color first, icon + text after 02-step-state-machine-… §3.2 traffic-light tokens Điều 28 new ui_design_system_registry (design extension) "Every state render outputs color + icon + text triplet"
§7.3.2 Per-step/task own state No global lumping into workflow status 02-step-state-machine-… §3 + §5 roll-up Điều 45 §6.7 step_run / task_run row 19 "step_run.state per step is observable, not derived from workflow status"
§7.3.3 9-state minimum Master Design can add derived states (paused/retrying/escalated/cancelled) only with justification 02-step-state-machine-… §4.5 derived states decision (accept partial) Điều 45 §6.7 OD12 "Any state above 9 has registry justification row + transition policy"
§7.3.4 Each state has machine code + semantic short message + UI label (i18n) + traffic-light token + icon ref; declare-by-config 02-step-state-machine-… §3.4 state registry shape Điều 28, Điều 0-G state_machine_registry (G6) G6 "All 5 attributes per state populated; Nuxt zero logic for state semantics"
§7.3.5 (design implication) state machine in PG; Nuxt zero logic; transition validation backend 02-step-state-machine-… §4 transition validation Điều 33 v2.1, Điều 28 state_machine_registry (G6), fn_state_transition_validate (design extension) G6 "Frontend cannot transition state without backend RPC success"
§7.3.6 (MP3) Waiting sublabels facet not new core state; waiting_dependency / waiting_human / waiting_external / waiting_time_gate; share Yellow; primary + secondary chips when mixed 02-step-state-machine-… §3.3 waiting facets Điều 28 step_run.waiting_facet (design extension) OD9 (registry placement) "step_run.state=waitingwaiting_facet IS NOT NULL ∈ 4-vocab"
§7.3.7 (MP4) Accessibility not color-alone; icon+text+tooltip; WCAG 2.1 AA contrast (≥4.5:1 text, ≥3:1 icon); color-blind safe; high-contrast/dark mode works; aria-label; tokens declare-by-config 02-step-state-machine-… §3.5 a11y design tokens Điều 28 ui_design_system_registry (design extension, lives in PG dot_config or Directus content registry) row 15 "axe-core / contrast-tool sweep over state-light tokens → zero AA failures"
§7.4 Governance UI Problems-only default; aggregate counts per category; concise AI/worker status; drill-down to full audit + correlation + trace_id; DLQ replay/rescue with Điều 32 approval; heartbeat / silent worker monitor; event lag p50/p95/p99 + threshold; no raw event stream surface; same layout all roles; backend permission filter 02-step-state-machine-… §7 governance UI + 03-event-5layer-… §6 governance Điều 32, Điều 37 v3.3, Điều 45 §15.5 job_dead_letter [VL], queue_heartbeat [VL], dlq_replay_request (G4), event_lag_metric (design extension) rows 12 G4 "Governance UI default route returns 0 raw event rows; drill-down requires trace_id"

§7. Traceability matrix — §8 IU Event Contract

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§8 R8.1 IU events on born/edited/split/merged/deprecated/linked/rendered/validated/used 03-event-5layer-… §3.2 IU event family Điều 0-G, Điều 38 event_type_registry [VL], event_outbox [VL] rows 9, 10 "Each IU lifecycle action emits exactly one registered IU event type"
§8 R8.2 Refs only — iu_unit_id, iu_version_id, workflow_run_id?, task_run_id?, event_type, trace_id (W3C), correlation_id, parent_span_id 03-event-5layer-… §3.3 IU event envelope Điều 45 §13.5 (queue ≠ body), Điều 31 v1.2 event payload contract (event_outbox.payload_json schema-validated) row 9 "Validator rejects event with body_text/instruction_text/large blob keys"
§8 R8.3 Payload không copy IU body; consumer fetches by ref 03-event-5layer-… §3.3 + §4 consumer fetch pattern Điều 38, Điều 45 §13.5 information_unit [VL] (consumer fetch target) row 1 "Payload byte size cap enforced; consumer always fetches IU detail by ref"
§8 R8.4 Register-before-emit; JSON schema in event_type_registry; semver 03-event-5layer-… §3.1 register-before-emit + §8 compat mode Điều 0-G, Điều 45 §6.6 event_type_registry [VL] row 10 OD8 schema compat mode "Schema bump: forward-compat enforced by default; breaking change requires explicit policy row"
§8 R8.5 Worker reads PG/Directus/DOT for body — never inline 03-event-5layer-… §4.2 worker fetch contract Điều 45 §11.5 "Worker has zero inline IU body reads from payload; all body reads from PG"

§8. Traceability matrix — §9 KG Feedback Loop

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§9 propose-only KG proposes: step order / missing deps / typed edge / split / orphan / impact analysis / split-merge-rebundle-reparent after usage evidence; never auto-mutates registry 04-… §3.5 KG bridge + 06-open-decisions-and-readiness.md §S7 review_decision Điều 39, Điều 32, Điều 0-G iu_kg_edge (rev1 §1), workflow_change_requests [VL] (proposal landing) row 17 G1 review_decision_id schema, G7 "KG never writes workflow_registry directly; always writes to proposal/change_request"

§9. Traceability matrix — §10 Usage Evidence Registry

Rev2 § Binding requirement Design landing site Law boundary PG artifact Existing infra reused Open gap Sentinel test
§10 8 signals co-used-in-workflow / co-triggered / co-edited / co-retrieved / failure correlation / repeated escalation / repeated human correction / event lag-DLQ correlation; feeds KG feedback → governance 04-… §3.5 evidence schema + 03-event-5layer-… §6 lag/DLQ correlation Điều 39, Điều 31 v1.2 iu_usage_evidence (design extension; reuse event_outbox aggregation + job_dead_letter joins) rows 9, 12 usage-evidence schema GAP "Each of 8 signals has a deterministic derivation function (DOT or view) → row appears in iu_usage_evidence within window N"

§10. Traceability matrix — §11 No-Double-Ownership matrix

Each row of Rev2 §11 maps to law boundary preservation in this design. Boundary preservation is a property — sentinel below covers all rows.

Rev2 § Binding requirement Design landing site Sentinel test
§11 (all rows) Boundaries preserved; only NEW concern = 4 Mothers application layer (Điều XX future) 00-master-design-rev2.md §3 no-double-ownership statement + every WS file inherits "Boundary-grep: queue/event/state-machine logic appears only under Điều 45 surface; IU axes only under Điều 38/39; approval only under Điều 32; 4 Mothers files contain only binding code, never owner logic"
§11 row 14 (Điều 34 DRAFT) Decision path only — see WS8 OD1 06-open-decisions-and-readiness.md §S1 (Điều 34 decision path) "No design row claims Điều 34 as authority; Điều 34 row count in WS8 = 1 (decision-path only)"

§11. Traceability matrix — §12 Old Infrastructure Coverage (31 rows incl. MP1)

Maps each of the 31 rows in Rev2 §12 to a design treatment. Evidence-level shorthand from Rev2 §12 retained.

Row Infra EL Design treatment site Open gap
1 information_unit + axes VL 04-… §3 brick fields
2 IU compose ops VL 04-… §4.1 MOW step assembly
3 IU split/merge KG (G1) 04-… §3.5 KG bridge — gated by review_decision_id G1
4 IU trigger in/out VL 04-… §3.3 precondition/postcondition
5 iu_sql_link VL 04-… §4.4 MOUT output binding
6 fn_iu_post_cut_axis_materialize VL + G2 06-… §S2 autowire decision (Phase 0) G2
7 iu_metadata_tag + registry VL 04-… §6 governance lifecycle (domain tags)
8 iu_lifecycle_log VL 04-… §6 governance audit
9 event_outbox (~140k+) VL 03-… §3 producers / §7 ledger
10 event_type_registry VL 03-… §3.1 register-before-emit
11 event_pending / event_read / event_subscription VL 03-… §4 consumers + §3 fanout
12 job_queue / job_dead_letter / queue_heartbeat VL 03-… §4 consumers / §6 DLQ / §6.3 heartbeat G4, G5
13 cut_request + transition VL 03-… §3.2 cut event family producer
14 dot_iu_command_catalog (col mutating) VL 03-… §4.2 executor class registry mapping G3
15 dot_config (runtime gates) VL 00-master-design-rev2.md §10 gate respect
16 workflows / workflow_steps / workflow_step_relations VL 04-… §4.1 MOW substrate
17 workflow_change_requests VL 02-… §8 proposal mode OD2
18 workflow_categories VL 04-… §4.1 classification taxonomy
19 tasks / task_checkpoints / task_comments VL 04-… §4.2 MOT substrate
20 dot_iu_command_run VL 03-… §6 audit ledger
21 iu_route_* + iu_qdrant_collection_registry + iu_vector_sync_point VL (sync=false) 04-… §3.6 + 03-… §3.4 (no cross-IU pollution)
22 iu_notification_event VL 03-… §4.3 notification executor
23 Directus collections + legacy flows LT 04-… §4.5 Directus boundary; 00-master-design-rev2.md §3 boundary statement
24 pg_cron legacy LT 03-… §3.5 scheduled trigger producer; no queue role
25 signal/event_outbox legacy (issue_opened 140 580 rows) KR + LT 03-… §3.1 re-categorize via event_type_registry
26 iu_piece_collection / iu_piece_membership / iu_collection_template_* VL 04-… §3.7 bundle schema mapping
27 iu_three_axis_envelope VL 04-… §3.1 assembly_slot resolution
28 field_registry CRS 04-… §4.3 MOIT; depends on survey gate G7
29 input_form_registry CRS 04-… §4.3 MOIT; depends on survey gate G7
30 output_table_registry CRS 04-… §4.4 MOUT; depends on survey gate G7
31 dot_function_registry CRS 04-… §4.4 MOUT + 06-… §S13 OD13 ownership G7, OD13

Sentinel for CRS rows (G7): "No Phase-1 implementation depends on field_registry / input_form_registry / output_table_registry / dot_function_registry until WS8 survey gate (06-open-decisions-and-readiness.md §S1 survey checklist) returns evidence_level=verified_live."


§12. Traceability matrix — §13 Constitution / Law clause matrix

Each clause already maps in Rev2 §13. Design inherits without redefining. Below documents the design landing site so reviewers can verify in one place.

Source Binding Design landing site
Hiến pháp NT13 PG-first 00-master-design-rev2.md §3 invariants
NT2/NT4 Native/config-driven 00-master-design-rev2.md §3 + each WS
NT12 / Điều 35 v5.2 DOT-pair mutation 03-event-5layer-… §4.2 executor class — DOT path
Điều 7 Assembly First OSS = adapter 05-oss-candidate-strategy-rev2.md §0
Điều 28 / S178 Nuxt render shell 04-… §4 (Nuxt zero logic per role); 02-… §3, §6
Điều 30 Reversible by default 06-… §S20 implementation sequencing
Điều 31 v1.2 Integrity / audit 02-… §7 governance UI; 03-… §6 DLQ
Điều 32 Approval quorum 04-… §4 (MOT does not own approval); 02-… §7 governance UI; 03-… §6 DLQ replay
Điều 33 v2.1 4-DB / 3-layer 04-… §4 (MOIT/MOUT/realtime); 03-… §5 realtime gateway
Điều 34 DRAFT Workflow law decision path 06-… §S1 (decision-path only)
Điều 37 v3.3 Governance org boundary 02-… §7 governance UI (same layout / backend filter); each WS preserves role-permission backend
Điều 38 + Điều 39 IU + KG 04-… §3 + §3.5
Điều 45 v1.0 §6.6 Event ≠ job 03-… §4
Điều 45 §6.7 Work_state_machine ≥9 02-… §3 (9-state floor)
Điều 45 §11.5 Executor boundary 04-… §4.2 MOT not executor; 03-… §4.2 executor class registry
Điều 45 §15.5 Heartbeat caller 03-… §4.3 heartbeat caller pattern; 02-… §7 governance UI
Điều 0-G Birth registry 03-… §3.1 register-before-emit
Vector law No cross-IU pollution 04-… §3.6 + 03-… §3.4

§13. Traceability matrix — §14 PG Maximization Map

Artifact (Rev2 §14) Live? Design landing site Open gap
event_outbox 03-… §3 producers / §7 ledger
event_type_registry + JSON schema 03-… §3.1 + §8 compat OD8
trace_id / correlation_id / parent_span_id (W3C) partial 03-… §3.3 envelope + 00-master-design-rev2.md §8 W3C adopt now
Idempotency registry GAP 03-… §4.4 idempotency + 06-… §S11 schema (OD11) G5 / OD11
Retry policy registry partial 03-… §4.5 retry policy registry
job_dead_letter (DLQ) 03-… §6 DLQ
DLQ replay ledger GAP 03-… §6.4 replay ledger + 06-… §S10 (OD10) G4 / OD10
Governance proposal state ✓ (workflow_change_requests) 02-… §8 proposal mode + 06-… §S2 (OD2) OD2
workflow_registry / step_def / steps partial 04-… §4.1 + extension columns
task_def / tasks / checkpoints partial 04-… §4.2 + extension columns
field_registry / input_form_registry CRS 04-… §4.3 + 06-… §S1 survey gate G7
output_table_registry / dot_function_registry CRS 04-… §4.4 + 06-… §S1 survey gate + OD13 G7 / OD13
executor_class_registry GAP 03-… §4.2 + 06-… §S3 (OD3) G3 / OD3
DOT catalog 03-… §4.2 (DOT executor class)
Runtime gates (dot_config) 00-master-design-rev2.md §10 (gate respect)
Audit evidence (iu_lifecycle_log, etc.) 04-… §6 + 03-… §6.5 audit timeline
Healthcheck (queue_heartbeat) 03-… §4.3 heartbeat caller pattern
State machine registry (step/task) GAP 02-… §3.4 + 06-… §S9 (OD9) G6 / OD9
Usage evidence registry (§10) GAP 04-… §3.5 schema + 06-… §S14 (OD14) usage-evidence GAP
IU bundle registry (§4) partial 04-… §3.7 mapping over iu_piece_collection*

§14. Traceability matrix — §15 OSS Candidate Strategy

Tool / pattern Rev2 §15 labels Design landing site
pg-boss / Graphile Worker L2 + L5 + L7 05-oss-candidate-strategy-rev2.md §3.1
Temporal L2 + L3 + L4 05-… §3.2
Camunda L2 + L6 05-… §3.3
Airflow L2 + L6 05-… §3.4
Benthos / Redpanda Connect L3 + L5 + L7 05-… §3.5
NATS L4 + L7 05-… §3.6
Redis Streams L4 + L7 05-… §3.7
Hasura subscriptions L2 + L6 05-… §3.8
Directus realtime L2 + L6 05-… §3.9
Watermill L3 + L6 05-… §3.10
Centrifugo L4 + L5 05-… §3.11
W3C trace_id shape L1 (adopt NOW) 05-… §3.12 + 00-master-design-rev2.md §8
OpenTelemetry collector L4 (after trace_id ubiquity) 05-… §3.13
SSE / WebSocket / Centrifugo (gateway) covered via Centrifugo L4/L5 + native SSE shell start 05-… §3.14
Jaeger L4 (consumer-side OTel) 05-… §3.15

Sentinel: "OSS strategy doc lists no tool with a final pin; every tool row has Gate A (state-vocab fit) + Gate B (config-first fit) verdict; no CI step / version pin / dockerfile mention."


§15. Traceability matrix — §16 Điều 34 DRAFT decision path

Rev2 § Binding Design landing site Open gap
§16 (decision path only — 3 branches; 4 criteria) Decision path only; never authority; no enact, no merge, no draft new law 06-open-decisions-and-readiness.md §S1 (Điều 34 decision path) OD1

Sentinel: "Master Design Rev2 cites Điều 34 zero times as authority; only one section enumerates the 3 decision branches (promote / merge-archive / keep-draft)."


§16. Traceability matrix — §17 Acceptance Criteria + §18 Completeness Checklist

Rev2 §17 PASS items (19 items, MP1–MP6 included) and §18 C1–C36 are inherited as design acceptance items. Master Design Rev2 acceptance = Rev2 brief acceptance ∪ the design-specific acceptance items in 00-master-design-rev2.md §11.

Sentinel: "Every Rev2 §17 PASS item appears, by reference, in 00-master-design-rev2.md §11 acceptance, with the design landing site cited."


§17. Traceability matrix — §19 Open Decisions (15 items)

All 15 items (OD1..OD15) flow to 06-open-decisions-and-readiness.md. Each OD also has a default proposal in Rev2 §19, which Master Design Rev2 keeps unless it has a counter-proposal with reason.

OD Topic Design landing site Default kept?
OD1 Điều 34 decision path 06-… §S1 Yes — decision pending Council
OD2 Generic proposal table vs per-domain 06-… §S2 Refined — see §S2 (reuse workflow_change_requests + design a generic proposal table for non-workflow proposals)
OD3 executor_class_registry ownership 06-… §S3 Refined — Điều XX referent (4 Mothers framework law future) with Điều 45 cross-ref as substrate
OD4 Realtime gateway 06-… §S4 Default kept — Nuxt SSE shell → backend gateway abstraction; preserve Centrifugo adapter slot
OD5 CDC threshold 06-… §S5 Refined — explicit Benthos/NATS adoption triggers
OD6 Temporal/Camunda re-evaluation 06-… §S6 Default kept — Phase 6+ review with metric triggers
OD7 review_decision schema (split/merge) 06-… §S7 Default kept — Phase 0 closes
OD8 Event schema compat mode 06-… §S8 Refined — event_type_registry with semver + forward-by-default, breaking changes need policy row
OD9 Step state machine registry placement 06-… §S9 Default kept — PG state_machine_registry table
OD10 DLQ replay ledger schema 06-… §S10 Default kept — dlq_replay_request ledger with Điều 32 approval
OD11 Idempotency registry schema 06-… §S11 Default kept — per-executor namespace + key
OD12 Step states above 9 06-… §S12 + 02-… §4.5 Refined — adopt paused + cancelled as derived states; defer retrying + escalated (retrying captured by retry registry, escalated captured by waiting facet + governance)
OD13 dot_function_registry ownership / naming 06-… §S13 Default kept — MOUT-aligned namespace, registry SoT in PG
OD14 Governance UI category taxonomy 06-… §S14 + 02-… §7 Default kept — Rev2 §7.4 categories as v1
OD15 IU version policy 06-… §S15 + 04-… §5 Default kept — pin by default + opt-in upgrade per workflow

§18. Traceability matrix — §20 Forbidden block

Each Rev2 §20 forbidden mirrors a sentinel in this design:

Rev2 §20 forbidden Design sentinel
Không PG mutation "Zero INSERT / UPDATE / DELETE against production PG in this macro"
Không Directus mutation "Zero Directus writes; only read for boundary diagnostics"
Không Qdrant / vector write hay reindex "Zero business-Qdrant write; iu_vector_sync_enabled=false respected; no iu_route_* / iu_vector_sync_point mutation"
Không migration "No new migration in this macro; existing migrations referenced only for context"
Không DOT command run "Zero dot_iu_command_run insert via this macro"
Không law enactment "Master Design Rev2 references Điều XX as future framework only; Điều 34 only as decision path"
Không implementation macro "No Phase 0/1/… implementation triggered; Phase sequencing is paper-only in WS8"
Không final OSS tool selection "Tool labels only; no tool pin / version / CI step"
Không UI deployment "No Nuxt/Directus deploy; UI is design-level only"
Không Master Design Rev2 until approval "Triggered ONLY after user approval of Rev2 brief 2026-05-27 (per Rev2 §21 MP6); macro carries explicit approval reference"

§19. Cross-cutting sentinels

These apply across all design docs and are listed once so reviewers can verify them in one pass:

  1. No-double-ownership grep — every law-owned concern referenced ≤1× per concern, and only under the law's surface.
  2. IU body singletoninformation_unit.canonical_body_* is the only IU body source; render layer is the only consumer; no tasks.body / workflow_step_def.description_text / event_outbox.payload.body_text carrying IU body.
  3. Register-before-emitevent_type_registry lookup precedes every producer write.
  4. Heartbeat caller — every worker class has a heartbeat caller mapped to queue_heartbeat.
  5. Backend filter — every UI route fetches via backend; no Nuxt direct PG / outbox / NOTIFY.
  6. Gate respectdot_config runtime gates respected; design does not assume iu_vector_sync_enabled=true, does not assume composer_enabled for arbitrary IUs, etc.
  7. Reversibility — every design extension declared with rollback path.
  8. Survey gate (G7) — Phase-1 design depends on no CRS row until survey returns VL.

§20. Summary

Rev2 brief sections covered: §0..§21, MP1–MP6 (= 19 PASS items + 36 completeness rows + 15 open decisions). Every section has a design landing site in this Rev2 design package. No requirement section is silently dropped.

Residual gaps tracked: G1, G2, G3, G4, G5, G6, G7 + the design-extension registries (state_machine_registry, executor_class_registry, idempotency_registry, dlq_replay_request, ui_design_system_registry, usage_evidence registry, iu_assembly_slot_registry, realtime_gateway_topic_registry). All extensions are paper-only in this macro and require Phase 0/1 approval before any DDL.

End traceability matrix.

Back to Knowledge Hub knowledge/dev/design/v0.6-iu-4mothers-event-foundation-rev2/01-requirement-traceability-matrix.md