carlos / platform Public

plan: region HA 1b, Astra round 2 findings (unedited)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev e17ce3cf20a03f85f8911ed9fb2dc5441bd1b6a1 parent 161728a
1 file changed, +29 −0
  • docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R2.md +29 −0
diff --git a/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R2.md b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R2.md
new file mode 100644
index 000000000..6b7f9364d
--- /dev/null
+++ b/docs/superpowers/plans/CODEX-PLAN-REGION-HA-1B-R2.md
@@ -0,0 +1,29 @@
+| Round 1 finding | Assessment |
+|---|---|
+| R1-1: Tofu initialization | Resolved: initialization remains through Step 4, which also reruns `init`. |
+| R1-2: Alias stamps | Resolved: exact aliases and served catch-alls inherit their primary’s stamp. Withheld primaries remain excluded; non-relocatable primaries remain unstamped. |
+| R1-3: Terminal participation refusal | Resolved: `deferred` retries through the existing backoff. Equal replay watermarks remain accepted, and rollback stickiness is preserved. |
+| R1-4: Failed reads starve others | Resolved: attempt timestamps advance independently of successful decisions. |
+| R1-5: Claim refresh cadence | Partly resolved: additional passes fix refresh throughput but bypass retry backoff; see finding 1. |
+| R1-6: Invalid discharge evidence | Partly resolved: validation is present and accepts valid `stopping` records, but three checks lack the claimed mutation coverage; see finding 2. |
+| R1-7: Incomplete policy assertions | Resolved: both policy statements are compared in full. |
+
+1. **P2 — Task 6, Steps 3–4: claim passes bypass publication retry backoff.**
+
+ In [plan:3220](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha/docs/superpowers/plans/2026-10-06-region-ha-1b-claim-readers.md:3220), `claimPass` ignores the scheduler’s `retryAt`. At [plan:3230](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha/docs/superpowers/plans/2026-10-06-region-ha-1b-claim-readers.md:3230), failures from claim-only passes also skip `sched.done`.
+
+ Thus, after failed publication has established a five-minute backoff, pending claim reads can trigger another full publication pass after 30 seconds. Its failure does not advance the backoff. This defeats the existing retry protection in [edgesfile.go:837](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha/internal/host/edgesfile.go:837). The new scheduling test exercises successful passes only.
+
+ **Fix:** make claim-triggered publication obey `retryAt` and account for its outcomes in the scheduler, preserving the timer’s refresh behavior. Add a combined scheduler test covering repeated failures and recovery. With HA disabled, the proposed wrapper preserves the existing behavior.
+
+2. **P2 — Task 5, Step 1: three validation checks survive removal without failing the new test.**
+
+ At [plan:2220](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha/docs/superpowers/plans/2026-10-06-region-ha-1b-claim-readers.md:2220), both invalid-state cases also have empty mappings. Removing the state check still rejects them through the empty-mapping check; removing the empty-mapping check still rejects them through the state check. No case supplies a volume ID with an empty device name, so removing that check also goes undetected.
+
+ This contradicts disposition 6’s assertion that each check was independently mutation-tested.
+
+ **Fix:** add separate stored records containing: `running` with an empty mapping; `terminated` with a complete root mapping; and `running` with a volume ID but no device name. Verify that removing each corresponding check fails its test.
+
+Reviewed `161728ab` against the checkout and rev 5.4. All 16 complete Go file blocks passed syntax parsing. Compilation, task-by-task builds, and proposed Go tests could not run in the read-only sandbox. No files changed.
+
+**Verdict: not ready.**
\ No newline at end of file