carlos / platform Public

index: plan 4 now provides flag-independent worker pin publication; plan 5 extends it (R17)

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

CI passed — 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 b121ba846..4dfa31574 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
@@ -530,6 +530,11 @@ Per finding:
refusal, never `SwapDone`.
- **6** (plan 5 Tasks 12, 14): the agent sets `GenerationsFile` and
`OnWorkerServing` whatever the flag (`armAlways`).
+ **Superseded in part (2026-10-08, plan 4 final review, R17):** plan 4
+ now provides the flag-independent worker pin publication
+ (`Service.GenerationsFile`, `persistGenerations`, wired in `agent.go`).
+ Plan 5 extends that writer rather than adding its own, and `armAlways`
+ keeps only `OnWorkerServing`.
- **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`.
@@ -635,6 +640,7 @@ many line numbers in plans 1, 3 and 5; find each use by its quoted name.
| `func (a *Service) respawnWorkerLocked(e *actEntry, stopOld Proc, why string, onto *release.StagedIdentity)` | P4 T9 | P3 T11 L5244 (body only); P5 T1 L179, T11 L5579 (`ReplaceWorker`, retire timing), T12 L6420 |
| `Service.CoalesceRecycle func(host string) bool` | P4 T9 | P5 T1 L187, T11 L6044 (`Manager.CoalesceRecycle`), T14 L7035 |
| `func (a *Service) WorkerReportedVersion(host string) string` | P4 T9 | display metadata; no other plan calls it yet |
+| `Service.GenerationsFile string`; `func (a *Service) persistGenerations() error` (flag-independent worker pin publication: every live or pending worker's captured serving version, written with `release.WriteGenerations` off `a.mu`, before the first worker spawn and on every respawn and stop; a failed write is retried by the sweep); the agent sets `svc.GenerationsFile = release.GenerationsPath(dataDir())` in `internal/host/agent.go` | P4 final review (R17, 2026-10-08) | P5 T12, T14: plan 5 EXTENDS this writer (adds instance generations, `unprovenWakes`, `errGenerationsUnpublished`) and its `armAlways` no longer sets `GenerationsFile` itself |
### Plan 5 (scheduler)