Reconcile docs with reality; fix module graph, token compare, health #1

Open
kami wants to merge 216 commits from webui-and-audit-reconciliation into master
Showing only changes of commit cd1675a90c - Show all commits
+29
View File
@@ -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.