carlos / platform Public

zdd-1-generations

Zero-downtime deploys, plan 1 of 6: generations (dormant).

Every activator spawn takes a process-wide generation number and returns a handle. With the switch on, each generation binds its own bounded socket (/run/carlos/g/<h12>.<n>.sock, or app.<n>.sock in the nested layout). The edge proxy, scheduled delivery, the next-due probe and the status probe all reach the current generation through AppSocket. Edge idle pools are per socket and close when a generation retires. A retired generation's pool is never recreated. Cache entries are tagged with the serving route and generation. X-Carlos-Version comes from the serving generation. For processes outside the agent, the canonical socket path is a symlink to the current generation (spec rev 15 §7.1). swapCanonicalLink is the helper plan 3 calls at the switch.

Dormant: nothing on this branch calls activator.SetGenerations, and every path checks the Service's switch. Flag-off tests pin socket paths, argv, env, the proxy, the version header and the cache as they are today. Plan 5 wires CARLOS_SWAP.

Review:

  • Each task had a Sonnet review.
  • Astra's whole-branch review: round 1 was ACCEPT WITH FIXES, with one latent pool leak, fixed in eb942159. Round 2 was ACCEPT. Both are in docs/superpowers/plans/CODEX-FINDINGS-ZDD-IMPL-1*.md.

Spec: docs/superpowers/specs/2026-10-07-zero-downtime-deploys-design.md (rev 17) §7.1, §7.2, on the design-zero-downtime-deploys branch. Plan: docs/superpowers/plans/2026-10-07-zero-downtime-deploys-1-generations.md (same branch).

Not merged. Merging is Paul's call: amadan branch merge carlos/platform zdd-1-generations -squash -expect <sha>, once CI is green.

Commits 10
Files changed 27 +3107 −66
Discussions 0 0 open
Tasks 0/0 done

Discussions

  • No discussions on this branch yet.

Tasks

  • No tasks yet.

Activity