carlos / platform Public

Merge origin/main into instance-key-build (zdd surfaces)

Brings in moves-phase1-5d, 5c, 5e, settings-3-console-settings and
zdd-6-surfaces.

Resolutions:
- internal/activator/backend_exec.go, internal/activator/prepare.go: the
  only conflicts were the import blocks (this branch's instancekey beside
  main's instanceupdates); both kept. Main's control-socket mount
  (UpdatesReader beside Timers) merged cleanly; the instance-key mint
  (ensureInstanceKeyFor) and replica gate (replicaKeyGate) in
  spawnChildFrom, seedChild and prepareAt are unchanged.
- internal/host/claimproduction.go (auto-merged, did not build): both
  sides imported crypto/ed25519; kept one, and moved this branch's
  crypto/ecdh into the standard-library group.

No launch path was added or changed by main's five commits: the activator
changes are event wording and the read-only GET /updates mount, the host
changes are moves parks/install journalling (no process start; the landing
probe stays nil in production), the restart-log retry verb (clears a
rollout hold; the retry's start goes through StartGen/StartStaged) and
roster/claim refactors. Config sync's new keepAbsent leaves an empty
render's <host>.config.env absent; the mint's delivery rule asks the
bucket (ConfiguredKeyDigest), which renders no key for such a bundle, so
the two agree.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev f6a2aa5f27d9ad2b07293ce1e12f3f28a390524b parent 114ef74parent 5da1cc9
166 files changed, +17626 −828
  • apimode.go +58 −4
  • approved_copy_test.go +15 −8
  • approved_copy_zdd_test.go +73 −0
  • approved_moves_copy_test.go +11 −0
  • apps.go +6 −1
  • apps_swap.go +188 −0
  • apps_swap_constants_test.go +62 −0
  • apps_swap_test.go +112 −0
  • cli.go +32 −1
  • cmd/console/main.go +16 −0
  • cmd/console/movesswitch_test.go +57 −0
  • deploy.go +127 −133
  • deploywatch.go +721 −0
  • deploywatch_test.go +877 −0
  • docs/site/cli.md +72 −4
  • docs/superpowers/plans/2026-10-06-moves-phase1-copy.md +28 −0
  • docs/superpowers/plans/2026-10-07-instance-settings-3-copy.json +30 −0
  • docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-copy.json +155 −0
  • docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md +551 −0
  • docs/superpowers/plans/CODEX-FINDINGS-SETTINGS-IMPL-3-R2.md +36 −0
  • docs/superpowers/plans/CODEX-FINDINGS-SETTINGS-IMPL-3.md +47 −0
  • docs/superpowers/plans/CODEX-FINDINGS-ZDD-IMPL-6-R2.md +27 −0
  • docs/superpowers/plans/CODEX-FINDINGS-ZDD-IMPL-6-R3.md +17 −0
  • docs/superpowers/plans/CODEX-FINDINGS-ZDD-IMPL-6.md +43 −0
  • docs/superpowers/specs/2026-10-02-move-any-app-design.md +51 −17
  • instances_cli.go +146 −2
  • instances_e2e_test.go +36 −0
  • instances_retry_test.go +37 −0
  • instances_rollout_test.go +111 −0
  • internal/activator/activator.go +1 −1
  • internal/activator/backend_exec.go +11 −2
  • internal/activator/logsink.go +8 −0
  • internal/activator/prepare.go +8 −2
  • internal/activator/updates_control_test.go +126 −0
  • internal/activator/wakeplan.go +8 −6
  • internal/activator/wakeplan_test.go +35 −9
  • internal/alerting/alerting.go +32 −0
  • internal/alerting/alerting_test.go +33 −0
  • internal/appconfig/renderheld.go +20 −4
  • internal/appconfig/renderheld_before_test.go +62 −0
  • internal/appconfig/swap.go +114 −0
  • internal/appconfig/swap_sync_test.go +116 −0
  • internal/appconfig/swap_test.go +107 −0
  • internal/appconfig/syncexec.go +43 −2
  • internal/console/apicli.go +36 −7
  • internal/console/apiinstances.go +229 −13
  • internal/console/apiretry.go +122 −0
  • internal/console/apiretry_test.go +127 −0
  • internal/console/apiship_swap.go +48 −0
  • internal/console/apiship_swap_test.go +98 −0
  • internal/console/apisidecars.go +9 −11
  • internal/console/apisidecars_test.go +9 −6
  • internal/console/apiswap.go +85 −0
  • internal/console/apiswap_test.go +109 −0
  • internal/console/apisystemgeoip.go +14 −0
  • internal/console/apiupdates.go +629 −0
  • internal/console/apiupdates_test.go +1065 −0
  • internal/console/appswap.go +83 −0
  • internal/console/appswap_test.go +83 −0
  • internal/console/authcli.go +19 −0
  • internal/console/browserretry.go +81 −0
  • internal/console/browserretry_test.go +116 −0
  • internal/console/claim_authority_census_test.go +3 −0
  • internal/console/claim_invariant_fixtures_test.go +109 −0
  • internal/console/claim_invariant_moves_test.go +19 −0
  • internal/console/claim_invariant_probes_read_test.go +2 −0
  • internal/console/claim_runtime.go +15 −0
  • internal/console/instancepage.go +61 −0
  • internal/console/movesrecovery.go +516 −0
  • internal/console/movesrecovery_test.go +721 −0
  • internal/console/rolloutfleet_test.go +207 −0
  • internal/console/rolloutjoin_test.go +213 −0
  • internal/console/server.go +22 −3
  • internal/console/store.go +31 −0
  • internal/console/store_gate.go +1 −0
  • internal/console/svcroutes_test.go +26 −3
  • internal/console/swapcopy.go +74 −0
  • internal/console/swapcopy_truth_test.go +70 −0
  • internal/console/templates/app_instance.html +10 −1
  • internal/console/templates/app_settings.html +21 −0
  • internal/console/testdata/claim-authority-sites.txt +8 −0
  • internal/console/testdata/claim-routes.txt +8 −0
  • internal/console/updatesgate.go +67 −0
  • internal/console/updatesgate_test.go +283 −0
  • internal/host/agent.go +25 −2
  • internal/host/claimproduction.go +39 −15
  • internal/host/movesabort.go +43 −25
  • internal/host/movesabort_test.go +25 −10
  • internal/host/movescarries_test.go +503 −0
  • internal/host/movesclose_order_test.go +135 −0
  • internal/host/movesevidence.go +315 −0
  • internal/host/movesevidence_test.go +897 −0
  • internal/host/movesfileslive_test.go +610 −0
  • internal/host/movesfinal.go +38 −18
  • internal/host/movesfinal_test.go +11 −3
  • internal/host/movesinstall.go +236 −12
  • internal/host/movesinstall_test.go +30 −1
  • internal/host/movesland.go +32 −13
  • internal/host/movesland_test.go +65 −39
  • internal/host/moveslandcommit.go +4 −3
  • internal/host/moveslandpark.go +64 −64
  • internal/host/movesparkfakes_test.go +76 −0
  • internal/host/movesparks.go +73 −32
  • internal/host/movesparks_test.go +29 −15
  • internal/host/movespass.go +48 −27
  • internal/host/movespass_test.go +2 −2
  • internal/host/movesphase1_test.go +1 −1
  • internal/host/movesrecover.go +38 −30
  • internal/host/movesrecover_test.go +10 −11
  • internal/host/movesrefusals.go +225 −0
  • internal/host/movesrefusals_test.go +226 −0
  • internal/host/movesrevert.go +57 −59
  • internal/host/movesrevert_test.go +1 −1
  • internal/host/movesrollback.go +163 −39
  • internal/host/movesrollback_finalfix_test.go +2 −2
  • internal/host/movessources.go +648 −0
  • internal/host/movessources_test.go +712 −0
  • internal/host/restart.go +12 −0
  • internal/host/restartscope.go +53 −0
  • internal/host/restartscope_test.go +126 −0
  • internal/host/rollout.go +4 −4
  • internal/host/rolloutdeclined.go +1 −1
  • internal/host/rolloutdeclined_test.go +2 −2
  • internal/host/rolloutrefusaldrafts_test.go +21 −0
  • internal/instanceupdates/control.go +94 −0
  • internal/instanceupdates/control_test.go +216 −0
  • internal/park/live_generations_test.go +39 −0
  • internal/park/sweep.go +14 −0
  • internal/provision/move_test.go +44 −0
  • internal/provision/plan9_b8_census_test.go +33 −15
  • internal/provision/provision.go +34 −0
  • internal/provision/reconcile.go +71 −13
  • internal/provision/reconcile_test.go +12 −12
  • internal/provision/updates.go +85 −0
  • internal/provision/updates_reconcile_test.go +155 −0
  • internal/provision/updates_test.go +78 −0
  • internal/registry/coldhandover.go +1 −1
  • internal/registry/registry.go +50 −15
  • internal/registry/registry_test.go +1 −0
  • internal/registry/remote_dispatch.go +3 −0
  • internal/registry/updatesettings_test.go +82 −0
  • internal/release/restartscope.go +8 −1
  • internal/release/restartscope_test.go +12 −0
  • internal/release/updatesettings.go +89 −0
  • internal/release/updatesettings_test.go +47 −0
  • internal/rollout/events.go +17 −12
  • internal/rollout/events_mode_test.go +46 −0
  • internal/rollout/events_words_test.go +59 −0
  • internal/rollout/manager_test.go +19 −12
  • internal/rollout/wakeplan.go +6 −6
  • internal/rollout/wakeplan_test.go +16 −8
  • internal/rolloutwords/words.go +126 −0
  • internal/rolloutwords/words_test.go +135 −0
  • internal/sim/hostlife/console_test.go +13 −2
  • internal/sim/hostlife/moves_test.go +80 −5
  • internal/sim/hostlife/rules_test.go +1 −0
  • internal/sim/hostlife/sim_test.go +24 −8
  • internal/sim/hostlife/witness_test.go +65 −7
  • internal/sim/hostlife/world_test.go +4 −0
  • internal/status/dryrun.go +50 −0
  • internal/status/snapshot.go +28 −1
  • internal/status/snapshot_test.go +21 −0
  • internal/updatewords/words_approved_test.go +79 −32
  • internal/updatewords/words_console.go +58 −0
  • ship_swap_test.go +88 −0
  • sidecars_cli.go +6 −7
apimode.go

Loading diff…

approved_copy_test.go

Loading diff…

approved_copy_zdd_test.go

Loading diff…

approved_moves_copy_test.go

Loading diff…

apps.go

Loading diff…

apps_swap.go

Loading diff…

apps_swap_constants_test.go

Loading diff…

apps_swap_test.go

Loading diff…

cli.go

Loading diff…

cmd/console/main.go

Loading diff…

cmd/console/movesswitch_test.go

Loading diff…

deploy.go

Loading diff…

deploywatch.go

Loading diff…

deploywatch_test.go

Loading diff…

docs/site/cli.md

Loading diff…

docs/superpowers/plans/2026-10-06-moves-phase1-copy.md

Loading diff…

docs/superpowers/plans/2026-10-07-instance-settings-3-copy.json

Loading diff…

docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-copy.json

Loading diff…

docs/superpowers/plans/2026-10-07-zero-downtime-deploys-6-roll-notes.md

Loading diff…

docs/superpowers/plans/CODEX-FINDINGS-SETTINGS-IMPL-3-R2.md

Loading diff…

docs/superpowers/plans/CODEX-FINDINGS-SETTINGS-IMPL-3.md

Loading diff…

docs/superpowers/plans/CODEX-FINDINGS-ZDD-IMPL-6-R2.md

Loading diff…

docs/superpowers/plans/CODEX-FINDINGS-ZDD-IMPL-6-R3.md

Loading diff…

docs/superpowers/plans/CODEX-FINDINGS-ZDD-IMPL-6.md

Loading diff…

docs/superpowers/specs/2026-10-02-move-any-app-design.md

Loading diff…

instances_cli.go

Loading diff…

instances_e2e_test.go

Loading diff…

instances_retry_test.go

Loading diff…

instances_rollout_test.go

Loading diff…

internal/activator/activator.go

Loading diff…

internal/activator/backend_exec.go

Loading diff…

internal/activator/logsink.go

Loading diff…

internal/activator/prepare.go

Loading diff…

internal/activator/updates_control_test.go

Loading diff…

internal/activator/wakeplan.go

Loading diff…

internal/activator/wakeplan_test.go

Loading diff…

internal/alerting/alerting.go

Loading diff…

internal/alerting/alerting_test.go

Loading diff…

internal/appconfig/renderheld.go

Loading diff…

internal/appconfig/renderheld_before_test.go

Loading diff…

internal/appconfig/swap.go

Loading diff…

internal/appconfig/swap_sync_test.go

Loading diff…

internal/appconfig/swap_test.go

Loading diff…

internal/appconfig/syncexec.go

Loading diff…

internal/console/apicli.go

Loading diff…

internal/console/apiinstances.go

Loading diff…

internal/console/apiretry.go

Loading diff…

internal/console/apiretry_test.go

Loading diff…

internal/console/apiship_swap.go

Loading diff…

internal/console/apiship_swap_test.go

Loading diff…

internal/console/apisidecars.go

Loading diff…

internal/console/apisidecars_test.go

Loading diff…

internal/console/apiswap.go

Loading diff…

internal/console/apiswap_test.go

Loading diff…

internal/console/apisystemgeoip.go

Loading diff…

internal/console/apiupdates.go

Loading diff…

internal/console/apiupdates_test.go

Loading diff…

internal/console/appswap.go

Loading diff…

internal/console/appswap_test.go

Loading diff…

internal/console/authcli.go

Loading diff…

internal/console/browserretry.go

Loading diff…

internal/console/browserretry_test.go

Loading diff…

internal/console/claim_authority_census_test.go

Loading diff…

internal/console/claim_invariant_fixtures_test.go

Loading diff…

internal/console/claim_invariant_moves_test.go

Loading diff…

internal/console/claim_invariant_probes_read_test.go

Loading diff…

internal/console/claim_runtime.go

Loading diff…

internal/console/instancepage.go

Loading diff…

internal/console/movesrecovery.go

Loading diff…

internal/console/movesrecovery_test.go

Loading diff…

internal/console/rolloutfleet_test.go

Loading diff…

internal/console/rolloutjoin_test.go

Loading diff…

internal/console/server.go

Loading diff…

internal/console/store.go

Loading diff…

internal/console/store_gate.go

Loading diff…

internal/console/svcroutes_test.go

Loading diff…

internal/console/swapcopy.go

Loading diff…

internal/console/swapcopy_truth_test.go

Loading diff…

internal/console/templates/app_instance.html

Loading diff…

internal/console/templates/app_settings.html

Loading diff…

internal/console/testdata/claim-authority-sites.txt

Loading diff…

internal/console/testdata/claim-routes.txt

Loading diff…

internal/console/updatesgate.go

Loading diff…

internal/console/updatesgate_test.go

Loading diff…

internal/host/agent.go

Loading diff…

internal/host/claimproduction.go

Loading diff…

internal/host/movesabort.go

Loading diff…

internal/host/movesabort_test.go

Loading diff…

internal/host/movescarries_test.go

Loading diff…

internal/host/movesclose_order_test.go

Loading diff…

internal/host/movesevidence.go

Loading diff…

internal/host/movesevidence_test.go

Loading diff…

internal/host/movesfileslive_test.go

Loading diff…

internal/host/movesfinal.go

Loading diff…

internal/host/movesfinal_test.go

Loading diff…

internal/host/movesinstall.go

Loading diff…

internal/host/movesinstall_test.go

Loading diff…

internal/host/movesland.go

Loading diff…

internal/host/movesland_test.go

Loading diff…

internal/host/moveslandcommit.go

Loading diff…

internal/host/moveslandpark.go

Loading diff…

internal/host/movesparkfakes_test.go

Loading diff…

internal/host/movesparks.go

Loading diff…

internal/host/movesparks_test.go

Loading diff…

internal/host/movespass.go

Loading diff…

internal/host/movespass_test.go

Loading diff…

internal/host/movesphase1_test.go

Loading diff…

internal/host/movesrecover.go

Loading diff…

internal/host/movesrecover_test.go

Loading diff…

internal/host/movesrefusals.go

Loading diff…

internal/host/movesrefusals_test.go

Loading diff…

internal/host/movesrevert.go

Loading diff…

internal/host/movesrevert_test.go

Loading diff…

internal/host/movesrollback.go

Loading diff…

internal/host/movesrollback_finalfix_test.go

Loading diff…

internal/host/movessources.go

Loading diff…

internal/host/movessources_test.go

Loading diff…

internal/host/restart.go

Loading diff…

internal/host/restartscope.go

Loading diff…

internal/host/restartscope_test.go

Loading diff…

internal/host/rollout.go

Loading diff…

internal/host/rolloutdeclined.go

Loading diff…

internal/host/rolloutdeclined_test.go

Loading diff…

internal/host/rolloutrefusaldrafts_test.go

Loading diff…

internal/instanceupdates/control.go

Loading diff…

internal/instanceupdates/control_test.go

Loading diff…

internal/park/live_generations_test.go

Loading diff…

internal/park/sweep.go

Loading diff…

internal/provision/move_test.go

Loading diff…

internal/provision/plan9_b8_census_test.go

Loading diff…

internal/provision/provision.go

Loading diff…

internal/provision/reconcile.go

Loading diff…

internal/provision/reconcile_test.go

Loading diff…

internal/provision/updates.go

Loading diff…

internal/provision/updates_reconcile_test.go

Loading diff…

internal/provision/updates_test.go

Loading diff…

internal/registry/coldhandover.go

Loading diff…

internal/registry/registry.go

Loading diff…

internal/registry/registry_test.go

Loading diff…

internal/registry/remote_dispatch.go

Loading diff…

internal/registry/updatesettings_test.go

Loading diff…

internal/release/restartscope.go

Loading diff…

internal/release/restartscope_test.go

Loading diff…

internal/release/updatesettings.go

Loading diff…

internal/release/updatesettings_test.go

Loading diff…

internal/rollout/events.go

Loading diff…

internal/rollout/events_mode_test.go

Loading diff…

internal/rollout/events_words_test.go

Loading diff…

internal/rollout/manager_test.go

Loading diff…

internal/rollout/wakeplan.go

Loading diff…

internal/rollout/wakeplan_test.go

Loading diff…

internal/rolloutwords/words.go

Loading diff…

internal/rolloutwords/words_test.go

Loading diff…

internal/sim/hostlife/console_test.go

Loading diff…

internal/sim/hostlife/moves_test.go

Loading diff…

internal/sim/hostlife/rules_test.go

Loading diff…

internal/sim/hostlife/sim_test.go

Loading diff…

internal/sim/hostlife/witness_test.go

Loading diff…

internal/sim/hostlife/world_test.go

Loading diff…

internal/status/dryrun.go

Loading diff…

internal/status/snapshot.go

Loading diff…

internal/status/snapshot_test.go

Loading diff…

internal/updatewords/words_approved_test.go

Loading diff…

internal/updatewords/words_console.go

Loading diff…

ship_swap_test.go

Loading diff…

sidecars_cli.go

Loading diff…