carlos / platform Public

zdd-readiness: roll notes fix round 1

Mark the retry-signing note closed, say what the operator sees on a claims-on box, mark D1 done in Gate E, and tighten the intro and round-3 bullets.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 78ef3b8120e6ba5948105d3fa4f9ba649b261f35 parent 0206e35
1 file changed, +20 −11
  • docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md +20 −11
diff --git a/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md b/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md
index dc385057c..447f68e82 100644
--- a/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md
+++ b/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md
@@ -33,8 +33,8 @@ This is the flag-on precondition. It is copied from amadan discussion #272
("Zero-downtime deploys: owed before CARLOS_SWAP can go on", opened by
claude~paul@keymail.dev), as read on 2026-10-11, including its replies.
As of 2026-10-12, items this branch closes carry a line saying "closed on
-zdd-flag-readiness (refs), pending merge". Those are built and reviewed on
-the branch, not merged, not released and not rolled, and only Paul closes
+zdd-flag-readiness (refs), pending merge". Those are built and task-reviewed on
+the branch (the whole-branch review comes next), not merged, not released and not rolled, and only Paul closes
them on #272. Everything else is still open, and the open items are
collected under "Still owed" below. **The flag stays off on any box until
every item is closed or Paul waives it in writing.** Gates A to D do not
@@ -64,16 +64,18 @@ dormant and `CARLOS_SWAP` must stay unset until everything below is closed.
exec time, including workers, legacy sidecars, claims and move launches. It
honours markers, and signed retries and the pointer pass. Execution
admission (7daf32ac) adds a worker gate after cgroup prep, managed
- revalidation and no uncaptured live-link recycle. Two parts of this are
- still open, see "Still owed".
-- The 15-item list in round 3, section 5. The code defects are closed on
- zdd-flag-readiness, pending merge: policy cache, bounded reads and acks
+ revalidation and no uncaptured live-link recycle. Closed except for the two
+ items under "Still owed" (the nested live-link race and the seed exec).
+- The 15-item list in round 3, section 5. The code defects on the flag-on
+ path are closed on zdd-flag-readiness, pending merge: policy cache, bounded reads and acks
(f46d3142, 4416872e); clean one-shot good, the WakeWorker budget and the
halt event (5ad55485); GoodVersion bucket retention and the hold build
published before its incumbent stops (d3d464cd); the stage relay give-up
(2c5adbe8); transient status (98c1763d, 61b83e27). The branch simulation
gained invariants I5 to I8 and mutants M7 to M12 (44800ab4). The 3000-seed
- sweep passed and M1 to M12 were all caught.
+ sweep passed and M1 to M12 were all caught. The coverage-only items,
+ reproducible replay and the real-box items stay deferred, as the plan's
+ rulings say.
### Carried from plans 2 and 3
@@ -179,11 +181,14 @@ That reply found no claims check in `swapArming`
**Conclusion (2026-10-12): decline, do not close.** On zdd-flag-readiness
(cd7de723), pending merge, a box with host claims on declines
`CARLOS_SWAP=overlap` with the reason code `host-claims-on`. It runs today's
-stop-then-start paths, and the agent log says `REFUSING CARLOS_SWAP=overlap`.
+stop-then-start paths.
The four gaps above are not closed. They become the future feature "claims-on
swaps", which is not scheduled. The source for the four gaps is
`CODEX-FINDINGS-ZDD-IMPL-5-MERGE.md`. After Gate E on any claims-on box,
-expect a dash under SERVING and the `host-claims-on` reason, not an armed box.
+the operator sees a dash under SERVING and, in REASON, "its box cannot run
+two builds side by side, so it restarts instances the old way". The code
+`host-claims-on` is in the instance's JSON record (`rollout.unavailable`) and
+in the agent log line `REFUSING CARLOS_SWAP=overlap (host-claims-on)`.
### Still owed (code), after zdd-flag-readiness
@@ -287,7 +292,9 @@ discussion's items.
(`internal/rollout/manager.go:501-515`) trusts any request that names a host
on that box. Only the app's record and the rollout report gate it, at the
console, not at the box. It is on the owed list above as a flag-on
- blocker.
+ blocker. Closed on zdd-flag-readiness (d68a1dde), pending merge: retries
+ are console-signed root grants bound to the host's restriction epoch, and
+ every box ignores an unsigned retry.
- **`FailureBook` is not rendered anywhere.** The box publishes it
(`internal/status/snapshot.go:268-275`) but no `carlos` surface or console
page shows it. It is parked in #272. What `carlos` shows for a failed or
@@ -419,7 +426,9 @@ actions on dev: creating the `zdd-probe` app, flipping its swap policy to
"Before Gate E: owed" list has an open item that Paul has not waived.**
First the index's D1 guard: measure `systemctl daemon-reload` on a dev box
-carrying titogo-scale unit counts.
+carrying titogo-scale unit counts. **Done 2026-10-11 on dev:** median 309 to
+424 ms, so keep the drop-ins. Repeat it only if unit counts grow a lot; the
+commands are kept below for that case.
```bash
aws --profile kass --region eu-west-1 ssm send-command --instance-ids i-046c7fe43620944bc \