docs: record completed Phase 7
This commit is contained in:
@@ -20,9 +20,10 @@ construction gates are built, validated and committed locally in PixelPass (`6be
|
||||
PixelPass (`956534f`).** **The revised Row 9 positive/negative late-arrival partition is built,
|
||||
validated and committed locally in PixelPass (`7b11827`).** The deterministic Phase 6
|
||||
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.** Phases
|
||||
7–9 are not built — nothing released to date changes the feature's user-visible behaviour.
|
||||
**Phase 7 is now the current front.**
|
||||
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.**
|
||||
**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.*
|
||||
@@ -890,8 +891,9 @@ shippable runtime override.
|
||||
### Phase 7 — public mode selector + capability advertisement (pixelpass ships first)
|
||||
|
||||
⚠️ **Round-3 P1: nothing in v3 ever promoted the hidden trigger to a public flag.** 0d added an
|
||||
internal mode input; Phase 7 advertised capability and naming; Phase 8 added `--aec`, the picker
|
||||
and status. No phase required the actual **mode selector** to exist publicly or to be passed.
|
||||
internal mode input; Phase 7 advertised capability and naming; Phase 8 added PeerSpeak's
|
||||
`--aec` emission, the picker and status. No phase required the actual **mode selector** to exist
|
||||
publicly or to be passed.
|
||||
The result would be a capability-gated picker entry that, when chosen, still spawns legacy
|
||||
whole-desktop capture — the feature appearing to ship while doing nothing. Reachable: peerspeak's
|
||||
host argv has no mode parameter (`screenshare/mod.rs:152`) and pixelpass's `HostOpts` has no mode
|
||||
@@ -910,6 +912,39 @@ byte-identical, absent `--aec` still accepted.
|
||||
v3.4 §11 public naming is a **blocking user input at the start of this phase**. Internal typed
|
||||
variant names (0d) do not block on it.
|
||||
|
||||
> **Phase 7 — built, validated and committed locally as PixelPass `792f2bd` on 2026-08-21.** The
|
||||
> user selected `--audio-mode=desktop-shared|desktop-excluding`. The shared value resolves to the
|
||||
> byte-identical legacy plan; the excluding value reaches the existing typed
|
||||
> `DesktopExcluding` plan and requires an explicit `--aec=off|pulse-module:<idx>`. The exact
|
||||
> Phase-4 parser is now the public CLI parser, malformed values fail before host startup, and the
|
||||
> selected AEC config is carried through `CapturePlan` into the production graph controller
|
||||
> instead of being hardcoded to `Off`. Both protocol flags require `--host`; the hidden 0d
|
||||
> trigger remains test-only and defaults to `Off` for its existing fixtures.
|
||||
>
|
||||
> `pixelpass --capabilities` now emits exactly one versioned JSON line:
|
||||
> `{"schema_version":1,"capabilities":{"strict_app_audio":true,"desktop_audio_exclusion":true}}`.
|
||||
> The two booleans are independent by construction. The old-PeerSpeak/new-PixelPass golden feeds
|
||||
> both existing whole-desktop and strict per-app argv into the new parser unchanged and proves
|
||||
> absent `--audio-mode`/`--aec` still resolves to legacy behavior. The existing byte-exact legacy
|
||||
> GStreamer audio-tail gate remains green; `--help` probing is retained only for old integrations.
|
||||
>
|
||||
> Phase-7 validation also made the Phase-6 signal gate consume the selector-owned AEC config. Its
|
||||
> first rerun caught the stale test-local input immediately. Two later reruns exposed a separate
|
||||
> measurement issue: a coherent projection of sub-LSB stochastic noise can land in an unusually
|
||||
> deep single-bin null, so comparing only control-bin to guarded-bin overstated the rig's
|
||||
> resolution. Retained raw spectra showed no coherent guarded 1500 Hz peak and comparable nearby
|
||||
> noise. The committed gate now defines the control resolution as the larger of the exact control
|
||||
> bin and the 90th percentile of neighboring ±5–25 Hz projections outside the Hann main lobe;
|
||||
> the 3 dB guarded tolerance and 18 dB naive positive-control margin remain unchanged. This is a
|
||||
> resolution estimate for the steady-state gross-leak gate, not the Phase-9 PN/MLS upgrade.
|
||||
>
|
||||
> Final PixelPass validation: 354 passed, 0 failed and 13 ignored; strict all-target Clippy,
|
||||
> formatting, `git diff --check`, the exact capability/help probes, `pixelpass --doctor`, and all
|
||||
> four serialized live audio gates pass. The final Pulse/PipeWire/process/temp-file residue scan
|
||||
> is empty. Nix is unavailable, so validation used system Rust 1.96.1. Phase 8 is next: bind the
|
||||
> capability to the resolved PixelPass path, add the capability-gated picker/argv, and carry
|
||||
> exclusion status causally to the UI.
|
||||
|
||||
### Phase 8 — peerspeak integration
|
||||
- `EchoCancelGuard::module_index()` accessor (currently private; only `source_name()` /
|
||||
`sink_name()` exist).
|
||||
|
||||
Reference in New Issue
Block a user