docs(traceability): add Deferred Work Watchlist (DW-001..DW-012); matrix v0.9.11

Convert prose-only deferrals scattered across SDD-120 §10, SDD-119 §3, DEC-032 resolution prose, and researcher Wave 4 Tier B notes into a single durable governance register. Watchlist is governance-layer only; no engineering-chain coverage rule relaxed.

Entries:

- DW-001 Dimension 3 production telemetry export (SDD-120 §10 / SysRS-308; P1; systems-requirements)

- DW-002 Build-failing hard CI gate vs. current advisory-only (SDD-120 §10; P1; systems-requirements)

- DW-003 Multi-host benchmarking (macOS Apple Silicon + Windows x86_64; SDD-120 §10 / SysDes-157; P2; system-architect)

- DW-004 IDE integration for cargo bench (SDD-120 §10; P3; builder)

- DW-005 Dart-side flutter_rust_bridge round-trip bench (SDD-120 §10 / Tier B4; P2; detailed-designer)

- DW-006 iOS deployment-target SoT consolidation (SDD-119 §3 v0.9.17; macOS half already closed by b23b46c; P2; detailed-designer)

- DW-007 Opus encode/decode latency under varied conditions (Tier B; P2; verification-engineer)

- DW-008 Resampler throughput at non-canonical rate pairs (Tier B; P3; verification-engineer)

- DW-009 Protocol forwarder loop tracing benchmark (Tier B; P3; verification-engineer)

- DW-010 Remove [patch.crates-io] cmake-rs pin once PR #257 merges and a release lands (DEC-032 resolution prose; P2; builder)

- DW-011 Linux SIGABRT root cause + graceful shutdown SRS/SDD chain (no source SDD yet; P0; debugger then systems-requirements)

- DW-012 Manual bench-baseline-update.yml workflow_dispatch to seed first real baseline (SDD-120 §6 / SAD-091; P1; operator action)

