Record F34, F35 and F36 from run 5's second attempt

Run 5 reached the phase transition, further than any previous run, then stopped
on F36: the adapter emits a rotation reason the validator refuses.

Each defect tonight was reachable only after the previous fix. Tests passed
throughout.

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:41:21 +04:00
parent b9ca365b9a
commit 294cbcb078
+60
View File
@@ -1482,3 +1482,63 @@ F31 DEPLOYED, still awaiting a first rotation
F32 DEPLOYED, live-proven, slot reaped and freed
F33 fixed in 32220d9, needs a rebuild, BLOCKS every launch nondeterministically
```
## Run 5, second attempt: two more layers, 2026-08-28
The stuck launch was recovered by hand, one Enter into the pane. That is an
operator recovery of a keystroke Orchestra believed it had already delivered,
not a lifecycle intervention, and F35 turns it into an action for next time.
### F34, live-proven while being written
```text
01:33:37 first renewal allowed, no baseline, lease extends 21:43 -> 22:03
```
The pane had not changed since 01:13 and held unsent text. The renewal gate
exempts a lease with no baseline, which grants a full free period to exactly
the case the gate exists to catch. Fixed in `92f32d6` by baselining the
progress hash at launch.
### F35: nothing could re-poke a pane
The UI offered `grant_approval`, `deny_approval`, `handoff`, `release`, `block`
and `complete`. Orchestra can put text in an editor and be wrong about whether
it landed, and the only recovery was to destroy the lease and wait out expiry.
`resubmit` presses Enter on text Orchestra itself submitted. No lifecycle
change, so no event; fenced like an approval, on a live worker-owned pane at
the capture revision the operator was looking at. In `92f32d6`.
### The gate, half cleared
```text
01:36:35 phase request accepted: frame to research
01:36:35 acceptance delivered, confirmation=queued
01:36:35 phase changed: session rotating
```
Further than any previous run. `work_phase` reached `research` and the request
artifact was consumed.
### F36: the two halves of the handoff contract disagreed
```text
before adapter: invalid handoff answer: invalid handoff authored field: prose smuggled into list
after adapter: upload handoff: invalid handoff meta
```
F31 cleared the parse, and the release then failed one stage later.
`handoffReason` has emitted `phase_changed` since phase rotations landed. The
validator's `reasons` list was never extended, so every phase rotation built a
handoff it then refused.
Fixed in `b9ca365`. The test asserts the property, not the constant: every
reason the adapter can produce must survive `Validate`, including its fallback.
### Pattern worth naming
Six defects tonight, each hidden behind the one before it. F30 was reachable
only once F29 let an operator act, F32 only once F30 tried to reap, F34 and F36
only once F33 and F31 let execution get that far. Tests passed throughout. The
only thing that surfaced any of them was running the system.