carlos / platform Public

Merge origin/main (moves-phase1-5f, claim-admitted-provenance) into region-ha-1b-next-build

Conflicts:
- hostfiles/publisher.go: kept both. Main's new OpenAt now applies the
  same terminal path-cap refusal as Open (manifestWithinCap).
- hostfiles/prepared.go: main's new Prepared.Stage and StageSkipped now
  hold withinTreeCap, as Publisher.Stage does. A prepared manifest can no
  longer stage a path no reader accepts. Neither is censused; the
  Prepared.Commit/put digests are unchanged.
- provision census: kept our Publisher.Commit digest (main left Commit's
  body unchanged) plus main's two prepared.go rows.
- moves copy record: moves reserved MV-N450..499. Our completion-barrier
  row (approved, same text) is renumbered MV-N450 -> MV-N500.

Test: TestPreparedAndOpenAtHoldThePathCap (fails without the prepared.go
change).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev 87146236be6e71f93c66b3d8b2091662454c06e6 parent f439594parent 01edf90
119 files changed, +17879 −800
  • approved_moves_copy_test.go +18 −3
  • docs/superpowers/plans/2026-10-06-moves-phase1-copy.md +24 −2
  • docs/superpowers/plans/2026-10-06-moves-phase1-rehearsal.md +30 −6
  • docs/superpowers/specs/2026-10-02-move-any-app-design.md +16 −1
  • internal/appconfig/renderheld.go +19 −0
  • internal/appconfig/renderheld_claim_test.go +120 −0
  • internal/console/claim_authority_census_test.go +4 −0
  • internal/console/movesrecovery.go +155 −10
  • internal/console/movesrecovery_test.go +413 −0
  • internal/console/plan15_stream_test.go +84 −0
  • internal/console/server.go +8 −3
  • internal/console/testdata/claim-authority-sites.txt +3 −2
  • internal/console/view_test.go +8 −1
  • internal/genselect/generationmax_test.go +126 −0
  • internal/genselect/select.go +67 −14
  • internal/host/agent.go +15 −5
  • internal/host/claimfiles.go +161 −0
  • internal/host/claimfiles_test.go +239 −0
  • internal/host/claimlaunch_production.go +14 −3
  • internal/host/claimlaunch_transport_test.go +14 −1
  • internal/host/claimmoveparks.go +30 −2
  • internal/host/claimmoveparks_test.go +3 −3
  • internal/host/claimoriginproof.go +47 −0
  • internal/host/claimproduction.go +14 −1
  • internal/host/claimstop_run.go +20 −1
  • internal/host/movescut_test.go +1 −1
  • internal/host/movescutguard_test.go +7 −5
  • internal/host/movesevidence.go +18 −20
  • internal/host/movesevidence_test.go +169 −42
  • internal/host/movesfiles.go +971 −0
  • internal/host/movesfiles_test.go +1648 −0
  • internal/host/movesfileslive_test.go +16 −10
  • internal/host/movesfinal.go +20 −15
  • internal/host/movesfinal_test.go +5 −5
  • internal/host/movesheldclaim_test.go +480 −0
  • internal/host/movesheldrelease.go +375 −0
  • internal/host/movesheldrelease_agent_test.go +389 −0
  • internal/host/movesheldrelease_linux.go +59 −0
  • internal/host/movesheldrelease_linux_test.go +259 −0
  • internal/host/movesheldrelease_other.go +14 −0
  • internal/host/movesheldrelease_production.go +80 −0
  • internal/host/movesheldrelease_production_test.go +28 −0
  • internal/host/movesheldrelease_root.go +555 −0
  • internal/host/movesheldrelease_test.go +893 −0
  • internal/host/movesinstall.go +202 −40
  • internal/host/movesinstall_test.go +1 −1
  • internal/host/movesland.go +40 −28
  • internal/host/movesland_test.go +409 −24
  • internal/host/moveslandcommit.go +2 −1
  • internal/host/moveslandpark.go +24 −12
  • internal/host/movesloss.go +318 −0
  • internal/host/movesloss_test.go +962 −0
  • internal/host/movesparkfakes_test.go +22 −9
  • internal/host/movesparks.go +2 −1
  • internal/host/movespass.go +178 −36
  • internal/host/movespass_lost_test.go +226 −0
  • internal/host/movesphase1_harness_test.go +1 −1
  • internal/host/movespolicy.go +9 −10
  • internal/host/movespolicy_test.go +54 −18
  • internal/host/movesprobeattempts.go +4 −2
  • internal/host/movesprobeowners.go +124 −36
  • internal/host/movesprobeowners_fix1_test.go +9 −0
  • internal/host/movesprobeowners_test.go +171 −1
  • internal/host/movesrecover.go +26 −9
  • internal/host/movesrecover_test.go +1 −1
  • internal/host/movesrecoveryowners.go +1077 −0
  • internal/host/movesrecoveryowners_test.go +1133 −0
  • internal/host/movesrecoveryprobe.go +35 −8
  • internal/host/movesrefusals.go +3 −2
  • internal/host/movesrefusals_test.go +2 −2
  • internal/host/movesreport.go +10 −2
  • internal/host/movesrevert.go +5 −3
  • internal/host/movesrevert_test.go +1 −1
  • internal/host/movesrollback.go +17 −23
  • internal/host/movesrollback_finalfix_test.go +8 −2
  • internal/host/movesrollback_test.go +1 −1
  • internal/host/movessources.go +140 −135
  • internal/host/movessources_test.go +466 −172
  • internal/host/movesstage.go +212 −5
  • internal/host/moveswakesource.go +281 −0
  • internal/host/moveswakesource_linux_test.go +824 −0
  • internal/host/moveswakesource_test.go +521 −0
  • internal/host/plan10_j2_adapter_test.go +66 −1
  • internal/host/plan13_views_test.go +7 −5
  • internal/host/plan15_originproof_test.go +67 −0
  • internal/hostbox/lossrestorepoint_test.go +135 −0
  • internal/hostbox/plan12_fence_loss_test.go +1 −1
  • internal/hostbox/plan12_loss_test.go +1 −1
  • internal/hostbox/writer_loss.go +28 −6
  • internal/hostclaim/claim.go +6 −0
  • internal/hostclaim/generation.go +3 −0
  • internal/hostclaim/origins.go +383 −0
  • internal/hostclaim/plan15_batch_test.go +148 −0
  • internal/hostclaim/plan15_fix1_test.go +171 −0
  • internal/hostclaim/plan15_origins_test.go +308 −0
  • internal/hostclaim/store.go +12 −0
  • internal/hostfiles/manifest.go +23 −3
  • internal/hostfiles/prepared.go +258 −0
  • internal/hostfiles/prepared_test.go +426 −0
  • internal/hostfiles/publisher.go +52 −0
  • internal/hostfiles/wake.go +11 −2
  • internal/hostops/lifecycle_grant.go +4 −1
  • internal/hostops/move_fence_release.go +35 −3
  • internal/hostops/mutation_boundary.go +6 −0
  • internal/hostops/plan12_fence_home_test.go +8 −2
  • internal/hostops/plan12_fence_test.go +40 −6
  • internal/hostops/plan13_fence_test.go +4 −1
  • internal/hostops/plan15_origins_test.go +59 −0
  • internal/hostops/plan15_stream_test.go +99 −0
  • internal/instancectl/claim.go +6 −2
  • internal/instancectl/claimunit_test.go +35 −0
  • internal/instancectl/server.go +16 −4
  • internal/moves/journal.go +18 −1
  • internal/provision/plan9_b8_census_test.go +29 −11
  • internal/provision/provision.go +22 −5
  • internal/release/materializeheld.go +55 −3
  • internal/release/materializeheld_claim_test.go +128 −0
  • internal/release/store.go +11 −0
  • internal/release/stream_required_test.go +38 −0

