Repository navigation
ci: run Berd Call tests on macOS and Linux - #417
Open
johnmatthewtennant wants to merge 12 commits into
Open
johnmatthewtennant wants to merge 12 commits into
johnmatthewtennant wants to merge 12 commits into
Conversation
When the provider sent a session expiry immediately after a handoff, the Spokesperson runtime had already closed by the time the host sent back the accepted handoff tool output. The send failed with "Spokesperson runtime is closed", which ended the session with that error instead of reporting that the session expired before it could renew. The runtime queues its terminal event before it closes, so ignore the closed send and let that event settle the unresolved handoff. Signed-off-by: John Tennant <jtennant@block.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The usage error output prints the help text, whose heading has been "Usage:" since the help command was added. The management usage error test still looked for lowercase "usage:", so it failed on every machine. CI does not run the berd-call tests, so nothing caught it. Signed-off-by: John Tennant <jtennant@block.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The usage error output prints the help text, whose heading has been "Usage:" since the help command was added. The synthesis usage error test still looked for lowercase "usage:", so it failed on every machine. CI does not run the berd-call tests, so nothing caught it. Signed-off-by: John Tennant <jtennant@block.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s from Saving a live setting rereads the settings file under a lock and changes only that setting. The Spokesperson voice test kept its starting settings in memory and never wrote them, so the file started empty and the saved arguments lost the voice and language. Save the starting settings first, as the other saved settings tests do. Signed-off-by: John Tennant <jtennant@block.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz>
Co-authored-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz>
Co-authored-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz>
Co-authored-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz>
johnmatthewtennant
marked this pull request as ready for review
October 21, 2026 16:17
Keep the cancelled response inflight until its successor starts, so scheduled renewal cannot snapshot an incomplete conversation between transcript and response events. Include phase and session diagnostics when renewal fails. Co-authored-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz>
johnmatthewtennant
marked this pull request as draft
October 21, 2026 17:07
Include a per-process sequence in temporary directory names so parallel fixtures cannot collide when SystemTime returns the same timestamp. Co-authored-by: Zack <04f47b290b155b3b8b782b11501cdb15f1e21e82dfceefd01ff0ed405459d927@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz>
Co-authored-by: Aaron <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz>
johnmatthewtennant
added a commit
that referenced
this pull request
Oct 21, 2026
## Summary Spoken agent names can be transcribed as homophones, preventing name-based routing from selecting the intended agent. Add repeatable `--stt-hint PHRASE` options to `start` and `session`, and pass them to Apple SpeechAnalyzer as contextual strings before recognition starts. Recognition restarts reuse the hints, and saved settings exclude them so later conversations get their own vocabulary. Other speech backends ignore them. The companion Buzz plugin supplies the current conversation’s agent names when the binary advertises this option. ### Related issue N/A. The closest related work is [#417](#417), which fixes existing macOS package-test failures. ### Testing In a live macOS Buzz call with conversation agent names supplied as hints, John reported that transcription now recognizes the names well. Previously, spoken “Zack” and “Aaron” had been transcribed as “Zach” and “Erin,” preventing routing. Automated coverage verifies that phrase hints preserve trimmed names, reject empty or oversized input, and are excluded from settings persisted for later calls. Live recognition after a recognizer restart has not been measured. --------- Signed-off-by: Nora <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz> Signed-off-by: John Tennant <jtennant@block.xyz> Co-authored-by: Nora <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz> Co-authored-by: Aaron <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz>
johnmatthewtennant
marked this pull request as ready for review
October 22, 2026 12:53
morgmart
reviewed
Oct 22, 2026
morgmart
left a comment
Collaborator
There was a problem hiding this comment.
🤖 Automated code review
Recommend COMMENT. The runtime race fix and expanded Berd Call coverage are sound, and all supplied GitHub check runs completed successfully. One non-blocking issue remains: the new Sherpa cache cleanup does not honor the repository's supported custom Cargo target directory, so the added local test gate can still encounter the stale cache it intends to remove.
Deterministic publication result: 0 blocking and 1 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
Signed-off-by: Aaron <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Berd Call's tests are omitted from
just tauri-test, so the Rust CI checks can pass while its unit and CLI integration tests fail. Add the completeberd-callpackage suite to the existing macOS and Linux jobs, and to localjust ci. Clear Sherpa’s incomplete restored native-library cache on both Unix platforms before running tests. Tests explicitly ignored for native audio, installed voices, or downloaded models remain opt-in.Includes fixes for four failures exposed by running the suite: two stale CLI usage assertions, a settings test missing its saved starting state, and a handoff race where provider expiry could end the session with a closed-runtime error instead of settling the handoff through the queued terminal event.
The input-cutover test coordinates the provider transcript with an explicit signal, so its pending-cutover assertion does not depend on CI scheduling within a fixed sleep.
Related issue
None found.
Testing
Exercised
just tauri-testwith a Cargo subprocess fixture: a failing Berd Call invocation makes the top-level recipe fail, so the existing Rust jobs cannot pass while that invocation fails.The complete Linux package suite passes, including the CLI usage tests and the provider-expiry handoff integration test, which uses a local WebSocket provider and the real CLI subprocess. A macOS recipe fixture confirms the restored Sherpa directory is removed before Cargo starts. The changed CI recipe executed the complete package suite on macOS and Linux. The macOS saved-settings regression confirms that changing the Spokesperson voice preserves the saved agent voice and language.