| 1 | Reviewed `979c38da`. |
| 2 | |
| 3 | | Round 6 finding | Disposition | Assessment | |
| 4 | |---|---|---| |
| 5 | | #1: missing replicator permits release | Resolved | Task 5F refuses release without the matching replicator or recorded flush. Both refusal and replay have mutation-sensitive tests. | |
| 6 | |
| 7 | 1. **P2 — Task 3, Step 1 / Task 5F, Step 1: stopping a target incorrectly discharges its local cleanup.** |
| 8 | |
| 9 | Task 5F calls `w.stop(ex)`, which preserves the disk and leaves `Terminated=false`. The next resolve calls `fenceBox`, whose [discharge predicate](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-two-box/docs/superpowers/plans/2026-10-07-region-ha-hostlife-two-box.md:2943) checks only `DeleteOnTermination`. With that flag set, it records the box in `Op.Discharged`; completion then skips its `park-local`. |
| 10 | |
| 11 | Claim §7.3 D5 explicitly requires stopped instances to retain local retirement obligations. `DeleteOnTermination` establishes nothing about a disk preserved by stopping. INV-26 misses this because it checks the same flag. |
| 12 | |
| 13 | **Fix:** require termination plus qualifying volume evidence for automatic discharge. Keep any explicit destroyed-storage attestation separate. Add a test that drives the new stop-and-resolve path with `DeleteOnTermination=true`, completes recovery, and verifies that local cleanup remains owed. Strengthen INV-26 accordingly. |
| 14 | |
| 15 | 2. **P2 — Task 5F, Step 1: the fallback stops targets that can still release.** |
| 16 | |
| 17 | The [new condition](/home/paulca/amadan.net/carlos/platform/.claude/worktrees/region-ha-two-box/docs/superpowers/plans/2026-10-07-region-ha-hostlife-two-box.md:9257) checks for a live target in stuck `probe-failed` without a journaled release. It never checks the missing replicator, missing files, or absent recorded flush described in its comment and ruling 13. |
| 18 | |
| 19 | Hold a failed target’s final manifest acknowledgement past the release deadline, then allow it to complete. Its replicator and files remain valid, but the next operator action stops it instead of resuming release. This broadens the recovery shortcut and can hide release-progress defects behind declared loss. |
| 20 | |
| 21 | **Fix:** restrict stopping to demonstrably unrecoverable release state. Otherwise clear `stuck` and resume the release sequence. Test delayed acknowledgements and a recorded flush awaiting journaling alongside the missing-state case. |
| 22 | |
| 23 | The pinned-manifest cleanup difference remains the documented at-rest-sweep abstraction. The coverage table’s adapter-only exclusions still require their separate 1b-next tests. |
| 24 | |
| 25 | Task 1 was reconstructed in memory; subsequent patch hunks matched in order. All 16 Go files passed syntax checks, and `mutate.sh` passed `bash -n`. Compilation, runtime tests, and mutations were not independently reproduced. No files changed or sweeps ran. |
| 26 | |
| 27 | --- |
| 28 | |
| 29 | **FIRST PROMPT:** |
| 30 | “Follow the review brief docs/superpowers/plans/CODEX-PLAN-REGION-HA-TWO-BOX-BRIEF-7.md. Review the plan at commit 979c38da.” |
| 31 | |
| 32 | **WHAT:** |
| 33 | Review round 6’s disposition and report new findings. |
| 34 | |
| 35 | **STATUS:** |
| 36 | Prior finding resolved; two new P2 findings. |
| 37 | |
| 38 | **NEEDED:** |
| 39 | Nothing for this review. |
| 40 | |
| 41 | **RECOMMENDED:** |
| 42 | Preserve stopped targets’ cleanup obligations and narrow the stop fallback. |
| 43 | |
| 44 | **SESSION:** |
| 45 | Safe to close — no changes or processes left running. |
| 46 | |
| 47 | **Verdict: not ready.** |