carlos / platform Public

design-self-serve-offline-moves

cmd/console/main.go +22 −0
cmd/console/main.go

Loading diff…

docs/site/cli.md +38 −0
docs/site/cli.md

Loading diff…

docs/superpowers/notes/census-proposal-self-serve-moves-1.md +49 −0
docs/superpowers/notes/census-proposal-self-serve-moves-1.md

Loading 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.md

Loading 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.md

Loading 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.md

Loading 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.md

Loading 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.md

Loading diff…

internal/console/apex.go +4 −2
internal/console/apex.go

Loading diff…

internal/console/apidb.go +1 −1
internal/console/apidb.go

Loading diff…

internal/console/apidomains.go +25 −4
internal/console/apidomains.go

Loading diff…

internal/console/apiinstanceimport.go +98 −36
internal/console/apiinstanceimport.go

Loading diff…

internal/console/apiinstancemove.go +4 −4
internal/console/apiinstancemove.go

Loading diff…

internal/console/apiinstancemove_offline.go +2 −2
internal/console/apiinstancemove_offline.go

Loading diff…

internal/console/apiinstances.go +66 −11
internal/console/apiinstances.go

Loading diff…

internal/console/apiinstanceseed.go +33 −2
internal/console/apiinstanceseed.go

Loading diff…

internal/console/apilegacyroutes.go +5 −4
internal/console/apilegacyroutes.go

Loading diff…

internal/console/apiretry.go +1 −1
internal/console/apiretry.go

Loading diff…

internal/console/apiruns.go +2 −2
internal/console/apiruns.go

Loading diff…

internal/console/apirunsfollow.go +1 −1
internal/console/apirunsfollow.go

Loading diff…

internal/console/applocks.go +13 −1
internal/console/applocks.go

Loading diff…

internal/console/appsettings.go +2 −2
internal/console/appsettings.go

Loading diff…

internal/console/authcli.go +4 −0
internal/console/authcli.go

Loading diff…

internal/console/channelmove.go +2 −2
internal/console/channelmove.go

Loading diff…

internal/console/claim_invariant_fixtures_test.go +24 −11
internal/console/claim_invariant_fixtures_test.go

Loading diff…

internal/console/claim_invariant_probes_worker_test.go +5 −2
internal/console/claim_invariant_probes_worker_test.go

Loading diff…

internal/console/claim_invariant_test.go +8 −0
internal/console/claim_invariant_test.go

Loading diff…

internal/console/claim_retire.go +5 −2
internal/console/claim_retire.go

Loading diff…

internal/console/claim_workers.go +21 −18
internal/console/claim_workers.go

Loading diff…

internal/console/domainattach.go +163 −4
internal/console/domainattach.go

Loading diff…

internal/console/domaincatchall.go +7 −2
internal/console/domaincatchall.go

Loading diff…

internal/console/domaincatchall_test.go +68 −0
internal/console/domaincatchall_test.go

Loading diff…

internal/console/expirypass.go +17 −11
internal/console/expirypass.go

Loading diff…

internal/console/fleets.go +1 −1
internal/console/fleets.go

Loading diff…

internal/console/hostclaimops.go +5 −0
internal/console/hostclaimops.go

Loading diff…

internal/console/lifetimes.go +295 −0
internal/console/lifetimes.go

Loading diff…

internal/console/lifetimes_audit_test.go +460 −0
internal/console/lifetimes_audit_test.go

Loading diff…

internal/console/lifetimes_create.go +610 −0
internal/console/lifetimes_create.go

Loading diff…

internal/console/lifetimes_create_test.go +2688 −0
internal/console/lifetimes_create_test.go

Loading diff…

internal/console/lifetimes_cutover.go +586 −0
internal/console/lifetimes_cutover.go

Loading diff…

internal/console/lifetimes_cutover_test.go +928 −0
internal/console/lifetimes_cutover_test.go

Loading diff…

internal/console/lifetimes_e2e_test.go +470 −0
internal/console/lifetimes_e2e_test.go

Loading diff…

internal/console/lifetimes_floor.go +167 −0
internal/console/lifetimes_floor.go

Loading diff…

