v0.2.0-beta.5.1.8 - Gemini TTS Content-Blocked Recovery
Pre-release
Pre-release
·
6 commits
to main
since this release
Gemini TTS content_blocked classifier recovery
Trigger:
- controlled Batch A run 31587048578
- source v0.2.0-beta.5.1.7 / 30c75a0
- Atomic Habits Sulafat chunks succeeded; Schedar chunk 1 then returned HTTP 400 content_blocked
Fix:
- explicit speech-synthesis preamble
- spoken transcript START/END boundaries
- transcript preserved exactly
- no safety setting changes
- recovery only for exact transcript SHA already synthesized successfully in the same process
- every actual recovery-prompt POST consumes the global recovery budget
- generic retryable recovery responses also consume recovery budget
- max recovery POSTs = 2 globally
- third recovery POST refused before network fetch
- overall generation POST hard cap remains 10
Deterministic proof:
- primary content_blocked -> recovery POST #1 -> retryable 500
- recovery POST #2 -> retryable 500
- later eligible recovery POST #3 is refused before network fetch
- unseen transcript fails closed
- completed/no-audio materialization tests remain PASS
Lifecycle:
- Issue #68
- PR #69
- final PR head: f3f9d42
- merge/release SHA: 87da695
- PR CI: 31594232501
- main CI: 31594649547
- Pages deploy: 31594649570
Safety:
- no Batch A dispatch in this release step
- no media-dual-v0.2.0-beta.6 creation
- no episodes.json/player/Piper promotion