carlos / platform Public

Region HA plan 1b-next: Astra round 18 findings (3 resolved, 2 new P2 test gaps), unedited

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 7e8355e1397ad3e32059268a80dfd999bff49f5e parent 15c43ac
1 file changed, +43 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R18.md +43 −0
diff --git a/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R18.md b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R18.md
new file mode 100644
index 000000000..0472fa521
--- /dev/null
+++ b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R18.md
@@ -0,0 +1,43 @@
+Reviewed `15c43ac0`.
+
+| Round 17 finding | Disposition | Assessment |
+|---|---|---|
+| P1: existing empty manifest permits key loss | Resolved | Nonempty databases now require a live `instance.key` entry. Missing evidence produces `stuck`; L21 remains explicitly open. |
+| P2: target termination bypasses the no-spare deadline | Resolved | The deadline now consumes the target’s fence, retains its loss and records `stuck`. |
+| P2: replacement from `probe-failed` forgets unopened P | Resolved | `abandonPrepared` records P before removal; completion queues its retirement. |
+
+1. **P2 — Task 7, Step 4: the lifecycle property cannot exercise removal during an ongoing relocation.** The [event generator](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/docs/superpowers/plans/2026-10-07-region-ha-1b-next-relocation.md:10247) includes completion and successor operations, but no participant replacement or removal within the same operation. Its [recovery oracle](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/docs/superpowers/plans/2026-10-07-region-ha-1b-next-relocation.md:10358) would reject correct recovery once this box is excluded.
+
+ Missing trace: a target releases after probe failure, is replaced, encounters blocked cleanup, crashes, then recovers while relocation continues elsewhere. Its controller, execution record and participation journal must disappear without reopening.
+
+ **Fix:** Add same-operation replacement/removal events. Require readiness for participating boxes and completed cleanup for excluded boxes, preserving the cleanup-before-clear and crash-persistence assertions.
+
+2. **P2 — Task 2, Step 1: the hash-choice test does not assert the hash winner.** [`TestExecutorChooserSpreadsThenBalancesThenHashes`](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/docs/superpowers/plans/2026-10-07-region-ha-1b-next-relocation.md:3071) accepts the first result and derives subsequent expectations from it. Passing a constant instead of `r.Holder.Host` to `boxchoice.Choose` would escape these assertions.
+
+ **Fix:** Add equal-load cases with independently calculated winners for two hostnames choosing opposite boxes. Verify that substituting a constant hostname fails.
+
+Rulings 1–27 are accepted. Stage B contracts remain complete. These are test findings, not demonstrated production failures.
+
+All 12 embedded patches pass `git apply --check`; all 47 Go blocks parse with `gofmt`. Compilation, runtime tests and mutations were not independently reproduced in this read-only workspace.
+
+---
+
+**FIRST PROMPT:**
+“Follow the review brief docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-BRIEF-18.md. Review the plan at commit 15c43ac0.”
+
+**WHAT:**
+Review Stage A readiness and Stage B contracts.
+
+**STATUS:**
+Three prior findings resolved; two new P2 test gaps.
+
+**NEEDED:**
+Nothing.
+
+**RECOMMENDED:**
+Extend the lifecycle events and assert the hostname-based choice.
+
+**SESSION:**
+Safe to close — no files changed or processes left running.
+
+**Verdict: not ready.**
\ No newline at end of file