Repository navigation
feat(gateway): WaaV Infer integration — session language, endpoint, truncated replies - #20
Merged
dittops merged 4 commits intoOct 19, 2026
Conversation
…runcated replies
- Segmented STT: the waav-infer file profile now sends the session language
(`language`, single shape, droppable on refusal) — the Gateway used to send
none, so Infer guessed the language per segment. Routing map, capability map
and the wire test updated.
- Native Infer STT/TTS adapters default to Infer's real endpoint,
ws://127.0.0.1:8080/v1/ws (was ws://127.0.0.1:8123/v1/realtime).
- TTS: a speech reply WaaV Infer flags with `x-waav-truncated: true` (its
length bound cut the utterance; the audio is real but incomplete) is logged
and counted in waav_gateway_tts_truncated_total{provider}, instead of being
passed off as a complete reply. Pairs with Infer's new `truncated` terminal.
Tests: segmented-stt 490/490; gateway lib 7110/7113 — the three failures
(core::metrics::provider test_ttfb_recording / test_concurrent_min_max_updates,
core::observability::speaking test_typical_speaking_session) are timing tests
in untouched code that pass on rerun (one intermittent in 5 stress runs).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ws test All of these also failed on #19's head; main was last green on 5 Oct. - supply-chain: rustls 0.23.45 -> 0.23.46 (RUSTSEC-2026-0346..0349). The rest cannot be upgraded here and are ignored with reasons in deny.toml (mirrored in gateway/.cargo/audit.toml), like the existing tonic 0.11 entries: rustls 0.22 only via tonic 0.11 (Google Speech client); zip extract() advisories while WaaV never extracts (zip 0.6 is webrtc-sys-build's build-time unpack, zip 2 is ndarray-npy's .npz reader via mel_spec); unsafe-libyaml unmaintained via serde_yaml 0.9 (operator-authored YAML). `cargo audit --deny warnings` and `cargo deny check advisories bans licenses sources` pass. - clippy -D warnings (Rust 1.99): chunks_exact -> as_chunks, is_multiple_of, and an explained allow where a `return` is only needless without features. - server boot: config.example.yaml configures API secrets, so #19's metrics policy locks /metrics (403) — the secure default. The probe now asserts the 403, then reboots with WAAV_METRICS_PUBLIC=true and checks the series. - ws_tests::test_websocket_voice_config: #19 closes a session whose voice setup failed (1011) instead of leaving it half-configured; the test now asserts that close rather than writing into the closed socket. Verified: clippy (default and --all-features) clean; the CI integration suites (e2e_mock, load, server_startup, ws, keystone_wire, keystone_completeness, segmented_stt_ws, segmented_stt_golden) 63/63. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI's rustfmt and segmented-stt jobs failed on #19's head. Formatting only, no functional change (vendored webrtc-sys untouched); both crates build with all targets afterwards. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gateway/vendor/ (webrtc-sys, livekit-api, vendored in #19) is upstream code kept byte-close to its source; its spellings are not ours to change. With cargo audit and cargo deny now green, typos on vendor/ was the last supply-chain failure. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dittops
pushed a commit
that referenced
this pull request
Oct 19, 2026
gitleaks flagged gateway/vendor/livekit-api/src/test_token.txt (rule jwt) once #20 merged into this branch and the scan covered the whole range to main. It is the upstream crate's own test token (iss "myapikey", sub "identity", expired March 2025), read only by its access_token.rs tests. Allowlisted by exact path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
Stacked on #19 (base:
fix/gaia-integration-2026-10-16). Gateway side of BudEcosystem/WaaV-Infer#2.waav-infer-fileprofile now carrieslanguage(single shape, droppable if a server refuses it). Before, the Gateway sent no language, so Infer guessed per segment. Routing map, capability map and the wire test updated.ws://127.0.0.1:8080/v1/ws(was:8123/v1/realtime, which Infer does not serve).x-waav-truncated: trueon REST; atruncatedterminal on its WebSocket). The generic TTS HTTP layer logs it and countswaav_gateway_tts_truncated_total{provider}instead of passing a cut-off reply off as complete.Test plan
core::metrics::providertest_ttfb_recording,test_concurrent_min_max_updates;core::observability::speakingtest_typical_speaking_session) that pass on rerun (one intermittent in 5 stress runs)cargo fmtclean (the crate's fmt check already fails on other untouched files)🤖 Generated with Claude Code