carlos / platform Public

Region HA plan 1b-next: Astra round 13 findings (2 resolved, 2 new P2 controller lifecycle), unedited

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 9295bf958cf514e60c02b38c6fe2084450b23c9b parent eda4be5
1 file changed, +46 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R13.md +46 −0
diff --git a/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R13.md b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R13.md
new file mode 100644
index 000000000..587162c5a
--- /dev/null
+++ b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R13.md
@@ -0,0 +1,46 @@
+Reviewed `eda4be5b`.
+
+| Round 12 finding | Disposition | Assessment |
+|---|---|---|
+| Successor acknowledgement deadlocks behind predecessor | Resolved | Handover retires the predecessor before opening the successor; lock acquisition is bounded. A real-controller regression covers it. |
+| Production probes lack a launcher dependency | Resolved at contract level | R10 assigns the protocol, gates activation, and names success/refusal tests. |
+
+1. **P2 — Tasks 6/7: a transient lease failure permanently stalls relocation.**
+
+ [Participant.Step, lines 7333–7337](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/docs/superpowers/plans/2026-10-07-region-ha-1b-next-relocation.md:7333) reopens only a missing controller. `RelocationEffects.Ready` retains a failed controller, and `Sweep` preserves it while participation continues.
+
+ One failed lease-renewal PUT permanently marks the controller lost ([controller.go:362](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/internal/hostexec/controller.go:362)). If this happens during `installing`, every subsequent pass refuses even after storage recovers. That phase has no timeout; restarting the whole agent becomes necessary.
+
+ **Fix:** add same-operation recovery that joins the lost controller, completes scoped cleanup, and opens a fresh controller with fresh authority and an acknowledged lease, as claim D6 permits. Preserve durable denial throughout. Test recovery without restarting the agent, including failed cleanup.
+
+2. **P2 — Task 7, Step 4: generic `ErrState` discards cleanup retry state.**
+
+ [`finish`, lines 9015–9018](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/docs/superpowers/plans/2026-10-07-region-ha-1b-next-relocation.md:9015) treats every `execctl.ErrState` as proof that another binding replaced the record, then removes the participation journal.
+
+ However, `ClearStale` also returns that error for an absent claim ([controller.go:619](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/internal/hostexec/controller.go:619)) or an invalid local record. Those failures leave the `.hostexec` record intact. Forgetting participation prevents later sweeps from retrying, even after repair, while the remaining record continues blocking executable updates.
+
+ **Fix:** distinguish verified binding replacement from other state errors. Preserve participation and report all other failures. Test failure, restart, restored evidence, and successful cleanup retry.
+
+I accept rulings 1–24. Stage B’s contract checklist carries the prior obligations. All 12 embedded patches pass `git apply --check`; all 41 complete Go blocks parse with `gofmt`. Compilation and tests were not reproduced in this read-only session.
+
+---
+
+**FIRST PROMPT:**
+“Follow the review brief docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-BRIEF-13.md. Review the plan at commit eda4be5b.”
+
+**WHAT:**
+Review Stage A readiness and Stage B contracts.
+
+**STATUS:**
+Round 12 resolved; two new P2 findings.
+
+**NEEDED:**
+Nothing.
+
+**RECOMMENDED:**
+Fix controller recovery and cleanup-error classification.
+
+**SESSION:**
+Safe to close — no files changed or processes left running.
+
+**Verdict: not ready.**
\ No newline at end of file