internal/console/lifetimes_floor_test.go +201 −0
internal/console/lifetimes_floor_test.go

Loading diff…

internal/console/lifetimes_migrate.go +494 −0
internal/console/lifetimes_migrate.go

Loading diff…

internal/console/lifetimes_migrate_test.go +1110 −0
internal/console/lifetimes_migrate_test.go

Loading diff…

internal/console/lifetimes_purge.go +312 −0
internal/console/lifetimes_purge.go

Loading diff…

internal/console/lifetimes_purge_test.go +441 −0
internal/console/lifetimes_purge_test.go

Loading diff…

internal/console/lifetimes_read.go +56 −0
internal/console/lifetimes_read.go

Loading diff…

internal/console/lifetimes_read_test.go +253 −0
internal/console/lifetimes_read_test.go

Loading diff…

internal/console/lifetimes_recovery.go +230 −0
internal/console/lifetimes_recovery.go

Loading diff…

internal/console/lifetimes_retire.go +375 −0
internal/console/lifetimes_retire.go

Loading diff…

internal/console/lifetimes_retire_test.go +1324 −0
internal/console/lifetimes_retire_test.go

Loading diff…

internal/console/lifetimes_store.go +446 −0
internal/console/lifetimes_store.go

Loading diff…

internal/console/lifetimes_store_test.go +660 −0
internal/console/lifetimes_store_test.go

Loading diff…

internal/console/movesrecovery.go +1 −1
internal/console/movesrecovery.go

Loading diff…

internal/console/ownership.go +9 −1
internal/console/ownership.go

Loading diff…

internal/console/regiondrift.go +15 −4
internal/console/regiondrift.go

Loading diff…

internal/console/relayops.go +1 −2
internal/console/relayops.go

Loading diff…

internal/console/runsweep.go +10 −10
internal/console/runsweep.go

Loading diff…

internal/console/seedfinish.go +11 −4
internal/console/seedfinish.go

Loading diff…

internal/console/seedfloor_test.go +1 −1
internal/console/seedfloor_test.go

Loading diff…

internal/console/seedmove.go +5 −4
internal/console/seedmove.go

Loading diff…

internal/console/seedsweep.go +9 −11
internal/console/seedsweep.go

Loading diff…

internal/console/server.go +45 −3
internal/console/server.go

Loading diff…

internal/console/settle.go +12 −1
internal/console/settle.go

Loading diff…

internal/console/stepup.go +4 −1
internal/console/stepup.go

Loading diff…

internal/console/store.go +83 −13
internal/console/store.go

Loading diff…

internal/console/store_gate.go +24 −1
internal/console/store_gate.go

Loading diff…

internal/console/store_gate_test.go +30 −0
internal/console/store_gate_test.go

Loading diff…

internal/console/svcroutes_test.go +5 −2
internal/console/svcroutes_test.go

Loading diff…

internal/console/tempstore.go +5 −10
internal/console/tempstore.go

Loading diff…

internal/console/testdata/claim-routes.txt +4 −0
internal/console/testdata/claim-routes.txt

Loading diff…

internal/console/updatescore.go +1 −1
internal/console/updatescore.go

Loading diff…

internal/domains/aliases.go +32 −4
internal/domains/aliases.go

Loading diff…

internal/domains/claims.go +99 −5
internal/domains/claims.go

Loading diff…

internal/domains/instancecatchall_judged_test.go +189 −0
internal/domains/instancecatchall_judged_test.go

Loading diff…

internal/domains/instancecatchall_lifetimes_test.go +109 −0
internal/domains/instancecatchall_lifetimes_test.go

Loading diff…

internal/domains/reconcile.go +13 −19
internal/domains/reconcile.go

Loading diff…

internal/domains/reconcile_test.go +48 −34
internal/domains/reconcile_test.go

Loading diff…

internal/edge/homemap.go +69 −7
internal/edge/homemap.go

Loading diff…

internal/edge/homemap_test.go +207 −0
internal/edge/homemap_test.go

Loading diff…

internal/host/agent.go +52 −21
internal/host/agent.go

Loading diff…

internal/host/agent_test.go +2 −2
internal/host/agent_test.go

