diff --git a/docs/screenshare-audio-exclusion-impl-plan.md b/docs/screenshare-audio-exclusion-impl-plan.md index d5c1b03..d34ff98 100644 --- a/docs/screenshare-audio-exclusion-impl-plan.md +++ b/docs/screenshare-audio-exclusion-impl-plan.md @@ -14,7 +14,9 @@ locally in PixelPass (`98cde2c`): the hidden production path creates, retains, r crash-cleans exact-channel non-lingering fan-out links. The four versioned Phase 6 status events are built, validated and committed locally in PixelPass (`5a65f50`). Capture-sink replacement and successful exact-channel relinking are built, validated and committed locally in PixelPass -(`d09ee9b`). The remaining Phase 6 matrix rows, plus phases 7–9, are not built — nothing +(`d09ee9b`). **The Row 1 mutation-edge identity gate and the Row 8d/8e fail-closed +construction gates are built, validated and committed locally in PixelPass (`6be07ef`).** +The remaining Phase 6 refusal/matrix rows, plus phases 7–9, are not built — nothing released to date changes the feature's user-visible behaviour. **Phase 6 remains the current front.** **Date:** 2026-07-21 (v4); status line refreshed 2026-08-21 @@ -718,7 +720,23 @@ ancestry becoming unsafe. > > This does **not** complete Phase 6. The remaining failure-matrix rows are still open. The public > mode selector remains Phase 7 and PeerSpeak parsing/UI integration remains Phase 8. The last -> committed PixelPass checkpoint is `d09ee9b`. +> committed PixelPass checkpoint is `6be07ef`. +> +> **Row 1 plus Row 8d/8e slice — built, validated and committed locally as `6be07ef` on +> 2026-08-21.** The production +> link mutator now applies serial revalidation to retained proxies as well as new requests; a +> node/global-id recycle between planning and mutation yields zero `create_link` calls and drops +> any stale retained intent. `CapturePlan` has one injectable production construction seam, and +> separate optimized-release gates prove both capture-sink construction failure and the +> observer's sticky readiness timeout escape `DesktopExcluding` as errors without ever resolving +> the default monitor or constructing legacy `Routing`. +> +> The full suite passes with 335 passed, 0 failed and 12 ignored. All three new gates pass in an +> optimized release build; strict all-target Clippy, formatting and `git diff --check` pass. All +> three serialized Phase 6 live audio-plan gates still pass, `pixelpass --doctor` passes, and the +> final Pulse/PipeWire/process residue scan is empty. Nix remains unavailable, so validation used +> system Rust 1.97.1. The disposable 1.0 GiB release cache was removed afterward, leaving 12 GiB +> free. Next is the independent Row 6a/6b/6c refusal/reason slice; Phase 6 is not complete. Failure ⇒ report the stream unsupported. **Never** fall back to the default monitor — and after 0d that fallback is unconstructible in this mode, by either path. diff --git a/docs/screenshare-audio-exclusion-plan.md b/docs/screenshare-audio-exclusion-plan.md index 1264db7..8f54b55 100644 --- a/docs/screenshare-audio-exclusion-plan.md +++ b/docs/screenshare-audio-exclusion-plan.md @@ -8,7 +8,9 @@ channel-planning prerequisite is committed locally in PixelPass `781defc`; the f live fan-out mutation slice is built, validated and committed locally in PixelPass `98cde2c`. The four versioned causal status events are built, validated and committed locally in PixelPass `5a65f50`. Capture-sink replacement and successful all-channel relinking are built, validated -and committed locally in PixelPass `d09ee9b`. +and committed locally in PixelPass `d09ee9b`. The Row 1 mutation-edge identity gate and Row +8d/8e fail-closed construction gates are built, validated and committed locally in PixelPass +`6be07ef`. **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." @@ -1393,8 +1395,16 @@ host-path sink-destruction/relink gate pass; the full suite reports 332 passed a three serialized Phase 6 live gates pass together, and strict Clippy plus `pixelpass --doctor` remain clean. -1. **Continue Phase 6:** complete the remaining failure-matrix rows; sink replacement/relink - recovery now passes through the real host path and is committed locally in `d09ee9b`. +PixelPass commit `6be07ef` closes Row 1 and Row 8d/8e. Mutation-edge serial +revalidation now covers retained proxies as well as new links, and a recycled identity produces +zero unsafe creates. Two optimized-release fault-injection gates prove capture-sink construction +failure and readiness timeout both fail `DesktopExcluding` closed without resolving the legacy +default monitor or constructing legacy routing. Full validation reports 335 passed and 12 +ignored; strict Clippy, all three serialized live Phase 6 gates, diagnostics and residue checks +pass. The next bounded slice is the three independent Row 6a/6b/6c refusal/reason fixtures. + +1. **Continue Phase 6:** add independent refusal/reason fixtures for Row 6a `port.exclusive`, + Row 6b encoded streams and Row 6c IEC958 passthrough. 2. Carry the revised row-9 partition forward: music-only and a different-device microphone stay eligible; same-device capture and a tainted-monitor capture are excluded. 3. Preserve the new live mutation slice's ownership, serial-revalidation, fail-closed,