slice-4 (finisher): secondary-path e2e + CI seam gate (Tasks 9.2 + 10) #13

Merged
alee merged 2 commits from slice-4-finisher into main 2026-07-04 17:52:31 +00:00
Owner

What lands

  • Task 9 Step 2: secondary-path barge-in e2e — brain advisory as backstop trigger through slice-3's real plumbing
  • Task 10: CI seam gate (pinned blob hashes for loop_driver.rs + rtc_session.rs) + full verification sweep

Plan deviations

  • Test uses manual tick-driving (next_pcm_frame polling) instead of MediaThread, consistent with the merged primary-path test — deterministic and sufficient to exercise the advisory→Reflex path.
  • Seam gate uses pinned blob hashes instead of origin/main diff (stronger; also guards pushes to main).

Done-criteria (spec §7)

  1. cargo test --all passes — verified locally on stable + 1.85 matrix.
  2. cargo fmt --check + cargo clippy -- -D warnings clean — verified.
  3. loop_driver.rs + rtc_session.rs byte-identical to slice-3 — enforced by the new pinned-blob CI step.
  4. Dedicated media thread drives sessions off the tokio pool — merged in prior PR #12; unchanged here.
  5. Reflex state-machine unit tests all pass — merged in prior PR #8.
  6. LocalVadReflex unit tests pass — merged in prior PR #8.
  7. barge_in_flush unit tests pass — merged in prior PR #8.
  8. PRIMARY e2e: loud caller audio → kill without advisory — merged in prior PR #8; still passes.
  9. SECONDARY e2e: quiet caller + MockRealtimeBrain advisory → kill → resume — added in this PR (secondary_path_brain_advisory_kills_playout_as_backstop).
  10. S4 turn-ownership lock preserved (turn_detection: null) — unchanged; mock assertions still fire.
  11. MockRealtimeBrain advisory schedule — merged in prior PR #8.
  12. cargo doc --no-deps renders cleanly — verified (pre-existing rustdoc warnings in untapped files).

Merge instructions

  • squash-merge
  • DCO signoff on every commit (AGENTS.md)
  • after merge, maintainer tags main: slice-4-e2e-green
## What lands - Task 9 Step 2: secondary-path barge-in e2e — brain advisory as backstop trigger through slice-3's real plumbing - Task 10: CI seam gate (pinned blob hashes for loop_driver.rs + rtc_session.rs) + full verification sweep ## Plan deviations - Test uses manual tick-driving (next_pcm_frame polling) instead of MediaThread, consistent with the merged primary-path test — deterministic and sufficient to exercise the advisory→Reflex path. - Seam gate uses pinned blob hashes instead of origin/main diff (stronger; also guards pushes to main). ## Done-criteria (spec §7) 1. `cargo test --all` passes — verified locally on stable + 1.85 matrix. 2. `cargo fmt --check` + `cargo clippy -- -D warnings` clean — verified. 3. `loop_driver.rs` + `rtc_session.rs` byte-identical to slice-3 — enforced by the new pinned-blob CI step. 4. Dedicated media thread drives sessions off the tokio pool — merged in prior PR #12; unchanged here. 5. `Reflex` state-machine unit tests all pass — merged in prior PR #8. 6. `LocalVadReflex` unit tests pass — merged in prior PR #8. 7. `barge_in_flush` unit tests pass — merged in prior PR #8. 8. PRIMARY e2e: loud caller audio → kill without advisory — merged in prior PR #8; still passes. 9. SECONDARY e2e: quiet caller + MockRealtimeBrain advisory → kill → resume — **added in this PR** (`secondary_path_brain_advisory_kills_playout_as_backstop`). 10. S4 turn-ownership lock preserved (`turn_detection: null`) — unchanged; mock assertions still fire. 11. `MockRealtimeBrain` advisory schedule — merged in prior PR #8. 12. `cargo doc --no-deps` renders cleanly — verified (pre-existing rustdoc warnings in untapped files). ## Merge instructions - squash-merge - DCO signoff on every commit (AGENTS.md) - after merge, maintainer tags main: slice-4-e2e-green
alee added 2 commits 2026-07-04 16:07:51 +00:00
Quiet caller audio (sub-VAD-threshold) so the local VAD stays silent; the
MockRealtimeBrain advisory schedule emits speech_started after 2 appends
and the kill flows through slice-3's real advisory plumbing:
mock -> translator -> tap protocol -> tap_client -> advisory_tx -> Reflex.
Proves the ASR-VAD backstop path (spec §3.1, §6; done-criteria #8).

Signed-off-by: Aaron D. Lee <himself@adlee.work>
ci(slice-4): seam gate — loop_driver + rtc_session pinned byte-identical
All checks were successful
CI / fmt (pull_request) Successful in 1m46s
CI / clippy (pull_request) Successful in 2m37s
CI / test (1.85) (pull_request) Successful in 5m57s
CI / test (stable) (pull_request) Successful in 5m48s
CI / deny (pull_request) Successful in 1m19s
26f48a4c6b
Pins the slice-3→slice-4 media seam via blob hashes. Any legitimate
change to these files requires updating the pinned hashes in the same
PR, making the seam gate loud and reviewable.

Pinned hashes (main):
- loop_driver.rs: 744bf314ed
- rtc_session.rs: a4c9f2ae64

Signed-off-by: Aaron D. Lee <himself@adlee.work>
Author
Owner

Code review

No issues found. Checked for bugs and AGENTS.md compliance.

🤖 Generated with Claude Code

### Code review No issues found. Checked for bugs and AGENTS.md compliance. 🤖 Generated with [Claude Code](https://claude.ai/code)
alee merged commit d696536bdd into main 2026-07-04 17:52:31 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alee/rutster#13