Loading diff…

internal/host/boxaddress_test.go +7 −7
internal/host/boxaddress_test.go

Loading diff…

internal/host/boxjudge.go +35 −0
internal/host/boxjudge.go

Loading diff…

internal/host/edgesclaims_test.go +1 −1
internal/host/edgesclaims_test.go

Loading diff…

internal/host/edgesfile.go +59 −15
internal/host/edgesfile.go

Loading diff…

internal/host/edgesfile_test.go +429 −3
internal/host/edgesfile_test.go

Loading diff…

internal/host/lifetime_gating_test.go +749 −0
internal/host/lifetime_gating_test.go

Loading diff…

internal/host/movescut.go +1 −1
internal/host/movescut.go

Loading diff…

internal/host/movesfinal.go +3 −3
internal/host/movesfinal.go

Loading diff…

internal/host/moveshold.go +1 −1
internal/host/moveshold.go

Loading diff…

internal/host/movesland.go +1 −1
internal/host/movesland.go

Loading diff…

internal/host/moveslandcommit.go +2 −2
internal/host/moveslandcommit.go

Loading diff…

internal/host/moveslandinstall.go +1 −1
internal/host/moveslandinstall.go

Loading diff…

internal/host/movesoffline.go +112 −8
internal/host/movesoffline.go

Loading diff…

internal/host/movesoffline_e2e_test.go +256 −4
internal/host/movesoffline_e2e_test.go

Loading diff…

internal/host/movesoffline_land.go +12 −5
internal/host/movesoffline_land.go

Loading diff…

internal/host/movesoffline_land_test.go +12 −1
internal/host/movesoffline_land_test.go

Loading diff…

internal/host/movesoffline_lifetime_test.go +459 −0
internal/host/movesoffline_lifetime_test.go

Loading diff…

internal/host/movesoffline_stage.go +2 −2
internal/host/movesoffline_stage.go

Loading diff…

internal/host/movesoffline_test.go +17 −10
internal/host/movesoffline_test.go

Loading diff…

internal/host/movesparks.go +1 −1
internal/host/movesparks.go

Loading diff…

internal/host/movespass.go +26 −3
internal/host/movespass.go

Loading diff…

internal/host/movespass_test.go +2 −2
internal/host/movespass_test.go

Loading diff…

internal/host/movesphase1_test.go +1 −1
internal/host/movesphase1_test.go

Loading diff…

internal/host/movespolicy.go +1 −1
internal/host/movespolicy.go

Loading diff…

internal/host/movesrecover.go +2 −2
internal/host/movesrecover.go

Loading diff…

internal/host/movesrevert.go +3 −3
internal/host/movesrevert.go

Loading diff…

internal/host/movesrollback.go +3 −3
internal/host/movesrollback.go

Loading diff…

internal/host/proofbinding.go +8 −0
internal/host/proofbinding.go

Loading diff…

internal/host/proofnamed.go +3 −0
internal/host/proofnamed.go

Loading diff…

internal/host/relocatepass.go +1 −1
internal/host/relocatepass.go

Loading diff…

internal/host/retention.go +18 −2
internal/host/retention.go

Loading diff…

internal/host/rootgeneration_requirements.go +1 −1
internal/host/rootgeneration_requirements.go

Loading diff…

internal/host/rootgenerations_launch.go +1 −1
internal/host/rootgenerations_launch.go

Loading diff…

internal/host/roothistory.go +1 −1
internal/host/roothistory.go

Loading diff…

internal/host/roothistory_creation.go +4 −3
internal/host/roothistory_creation.go

Loading diff…

internal/host/rootrestart_requests.go +3 −2
internal/host/rootrestart_requests.go

Loading diff…

internal/host/rootrestart_requests_source.go +7 −1
internal/host/rootrestart_requests_source.go

Loading diff…

internal/host/rootupdates.go +5 −4
internal/host/rootupdates.go

Loading diff…

internal/host/rootupdates_runtime.go +1 −1
internal/host/rootupdates_runtime.go

Loading diff…

internal/host/runexec.go +2 −2
internal/host/runexec.go

Loading diff…

