From 29a553d4e1518d5c55c0062dd48178eec3b2eeab Mon Sep 17 00:00:00 2001 From: EdisonJwa Date: Mon, 18 May 2026 14:52:01 +0800 Subject: [PATCH] docs(traceability): add Deferred Work Watchlist (DW-001..DW-012); matrix v0.9.11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- docs/governance/traceability-matrix.md | 62 +++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/docs/governance/traceability-matrix.md b/docs/governance/traceability-matrix.md index b6ce3d7..03008ed 100644 --- a/docs/governance/traceability-matrix.md +++ b/docs/governance/traceability-matrix.md @@ -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) | 4–6 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. |