zdd-6-surfaces
Zero-downtime deploys, plan 6: the member surfaces. Dormant: CARLOS_SWAP stays off. Built from plan 6 on design-zero-downtime-deploys against spec rev 17. origin/main was merged at 5157c1e7.
What it adds:
- the app swap policy: a console card, a person-only
PUT .../swapdoor, andcarlos apps set carlos ship/deploy --swap hold, with a 409 on a changed re-ship and an echo checkcarlos instances retry: an operate door, aretrykind on the restart-scope log, and the agent handing it toRetryHostcarlos instances listgains INSTALLED, SERVING and REASON- the console instance page gains a failure hold and Retry
- the deploy watch follows each box's rollout of the watched build, and runs today's watch when no box reports a rollout
carlos sidecars lsreads ServingVersion- event and refusal wording goes through internal/rolloutwords
- docs, and roll notes in docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md
Copy is APPROVED by Paul (2026-10-11). It covers 149 strings, two of them edited by Paul. The strings are applied and pinned by the record docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-copy.json and approvedcopyzdd_test.go. No TODO-COPY markers remain.
Astra's final review is ACCEPT WITH FIXES for a dormant merge, after two fix waves (CODEX-FINDINGS-ZDD-IMPL-6*.md).
Q4, Paul's ruling (2026-10-11): host retries stay on the unsigned restart-scope log for now, with the same trust as carlos restart. Console signing of retries, as promote --retry has, is owed before the flag goes on anywhere hold mode is used (#272).
Also owed before the flag goes on: skipped record reads can drop a fleet from the deploy watch's completeness check (Astra R3). It is listed in the roll notes.
Merging waits for Paul.
Discussions
- No discussions on this branch yet.
Tasks
- No tasks yet.
Activity
- claude agent, operated by paul@keymail.dev pushed 96c86b264 zdd-6: rerun CI (unrelated stopevidence flake at d12a71c1)
- claude agent, operated by paul@keymail.dev pushed d12a71c1c Merge origin/main into zdd-6-surfaces
- claude agent, operated by paul@keymail.dev pushed deaf3e5b3 zdd-6: roll notes record approved copy, Paul's retry-signing ruling and the R3 owed item
- claude agent, operated by paul@keymail.dev pushed 32ab97cd7 Merge origin/main into zdd-6-surfaces
- claude agent, operated by paul@keymail.dev pushed 90c8feda7 zdd-6 task 16: apply and pin the approved zero-downtime copy
- claude agent, operated by paul@keymail.dev pushed 05dce640c zdd-6: Astra's final review findings, rounds 1-3
- claude agent, operated by paul@keymail.dev pushed 971470f32 zdd-6 final fix wave 2: X2 rollout_incomplete counts only sources that could hold the app's reports
- claude agent, operated by paul@keymail.dev pushed 5150a6c19 zdd-6 final fix wave 2: X1 a 401 from the instance list is not fallback evidence
- claude agent, operated by paul@keymail.dev pushed 3625973c4 zdd-6 final fix wave 1: W7 roll notes
- claude agent, operated by paul@keymail.dev pushed a16d594f7 zdd-6 final fix wave 1: W6 a policy-only bundle restarts nothing
- claude agent, operated by paul@keymail.dev pushed b78dab8fc zdd-6 final fix wave 1: W5 draft markers on the remaining new copy
- claude agent, operated by paul@keymail.dev pushed 2410a5b40 zdd-6 final fix wave 1: W4 drafts that state no false behaviour
- claude agent, operated by paul@keymail.dev pushed cb24f42e3 zdd-6 final fix wave 1: W3 one fleet-aware rollout join for the list, the page and the retry door
- claude agent, operated by paul@keymail.dev pushed 1bc19aff8 zdd-6 final fix wave 1: W2 the deploy watch falls back only on evidence, inside one deadline
- claude agent, operated by paul@keymail.dev pushed 04560a8b7 zdd-6 final fix wave 1: W1 a final state survives missing observations, not a newer build
- claude agent, operated by paul@keymail.dev pushed 7a6250265 Merge origin/main into zdd-6-surfaces
- claude agent, operated by paul@keymail.dev pushed 0e3d31cfd zdd-6 task 17: roll notes for the zero-downtime deploys (gates A to G, probe, owed list)
- claude agent, operated by paul@keymail.dev pushed 77d77b3a8 zdd-6 task 15: docs for apps set, the rollout watch, --swap, promote --retry, the migrations rule and sidecars
- claude agent, operated by paul@keymail.dev pushed 17cd0e4c0 zdd-6 task 14b: refusal texts and the unpublished-build wake reason, drafts for copy review
- claude agent, operated by paul@keymail.dev pushed cf0b8eb95 zdd-6 task 14: rollout events use the rolloutwords wording
- claude agent, operated by paul@keymail.dev pushed a67bc75d7 zdd-6 task 13: fix round 1
- claude agent, operated by paul@keymail.dev pushed 14e0b7be9 zdd-6 task 13: carlos sidecars ls shows the serving build
- claude agent, operated by paul@keymail.dev pushed eede32ffc zdd-6 task 12: the instance page shows installed, serving and the hold, with Retry
- claude agent, operated by paul@keymail.dev pushed 33d2d597b zdd-6 task 11: fix round 1
- claude agent, operated by paul@keymail.dev pushed 7401745ef zdd-6 task 11: carlos instances retry, door and CLI
- claude agent, operated by paul@keymail.dev pushed d2ae23a51 WIP: stopped at the weekly usage limit
- claude agent, operated by paul@keymail.dev pushed 893b7d20f zdd-6 task 11a: the retry selector on the narrowed-restart log, handed to the rollout manager
- claude agent, operated by paul@keymail.dev pushed cc57273de zdd-6 task 10: fix round 1
- claude agent, operated by paul@keymail.dev pushed bd27d3189 zdd-6 task 10: the deploy watch follows each box's rollout and names promote --retry
- claude agent, operated by paul@keymail.dev pushed ea06e4e32 zdd-6 task 9: carlos instances list shows installed, serving and why