Close F28 and record F31, the reason every rotation failed

Runtime death is live-proven distinct from worker deployment: no renewal in the
20:45 window, expiry and requeue at 20:55:50.

F31 explains run 4 and the F28 disposable task both dying at rotation. The
handoff action is two agent-written lines joined by the code, held to one
line's budget, and the error named a branch the answer cannot reach.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011xsXyr5J1RACo71YeKG3Pu
This commit is contained in:
2026-08-28 01:00:33 +04:00
parent 65230020b9
commit 93338b72ce
+50 -6
View File
@@ -1187,12 +1187,11 @@ failed send, which is the correct branch.
Not proven: the receipt itself, because F28 had already destroyed the pane. Not proven: the receipt itself, because F28 had already destroyed the pane.
## F28 proof and two defects it uncovered, 2026-08-28 ## F28 closed, and three defects it uncovered, 2026-08-28
The unit split is installed on workpc. F28's worker-restart direction is The unit split is installed on workpc and F28 is proven live in both
proven live. The runtime-death direction is in progress at the time of directions. Three new defects, F29, F30 and F31, were found while setting
writing, and its result is appended below. Two new defects, F29 and F30, were found while setting the proof the proof up. None was visible in tests.
up. Neither was visible in tests.
### The tmux unit, as installed ### The tmux unit, as installed
@@ -1313,9 +1312,10 @@ F24 open correctness, dormant on current topology
F25 fixed, live-proven F25 fixed, live-proven
F26 fixed, live-proven F26 fixed, live-proven
F27 fixed, live-proven F27 fixed, live-proven
F28 worker-restart direction live-proven; runtime-death direction pending F28 CLOSED, live-proven in both directions
F29 fixed in efd0a5e, needs a coordinator rebuild F29 fixed in efd0a5e, needs a coordinator rebuild
F30 fixed in 2dc90bd, needs a worker rebuild F30 fixed in 2dc90bd, needs a worker rebuild
F31 fixed in 6523002, needs a worker rebuild, BLOCKS every rotation
``` ```
### Deployment state ### Deployment state
@@ -1324,3 +1324,47 @@ Both fixes are committed and unbuilt. The running coordinator and worker are
still `fbaaf79`. Run 5 should start from a deployment carrying `efd0a5e` and still `fbaaf79`. Run 5 should start from a deployment carrying `efd0a5e` and
`2dc90bd`, or it will hit F30 again the first time a handoff artifact is `2dc90bd`, or it will hit F30 again the first time a handoff artifact is
rejected. rejected.
### F28 runtime-death direction, live
`systemctl stop orchestra-tmux` at 00:39, restarted at 00:39:37 as MainPID
`3073848`. Every pane died with the old server.
```text
20:45:07Z renewal window opens, no TaskLeaseRenewed appended F16 refused
20:55:07Z lease deadline
20:55:50Z state queued v8, lifecycle reclaimed, failure_class lease_expired
```
Runtime death is now distinct from worker deployment. F16's missing-pane branch
fires on real execution loss, which is what it was written for.
The same window reproduced F30 a second time, on the deployed `fbaaf79` worker
that lacks `2dc90bd`: session still pinned, release transaction stuck at
`prepared`, same rejected handoff artifact.
### F31: every rotation failed on a length check that named the wrong cause
Two different tasks, two different agents, one error:
```
adapter: invalid handoff answer: invalid handoff authored field: prose smuggled into list
```
`parseHandoffAnswer` builds `Action` by joining the agent's `NEXT` and `WHY`
answers with `" — "`. `Validate` then held that join to `maxAuthoredLine`, 200
characters. The prompt asks for a sentence each and names no budget, so two
ordinary sentences do not fit.
The message named a branch the answer cannot reach. `parseHandoffAnswer` splits
on newlines and trims every field, so no authored field ever contains `"\n#"`.
Length was the only reachable cause, and the agent was never told what to
shorten. It could not self-correct, so the same text failed on every retry.
This is why run 4 and the F28 disposable task both died at rotation, and why
each left the stuck transaction behind that pinned the worker slot.
Fixed in `6523002`: `Action` carries the budget of both lines, the error names
the actual length and limit, and the prompt states the limit.
F31 blocks run 5 outright. Run 5's chain is four rotations.