Repository navigation
FE-1789: Steer Brunch Voice through Draft, Check and Experiment - #9824
Closed
kostandinang wants to merge 1 commit into
Closed
kostandinang wants to merge 1 commit into
kostandinang wants to merge 1 commit into
Conversation
The Live bridge now derives a short note from the latest applied mutate_workpiece revision in the conversation snapshot (which workpiece sections hold claims, which are annotated as open, which are empty, how many cross-cutting issues remain) and sends it once per revision through session.thinking.append with no delegation. Quiet context lands before any spoken answer from the same update and is re-offered once the Live channel connects. The session prompt tells GPT-Live to use it only to describe progress; Brunch stays the author of substantive questions. Remove interview-coverage.ts, which read the retired sweep tool. Co-authored-by: Amp <amp@ampcode.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
Contributor
Author
|
Superseded by #9826 on the Linear-named branch |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🌟 What is the purpose of this PR?
First slice of "Draft steering" from the Brunch Voice RFC: give GPT-Live-1 quiet, accurate context about how far Brunch's Ledger (its record of settled facts) has got, so the voice can describe progress truthfully instead of guessing. This uses the third GPT-Live-1 steering event,
session.thinking.append, which the Live bridge did not use before (it usedcommentaryfor Brunch's answers andinstructionsfor failures only).The slice is browser-only. Brunch itself is unchanged; the note is derived deterministically in the client from the latest applied
mutate_workpiecerevision already present in the conversation snapshot. GPT-Live-1's prompt keeps Brunch as the only author of substantive questions; this note does not let the voice choose what to ask.🔗 Related links
sweeptool thatinterview-coverage.tsread:libs/@hashintel/brunch-agent/docs/evidence/design/provenance-and-tooling-decision-log-2026-09-04.md, item C9 (removed frommainwith FE-1652: Keep Brunch planning protocols outside the product repository #9810; the file this PR deletes was already dead)🚫 Blocked by
🔍 What does this change?
live-brunch-bridge/ledger-coverage-note.ts(new):selectAppliedWorkpieceRevisionfinds the latestmutate_workpieceresult whose output binds its own call (revisionId === toolCallId; refused, pending or unbound inputs are not state, same rule asbrunch-workpiece-history.ts).describeLedgerCoveragerenders a note from the workpiece headings: which level-3 sections hold claims, which carry an open annotation (Not yet asked,Unknown,Assumed,Deferred,Conflict,Declined), which are empty, and how many cross-cutting issue entries exist. Fenced code is ignored. The note stays under 1,400 characters (GPT-Live allows 500 tokens per append), dropping the least useful sentences before truncating.live-brunch-bridge.ts: newappendThinkingdependency;update()offers the note once per applied revision, before#settle()so quiet context precedes any spoken answer from the same update. A note is re-offered only if the local send failed.live-conversation.ts:appendThinking,"thinking"inLiveAppendResult["kind"],session.thinking.appendedacknowledgement. A thinking ack does not close an open delegation (only commentary or instructions answer one).live-conversation-control.tsx: wiresappendThinking; re-runsbridge.update()once the Live channel connects, because the firstupdate()happens before the data channel opens; suppresses the user-facing warning for a failed thinking send (best effort, retried on the next update).openai-live-session.ts: one prompt addition telling GPT-Live-1 what quiet context notes are and that they are not a questionnaire or licence for its own follow-up questions.interview-coverage.tsand its test (dead code reading the retiredsweeptool).Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
steer_voicetool writing adata-*part through Flue'suseDataWriter.🐾 Next steps
🛡 What tests cover this?
live-brunch-bridge/ledger-coverage-note.test.ts(new): settled/open/empty classification, nested case content, fenced headings ignored, budget trimming order, revision selection (latest bound revision; skips refused, unbound, non-markdown, dispatch-role and non-mutate_workpieceparts).live-brunch-bridge.test.ts: one note per revision, not re-sent on re-render, thinking precedes commentary in the same update, retried only while the local send fails, refused/unbound revisions ignored.live-conversation.test.ts:session.thinking.appendwire shape, acknowledgement correlation only onsession.thinking.appended, delegation stays open after a thinking ack.yarn lint:tsc,yarn lint:eslint(no new warnings) and the fullvoice-interview+server/voicevitest suites pass for@apps/petrinaut-website.❓ How to test this?
yarn devfor@apps/petrinaut-website, open the AI assistant and switch to Brunch Voice.[Petrinaut Live trace] ... "event":"brunch.coverage"withsent: true.📹 Demo
None yet; audio session.