carlos / platform Public

index: generations file contract revised by plan 4 R19 (seq intent, complete, paths; sweep reads it)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 3739ca8cb29d5b40c84438fadfc4b1db5188a44a parent fbf15cc
1 file changed, +10 −0
  • docs/superpowers/plans/2026-10-07-zero-downtime-deploys-0-index.md +10 −0

CI cancelled — superseded by a newer push — run details

diff --git a/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-0-index.md b/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-0-index.md
index 4dfa31574..ae016edb0 100644
--- a/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-0-index.md
+++ b/docs/superpowers/plans/2026-10-07-zero-downtime-deploys-0-index.md
@@ -535,6 +535,16 @@ Per finding:
(`Service.GenerationsFile`, `persistGenerations`, wired in `agent.go`).
Plan 5 extends that writer rather than adding its own, and `armAlways`
keeps only `OnWorkerServing`.
+ **Generations file contract, revised (2026-10-08, plan 4 R19):** the
+ file is now `{"schema":1,"seq":N,"complete":true,"hosts":{...},"paths":{...}}`
+ (`paths`: resolved staged paths, for builds with no version), written
+ after an atomic intent file `<data>/zdd/generations.seq` holding N. Root
+ reads intent present + file missing, incomplete or at another seq as an
+ incomplete pin set; neither file present is no generations. Plan 4's
+ activator publishes a worker's build BEFORE its exec and refuses the
+ spawn if that fails. The version sweep (`internal/host/versionsweep.go`)
+ reads the same file through `release.GenerationVersions` in plan 4, so
+ plan 5 adds instance generations to the writer, not a new reader.
- **7** (plan 5 Tasks 9, 11): as P1 #6.
- **8** (plan 5 Task 11): an empty version is published through the same
ordered writer, clearing the obsolete `ServingVersion`.