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.
4
5
**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).
6
7
**How.** The build's activation now takes its allowed phases as a parameter, `relocationActivateAt`:
8
- the build allows only `installing`;
9
- the install allows exactly `installed`, or `probing` with P unopened.
10
11
**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.
12
13
**Tests:**
14
- 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".
15
- Negatives: a retired stamp; a box the claim doesn't name; the replaced box after its replacement is named; and `probing` after P opened.
16
17
**Judge:**
18
1. Is round 8's P2 closed?
19
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?
20
3. Anything new in this diff?
21
4. **Verdict:** may relocation merge dormant?
22
23
Give findings P1/P2/P3 with file:line. Report only new items.