Skip to content

Fix presenter narration for outcome reports and restore Buttonify - #391

Merged
witbrock merged 1 commit into
mainfrom
fix/presenter-voice-buttonify-regressions
Aug 18, 2026
Merged

Fix presenter narration for outcome reports and restore Buttonify#391
witbrock merged 1 commit into
mainfrom
fix/presenter-voice-buttonify-regressions

Conversation

@witbrock

Copy link
Copy Markdown
Member

Merge impact: Canonical effect-outcome reports remain complete on screen while speech becomes a short, human synopsis, and enabled Buttonify quick replies appear again in the Conversations UI.

Merge decision: ready — the affected backend, history, and frontend paths pass targeted regression coverage, with no candidate-caused material blocker remaining.

User outcome

Users no longer hear raw Markdown, presenter tags, identifiers, or diagnostic receipts when Von narrates a canonical effect-outcome report. Enabled Buttonify suggestions are again requested and rendered in the Conversations UI.

Material changes

  • Keep the full deterministic effect-outcome report as the authoritative screen channel.
  • Generate a bounded spoken synopsis from trusted reconciled effect facts without another model call.
  • Repair unsafe duplicated/raw legacy narration while preserving owner/shared-history authority.
  • Restore the main Conversations UI per-turn Buttonify opt-in while retaining the user preference as the backend authority.
  • Exclude the quoted non-authoritative model draft from Buttonify input.
  • Keep ordinary prompt-driven narration unchanged and narrowly recognise legacy reports only at their controlled opening.

Evidence

  • .venv/bin/pytest -q tests/backend/test_adaptive_turn_service.py — 178 passed.
  • .venv/bin/pytest -q tests/backend/test_von_generate_workflow_instances.py tests/backend/test_von_history_backfill_spoken.py — 34 passed.
  • npx jest --runInBand tests/frontend/chatTabSpeechPlanning.test.js src/frontend/web/von_interface/static/js/test/chatTab.test.js tests/frontend/chatPresenterModeRequest.test.js — 279 passed.
  • npm run lint:frontend:static -- <three changed frontend test/implementation files> — passed with no findings.
  • Python and JavaScript syntax checks plus git diff --check — passed.
  • Independent release review found no remaining candidate-caused stop-ship issue.

Ship boundary

  • Minimum ship criteria: screen/spoken divergence for canonical reports; no raw canonical Markdown or quoted draft reaches default TTS; current and historical paths remain safe; Buttonify opt-in and rendering work; ordinary presenter narration is preserved.
  • Stop-ship conditions: false success or scope narration, raw report narration, non-authoritative draft ingestion, lost ordinary spoken channels, or enabled Buttonify remaining suppressed by the missing request opt-in.
  • Non-blocking observations: historical reports without structured facts use a conservative synopsis; quick replies are not reconstructed after a history reload because history omits that debug metadata.
  • Non-goals: changing explicit Shift+Speak screen-reading behaviour or redesigning Buttonify as asynchronous delivery.

@witbrock
witbrock merged commit 813a040 into main Aug 18, 2026
4 checks passed
@witbrock
witbrock deleted the fix/presenter-voice-buttonify-regressions branch August 18, 2026 07:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant