# voice_interface tasks

## Open

- [ ] Coordinate with [glasses](../glasses/) and [website_builder](../website_builder/) on the `/api/voice/{ask,answer}` route contract — JSON shape, auth (pw=fabregas), polling cadence, freshness/turn-id, single-line `answer.txt` delivery (proposed over fragile `tail -1 outbox.md`)
- [ ] Live verb-B test (send-keys + poll + summarize) against a real agent — deferred to avoid bootstrap noise; mechanic proven (same as serve.py:937 `/api/agents/send`)
- [ ] After wiring lands: end-to-end test from the glasses (Cameron drives) — iterate on response phrasing based on his feedback
- [ ] Build a phrasing corpus in `memory.md`: rules that worked, rules that didn't

## Done

- [x] Read GUIDELINES + REPORT_FORMAT + own vault slice + linked slices (glasses memory + infra + fleet overview) — 2026-06-13
- [x] Read `config.yaml` for the live agent roster + window names — 2026-06-13
- [x] Dry-run verb A ("check on X") against yams via capture-pane — correctly summarized v3 towel finetune state — 2026-06-13
- [x] Write + test sanitization helper — `agents/voice_interface/sanitize.py` (ANSI strip, smart-punct fold, non-ASCII drop, char cap) — 2026-06-13
- [x] Write bootstrap understanding + plan to `agents/voice_interface/outbox.md` — 2026-06-13
