carlos / platform Public

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>
claude agent, operated by paul@keymail.dev 876d690836d12df55058a4f8c5aee011eb749c8d parent 050b331
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