Pin the mid-tool-call rule in the control board scanner (#1503)
Acceptance rule (plan page, bf641e22): a seat mid-tool-call is working,
never waiting. The scanner already met it through pi's stopReason values;
deriveState now also checks the content for a toolCall block (working),
after the error stop reasons and before "stop" (waiting). Thinking blocks
do not keep a text turn from being waiting. Three JSONL fixture tests and
three state-table cases pin the rule. Live check on the real board:
orch-01 and rev-code-01 mid-tool-call are working, velma's finished
text-only turn is waiting. Sonnet review: APPROVED.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
@@ -2025,3 +2025,18 @@ under the table is unchanged. Page-only change, one static test
|
||||
(control-board 66/66, packages/mosaic 69/69). Sonnet review:
|
||||
APPROVED, no findings. Verified in Chrome: "1 of 4", "3 of 4", "4", "13 of 38",
|
||||
console clean. Next: Jason keeps using it.
|
||||
|
||||
## 2026-09-12 — Control board step 3, mid-tool-call rule (#1503)
|
||||
|
||||
Before: the acceptance rule "a seat mid-tool-call is working, never
|
||||
waiting" (plan page, commit bf641e22) had no test of its own. The scanner
|
||||
met it only through pi's stopReason values.
|
||||
|
||||
After: deriveState also checks the message content for a toolCall block
|
||||
(working), after the error stop reasons (error) and before "stop"
|
||||
(waiting). Thinking blocks do not affect waiting. Three JSONL fixture tests
|
||||
and three state-table cases pin it. Suites: control-board 69/69,
|
||||
packages/mosaic 69/69. Live check at 14:27Z on the real board: orch-01
|
||||
(assistant + toolCall) working, rev-code-01 (tool result last) working,
|
||||
velma (text-only, stop) waiting. Sonnet review: APPROVED, no findings.
|
||||
No seat changed state because of this change; it closes a gap, not a bug.
|
||||
|
||||
Reference in New Issue
Block a user