diff --git a/BURNIN.md b/BURNIN.md index 1c74a60..9974b11 100644 --- a/BURNIN.md +++ b/BURNIN.md @@ -2073,6 +2073,7 @@ rewrite. | F52 | `fb7135e` | A plan command outside project policy sealed anyway. The only caller of `VerificationPolicy.Allows` was `PlanPhaseCommands`, which runs when the implementer asks to verify: one phase and one rotation too late. | | F53 | `d7e75e9` | Only a verified phase consulted `Stale`. A pending manual gate rendered "automated checks passed at 94bd45c3b5d6" against a tree at `7d04aef`. | | F54 | `015764e` | The handoff prompt stated the 200-character limit for `NEXT`, `WHY` and `REMAINING`. The validator applies it to `OPEN Q` and `LEARNED` too. | +| F56 | `44ff35a` | `publishCaptures` iterated every session the worker held, without checking the lease. Run 10's task was blocked and unleased for twenty-six minutes while this called the coordinator every five seconds and logged "409 Conflict: lease not owned" each time. It also kept the single `last_error` slot pinned to a dead task, hiding run 11's own failures. | | F55 | `38aa073` | **A refused handoff had no feedback loop.** `PrepareRelease` read the report, the parser refused it, the worker recorded it in health, and the next boundary read the same bytes. Run 10 spent four leases there. `answerRefusedHandoff` now says why and drops the file, gated on a typed `ErrInvalidHandoffAnswer` so transport failures keep their retry. | F50, F51 and F54 are one shape: **a constraint the code enforces and no brief @@ -2084,6 +2085,23 @@ pattern `CLAUDE.md` names. `Praxis`, `Hexis`, `manga-pipeline`, `orchestra`. Their plans still seal, but only with manual verification. A `run:` line is now refused on the planner. +### Run 11 completed the lifecycle on the final build + +The same task that produced the mismatch went on through review, submission and +merge without intervention. PR 16, receipt binds merge `bf0f287a` to submitted +`5bcffb33`. That is the frozen lifecycle re-proven above every fix in this +session. + +### Deployed state at the freeze + +| Half | Revision | +|---|---| +| Coordinator, homesrv container | `44ff35a` | +| Worker, workpc systemd | `44ff35a` | + +Run 11 itself ran on `38aa073`. `44ff35a` is one commit above it, unit-tested +and deployed, not exercised by a full run. + ### Recorded, not fixed - **The operator lifecycle actions lose a version race.** `block`, `release` @@ -2092,9 +2110,16 @@ only with manual verification. A `run:` line is now refused on the planner. the read and the append. They succeed once the task is quiet. - **`master` carries a stale `TASK.md`.** F47 makes it harmless, but every pull request now shows a cosmetic `TASK.md` diff. -- **F18 is still open**, and it cost real diagnosis time here. The single - `last_error` slot held only the most recent failure, so the three earlier - ones in run 7 were overwritten before they could be read. +- **F18 is still open**, and it cost real diagnosis time twice. The single + `last_error` slot held only the most recent failure, so run 7's three earlier + failures were overwritten before they could be read. In run 11 the slot was + pinned to a *different, blocked* task for twenty-six minutes (F56), so run + 11's own expiry reason was never visible at all. +- **A release transaction whose lease has expired can never commit.** Run 10 + ended this way: `PrepareRelease` succeeded, `Release` returned + `409 lease not owned`, and the transaction stayed in `anchor_pushed` across + every relaunch until `retry_limit`. The agent's completed work sat + uncommitted in the worktree throughout. ### Things that will bite