CI failed — run details

CI log
=== gate ===
cd launchctx && go vet ./... && go test ./... -count=1
ok  	amadan.net/carlos/platform.git/launchctx	0.011s
?   	amadan.net/carlos/platform.git/launchctx/controlname	[no test files]
?   	amadan.net/carlos/platform.git/launchctx/wireid	[no test files]
go vet ./...
# github.com/carlosframework/platform/internal/host
# [github.com/carlosframework/platform/internal/host]
vet: internal/host/moveswakesource_linux_test.go:227:66: not enough arguments in call to wireClaimAdmission
	have (*ClaimWakeAssembly, string, func(context.Context, hostclaim.Observed, hostclaim.Observed) error, claimCrossBoxHandover, nil)
	want (*ClaimWakeAssembly, string, func(context.Context, hostclaim.Observed, hostclaim.Observed) error, claimCrossBoxHandover, *ClaimRelocationOwners, *relocationCompletedHandover)
make: *** [Makefile:16: test] Error 1

amadan: step gate failed: exit status 2

amadan: job failed at step gate — its output is above, not at the tail of this log
approved_moves_copy_test.go

Loading diff…

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

Loading diff…

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

Loading diff…

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

Loading diff…

internal/appconfig/renderheld.go

Loading diff…

internal/appconfig/renderheld_claim_test.go

Loading diff…

internal/console/claim_authority_census_test.go

Loading diff…

internal/console/movesrecovery.go

Loading diff…

internal/console/movesrecovery_test.go

Loading diff…

internal/console/plan15_stream_test.go

Loading diff…

internal/console/server.go

Loading diff…

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

Loading diff…

internal/console/view_test.go

Loading diff…

internal/genselect/generationmax_test.go

Loading diff…

internal/genselect/select.go

Loading diff…

internal/host/agent.go

Loading diff…

internal/host/claimfiles.go

Loading diff…

internal/host/claimfiles_test.go

Loading diff…

