Keep the planning call flowing: whole rounds again, and a notetaker that writes after either speaker
Summary
-
Luke started pausing after every answer on a planning call. The cause was #1760: the planning model returned one question per call, so each answer waited on a full backend round trip before Luke could ask the next question.
-
planning.ts: Pocock's "How to plan" section is back word for word, with rounds. A new line tells the planning model that Luke asks its questions himself, one at a time, so answers can arrive mid-round. The return line is back to the GPT-Live delegation guide's own sentence. #1761's code-facts sentence stays, reworded so it keeps code questions out of a round instead of reading as "look up the repository every turn". -
instructions.ts: the planning role line is back to role and leading the conversation, as the guide's template has it. A new labelled Conversation policy (planning scene only) says to ask one question at a time and to carry on with the next question while the backend works. "Never ask the developer for a fact about the code" is now a "Delegate to the backend when" condition. -
Long silences (second commit). A test call's transcript showed four silences of 2.5 to 4.5 minutes. Each came right after Luke said he'd "finish the plan and bring it back for your sign-off". But the notetaker only wrote after the developer spoke, so nothing happened until they asked "are we done?".
plan-scribe.tsnow starts a run after a 1-second quiet gap whoever spoke last. GPT-Live has no end-of-turn event, so the quiet gap stands in for one. Luke's voice prompt now says "A notetaker writes the plan live as you talk; you never write it yourself." -
New test in
apps/web/tests/plan-scribe.test.ts: what Luke says is written into the plan without waiting on the developer. It fails on the old notetaker.
Evidence
- Platform-independent checks:
./scripts/check.shexit 0 - macOS Electron verification (
./scripts/verify.sh):not run. CI could not verify this PR. These are prompt changes only, and the behavior needs a live planning call on a Mac.
Visual evidence
- Fixture screenshots inspected:
not attached(no UI change)
Physical-device evidence
- Screenshot or screen recording:
not attached - Physical-notch check:
not performed - Device/display configuration:
not recorded
Invariants
-
./scripts/check.shgreen; no renderer/UI change. - JSON Schema goldens unchanged.
- Every behavior change has, in this PR, the test that fails without it. The notetaker change has one. The prompt wording has none, because a test of the text would only detect that it changed; the check for it is a live planning call.
- Gateway envelope goldens unchanged.
- No new
astype assertion. - No
effectimport in an OpenClaw-ported file. - No
Effect.runPromise/runSync/runForkoutside the runtime edges. - No new raw async primitives.
- No discarded Effect, Stream, or Layer.
- Test count: +1 (
plan-scribe.test.ts). - No hand-rolled file replaced.
-
packages/live/AGENTS.mdalready describes the labelled policy shape; no doc sentence names the changed wording. -
PRIVACY.mdunchanged. - Package deps unchanged.
- Barrel/door rule unaffected.
Notes
- Follow-up verification: a planning call on a Mac. Luke should ask one question at a time, move straight to the next question after each answer, and never ask about the code. If he flows fine anyway, the Conversation policy's second sentence is the one to cut.
š¤ Generated with Claude Code