spec: host lifecycle claim rev 6.15, park scope and the holderless sweep
Remote chores may persist {location, incarnation, evidence_at,
request_limit_ns} so retries keep the original evidence time; a free
host's at-rest sweep runs as a holderless parking op (intent
park_sweep v1) with only scoped remote chores. Found planning Plan 4.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 file changed,
+23
−4
docs/superpowers/specs/2026-10-02-host-lifecycle-claim-design.md+23 −4
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 b9d317f12..e157496e9 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-05, **rev 6.14**. Joint rounds 6 and 7 judged the claim ready for primitive planning. Rev |
| +Design, 2026-10-05, **rev 6.15**. 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 |
| @@ -8,7 +8,9 @@ around writer sessions, for joint round 8. Rev 6.10 answers joint round 10 |
| notes. Rev 6.12 answers joint round 11 (R11-2 to R11-5). Rev 6.13 |
| answers the moves spec's rev 7.12 notes (coverage is per region). Rev |
| 6.14 answers joint round 12 (R12-4, R12-6): §6.4a now has one operative |
| -rule set, and the readings sections are history. Rev 6.9 answered |
| +rule set, and the readings sections are history. Rev 6.15 adds the |
| +persisted park scope and the holderless sweep (§2, §6.2a), found while |
| +planning the park engine. 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 |
| @@ -220,7 +222,15 @@ Field rules: |
| (one dead generation `{region, generation}` within a live location, |
| R9-3). Each names its operation, its |
| retirement event (§6.2) and the actor that must do it. All of them |
| - block `free`. Each operation also defines which of them block its own |
| + block `free`. A remote chore (`park-replica`, `park-generation`) may |
| + carry a **`park` scope**, `{location, incarnation, evidence_at, |
| + 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 |
| 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). |
| @@ -692,7 +702,16 @@ So the sweep lists: |
| `holder.generation` (the moves spec's dead generations). |
| Anything found is parked as a further retirement event (§6.2), under a |
| -new obligation the sweeping box owns. |
| +new obligation the sweeping box owns, with a `park` scope (§2). On a |
| +`serving` host the chore's op is `session:<holder.session>`, as for |
| +`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 |
| +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 |
| +other operation running suppresses new sweeps. |
| A freed host's location never keeps late residue for good. |