Record F38 and F39
The agent guessed an undocumented schema and was never told it guessed wrong. The operator noticed the stall before the system reported anything. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011xsXyr5J1RACo71YeKG3Pu
This commit is contained in:
@@ -1607,3 +1607,32 @@ implement launch -> correction above accepted plan above accepted research
|
||||
The correction is held until the plan successor is definitely live. Posting
|
||||
earlier still exercises F20 and F23, but it cannot prove a mid-plan correction
|
||||
outranks accepted research and the current trajectory.
|
||||
|
||||
### F38 and F39: the agent guessed a schema, and was never told it guessed wrong
|
||||
|
||||
Run 5 sealed `research.json` at 01:47:52 and wrote
|
||||
`{"from": "research", "to": "plan"}`. Nothing moved for five minutes. The
|
||||
operator noticed before the system reported anything.
|
||||
|
||||
```text
|
||||
research artifact: json: cannot unmarshal string into Go struct
|
||||
field Research.dead_ends of type workphase.DeadEnd
|
||||
```
|
||||
|
||||
F38: the brief said `Seal .orchestra/research.json before you ask` and
|
||||
described the contents in prose. It never stated the schema. The agent wrote
|
||||
`dead_ends` as strings where the decoder wants `{tried, why_failed}` objects.
|
||||
Everything else in the artifact was correct.
|
||||
|
||||
F39: `requestPhase` refused through `recordError` alone. `answerRefusedPhase`
|
||||
ran only on a coordinator 409, so a local decode failure reached nobody. The
|
||||
session parked at a boundary with no feedback, and worker health holds one
|
||||
error slot (F18), so even that trace was overwritable.
|
||||
|
||||
F39 is the serious half. F38 alone costs one corrected file. F39 turns any
|
||||
local refusal into a silent stall.
|
||||
|
||||
Fixed in `0bd86e2`. The brief carries the shape, and every local refusal now
|
||||
reaches the agent. `TestPhaseSealSchemasDecode` decodes each documented shape
|
||||
with the function the worker uses: flipping `dead_ends` back to strings
|
||||
reproduces run 5's exact error at build time.
|
||||
|
||||
Reference in New Issue
Block a user