carlos / platform Public

Astra round 9 brief: replacement guard activation

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev 24a0abe7965e3551b06790ddfaa48ee145d649ce parent 6d4ba32
1 file changed, +23 −0
  • docs/superpowers/plans/CODEX-REVIEW-L18-MERGE-BRIEF-9.md +23 −0

CI cancelled — superseded by a newer push — run details

diff --git a/docs/superpowers/plans/CODEX-REVIEW-L18-MERGE-BRIEF-9.md b/docs/superpowers/plans/CODEX-REVIEW-L18-MERGE-BRIEF-9.md
new file mode 100644
index 000000000..3a3262f44
--- /dev/null
+++ b/docs/superpowers/plans/CODEX-REVIEW-L18-MERGE-BRIEF-9.md
@@ -0,0 +1,23 @@
+# Astra: relocation round 9 (confirming)
+
+Round 8 (`CODEX-REVIEW-L18-MERGE-8.md`) raised one P2: a replaced target never activated its new install guard, so it stalled. Fixed in 6d4ba32f.
+
+**Where activation happens.** In `relocationInstall`, just before it captures the installation. That is the path the participant reaches at `installed` (InstallLocal) and in `probing` before P opens (EnsureLocal's repair).
+
+**How.** The build's activation now takes its allowed phases as a parameter, `relocationActivateAt`:
+- the build allows only `installing`;
+- the install allows exactly `installed`, or `probing` with P unopened.
+
+**Checks on each fresh claim read:** the box is the executor, not stuck, not lost; P is unopened; the holder's stamp equals the install stamp; main's Local check runs. A named-target check is added. The guard still refuses to reactivate a retired or older stamp. For the original target, the activation does nothing, because the build already activated that stamp. Main's reconciler is unchanged.
+
+**Tests:**
+- The fixture no longer calls `Guard.Activate`. It drives `hostrelocate.Participant.Step` on a fresh box with no guard record, and both replacement cases establish P's files through the real provider. With the activation removed, both fail with "hostguard: no local record".
+- Negatives: a retired stamp; a box the claim doesn't name; the replaced box after its replacement is named; and `probing` after P opened.
+
+**Judge:**
+1. Is round 8's P2 closed?
+2. Is the widened activation exactly as narrow as it should be? Could the install path now activate a stamp in a case the build's rules would have refused, such as a lost or retired box, a re-installed P after opening, or a race with a newer replacement between the claim read and the activation?
+3. Anything new in this diff?
+4. **Verdict:** may relocation merge dormant?
+
+Give findings P1/P2/P3 with file:line. Report only new items.