Propagate the 2026-07-01 two-sender revision (local VAD primary + brain
advisory secondary) into the epoch-rationale sections. §2.1, §3.2, §6.1,
§6.4 previously described barge_epoch as a forward-compat seam for a
deferred local-VAD wrapper; with LocalVadReflex in-scope this slice, the
epoch disambiguates the local-VAD primary trigger from the slower brain
advisory landing on the same event (~300 ms later).
Refs slice-4 spec §3.2, §6.1. DCO-signed.
Signed-off-by: opencode controller <controller@local>
Responds to the 2026-07-01 adversarial review's load-bearing finding:
advisory-only puts the brain round-trip in the barge-in trigger path,
contradicting wedge #1 (README:98-100, ARCHITECTURE.md:79-81).
Spec changes:
- §1.1: LocalVadReflex<P> added to scope as primary trigger
- §1.2: local VAD tuning framework deferred (the VAD itself in scope)
- §3.4: new — LocalVadReflex design (RMS, debounce, observe-then-delegate)
- §5.1: data flow shows local VAD as primary (≤80ms, zero brain round-trip);
brain advisory as secondary (confirms ~300ms later)
- §6.1: 'Why advisory-only' → 'Why both, local VAD primary' (revised rationale)
- §7: done-criteria 5-12 (added LocalVadReflex unit tests + two e2e paths)
Plan changes:
- Task 2b: new — LocalVadReflex<P> + 6 unit tests
- Task 5: spawn_tap_engine signature revised (takes advisory_tx parameter;
media thread owns the channel; two senders via tokio mpsc Sender Clone)
- Task 6: Connected spawn site wires LocalVadReflex<Reflex<TapAudioPipe>>
- Task 9: two e2e cases — PRIMARY (kill WITHOUT brain, wedge #1 proof) +
SECONDARY (advisory backstop)
- Self-review: wedge-#1 audit line added — Task 9 step 1 is the proof
DCO signoff added per AGENTS.md (commit -s).
Signed-off-by: opencode controller <controller@local>