DW-010 and DW-006 had partial prose precedents in DEC-032 and SDD-119 respectively; neither was tracked in a watchlist. No duplicates introduced. ID convention (monotonic DW-NNN, retired-not-reused) established in the section intro. Doc-only change; no code touched.
This commit is contained in:
EdisonJwa
2026-05-18 14:52:01 +08:00
parent 477394d83e
commit 29a553d4e1
+61 -1
View File
@@ -1,7 +1,7 @@
# Chanora Requirements and Design Traceability Matrix
**Version:** 0.9.10
**Version:** 0.9.11
**Status:** Baseline Candidate
**Language:** English
**Product:** Chanora
@@ -1098,3 +1098,63 @@ Verification-engineer's parallel dispatch landed SWE4-UV-058..062 into `docs/ver
| Version | Date | Description |
|---|---|---|
| 0.9.10 | 2026-05-18 | Absorbed the full SDD-120 (`RealtimeAudioBenchmarkHarnessAndAdvisoryCI`, v0.9.16) end-to-end chain: SysRS-307/308/309 → SysDes-156/157/158 → SRS-216..219 → SAD-088..091 → SDD-120 → Code (commits 3a7750a initial harness + 8e95972 workflow/comparator + 75b04f0 gitignore). Added five end-to-end metric-family rows in §A (capture alloc count → SWE4-UV-058; capture callback wall-clock → SWE4-UV-059; opus encode → SWE4-UV-060; opus decode → SWE4-UV-061; resampler throughput → SWE4-UV-062), all marked PENDING_BASELINE post-reconciliation (verification-engineer's parallel dispatch landed SWE4-UV-058..062 at swe4-unit-verification-plan.md v0.9.15 concurrent with this matrix update; §A markers reconciled at commit time). Added §B advisory CI workflow row (SysRS-308 → SysDes-157 → SRS-218 → SAD-090 → SDD-120 §6 → bench-advisory.yml + compare_baseline.rs), §C workflow-isolation row (SAD-091 → SDD-120 §7 → bench-baseline-update.yml), §D tolerance-window row (SysRS-309 → SysDes-158 → SRS-219 → SDD-120 §8 → compare_baseline.rs; no dedicated SAD allocation acknowledged), and §E baseline-storage row (SRS-217 → SAD-089 → SDD-120 §5 → emit_baseline.rs + x86_64-unknown-linux-gnu.json). §F refreshed the code-anchor table with 10 new entries (common.rs, realtime_capture.rs, opus_codec.rs, resampler.rs, emit_baseline.rs, compare_baseline.rs, Cargo.toml, bench-advisory.yml, bench-baseline-update.yml, .gitignore). §G confirmed five prior open issues CLOSED (SRS-210..215 matrix rows, SDD-110 Source SAD correction, SysDes-135 generic reuse, SRS-111 dual-allocation pattern, SWE4-UV-040 x86 inclusion). §H noted DEC-032 status unchanged (Active temporary deviation; exit criteria pending). §I surfaced two new non-blocking gaps (SWE4-UV-058..062 absent from swe4 plan; first workflow_dispatch baseline run gated on CI minutes). §J confirmed strict-hierarchy discipline preserved. SDD-120 §10 deferred items (multi-host benches, Dart-side bridge bench, production telemetry export, hard CI gate) recorded as DEFERRED. TRACEABILITY_OK for engineering layers; TRACEABILITY_GAPS_REMAIN for SWE.4 authoring only; BLOCKED_REQUIREMENT_GAP not raised. |
## Deferred Work Watchlist (Baseline Candidate 0.9.11)
This section is the **single canonical durable register** for deferred / future-work commitments surfaced by ratified SysRS / SysDes / SRS / SAD / SDD / DEC artefacts in this product line. Prior to v0.9.11 such deferrals lived only in document prose (e.g. SDD-120 §10, SDD-119 §3, DEC-032 resolution prose, researcher Tier B notes), where they are at risk of silent slippage when the originating document is consulted as a status source ("are we doing X?" → "yes" forgetting the escalation/closure work was queued).
The watchlist is governance-layer only. It does not act as an engineering-layer direct source (`SysRS -> SysDes -> SRS -> SAD -> SDD` is unaffected) and it does not relax any coverage rule. Each entry is a **commitment to act once a gating condition is met**, not a ratified decision; ratified decisions continue to live in `docs/governance/product-decision-register.md`.
### Conventions
- **ID format**: `DW-NNN` (Deferred Work). Numbering is monotonic and watchlist-local; gaps are permitted (e.g. when a DW is dropped, its ID is retired, not reused).
- **Source**: the upstream artefact whose prose flags the deferral. A DW must cite a concrete document/section/clause; "general intent" is not a valid source.
- **Gating condition**: the externally observable trigger that converts the DW from "deferred" to "actionable". Once met, the DW is the entry point for dispatching the named owner agent.
- **Priority**: P0 (blocks current product baseline), P1 (near-term post-baseline), P2 (medium-term hardening), P3 (optional polish).
- **Owner Agent**: the agent layer that owns the *next* action when the gating condition fires. "operator action" is reserved for human-only steps that no agent can dispatch on its own.
A DW is **retired** (not deleted) by marking its row `RETIRED` in a future matrix revision once the work is either (a) ratified into an SysRS/SysDes/SRS/SAD/SDD/DEC chain, or (b) explicitly dropped via a recorded governance decision.
### Watchlist
| ID | Source | Item | Gating Condition | Priority | Owner Agent |
|---|---|---|---|---|---|
| DW-001 | SDD-120 §10 / SysRS-308 deferred clause | Dimension 3 production telemetry export (real-device, real-call benchmark dimension of the Option B benchmark scope) | Post-baseline-maturity SysRS clause authored + ratified DEC entry | P1 | systems-requirements |
| DW-002 | SDD-120 §10 / SysRS-308 deferred clause | Build-failing hard CI gate (escalation from the current advisory-only `bench-advisory` workflow) | 46 weeks of clean baseline data accumulated + ratified DEC entry authorising the escalation | P1 | systems-requirements |
| DW-003 | SDD-120 §10 / SysDes-157 | Multi-host benchmarking (macOS Apple Silicon, Windows x86_64 runners — currently Linux x86_64 only) | SysDes revision to allow more than one canonical bench host + CI minutes budget approval | P2 | system-architect |
| DW-004 | SDD-120 §10 | IDE integration (cargo bench from rust-analyzer, IntelliJ run configs, flutter-tool wrappers) | Optional tooling polish — no external gate; pick up when capacity allows | P3 | builder |
| DW-005 | SDD-120 §10 / researcher Wave 4 Tier B4 | Dart-side `flutter_rust_bridge` round-trip benchmark | SAD/SDD authoring for the Dart-side bench infrastructure | P2 | detailed-designer |
| DW-006 | SDD-119 §3 v0.9.17 (iOS half of the deployment-target SoT consolidation; macOS half closed by commit b23b46c) | iOS deployment-target SoT consolidation — collapse the multi-site `IPHONEOS_DEPLOYMENT_TARGET=13.0` declarations in the iOS podspec / Podfile to a single Ruby constant parallel to `apps/chanora_flutter/macos/macos_deployment_target.rb` | Parallel-to-macOS work; pick up when iOS build hardening capacity available | P2 | detailed-designer |
| DW-007 | researcher Wave 4 Tier B | Opus encode/decode latency under varied conditions (per-bitrate, per-complexity, per-frame-size sweeps beyond the SDD-120 §3 canonical 20 ms / 960-sample / default-complexity baseline) | SDD-120 baseline maturity (DW-002 prerequisite recommended but not strictly required) | P2 | verification-engineer |
| DW-008 | researcher Wave 4 Tier B | Resampler throughput at non-canonical rate pairs (beyond the SDD-120 §3 canonical triplet) | SDD-120 baseline maturity | P3 | verification-engineer |
| DW-009 | researcher Wave 4 Tier B | Protocol forwarder loop tracing benchmark | SDD-120 baseline maturity | P3 | verification-engineer |
| DW-010 | DEC-032 resolution prose (`product-decision-register.md` v0.9.8.1 row; DEC-032 §"Resolved" status row) | Remove the workspace `[patch.crates-io]` cmake-rs pin (currently pinned to fork `pr2502/cmake-rs` @ `bdad5edc569d82151922c5c6c4685b1563f12aa1` carrying cmake-rs PR #257) and switch to a plain upstream `cmake` crate version bump | cmake-rs PR #257 merges into upstream + a fresh `cmake` crate release is published to crates.io carrying that fix | P2 | builder |
| DW-011 | (no source SDD yet — investigation pending; surfaced by recent Linux runtime reports) | Linux SIGABRT root-cause investigation + graceful-shutdown SRS/SDD chain authoring | User-supplied reproducer artifacts (crash log, stack trace, environment) sufficient to begin debugger analysis | P0 | debugger then systems-requirements |
| DW-012 | SDD-120 §6 / SAD-091 | Manual `workflow_dispatch` invocation of `.github/workflows/bench-baseline-update.yml` to seed the first real SAD-089 baseline JSON (superseding the currently-seeded committed baseline) | CI minutes return + human operator schedules the dispatch and reviews the resulting PR | P1 | operator action (not an agent dispatch) |
### Already-tracked check
A pre-authoring search for these items confirmed:
- **DW-010 partial precedent**: DEC-032's resolution prose in `product-decision-register.md` (v0.9.8.1 history row + DEC-032 §Notes/Status row) explicitly calls out "re-evaluate the `[patch.crates-io]` override once cmake-rs PR #257 merges and a fresh `cmake` release lands". This is prose only — there is no durable watch-list entry, so DW-010 is the canonical tracker. The DEC-032 prose remains the source citation.
- **DW-006 partial precedent**: SDD-119 §3 v0.9.17 prose flags the iOS SoT consolidation as an "open follow-up" (the macOS half is closed by commit b23b46c). This is prose only — no other governance register tracks it, so DW-006 is the canonical tracker.
- **DW-011 not pre-tracked**: no SysRS / SysDes / SRS / SAD / SDD / DEC currently anchors a Linux SIGABRT graceful-shutdown clause. DW-011 holds the slot until reproducer artifacts arrive and a SysRS/SysDes/SRS/SAD/SDD chain can be authored (at which point DW-011 retires and ordinary engineering-layer traceability takes over).
- **DW-001..005, DW-007..009, DW-012**: surfaced from SDD-120 §10 prose and researcher Tier B notes only; no other governance register currently tracks them.
No duplicates introduced.
### Strict-hierarchy discipline check
The watchlist does not introduce any forbidden direct link. Each DW cites its source artefact for traceability but does not itself act as an upstream source for any SysRS / SysDes / SRS / SAD / SDD item. Owner-agent fields are dispatch hints, not engineering-layer allocations.
### Decision
**TRACEABILITY_OK.** The matrix now durably tracks 12 deferred work commitments that previously lived only in document prose. No engineering-chain regression. **BLOCKED_REQUIREMENT_GAP is not raised** (the watchlist absorbs prose-only deferrals into a durable register; it does not surface any code-without-SDD condition).
### Recommended next agent
**None.** The watchlist is the deliverable. Once a DW's gating condition is satisfied, that DW row becomes the entry point for dispatching its named owner agent into the ordinary SysRS / SysDes / SRS / SAD / SDD / Code / Verification chain.
| Version | Date | Description |
|---|---|---|
| 0.9.11 | 2026-05-18 | Added §"Deferred Work Watchlist" as the single canonical durable register for prose-only deferrals previously scattered across SDD-120 §10 (5 items: Dimension 3 telemetry, hard CI gate, multi-host benches, IDE integration, Dart-side frb round-trip bench), SDD-119 §3 v0.9.17 (iOS deployment-target SoT consolidation; macOS half already closed by commit b23b46c), researcher Wave 4 Tier B (Opus latency sweeps, non-canonical resampler rate pairs, protocol forwarder loop tracing), DEC-032 resolution prose (cmake-rs `[patch.crates-io]` override removal once PR #257 merges upstream), Linux SIGABRT investigation (no source SDD yet; held in DW-011 pending reproducer artifacts), and the manual seed-baseline `workflow_dispatch` operator action (SDD-120 §6 / SAD-091). 12 entries authored: DW-001..DW-012. ID convention introduced (monotonic `DW-NNN`, retired-not-reused). Watchlist is governance-only and does not relax any coverage rule; strict-hierarchy discipline preserved (`SysDes -> SysRS`, `SRS -> SysDes`, `SAD -> SRS`, `SDD -> SAD` unaffected). Recommended next agent: none — the watchlist is the deliverable; each row becomes the entry point for its named owner agent once its gating condition fires. BLOCKED_REQUIREMENT_GAP not raised. |