carlos / platform Public

Region HA two-box model plan: Astra round 3 findings (3 resolved, 1 P2, 1 P3), unedited

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 87d444d0dd9ac3602949fa39d709179ad6d3aec7 parent ee6e35f
1 file changed, +49 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-TWO-BOX-R3.md +49 −0
diff --git a/docs/superpowers/plans/CODEX-PLAN-REGION-HA-TWO-BOX-R3.md b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-TWO-BOX-R3.md
new file mode 100644
index 000000000..9777696bd
--- /dev/null
+++ b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-TWO-BOX-R3.md
@@ -0,0 +1,49 @@
+Reviewed `ee6e35f3`.
+
+| Round 2 finding or partial | Disposition | Assessment |
+|---|---|---|
+| R1 #8: published-marker crash boundary | Resolved | `openYield` stops after marker publication and before replication opens; the test crashes there in both shapes. |
+| R2 #1: acknowledgement before failover pin | Resolved for the reported defect | Initial failover now waits for acknowledgement. The guard’s wider application creates the new finding below. |
+| R2 #2: adverse-volume execution recovery | Resolved | Both shapes terminate the current executor and reach serving while its local chore remains open, before operator cleanup. |
+
+1. **P2 — Task 5C, Step 1: the acknowledgement guard is stronger than 1b-next’s.**
+
+ The [new guard](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-two-box/docs/superpowers/plans/2026-10-07-region-ha-hostlife-two-box.md:7999) treats every operation with no pin and no release as awaiting `PinFailover`. That includes converted moves and nested failovers after replacing an opened target.
+
+ In 1b-next rev 19, `PinFailover` requires acknowledgements when leaving `starting`. However, `Worker.pinning` selects and journals the pin **before** checking acknowledgements for `ToInstalling`. Converted moves and nested replacements enter `pinning` directly.
+
+ Hold their target controller unavailable, let the fence delay expire, then land a newer manifest: production can already have selected the older pin; the model waits and selects the newer one. This excludes a production interleaving from the model.
+
+ **Fix:** represent the original `PinFailover` barrier explicitly, or preserve its `starting` phase. Apply the pre-pin barrier only there. Add a converted-move or nested-replacement test demonstrating that pinning proceeds before acknowledgement, while retaining the initial-failover test.
+
+2. **P3 — Task 5C, Step 1: the claimed 1b-next completion cleanup does not exist.**
+
+ The [cleanup explanation](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-two-box/docs/superpowers/plans/2026-10-07-region-ha-hostlife-two-box.md:29) says ruling 21 makes `CompleteRelocation` drop the retained manifest. In 1b-next rev 19, completion queues local chores and abandoned prepared generations; it neither deletes the retained control object nor queues this additional pinned-generation park.
+
+ This is the requested discrepancy against 1b-next, but it does **not** establish ownerless residue. Claim §6.2a assigns obsolete files to the at-rest sweep; 1b-next ruling 21 leaves retained control objects to the storage follow-up.
+
+ **Fix:** distinguish those two cleanup paths and describe the model’s immediate park as an abstraction, rather than an implemented `CompleteRelocation` guarantee.
+
+Sequential patch contexts and reconstructed Go syntax were checked in memory. Compilation, runtime tests and mutation results were not independently reproduced. No files changed or sweeps ran.
+
+---
+
+**FIRST PROMPT:**
+“Follow the review brief docs/superpowers/plans/CODEX-PLAN-REGION-HA-TWO-BOX-BRIEF-3.md. Review the plan at commit ee6e35f3.”
+
+**WHAT:**
+Review prior dispositions and report new findings.
+
+**STATUS:**
+Three prior items resolved; one new P2 and one P3.
+
+**NEEDED:**
+Nothing for this review.
+
+**RECOMMENDED:**
+Narrow the acknowledgement guard and correct the cleanup mapping.
+
+**SESSION:**
+Safe to close — no changes or processes left running.
+
+**Verdict: not ready.**
\ No newline at end of file