docs: auto-speak narrates every turn, not only the final answer (Refs #36)

The Limits bullet still described the pre-fix behaviour ("thinking and the
final message only"), which dank/dankvoice#3 just retired: narration rides
`turn_end`, so the assistant's prose and thinking are spoken while the agent
works. Records the two rules an operator needs when audio seems missing —
arming is read at startup only, and a turn landing during playback is dropped
rather than queued — plus where the design rationale lives.

kb-lint 0 violations, index-coverage 0 issues.
This commit is contained in:
Frank
2026-10-19 13:31:01 -07:00
parent 1921d76319
commit fd6a07bb58
2 changed files with 20 additions and 8 deletions
+10 -4
View File
@@ -83,16 +83,22 @@ saved sink. Thinking narration rides the same arming (`thinking: true`).
## Limits
* Auto-speak narrates thinking and the final message only — mid-turn tool
chatter is never spoken; skipped in `print`/`json` modes so benches stay
silent.
* Auto-speak narrates **each turn** — the assistant's prose and thinking while
the agent is still working — plus the settled final answer, spoken once. A
turn that lands while audio is still playing is dropped, not queued or
interrupting; tool-only turns stay silent; `print`/`json` modes never speak,
so benches stay quiet. Narration goes through the humanizer, so it lags its
turn by a rewrite round trip; `/say humanize off` removes the lag.
* Arming is read at startup only — see **Arming auto-speak** above. A session
that never speaks is unarmed, not broken; `/say on` before debugging.
* frank-tts deployment, voice packs and the registry are owned by the
`serverAppConfigs` repo (`serverAppConfigs-docs/Dankclaw/Frank TTS.md`).
## Citations
* Package repo `dank/dankvoice` (README, `docs/decisions/`) — behaviour and
knob truth.
knob truth. `docs/decisions/2026-10-19-turn-narration.md` records why
narration rides `turn_end` and not only `agent_end`.
* Gitea issues #21, #23, #27, #32 (drop-in history) and #34 (this cutover)
on `dank/command-center`.
* Live endpoint probes 2026-10-18/19 documented in those issues.
+10 -4
View File
@@ -20,10 +20,16 @@ on its concept page, linked here. Never re-expand an entry in place.
Sessions spoke only on explicit `/say`: the settings file carried no `auto`
key, and arming is session-scoped by design (`/say on` never persists). Set
`"auto": true` in `~/.omp/cache/dankvoice.json`. Law: silence at session start
is a config state — read `/say status` for `auto-speak on`, then watch
`pgrep -a pw-play` for one player per segment, before blaming the endpoint.
Details: [dankvoice](core/dankvoice.md).
`"auto": true` in `~/.omp/cache/dankvoice.json`. Same report, second half:
auto-speak listened only to `agent_end` — a settle that fires once per prompt
and is skipped outright when the harness schedules a continuation — so nothing
was narrated while an agent worked; fixed in dank/dankvoice#3, which narrates
`turn_end` as well. Law: silence at session start is a config state — read
`/say status` for `auto-speak on`, then watch `pgrep -a pw-play` for one player
per segment, before blaming the endpoint. Law: whether the harness delivers an
event to extensions is settled in minutes by a throwaway probe extension that
timestamps `turn_end`/`agent_end` — never inferred from audio timing, which the
humanizer lags by seconds. Details: [dankvoice](core/dankvoice.md).
## 2026-10-19 — LazyVim installed as an NVIM_APPNAME profile