diff --git a/docs/architecture/sad.md b/docs/architecture/sad.md index 0fd7294..9f52d84 100644 --- a/docs/architecture/sad.md +++ b/docs/architecture/sad.md @@ -1355,13 +1355,23 @@ Communication evidence is maintained through change history and baseline approva - Source SRS: SRS-203 - Verification method: Unit Test, Integration Test +**SAD-080**: The software architecture shall expose a mouse-side-button input class as a first-class member of the cross-platform PTT binding type so the Windows and macOS backends can drive `transmit_active` from `Mouse4` / `Mouse5` events while the Linux GNOME-Wayland portal backend honours whatever input classes the portal's own dialog returns. The bridge surface and the Flutter binding-capture dialog shall carry the same coarse class without ever exposing a raw mouse button id beyond the `PointerEvent.buttons` bitmask on the platform side. + +- Status: Baseline Candidate +- Type: Software Architecture Item +- Stage: P0 / MVP +- Allocated to: Audio (Windows / macOS / Linux), Bridge, Flutter UI +- Source SRS: SRS-200 +- Verification method: Unit Test, Platform Test, UI Review + ## 27. Updated SRS-to-SAD Coverage Matrix | SRS Range | SAD Coverage | |---|---| | SRS-001 through SRS-184 | Covered by inherited SAD baseline `SAD-001` through `SAD-060` | | SRS-185 through SRS-194 | Covered by `SAD-061` through `SAD-070` | -| SRS-195 through SRS-203 | Covered by `SAD-071` through `SAD-079` | +| SRS-195 through SRS-199, SRS-201 through SRS-203 | Covered by `SAD-071` through `SAD-079` | +| SRS-200 | Covered by `SAD-080` | ## Baseline Candidate 0.9.1 Update @@ -1383,3 +1393,10 @@ Communication evidence is maintained through change history and baseline approva | Version | Date | Description | |---|---|---| | 0.9.3 | 2026-05-15 | Added desktop PTT software-architecture items SAD-071 through SAD-079: backend isolation behind `DesktopPttBackend` trait, Windows three-rung ladder, macOS two-rung permission-aware ladder, Linux GNOME-Wayland portal ladder, `AudioTransmitGate` object, sanitised `BridgeEvent::PttCapability`, `PttSanitizer` log-sink decorator, UI capability badge with platform-specific explanation, missed-key-up watchdog task. Strict layered sourcing preserved (`SAD -> SRS` only). | + + +## Baseline Candidate 0.9.4 Update + +| Version | Date | Description | +|---|---|---| +| 0.9.4 | 2026-05-15 | Added `SAD-080` to close the SRS-200 coverage gap surfaced by a P0 traceability audit. The earlier baseline matrix folded SRS-200 under the `SRS-195..203 -> SAD-071..079` range without giving it a dedicated SAD item; the new entry restores the strict one-to-many SRS-to-SAD discipline (SRS-200 is now sourced by SAD-080; SAD-080 is in turn covered by the new SDD-093). No other rows mutate; the existing PTT SAD items (071..079) retain their original SRS sources. | diff --git a/docs/architecture/sdd.md b/docs/architecture/sdd.md index 0f4e2fc..5bb9352 100644 --- a/docs/architecture/sdd.md +++ b/docs/architecture/sdd.md @@ -1113,6 +1113,15 @@ The registry supports consistency between architecture, detailed design, impleme - Source SAD: SAD-079 - Verification method: Unit Test, Integration Test +**SDD-093**: `PttInputClass` shall be a Rust enum in `chanora_audio::ptt_backends` with variants `None`, `Keyboard`, and `MouseSideButton`. The enum is the only carrier of the user's bound input class across the audio + bridge + Flutter boundary; its `as_str(&self) -> &'static str` mapping returns the diagnostic-safe label (`""` / `"keyboard"` / `"mouse-side-button"`) consumed by `PttBackendDescriptor::bound_input_class`. The Windows backend ladder and the macOS event-tap backend shall observe the `MouseSideButton` variant on their binding-rebind path and translate it into the platform's native side-button identifier internally; the Linux GNOME-Wayland portal backend shall accept whatever input class the portal returns from `BindShortcuts` and apply the same classifier already documented in `desktop-ptt-architecture.md` §5.3. The Flutter binding-capture dialog shall capture mouse side-button presses through the `PointerEvent.buttons` bitmask (back = `0x08`, forward = `0x10`) and never forward the raw bitmask beyond the dialog — the bridge `set_ptt_binding` call carries only the enum variant. + +- Status: Draft +- Type: Software Detailed Design Item +- Stage: P0 / MVP +- Software unit: `PttInputClass`, `WindowsRawInputBackend`, `WindowsHookBackend`, `MacOSEventTapBackend`, `LinuxGnomeWaylandBackend`, `_PttBindingCaptureDialog` +- Source SAD: SAD-080 +- Verification method: Unit Test, Platform Test (Windows / macOS / Linux), UI Review + ## 11. Updated SAD-to-SDD Coverage Matrix | SAD Range | SDD Coverage | @@ -1120,6 +1129,7 @@ The registry supports consistency between architecture, detailed design, impleme | SAD-001 through SAD-060 | Covered by inherited SDD baseline `SDD-001` through `SDD-070` | | SAD-061 through SAD-070 | Covered by `SDD-071` through `SDD-080` | | SAD-071 through SAD-079 | Covered by `SDD-081` through `SDD-092` | +| SAD-080 | Covered by `SDD-093` | ## Baseline Candidate 0.9.1 Update @@ -1141,3 +1151,10 @@ The registry supports consistency between architecture, detailed design, impleme | Version | Date | Description | |---|---|---| | 0.9.3 | 2026-05-15 | Added desktop PTT detailed design SDD-081 through SDD-092: `DesktopPttBackend` trait, `PttCapabilityLevel` enum, Windows Raw-Input + low-level-hook + Focused implementations, macOS event-tap + Focused implementations, Linux GNOME-Wayland portal + Focused implementations, `PttController`, `AudioTransmitGate`, `PttSanitizer` layer, `PttCapabilityBadge` widget, `MissedKeyUpWatchdog` task. Strict sourcing (`SDD -> SAD` only) preserved. | + + +## Baseline Candidate 0.9.4 Update + +| Version | Date | Description | +|---|---|---| +| 0.9.4 | 2026-05-15 | Added `SDD-093` covering `SAD-080`. `SDD-093` fixes the `PttInputClass` enum surface, the cross-backend rebind contract for `MouseSideButton`, and the Flutter side-button capture path against the `PointerEvent.buttons` bitmask. Strict layered sourcing preserved (`SDD -> SAD` only). | diff --git a/docs/governance/baseline-candidate-validation-report.md b/docs/governance/baseline-candidate-validation-report.md index 07cf5a1..78ee256 100644 --- a/docs/governance/baseline-candidate-validation-report.md +++ b/docs/governance/baseline-candidate-validation-report.md @@ -26,8 +26,8 @@ chanora-docs-repo-format-v0.9.3 | SysRS | 302 | | SysDes | 148 | | SRS | 203 | -| SAD | 79 | -| SDD | 92 | +| SAD | 80 | +| SDD | 93 | ## 4. Undefined Reference Check @@ -89,3 +89,4 @@ chanora-docs-repo-format-v0.9.3 |---|---|---| | 0.9.2 | 2026-05-14 | Validation report for Apple App Store Connect upload SDK gate correction, full file update, and coverage check. | | 0.9.3 | 2026-05-15 | Validation report for desktop Push-to-Talk update: added 7 SysRS / 7 SysDes / 9 SRS / 9 SAD / 12 SDD entries, added `desktop-ptt-architecture.md`, recorded six new owner decisions DEC-023..028; ID totals advance to 302 / 148 / 203 / 79 / 92; direct-layer rule and undefined-reference counts remain zero. | +| 0.9.4 | 2026-05-15 | P0 traceability audit follow-up: added `SAD-080` and `SDD-093` to close the SRS-200 coverage gap surfaced by the audit. ID totals advance to 302 / 148 / 203 / 80 / 93; direct-layer-rule and undefined-reference counts remain zero. No code change in this revision; the existing mouse-side-button support previously implemented under the broader `SRS-195..203 -> SAD-071..079 -> SDD-081..092` umbrella is now tied to the dedicated SAD/SDD pair. | diff --git a/docs/governance/repo-format-validation-report.md b/docs/governance/repo-format-validation-report.md index ae33537..d4debac 100644 --- a/docs/governance/repo-format-validation-report.md +++ b/docs/governance/repo-format-validation-report.md @@ -37,8 +37,8 @@ chanora-docs-repo-format-v0.9.3 | SysRS | 302 | | SysDes | 148 | | SRS | 203 | -| SAD | 79 | -| SDD | 92 | +| SAD | 80 | +| SDD | 93 | ## 5. Undefined Reference Check @@ -74,3 +74,4 @@ chanora-docs-repo-format-v0.9.3 |---|---|---| | 0.9.2 | 2026-05-14 | Validated repository-format documentation package and internal filename reference updates. | | 0.9.3 | 2026-05-15 | Re-validated repository-format after desktop PTT update: added `docs/architecture/desktop-ptt-architecture.md`; ID totals advance to 302 / 148 / 203 / 79 / 92; naming, undefined-reference, and direct-layer-rule counts remain at zero. | +| 0.9.4 | 2026-05-15 | P0 audit follow-up: ID totals advance to 302 / 148 / 203 / 80 / 93 after adding `SAD-080` (sources SRS-200) and `SDD-093` (sources SAD-080). Direct-layer-rule and undefined-reference counts remain zero. | diff --git a/docs/governance/traceability-matrix.md b/docs/governance/traceability-matrix.md index 040788f..ab53c9f 100644 --- a/docs/governance/traceability-matrix.md +++ b/docs/governance/traceability-matrix.md @@ -211,7 +211,7 @@ SysRS-296..302 | SysRS-300 (macOS permission-aware) | SysDes-145 | SRS-198 | SAD-073 | SDD-085 | | SysRS-301 (Linux GNOME-Wayland) | SysDes-145 | SRS-199 | SAD-074 | SDD-086 | | SysRS-302 (No raw key history) | SysDes-146 | SRS-202 | SAD-077 | SDD-090 | -| (DEC-026 mouse buttons) | SysDes-142, SysDes-145 | SRS-200 | SAD-072..074 | SDD-082..086 | +| (DEC-026 mouse buttons) | SysDes-142, SysDes-145 | SRS-200 | SAD-080 | SDD-093 | | (DEC-028 missed-key-up watchdog) | SysDes-142, SysDes-144 | SRS-203 | SAD-079 | SDD-092 | Verification coverage: @@ -228,3 +228,10 @@ No forbidden direct links introduced: SRS continues to source from SysDes only, | Version | Date | Description | |---|---|---| | 0.9.3 | 2026-05-15 | Added desktop PTT traceability rows covering SysRS-296..302 -> SysDes-142..148 -> SRS-195..203 -> SAD-071..079 -> SDD-081..092 and the verification coverage onto SWE.4 / SWE.5 / SWE.6 / SYS.4. | + + +## Baseline Candidate 0.9.4 Update + +| Version | Date | Description | +|---|---|---| +| 0.9.4 | 2026-05-15 | Corrected SRS-200 traceability row: SAD coverage moves from the narrative `SAD-072..074` annotation to the dedicated `SAD-080`, with SDD coverage in the new `SDD-093`. The change preserves strict layer discipline (SRS-200 -> SAD-080 -> SDD-093). No other rows mutate. |