diff --git a/persistent-memory.md b/persistent-memory.md index 772cfd8..a88a926 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -46,15 +46,29 @@ upstream API key stays server-side (INV-003). _As of 2026-08-01:_ -**🔨 ACTIVE BUILD — Donut voiced-interview (auto-TTS + KB-recall + Princess Donut). RESUME HERE post-clear.** +**🔨 Donut voiced-interview — ALL 3 SLICES BUILT + COMMITTED + LIVE-PROVEN (2026-08-01). Heid gates PENDING triage.** Operator ask "add auto-tts to the web gui" grew into a voiced, corpus-grounded Tier-3 interview character. -**Slice 1 DONE** (persona `docs/characters/donut.md` authored + `ratatoskr:donut` defined + in the picker); -**slices 2 (Zonos auto-TTS) + 3 (retire-ready KB-bridge) TO BUILD** — operator: "build both today." Contract -`docs/contracts/donut_voiced_interview.contract.md` (validated). Both external deps verified live 2026-08-01 -(Zonos `voice:"donut"` REGISTERED + returns wav; the KB-recall pattern is worldtree-dev-ruled — consumer-side -retrieval + `memory_context` pinning, retire-ready). **FULL build state / design specs / owed items → -`persistent-memory.d/2026-08-01-donut-voiced-interview-build.md`.** OWED: a P&P verification re-run to infra-ops -(#382 fix deployed b166). +**Slice 1** (persona + `ratatoskr:donut` define, `3e912b1`), **Slice 2** (auto-TTS via Zonos, `1883214`), **Slice 3** +(retire-ready KB-recall bridge, `7168914`) — ALL DONE, **531 green**, both live-smoked end-to-end on :8081/b128. +Contract `docs/contracts/donut_voiced_interview.contract.md`. **NOT pushed** (operator's call; local at `7168914`). +- **Slice 2 (TTS):** `src/ratatoskr/tts.py` (Zonos gateway client + `pad_to_dials`) + `/api/tts` proxy in `web/server.py` + (voice map `ratatoskr:donut→donut`, serialize lock, 503 degrade) + `index.html` 🔊 toggle (opt-in, localStorage, + default off) / speak-on-`done` / AbortController cancel-on-new-turn / `