Region HA plan 1b-next: Astra round 7 findings (1 resolved, 1 new P2; stage B contracts complete), unedited
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 file changed,
+23
−0
docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R7.md+23 −0
diff --git a/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R7.md b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R7.md| new file mode 100644 |
| index 000000000..e2bcb0089 |
| --- /dev/null |
| +++ b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1BN-R7.md |
| @@ -0,0 +1,23 @@ |
| +Reviewed `6a9b6a95`. |
| + |
| +| Round 6 finding | Disposition | Assessment against rev 7 | |
| +|---|---|---| |
| +| P1 — an unshared thread’s descriptor can pass as the replicator’s | Resolved | Kernel checks establish shared tables and open file descriptions; unavailable comparisons fail closed. Tests cover copied and independently reopened descriptors. | |
| + |
| +The six earlier findings marked resolved in round 6 remain resolved. |
| + |
| +**New finding:** |
| + |
| +1. **P2 — Task 7, Step 4: retrying an interrupted release repeats flushes after producers have closed.** |
| + |
| + [Release reads the durable positions](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/docs/superpowers/plans/2026-10-07-region-ha-1b-next-relocation.md:8556), but a retry under the same controller constructs a fresh drain. That drain [unconditionally repeats both flushes](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/docs/superpowers/plans/2026-10-07-region-ha-1b-next-relocation.md:8613). |
| + |
| + Root can fail **after producers close but before its receipt is durable**: [kernel verification and receipt persistence follow the drain acknowledgement](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-1b-next/internal/host/claimstop.go:219). The retry therefore flushes an already closed replicator instead of resuming the completed work. This can prevent release completion despite valid recorded positions. The existing lost-response test covers only failure after root completed its receipt. |
| + |
| + **Fix:** when the same stop already has durable positions, reuse them and resume at the idempotent producer drain, then let root verify and persist the receipt. Add a test that closes producers, fails before receipt persistence, and retries without restarting; neither flush callback should run again. |
| + |
| +I accept rulings 1–24. Stage B’s contracts retain the earlier review obligations. |
| + |
| +All 12 embedded patches pass `git apply --check`; all 39 complete Go blocks parse with `gofmt`. Compilation and tests were not reproduced in this read-only sandbox. No files changed. |
| + |
| +**Verdict: not ready — Stage A needs the release-retry fix; Stage B contracts are complete.** |
| \ No newline at end of file |