spec: host lifecycle claim rev 6.23, joint round 15 (R15-1)
The park scope's location grammar adds moves/<host>/<op id> (staging, return lanes) and moves/<host> (staging sweep); evidence_at is always the original evidence or fencing bound (staging's seal bound for staging scopes) and every scope uses the same evidence_at + H deadline. Also states the rev 7.14 sweep notes (joining a running sweep op; the horizon).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 file changed,
+37
−7
docs/superpowers/specs/2026-10-02-host-lifecycle-claim-design.md+37 −7
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 483b88c2b..ff9fa477a 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.22**. Joint rounds 6 and 7 judged the claim ready for primitive planning. Rev |
| +Design, 2026-10-06, **rev 6.23**. 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 |
| @@ -18,7 +18,10 @@ PROPOSED §5.9 (Plan 5's P5-D1 to P5-D6). Rev 6.19 adds the PROPOSED §6.6 |
| Plan 8's review. Rev 6.21 answers the moves spec's rev 7.13 notes in the |
| operative §6.4a subsection. Rev 6.22 answers joint round 13 (R13-1 to |
| R13-3): the run walk across regions, coverage stated completely, the |
| -publication walk over every entry, and the declaration representation. Rev 6.9 answered |
| +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 |
| 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 |
| @@ -235,10 +238,32 @@ Field rules: |
| request_limit_ns}`, persisted when the chore is queued so every retry |
| uses the same location, archive incarnation and **original** evidence |
| time (§6.2a: a retry's own clock is never evidence). `location` is |
| - `instances/<host>` or `instances/<host>/<incarnation>`; |
| - `request_limit_ns` is the positive bound on the platform's longest |
| - request that `H` adds to the signature age. A chore without a scope is |
| - bound to one before its first step runs. Each operation also defines which of them block its own |
| + exactly one of (R15-1): |
| + - `instances/<host>`: the legacy location; |
| + - `instances/<host>/<incarnation>`: an incarnation location |
| + (`<incarnation>` 64 lowercase hex); |
| + - `moves/<host>/<op id>`: one operation's staging prefix (a move's |
| + staging, or a rollback's return lane), `<op id>` an opaque operation |
| + id containing no `/`; |
| + - `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 |
| + 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 |
| + host the newest entry of `retired_incarnations` (archive bookkeeping |
| + only; it grants nothing). **`evidence_at` is always the original |
| + evidence or fencing bound** for the scope: for an instance location, |
| + the stop or fence evidence (§6.1, §7); for a staging scope, staging's |
| + own seal bound, the time after which no staging writer (including its |
| + lease holder) may still write, persisted when staging is sealed or |
| + fenced. It is never the time cleanup happens to start. Every scope's |
| + deadline is the same: acknowledge only after a verification listing |
| + later than `evidence_at + H` (§6.2a); there is no separate staging |
| + deadline. `request_limit_ns` is the positive bound on the platform's |
| + longest request that `H` adds to the signature age. A chore without a |
| + scope is bound to one before its first step runs. Each operation also defines which of them block its own |
| release to `serving`. A release keeps any obligation owned by other |
| lifecycle work (J-D8). |
| - **`lost`** is the quarantine list for declared-lost boxes (§7). |
| @@ -1125,7 +1150,12 @@ new obligation the sweeping box owns, with a `park` scope (§2). On a |
| `PublishGeneration`. **On a free host** (no holder) the sweep starts a |
| **holderless sweep**: one CAS sets `op = {kind: parking, id: <new op |
| id>, intent: {park_sweep: "v1"}}` with no `exec` and no holder, and |
| -queues only scoped remote chores owned by that op. It is the only |
| +queues only scoped remote chores owned by that op. Another region's |
| +box that finds residue while that op runs adds its own scoped chores |
| +under the same op id rather than starting a second op. Each sweep chore |
| +is a retirement event, so it acknowledges only after a listing later |
| +than its scope's `evidence_at + H`: a free host's successor create waits |
| +up to that horizon. It is the only |
| holderless claim that may carry obligations, so it blocks `free`'s |
| successor create while it runs; its last acknowledgement frees the claim |
| again in the same CAS (`FreeAfterPark`), keeping `quiet_after`. Any |