spec: host lifecycle claim rev 6.24, joint round 16 (R16-1, R16-3)
A scope covers only its own namespace (instance scopes never touch moves/; the legacy scope excludes child incarnations); the legacy loss identity is session 0 with generation "" and is valid in both loss fields; born-covered counts only an unscoped park or one of exactly holder.location.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 file changed,
+20
−5
docs/superpowers/specs/2026-10-02-host-lifecycle-claim-design.md+20 −5
CI passed — run details
diff --git a/docs/superpowers/specs/2026-10-02-host-lifecycle-claim-design.md b/docs/superpowers/specs/2026-10-02-host-lifecycle-claim-design.md| index ff9fa477a..f0d9c6a90 100644 |
| --- a/docs/superpowers/specs/2026-10-02-host-lifecycle-claim-design.md |
| +++ b/docs/superpowers/specs/2026-10-02-host-lifecycle-claim-design.md |
| @@ -1,6 +1,6 @@ |
| # The host lifecycle claim |
| -Design, 2026-10-06, **rev 6.23**. Joint rounds 6 and 7 judged the claim ready for primitive planning. Rev |
| +Design, 2026-10-06, **rev 6.24**. Joint rounds 6 and 7 judged the claim ready for primitive planning. Rev |
| 6.5 added the R6-4 rule. Rev 6.6 added writer epochs (R7-1, amadan #225). |
| Rev 6.7 answered the moves session's notes on §6.4a. Rev 6.8 rewrote §6.4a |
| around writer sessions, for joint round 8. Rev 6.10 answers joint round 10 |
| @@ -21,7 +21,9 @@ R13-3): the run walk across regions, coverage stated completely, the |
| publication walk over every entry, and the declaration representation. |
| Rev 6.23 answers joint round 15 (R15-1): the park scope's staging |
| paths, and evidence_at as the original bound for every scope; it also |
| -states the rev 7.14 sweep notes (joining, the horizon). Rev 6.9 answered |
| +states the rev 7.14 sweep notes (joining, the horizon). Rev 6.24 answers |
| +joint round 16 (R16-1 scope namespaces, R16-3 the legacy loss identity) |
| +and states the narrowed born-covered rule. Rev 6.9 answered |
| joint round 9 |
| (R9-1 to R9-4) and takes **Paul's ruling R6 (2026-10-04): a box never |
| reuses its local database. Every writer start restores from the |
| @@ -248,7 +250,12 @@ Field rules: |
| - `moves/<host>`: the whole staging prefix, only for an at-rest sweep |
| while no operation stages there. |
| - Nothing else, and no trailing `/`. `incarnation` names the archive the |
| + Nothing else, and no trailing `/`. **A scope covers only its own |
| + namespace (R16-1):** an `instances/...` scope never lists or parks |
| + anything under `moves/`, and the legacy `instances/<host>` scope |
| + excludes every child incarnation location under it; staging is parked |
| + only under an explicit `moves/...` scope with its own evidence bound. |
| + `incarnation` names the archive the |
| parked objects go to (`parked/<incarnation>/<host>/...`): the location's |
| own incarnation, the staging operation's holder incarnation for a |
| `moves/<host>/<op id>` scope, and for a `moves/<host>` sweep of a free |
| @@ -1591,7 +1598,12 @@ reached, and where their wording differs, this text wins. |
| is declared there too (moves 7.13 note 7, R13-3). **Representation:** |
| the same admission entry carries `writes_lost` (one) and |
| `additional_writes_lost` (a list), each `{box, generation, session, |
| - remote_max_txid}`, unique by `(box, session)`; the caller supplies |
| + remote_max_txid}`, unique by `(box, session)`. **The legacy |
| + identity** (R16-3) is session `0` with generation `""` (read as |
| + `@root`): an adopted host's pre-claim writer, whose box `Adopt` |
| + records as `holder.writer_box`. It is valid in both fields, exactly |
| + like any other declaration; every other declaration has session `> 0` |
| + and a non-empty generation. Box is always non-empty; the caller supplies |
| the list, the library records it in the admitting CAS. **Alerts:** |
| the admitting box raises one alert per declaration after the CAS |
| succeeds, and retries until delivered; the console's durable loss |
| @@ -1623,7 +1635,10 @@ reached, and where their wording differs, this text wins. |
| which nothing retires); or an entry admitted while the claim holds |
| a `park-replica` of the whole location in its `predecessor_region` |
| (that park retires the predecessor; a rollback's return admitted |
| - after the release queued the target region's park, moves 7.13 note 2); |
| + after the release queued the target region's park, moves 7.13 note 2). |
| + Only an unscoped `park-replica` or one whose scope is exactly |
| + `holder.location` counts; a scoped park of an old incarnation's |
| + location or of a staging prefix does not; |
| - **by publication** (below); |
| - **by `CoverRegionPredecessors(op, phase, region)`** in one of the |
| three CASes that queue a whole-location park of `region` (item 6): |