docs: close Phase 8 integration
This commit is contained in:
@@ -22,8 +22,10 @@ validated and committed locally in PixelPass (`7b11827`).** The deterministic Ph
|
||||
link-manager matrix is complete. **The production-path three-arm AEC leak qualification is
|
||||
built, validated and committed locally in PixelPass (`e027bc6`), completing Phase 6.**
|
||||
**Phase 7's public selector, AEC wiring and versioned capability response are built, validated
|
||||
and committed locally in PixelPass (`792f2bd`).** Phases 8–9 are not built — nothing released to
|
||||
date changes the feature's user-visible behaviour. **Phase 8 is now the current front.**
|
||||
and committed locally in PixelPass (`792f2bd`).** **Phase 8's PeerSpeak capability negotiation,
|
||||
picker/argv integration and causal status surface are built, validated and committed locally
|
||||
(`2c2b861`).** Phase 9 remains unbuilt; nothing has been released. **Phase 9 is now the current
|
||||
front and remains the ship gate.**
|
||||
**Date:** 2026-07-21 (v4); status line refreshed 2026-08-21
|
||||
**Design of record:** [`screenshare-audio-exclusion-plan.md`](screenshare-audio-exclusion-plan.md) v3.8, round 11.
|
||||
**Scope:** *ordering, gates and acceptance criteria only.*
|
||||
@@ -968,6 +970,35 @@ variant names (0d) do not block on it.
|
||||
- Capability-gated picker entry; wording per v3.4 §11.
|
||||
- Regression: existing `--app` / `--strict-audio` argv byte-identical to today.
|
||||
|
||||
> **Phase 8 — built, validated and committed locally as PeerSpeak `2c2b861` on 2026-08-21.**
|
||||
> The picker/core boundary now uses one typed selection for legacy desktop, desktop-excluding,
|
||||
> and strict per-app audio. `System audio except PeerSpeak` appears only when the exact resolved
|
||||
> PixelPass advertises `desktop_audio_exclusion`; the existing `All system audio` choice remains
|
||||
> alongside it with its echo warning. The machine-readable schema is primary, `--help` is only
|
||||
> the old-PixelPass strict-app fallback, and the two capability bits stay independent.
|
||||
>
|
||||
> Capability results carry the resolved executable path. A capability-gated share reuses the
|
||||
> picker probe only for that same path; a changed override or `$PATH` resolution is re-probed at
|
||||
> start and fails closed when the selected feature is absent. The new mode emits exactly
|
||||
> `--audio-mode=desktop-excluding` plus `--aec=off|pulse-module:<idx>`. The session-owned
|
||||
> `EchoCancelGuard` exposes its verified numeric module index without moving the guard out of the
|
||||
> load-bearing teardown object. Legacy desktop and per-app argv still delegate to the old builder
|
||||
> and are byte-identical.
|
||||
>
|
||||
> All four version-1 exclusion events parse into one shared status type that crosses the actual
|
||||
> host-notice channel into `UiEvent`; there is no duplicate matching enum. The UI retains an
|
||||
> explanatory warning even when a status races the share-start acknowledgement, displays it with
|
||||
> the live sharing badge, clears it on stop, and ignores late events for another mode. Exact
|
||||
> parser and causal tests cover `stream_unsupported`, `aec_failed`, `aec_revoked`, and
|
||||
> `foreign_aec_warning`.
|
||||
>
|
||||
> Final serialized validation (used after the parallel all-target link exhausted disk) passes:
|
||||
> 649 unit tests with 7 live-only ignored, 20 integration tests with 4 live-only screen-share
|
||||
> gates ignored, strict all-target Clippy, formatting, and `git diff --check`. The host-fault
|
||||
> integration target compiles with the typed command. PixelPass's completed 9.1 GiB target tree
|
||||
> was cleaned to recover disk; no source or Git state was removed. Phase 9 remains the explicit
|
||||
> rig-upgrade and two-machine field-test ship gate.
|
||||
|
||||
---
|
||||
|
||||
## 7. Phase 9 — rig upgrade and field tests 🚦 SHIP GATE
|
||||
|
||||
@@ -14,8 +14,9 @@ and committed locally in PixelPass `d09ee9b`. The Row 1 mutation-edge identity g
|
||||
(`7b11827`) complete the deterministic link-manager matrix. The production-path three-arm AEC
|
||||
leak qualification is built, validated and committed locally in PixelPass `e027bc6`; **Phase 6
|
||||
is complete.** The public selector, AEC wiring and versioned capability response are built,
|
||||
validated and committed locally in PixelPass `792f2bd`; **Phase 7 is complete and Phase 8 is the
|
||||
current implementation front.**
|
||||
validated and committed locally in PixelPass `792f2bd`; **Phase 7 is complete.** PeerSpeak
|
||||
`2c2b861` completes the capability-bound picker/argv and causal UI status integration;
|
||||
**Phase 8 is complete and Phase 9 is now the ship gate.**
|
||||
**Date:** 2026-08-21 (v1: 07-19 · v2: 07-20 · Option C 07-20 · v3.1 r4 · v3.2 r5 · v3.3 r6 ·
|
||||
v3.4 r7 · v3.5 r8 · v3.6 r9 · v3.7 r10 · v3.8 r11 2026-08-21)
|
||||
**Origin:** Joe's suggestion — "whitelist all audio except audio coming from peerspeak."
|
||||
@@ -1460,11 +1461,18 @@ frequencies outside the Hann main lobe; the 3 dB guarded tolerance and 18 dB nai
|
||||
unchanged. Final validation is 354 passed and 13 ignored; strict Clippy, all four serialized
|
||||
live gates, exact capability/help probes, `pixelpass --doctor` and residue checks pass.
|
||||
|
||||
1. **Continue with Phase 8:** bind capability results to the resolved PixelPass path and add the
|
||||
capability-gated picker plus exact mode/AEC argv.
|
||||
2. Carry Phase-6 status events causally through the core/UI message boundary, preserving existing
|
||||
per-app argv byte-for-byte and proving old-PixelPass fallback emits no new flags.
|
||||
PeerSpeak commit `2c2b861` completes Phase 8. A typed picker/core selection keeps legacy desktop,
|
||||
desktop-excluding and per-app capture distinct. The versioned capability result is bound to its
|
||||
resolved PixelPass path and re-probed on path changes before capability-gated argv is built. The
|
||||
new picker row emits both `--audio-mode=desktop-excluding` and explicit
|
||||
`--aec=off|pulse-module:<idx>`; old PixelPass keeps the row absent and receives no new flags.
|
||||
Legacy desktop and per-app argv remain byte-identical.
|
||||
|
||||
Still owed beyond that, unchanged: the §9.2 rig upgrade before any exclusion claim is
|
||||
published, and **field-test §12** — nothing in this design has been tested over the real
|
||||
The four Phase-6 status values now cross the real host-notice channel into the UI as the same
|
||||
parsed type and drive a persistent, mode-scoped explanation beside the live sharing badge. Final
|
||||
serialized validation passes 649 unit tests (7 live-only ignored), 20 integration tests (4
|
||||
live-only screen-share gates ignored), strict all-target Clippy, formatting and diff checks.
|
||||
|
||||
**Phase 9 is current.** Still owed, unchanged: the §9.2 rig upgrade before any exclusion claim
|
||||
is published, and **field-test §12** — nothing in this design has been tested over the real
|
||||
GStreamer/AAC/network path or on two machines.
|
||||
|
||||
Reference in New Issue
Block a user