design-self-serve-offline-moves
cmd/console/main.go
+22 −0
cmd/console/main.goLoading diff…
docs/site/cli.md
+38 −0
docs/site/cli.mdLoading diff…
docs/superpowers/notes/census-proposal-self-serve-moves-1.md
+49 −0
docs/superpowers/notes/census-proposal-self-serve-moves-1.mdLoading diff…
docs/superpowers/plans/2026-10-22-self-serve-moves-1-lifetimes-and-order.md
+364 −0
docs/superpowers/plans/2026-10-22-self-serve-moves-1-lifetimes-and-order.mdLoading diff…
docs/superpowers/plans/2026-10-22-self-serve-moves-2-door-token-job.md
+245 −0
docs/superpowers/plans/2026-10-22-self-serve-moves-2-door-token-job.mdLoading diff…
docs/superpowers/plans/2026-10-22-self-serve-moves-3-holding-page.md
+144 −0
docs/superpowers/plans/2026-10-22-self-serve-moves-3-holding-page.mdLoading diff…
docs/superpowers/plans/2026-10-22-self-serve-moves-4-cleanup.md
+152 −0
docs/superpowers/plans/2026-10-22-self-serve-moves-4-cleanup.mdLoading diff…
docs/superpowers/specs/2026-10-21-self-serve-offline-moves-design.md
+271 −0
docs/superpowers/specs/2026-10-21-self-serve-offline-moves-design.mdLoading diff…
internal/console/apex.go
+4 −2
internal/console/apex.goLoading diff…
internal/console/apidb.go
+1 −1
internal/console/apidb.goLoading diff…
internal/console/apidomains.go
+25 −4
internal/console/apidomains.goLoading diff…
internal/console/apiinstanceimport.go
+98 −36
internal/console/apiinstanceimport.goLoading diff…
internal/console/apiinstancemove.go
+4 −4
internal/console/apiinstancemove.goLoading diff…
internal/console/apiinstancemove_offline.go
+2 −2
internal/console/apiinstancemove_offline.goLoading diff…
internal/console/apiinstances.go
+66 −11
internal/console/apiinstances.goLoading diff…
internal/console/apiinstanceseed.go
+33 −2
internal/console/apiinstanceseed.goLoading diff…
internal/console/apilegacyroutes.go
+5 −4
internal/console/apilegacyroutes.goLoading diff…
internal/console/apiretry.go
+1 −1
internal/console/apiretry.goLoading diff…
internal/console/apiruns.go
+2 −2
internal/console/apiruns.goLoading diff…
internal/console/apirunsfollow.go
+1 −1
internal/console/apirunsfollow.goLoading diff…
internal/console/applocks.go
+13 −1
internal/console/applocks.goLoading diff…
internal/console/appsettings.go
+2 −2
internal/console/appsettings.goLoading diff…
internal/console/authcli.go
+4 −0
internal/console/authcli.goLoading diff…
internal/console/channelmove.go
+2 −2
internal/console/channelmove.goLoading diff…
internal/console/claim_invariant_fixtures_test.go
+24 −11
internal/console/claim_invariant_fixtures_test.goLoading diff…
internal/console/claim_invariant_probes_worker_test.go
+5 −2
internal/console/claim_invariant_probes_worker_test.goLoading diff…
internal/console/claim_invariant_test.go
+8 −0
internal/console/claim_invariant_test.goLoading diff…
internal/console/claim_retire.go
+5 −2
internal/console/claim_retire.goLoading diff…
internal/console/claim_workers.go
+21 −18
internal/console/claim_workers.goLoading diff…
internal/console/domainattach.go
+163 −4
internal/console/domainattach.goLoading diff…
internal/console/domaincatchall.go
+7 −2
internal/console/domaincatchall.goLoading diff…
internal/console/domaincatchall_test.go
+68 −0
internal/console/domaincatchall_test.goLoading diff…
internal/console/expirypass.go
+17 −11
internal/console/expirypass.goLoading diff…
internal/console/fleets.go
+1 −1
internal/console/fleets.goLoading diff…
internal/console/hostclaimops.go
+5 −0
internal/console/hostclaimops.goLoading diff…
internal/console/lifetimes.go
+295 −0
internal/console/lifetimes.goLoading diff…
internal/console/lifetimes_audit_test.go
+460 −0
internal/console/lifetimes_audit_test.goLoading diff…
internal/console/lifetimes_create.go
+610 −0
internal/console/lifetimes_create.goLoading diff…
internal/console/lifetimes_create_test.go
+2688 −0
internal/console/lifetimes_create_test.goLoading diff…
internal/console/lifetimes_cutover.go
+586 −0
internal/console/lifetimes_cutover.goLoading diff…
internal/console/lifetimes_cutover_test.go
+928 −0
internal/console/lifetimes_cutover_test.goLoading diff…
internal/console/lifetimes_e2e_test.go
+470 −0
internal/console/lifetimes_e2e_test.goLoading diff…
internal/console/lifetimes_floor.go
+167 −0
internal/console/lifetimes_floor.goLoading diff…
internal/console/lifetimes_floor_test.go
+201 −0
internal/console/lifetimes_floor_test.goLoading diff…
internal/console/lifetimes_migrate.go
+494 −0
internal/console/lifetimes_migrate.goLoading diff…
internal/console/lifetimes_migrate_test.go
+1110 −0
internal/console/lifetimes_migrate_test.goLoading diff…
internal/console/lifetimes_purge.go
+312 −0
internal/console/lifetimes_purge.goLoading diff…
internal/console/lifetimes_purge_test.go
+441 −0
internal/console/lifetimes_purge_test.goLoading diff…
internal/console/lifetimes_read.go
+56 −0
internal/console/lifetimes_read.goLoading diff…
internal/console/lifetimes_read_test.go
+253 −0
internal/console/lifetimes_read_test.goLoading diff…
internal/console/lifetimes_recovery.go
+230 −0
internal/console/lifetimes_recovery.goLoading diff…
internal/console/lifetimes_retire.go
+375 −0
internal/console/lifetimes_retire.goLoading diff…
internal/console/lifetimes_retire_test.go
+1324 −0
internal/console/lifetimes_retire_test.goLoading diff…
internal/console/lifetimes_store.go
+446 −0
internal/console/lifetimes_store.goLoading diff…
internal/console/lifetimes_store_test.go
+660 −0
internal/console/lifetimes_store_test.goLoading diff…
internal/console/movesrecovery.go
+1 −1
internal/console/movesrecovery.goLoading diff…
internal/console/ownership.go
+9 −1
internal/console/ownership.goLoading diff…
internal/console/regiondrift.go
+15 −4
internal/console/regiondrift.goLoading diff…
internal/console/relayops.go
+1 −2
internal/console/relayops.goLoading diff…
internal/console/runsweep.go
+10 −10
internal/console/runsweep.goLoading diff…
internal/console/seedfinish.go
+11 −4
internal/console/seedfinish.goLoading diff…
internal/console/seedfloor_test.go
+1 −1
internal/console/seedfloor_test.goLoading diff…
internal/console/seedmove.go
+5 −4
internal/console/seedmove.goLoading diff…
internal/console/seedsweep.go
+9 −11
internal/console/seedsweep.goLoading diff…
internal/console/server.go
+45 −3
internal/console/server.goLoading diff…
internal/console/settle.go
+12 −1
internal/console/settle.goLoading diff…
internal/console/stepup.go
+4 −1
internal/console/stepup.goLoading diff…
internal/console/store.go
+83 −13
internal/console/store.goLoading diff…
internal/console/store_gate.go
+24 −1
internal/console/store_gate.goLoading diff…
internal/console/store_gate_test.go
+30 −0
internal/console/store_gate_test.goLoading diff…
internal/console/svcroutes_test.go
+5 −2
internal/console/svcroutes_test.goLoading diff…
internal/console/tempstore.go
+5 −10
internal/console/tempstore.goLoading diff…
internal/console/testdata/claim-routes.txt
+4 −0
internal/console/testdata/claim-routes.txtLoading diff…
internal/console/updatescore.go
+1 −1
internal/console/updatescore.goLoading diff…
internal/domains/aliases.go
+32 −4
internal/domains/aliases.goLoading diff…
internal/domains/claims.go
+99 −5
internal/domains/claims.goLoading diff…
internal/domains/instancecatchall_judged_test.go
+189 −0
internal/domains/instancecatchall_judged_test.goLoading diff…
internal/domains/instancecatchall_lifetimes_test.go
+109 −0
internal/domains/instancecatchall_lifetimes_test.goLoading diff…
internal/domains/reconcile.go
+13 −19
internal/domains/reconcile.goLoading diff…
internal/domains/reconcile_test.go
+48 −34
internal/domains/reconcile_test.goLoading diff…
internal/edge/homemap.go
+69 −7
internal/edge/homemap.goLoading diff…
internal/edge/homemap_test.go
+207 −0
internal/edge/homemap_test.goLoading diff…
internal/host/agent.go
+52 −21
internal/host/agent.goLoading diff…
internal/host/agent_test.go
+2 −2
internal/host/agent_test.goLoading diff…
internal/host/boxaddress_test.go
+7 −7
internal/host/boxaddress_test.goLoading diff…
internal/host/boxjudge.go
+35 −0
internal/host/boxjudge.goLoading diff…
internal/host/edgesclaims_test.go
+1 −1
internal/host/edgesclaims_test.goLoading diff…
internal/host/edgesfile.go
+59 −15
internal/host/edgesfile.goLoading diff…
internal/host/edgesfile_test.go
+429 −3
internal/host/edgesfile_test.goLoading diff…
internal/host/lifetime_gating_test.go
+749 −0
internal/host/lifetime_gating_test.goLoading diff…
internal/host/movescut.go
+1 −1
internal/host/movescut.goLoading diff…
internal/host/movesfinal.go
+3 −3
internal/host/movesfinal.goLoading diff…
internal/host/moveshold.go
+1 −1
internal/host/moveshold.goLoading diff…
internal/host/movesland.go
+1 −1
internal/host/movesland.goLoading diff…
internal/host/moveslandcommit.go
+2 −2
internal/host/moveslandcommit.goLoading diff…
internal/host/moveslandinstall.go
+1 −1
internal/host/moveslandinstall.goLoading diff…
internal/host/movesoffline.go
+112 −8
internal/host/movesoffline.goLoading diff…
internal/host/movesoffline_e2e_test.go
+256 −4
internal/host/movesoffline_e2e_test.goLoading diff…
internal/host/movesoffline_land.go
+12 −5
internal/host/movesoffline_land.goLoading diff…
internal/host/movesoffline_land_test.go
+12 −1
internal/host/movesoffline_land_test.goLoading diff…
internal/host/movesoffline_lifetime_test.go
+459 −0
internal/host/movesoffline_lifetime_test.goLoading diff…
internal/host/movesoffline_stage.go
+2 −2
internal/host/movesoffline_stage.goLoading diff…
internal/host/movesoffline_test.go
+17 −10
internal/host/movesoffline_test.goLoading diff…
internal/host/movesparks.go
+1 −1
internal/host/movesparks.goLoading diff…
internal/host/movespass.go
+26 −3
internal/host/movespass.goLoading diff…
internal/host/movespass_test.go
+2 −2
internal/host/movespass_test.goLoading diff…
internal/host/movesphase1_test.go
+1 −1
internal/host/movesphase1_test.goLoading diff…
internal/host/movespolicy.go
+1 −1
internal/host/movespolicy.goLoading diff…
internal/host/movesrecover.go
+2 −2
internal/host/movesrecover.goLoading diff…
internal/host/movesrevert.go
+3 −3
internal/host/movesrevert.goLoading diff…
internal/host/movesrollback.go
+3 −3
internal/host/movesrollback.goLoading diff…
internal/host/proofbinding.go
+8 −0
internal/host/proofbinding.goLoading diff…
internal/host/proofnamed.go
+3 −0
internal/host/proofnamed.goLoading diff…
internal/host/relocatepass.go
+1 −1
internal/host/relocatepass.goLoading diff…
internal/host/retention.go
+18 −2
internal/host/retention.goLoading diff…
internal/host/rootgeneration_requirements.go
+1 −1
internal/host/rootgeneration_requirements.goLoading diff…
internal/host/rootgenerations_launch.go
+1 −1
internal/host/rootgenerations_launch.goLoading diff…
internal/host/roothistory.go
+1 −1
internal/host/roothistory.goLoading diff…
internal/host/roothistory_creation.go
+4 −3
internal/host/roothistory_creation.goLoading diff…
internal/host/rootrestart_requests.go
+3 −2
internal/host/rootrestart_requests.goLoading diff…
internal/host/rootrestart_requests_source.go
+7 −1
internal/host/rootrestart_requests_source.goLoading diff…
internal/host/rootupdates.go
+5 −4
internal/host/rootupdates.goLoading diff…
internal/host/rootupdates_runtime.go
+1 −1
internal/host/rootupdates_runtime.goLoading diff…
internal/host/runexec.go
+2 −2
internal/host/runexec.goLoading diff…
internal/host/runs.go
+14 −4
internal/host/runs.goLoading diff…
internal/host/seedwiring.go
+12 −3
internal/host/seedwiring.goLoading diff…
internal/host/seedwiring_test.go
+6 −6
internal/host/seedwiring_test.goLoading diff…
internal/host/steering_loop.go
+7 −4
internal/host/steering_loop.goLoading diff…
internal/host/steering_loop_test.go
+4 −4
internal/host/steering_loop_test.goLoading diff…
internal/provision/lifetime.go
+191 −0
internal/provision/lifetime.goLoading diff…
internal/provision/lifetime_judge.go
+385 −0
internal/provision/lifetime_judge.goLoading diff…
internal/provision/lifetime_judge_test.go
+982 −0
internal/provision/lifetime_judge_test.goLoading diff…
internal/provision/lifetime_migration.go
+149 −0
internal/provision/lifetime_migration.goLoading diff…
internal/provision/lifetime_test.go
+293 −0
internal/provision/lifetime_test.goLoading diff…
internal/provision/offline_move.go
+51 −5
internal/provision/offline_move.goLoading diff…
internal/provision/offline_move_test.go
+206 −1
internal/provision/offline_move_test.goLoading diff…
internal/provision/plan14_root_reads_test.go
+38 −0
internal/provision/plan14_root_reads_test.goLoading diff…
internal/provision/plan9_b8_census_test.go
+1 −1
internal/provision/plan9_b8_census_test.goLoading diff…
internal/provision/provision.go
+131 −31
internal/provision/provision.goLoading diff…
internal/provision/provision_test.go
+21 −0
internal/provision/provision_test.goLoading diff…
internal/provision/reconcile.go
+309 −21
internal/provision/reconcile.goLoading diff…
internal/provision/reconcile_lifetime_test.go
+1143 −0
internal/provision/reconcile_lifetime_test.goLoading diff…
internal/provision/record_sequence.go
+6 −0
internal/provision/record_sequence.goLoading diff…
internal/provision/record_sequence_test.go
+218 −0
internal/provision/record_sequence_test.goLoading diff…
internal/provision/replica.go
+8 −1
internal/provision/replica.goLoading diff…
internal/provision/retirement.go
+38 −0
internal/provision/retirement.goLoading diff…
internal/provision/retirement_test.go
+36 −0
internal/provision/retirement_test.goLoading diff…
internal/provision/rootrecord.go
+25 −12
internal/provision/rootrecord.goLoading diff…
internal/provision/rootrecord_test.go
+84 −0
internal/provision/rootrecord_test.goLoading diff…
internal/provision/seedjournal_test.go
+1 −1
internal/provision/seedjournal_test.goLoading diff…
internal/provision/seedreconcile.go
+6 −3
internal/provision/seedreconcile.goLoading diff…
internal/provision/seedreconcile_lifetime_test.go
+82 −0
internal/provision/seedreconcile_lifetime_test.goLoading diff…
internal/provision/seedrollback.go
+32 −2
internal/provision/seedrollback.goLoading diff…
internal/provision/self_serve_moves1_census_test.go
+384 −0
internal/provision/self_serve_moves1_census_test.goLoading diff…
internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv
+205 −0
internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsvLoading diff…
internal/registry/registry.go
+141 −7
internal/registry/registry.goLoading diff…
internal/registry/registry_test.go
+323 −0
internal/registry/registry_test.goLoading diff…
internal/registry/remote_dispatch.go
+8 −0
internal/registry/remote_dispatch.goLoading diff…
internal/release/temporary.go
+41 −1
internal/release/temporary.goLoading diff…
internal/release/temporary_test.go
+57 −0
internal/release/temporary_test.goLoading diff…
internal/release/trash.go
+58 −3
internal/release/trash.goLoading diff…
system.go
+7 −1
system.goLoading diff…
system_lifetimes.go
+128 −0
system_lifetimes.goLoading diff…
system_lifetimes_test.go
+118 −0
system_lifetimes_test.goLoading diff…
system_test.go
+2 −0
system_test.goLoading diff…