| 1 | # Review brief: region HA plan 1b, round 2 |
| 2 | |
| 3 | You are an independent second reader. Review the implementation plan |
| 4 | `docs/superpowers/plans/2026-10-06-region-ha-1b-claim-readers.md` at the |
| 5 | commit named in the prompt, against the tree at the working directory |
| 6 | (Go, module github.com/carlosframework/platform) and the approved spec |
| 7 | `docs/superpowers/specs/2026-10-04-region-ha-box-placement-design.md` |
| 8 | (rev 5.4; rulings H1–H19 in §0). Your round 1 findings are in |
| 9 | `CODEX-PLAN-REGION-HA-1B-R1.md`; the author's answers are the table |
| 10 | "Astra plan round 1: dispositions" at the end of the plan. |
| 11 | |
| 12 | ## Fixed: do not re-argue |
| 13 | |
| 14 | - The spec's rulings H1 to H19, and Paul's approval of rev 5.4. |
| 15 | - The scope rule: plan 1b builds only what needs none of the spec's |
| 16 | L1–L20 claim/moves changes; everything listed under "Waits for the |
| 17 | claim" is out of scope. Do not ask 1b to build those. |
| 18 | - The controller rulings recorded in the plan's header (six, unchanged |
| 19 | this round). |
| 20 | - Everything stays dormant behind CARLOS_REGION_HA and changes nothing on |
| 21 | a one-box region. |
| 22 | - Round 1 findings the dispositions table marks fixed are not to be |
| 23 | raised again unless the fix itself is wrong; say which, and why. |
| 24 | |
| 25 | ## What changed since round 1 |
| 26 | |
| 27 | - Task 5: `Discharge` validates every stored record of the enrollment |
| 28 | before using it (version, a state carrying mappings, a non-empty |
| 29 | mapping, volume ids and devices); new test |
| 30 | `TestDischargeRefusesStoredRecordsThatAreNotEvidence`. |
| 31 | - Task 6: aliases and served catch-alls take their primary's stamp (two |
| 32 | new replacements in `edgesfile.go`); entries track the last attempt |
| 33 | separately from the last decision; `edgesLoopState` adds a pass every |
| 34 | 30 seconds while claim reads are due, replacing the loop's direct use of |
| 35 | `edgesFileSchedule`; three new host tests and one new `internal/edge` |
| 36 | test. |
| 37 | - Task 7: participation and marker failures are recorded as `deferred` |
| 38 | (not `refused`); new test |
| 39 | `TestApplyDeferredForParticipationAppliesOnceItEnds`. |
| 40 | - Task 8: the tofu test compares each statement whole; Steps 2 and 4 keep |
| 41 | the module initialized until validation has run. |
| 42 | |
| 43 | ## What to check |
| 44 | |
| 45 | 1. The dispositions table first: for each of R1-1 to R1-7, is the finding |
| 46 | resolved, partly resolved (say what is left), or not resolved? |
| 47 | 2. Then only new findings, in the changed parts above or anything the |
| 48 | changes break elsewhere. In particular: |
| 49 | - `edgesLoopState`: with CARLOS_REGION_HA off, is the loop's behaviour |
| 50 | identical to before (passes, `timed`, retry backoff, headroom |
| 51 | refresh)? With it on, can the 30-second passes interfere with the |
| 52 | schedule's change detection or backoff? |
| 53 | - The `deferred` outcome: does anything in the agent's leg or root's |
| 54 | apply treat a repeated deferral badly (log volume, the replay |
| 55 | watermark in `seen.json`, the rolled-back stickiness)? |
| 56 | - `Discharge`'s validation: could it refuse a record `Write` produces |
| 57 | today from a real describe (for example a box mid-`stopping`)? |
| 58 | - Alias stamps: with the flag on, can an alias of a withheld primary |
| 59 | or a non-relocatable primary ever be published with a stale stamp? |
| 60 | 3. As in round 1: does the code compile and do the tests pass as written, |
| 61 | does each new test fail with its mechanism removed, and do task |
| 62 | boundaries still build in order? |
| 63 | |
| 64 | ## Output |
| 65 | |
| 66 | Findings ranked P1 (would not compile, a test fails, or unsafe), P2 |
| 67 | (wrong or missing), P3 (clarity). Each: task and step, the problem, the |
| 68 | evidence (file:line, or the plan's own line), and a concrete fix. Start |
| 69 | with the round 1 table, then new findings only. End with a verdict: |
| 70 | ready to build, or not ready. |
| 71 | |