internal/host/runs.go +14 −4
internal/host/runs.go

Loading diff…

internal/host/seedwiring.go +12 −3
internal/host/seedwiring.go

Loading diff…

internal/host/seedwiring_test.go +6 −6
internal/host/seedwiring_test.go

Loading diff…

internal/host/steering_loop.go +7 −4
internal/host/steering_loop.go

Loading diff…

internal/host/steering_loop_test.go +4 −4
internal/host/steering_loop_test.go

Loading diff…

internal/provision/lifetime.go +191 −0
internal/provision/lifetime.go

Loading diff…

internal/provision/lifetime_judge.go +385 −0
internal/provision/lifetime_judge.go

Loading diff…

internal/provision/lifetime_judge_test.go +982 −0
internal/provision/lifetime_judge_test.go

Loading diff…

internal/provision/lifetime_migration.go +149 −0
internal/provision/lifetime_migration.go

Loading diff…

internal/provision/lifetime_test.go +293 −0
internal/provision/lifetime_test.go

Loading diff…

internal/provision/offline_move.go +51 −5
internal/provision/offline_move.go

Loading diff…

internal/provision/offline_move_test.go +206 −1
internal/provision/offline_move_test.go

Loading diff…

internal/provision/plan14_root_reads_test.go +38 −0
internal/provision/plan14_root_reads_test.go

Loading diff…

internal/provision/plan9_b8_census_test.go +1 −1
internal/provision/plan9_b8_census_test.go

Loading diff…

internal/provision/provision.go +131 −31
internal/provision/provision.go

Loading diff…

internal/provision/provision_test.go +21 −0
internal/provision/provision_test.go

Loading diff…

internal/provision/reconcile.go +309 −21
internal/provision/reconcile.go

Loading diff…

internal/provision/reconcile_lifetime_test.go +1143 −0
internal/provision/reconcile_lifetime_test.go

Loading diff…

internal/provision/record_sequence.go +6 −0
internal/provision/record_sequence.go

Loading diff…

internal/provision/record_sequence_test.go +218 −0
internal/provision/record_sequence_test.go

Loading diff…

internal/provision/replica.go +8 −1
internal/provision/replica.go

Loading diff…

internal/provision/retirement.go +38 −0
internal/provision/retirement.go

Loading diff…

internal/provision/retirement_test.go +36 −0
internal/provision/retirement_test.go

Loading diff…

internal/provision/rootrecord.go +25 −12
internal/provision/rootrecord.go

Loading diff…

internal/provision/rootrecord_test.go +84 −0
internal/provision/rootrecord_test.go

Loading diff…

internal/provision/seedjournal_test.go +1 −1
internal/provision/seedjournal_test.go

Loading diff…

internal/provision/seedreconcile.go +6 −3
internal/provision/seedreconcile.go

Loading diff…

internal/provision/seedreconcile_lifetime_test.go +82 −0
internal/provision/seedreconcile_lifetime_test.go

Loading diff…

internal/provision/seedrollback.go +32 −2
internal/provision/seedrollback.go

Loading diff…

internal/provision/self_serve_moves1_census_test.go +384 −0
internal/provision/self_serve_moves1_census_test.go

Loading diff…

internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv +205 −0
internal/provision/testdata/plan14-root-reads-self-serve-moves-1.tsv

Loading diff…

internal/registry/registry.go +141 −7
internal/registry/registry.go

Loading diff…

internal/registry/registry_test.go +323 −0
internal/registry/registry_test.go

Loading diff…

internal/registry/remote_dispatch.go +8 −0
internal/registry/remote_dispatch.go

Loading diff…

internal/release/temporary.go +41 −1
internal/release/temporary.go

Loading diff…

internal/release/temporary_test.go +57 −0
internal/release/temporary_test.go

Loading diff…

internal/release/trash.go +58 −3
internal/release/trash.go

Loading diff…

system.go +7 −1
system.go

Loading diff…

system_lifetimes.go +128 −0
system_lifetimes.go

Loading diff…

system_lifetimes_test.go +118 −0
system_lifetimes_test.go

Loading diff…

system_test.go +2 −0
system_test.go

Loading diff…