internal/host/claimlaunch_production.go

Loading diff…

internal/host/claimlaunch_transport_test.go

Loading diff…

internal/host/claimmoveparks.go

Loading diff…

internal/host/claimmoveparks_test.go

Loading diff…

internal/host/claimoriginproof.go

Loading diff…

internal/host/claimproduction.go

Loading diff…

internal/host/claimstop_run.go

Loading diff…

internal/host/movescut_test.go

Loading diff…

internal/host/movescutguard_test.go

Loading diff…

internal/host/movesevidence.go

Loading diff…

internal/host/movesevidence_test.go

Loading diff…

internal/host/movesfiles.go

Loading diff…

internal/host/movesfiles_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/movesheldclaim_test.go

Loading diff…

internal/host/movesheldrelease.go

Loading diff…

internal/host/movesheldrelease_agent_test.go

Loading diff…

internal/host/movesheldrelease_linux.go

Loading diff…

internal/host/movesheldrelease_linux_test.go

Loading diff…

internal/host/movesheldrelease_other.go

Loading diff…

internal/host/movesheldrelease_production.go

Loading diff…

internal/host/movesheldrelease_production_test.go

Loading diff…

internal/host/movesheldrelease_root.go

Loading diff…

internal/host/movesheldrelease_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/movesloss.go

Loading diff…

internal/host/movesloss_test.go

Loading diff…

internal/host/movesparkfakes_test.go

Loading diff…

internal/host/movesparks.go

Loading diff…

internal/host/movespass.go

Loading diff…

internal/host/movespass_lost_test.go

Loading diff…

internal/host/movesphase1_harness_test.go

Loading diff…

internal/host/movespolicy.go

Loading diff…

internal/host/movespolicy_test.go

Loading diff…

internal/host/movesprobeattempts.go

Loading diff…

internal/host/movesprobeowners.go

Loading diff…

internal/host/movesprobeowners_fix1_test.go

Loading diff…

internal/host/movesprobeowners_test.go

Loading diff…

internal/host/movesrecover.go

Loading diff…

internal/host/movesrecover_test.go

Loading diff…

internal/host/movesrecoveryowners.go

Loading diff…

internal/host/movesrecoveryowners_test.go

Loading diff…

internal/host/movesrecoveryprobe.go

Loading diff…

internal/host/movesrefusals.go

Loading diff…

internal/host/movesrefusals_test.go

Loading diff…

internal/host/movesreport.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/movesrollback_test.go

Loading diff…

internal/host/movessources.go

Loading diff…

internal/host/movessources_test.go

Loading diff…

internal/host/movesstage.go

Loading diff…

internal/host/moveswakesource.go

Loading diff…

internal/host/moveswakesource_linux_test.go

Loading diff…

internal/host/moveswakesource_test.go

Loading diff…

internal/host/plan10_j2_adapter_test.go

Loading diff…

internal/host/plan13_views_test.go

Loading diff…

internal/host/plan15_originproof_test.go

Loading diff…

internal/hostbox/lossrestorepoint_test.go

Loading diff…

internal/hostbox/plan12_fence_loss_test.go

Loading diff…

internal/hostbox/plan12_loss_test.go

Loading diff…

internal/hostbox/writer_loss.go

Loading diff…

internal/hostclaim/claim.go

Loading diff…

internal/hostclaim/generation.go

Loading diff…

internal/hostclaim/origins.go

Loading diff…

internal/hostclaim/plan15_batch_test.go

Loading diff…

internal/hostclaim/plan15_fix1_test.go

Loading diff…

internal/hostclaim/plan15_origins_test.go

Loading diff…

internal/hostclaim/store.go

Loading diff…

internal/hostfiles/manifest.go

Loading diff…

internal/hostfiles/prepared.go

Loading diff…

internal/hostfiles/prepared_test.go

Loading diff…

internal/hostfiles/publisher.go

Loading diff…

internal/hostfiles/wake.go

Loading diff…

internal/hostops/lifecycle_grant.go

Loading diff…

internal/hostops/move_fence_release.go

Loading diff…

internal/hostops/mutation_boundary.go

Loading diff…

internal/hostops/plan12_fence_home_test.go

Loading diff…

internal/hostops/plan12_fence_test.go

Loading diff…

internal/hostops/plan13_fence_test.go

Loading diff…

internal/hostops/plan15_origins_test.go

Loading diff…

internal/hostops/plan15_stream_test.go

Loading diff…

internal/instancectl/claim.go

Loading diff…

internal/instancectl/claimunit_test.go

Loading diff…

internal/instancectl/server.go

Loading diff…

internal/moves/journal.go

Loading diff…

internal/provision/plan9_b8_census_test.go

Loading diff…

internal/provision/provision.go

Loading diff…

internal/release/materializeheld.go

Loading diff…

internal/release/materializeheld_claim_test.go

Loading diff…

internal/release/store.go

Loading diff…

internal/release/stream_required_test.go

Loading diff…