deploy: saved assets apply to every deploy in the project (task 3 fix round 1)
The saved list is read through configAssets, independent of the deploy block, and follows the console pairing, so an explicit artifact (carlos deploy ./bin/server) declares it too, with --assets and --no-assets overriding as before. The save offer for --assets is made on any deploy, not only zero-arg. Static ship tests now require a captured meta, fixture tests say "not acceptance", and the config tests use example.com names.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4 files changed,
+222
−36
config.go+13 −0config_test.go+4 −4deploy.go+34 −14deploy_assets_test.go+171 −18
CI failed — run details
CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (0 s)
ok amadan.net/carlos/platform.git/launchctx 0.014s
? amadan.net/carlos/platform.git/launchctx/controlname [no test files]
? amadan.net/carlos/platform.git/launchctx/wireid [no test files]
=== vet (7 s)
=== gofmt (1 s)
gofmt -l .: clean
=== rest (155 s)
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 4.533s
ok github.com/carlosframework/platform/cmd/moveprobe 11.889s
ok github.com/carlosframework/platform/cmd/zddprobe 0.792s
ok github.com/carlosframework/platform/internal/activator 58.599s
ok github.com/carlosframework/platform/internal/agentsock 0.020s
ok github.com/carlosframework/platform/internal/alerting 0.006s
ok github.com/carlosframework/platform/internal/analytics 0.020s
ok github.com/carlosframework/platform/internal/appconfig 3.469s
ok github.com/carlosframework/platform/internal/apperr 0.134s
ok github.com/carlosframework/platform/internal/applog 0.366s
ok github.com/carlosframework/platform/internal/awsinv 0.005s
ok github.com/carlosframework/platform/internal/boxchoice 0.007s
ok github.com/carlosframework/platform/internal/boxid 1.084s
? github.com/carlosframework/platform/internal/boxid/boxidtest [no test files]
? github.com/carlosframework/platform/internal/boxid/internal/signtest [no test files]
ok github.com/carlosframework/platform/internal/boxvolumes 0.008s
ok github.com/carlosframework/platform/internal/caps 0.032s
ok github.com/carlosframework/platform/internal/certwarm 0.004s
ok github.com/carlosframework/platform/internal/cgroup 0.811s
ok github.com/carlosframework/platform/internal/changelog 0.611s
ok github.com/carlosframework/platform/internal/claimactivation 1.361s
ok github.com/carlosframework/platform/internal/clamd 0.057s
? github.com/carlosframework/platform/internal/cliflag [no test files]
? github.com/carlosframework/platform/internal/controlname [no test files]
? github.com/carlosframework/platform/internal/controlsock [no test files]
ok github.com/carlosframework/platform/internal/dbdoor 7.938s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.013s
ok github.com/carlosframework/platform/internal/dbquery 0.013s
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
--- FAIL: TestADrainingBoxDoesNotPick (0.19s)
agent.go:135: dbreads: dbr_jecftdd5huljzqrkyrlvwybrza: planned 1 files (720 bytes) and restored to 1 in 45ms
agent.go:135: dbreads: dbr_jecftdd5huljzqrkyrlvwybrza: output 4 bytes in 1 confirmed chunks in 3ms
loop_test.go:170: no result for dbr_ahrpm24rj3zzdgyfhaxpmrl67e: dirstore: db-reads/dbr_ahrpm24rj3zzdgyfhaxpmrl67e/result.json: file does not exist
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000004
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000004 maxTXID=0000000000000004 size=537
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000004 txid.db=0000000000000004
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:09 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:09 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:46:10 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:46:10 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:46:10 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:46:10 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:46:10 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:46:10 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
FAIL
FAIL github.com/carlosframework/platform/internal/dbreads 2.136s
? github.com/carlosframework/platform/internal/dbreads/dbreadstest [no test files]
ok github.com/carlosframework/platform/internal/dbverify 0.010s
ok github.com/carlosframework/platform/internal/dnsrec 0.005s
ok github.com/carlosframework/platform/internal/docsite 0.038s
ok github.com/carlosframework/platform/internal/domains 4.059s
ok github.com/carlosframework/platform/internal/doorkey 0.008s
ok github.com/carlosframework/platform/internal/economics 0.011s
ok github.com/carlosframework/platform/internal/edge 46.306s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.012s
ok github.com/carlosframework/platform/internal/fleetapi 0.312s
ok github.com/carlosframework/platform/internal/gate 2.286s
ok github.com/carlosframework/platform/internal/genselect 0.049s
ok github.com/carlosframework/platform/internal/geo 0.018s
ok github.com/carlosframework/platform/internal/geoip 0.064s
ok github.com/carlosframework/platform/internal/historyreadback 0.354s
ok github.com/carlosframework/platform/internal/host 151.886s
ok github.com/carlosframework/platform/internal/hostactors 6.765s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.011s
ok github.com/carlosframework/platform/internal/hostbox 3.547s
ok github.com/carlosframework/platform/internal/hostclaim 1.045s
ok github.com/carlosframework/platform/internal/hostenv 0.014s
ok github.com/carlosframework/platform/internal/hostevidence 0.011s
ok github.com/carlosframework/platform/internal/hostexec 6.046s
ok github.com/carlosframework/platform/internal/hostfence 0.102s
ok github.com/carlosframework/platform/internal/hostfiles 10.318s
ok github.com/carlosframework/platform/internal/hostfloor 0.051s
ok github.com/carlosframework/platform/internal/hostguard 1.109s
ok github.com/carlosframework/platform/internal/hostops 2.470s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.014s
ok github.com/carlosframework/platform/internal/hostquarantine 0.009s
ok github.com/carlosframework/platform/internal/hostrelocate 0.824s
ok github.com/carlosframework/platform/internal/hostresolve 0.260s
ok github.com/carlosframework/platform/internal/hostwrite 0.014s
ok github.com/carlosframework/platform/internal/infraview 0.012s
ok github.com/carlosframework/platform/internal/instancectl 5.242s
ok github.com/carlosframework/platform/internal/instanceexec 2.916s
ok github.com/carlosframework/platform/internal/instancefs 0.014s
ok github.com/carlosframework/platform/internal/instancekey 0.002s
ok github.com/carlosframework/platform/internal/instanceupdates 0.010s
ok github.com/carlosframework/platform/internal/layout 2.280s
ok github.com/carlosframework/platform/internal/lbhealth 0.005s
ok github.com/carlosframework/platform/internal/lease 10.167s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.771s
ok github.com/carlosframework/platform/internal/ledger 0.019s
ok github.com/carlosframework/platform/internal/mail 0.214s
ok github.com/carlosframework/platform/internal/maintenance 0.122s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.624s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.095s
ok github.com/carlosframework/platform/internal/metrics 0.009s
ok github.com/carlosframework/platform/internal/moves 21.906s
ok github.com/carlosframework/platform/internal/moves/archive 1.398s
ok github.com/carlosframework/platform/internal/objstore 0.425s
ok github.com/carlosframework/platform/internal/ops 0.352s
ok github.com/carlosframework/platform/internal/park 0.345s
ok github.com/carlosframework/platform/internal/plans 0.007s
ok github.com/carlosframework/platform/internal/privatefile 0.005s
2026/10/24 23:46:10 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:10 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/24 23:46:10 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:10 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:10 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:10 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:10 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:10 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/24 23:46:10 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:10 provision: an app's records could not be listed: they are skipped
2026/10/24 23:46:10 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:10 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 23:46:10 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 23:46:10 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 23:46:10 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 23:46:10 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/24 23:46:10 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:10 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 23:46:10 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/24 23:46:10 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:46:10 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 23:46:10 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:46:10 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/24 23:46:10 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:10 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:10 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 23:46:10 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:46:11 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:46:11 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 23:46:11 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:46:11 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 23:46:11 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 23:46:11 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:46:11 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 23:46:11 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:46:11 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:11 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:11 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:46:11 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:11 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:11 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:11 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 23:46:11 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 23:46:11 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/24 23:46:12 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/24 23:46:12 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:46:12 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:12 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan9B8RecordWriteCensus (0.92s)
plan9_b8_census_test.go:372: record-write census rejected 1 site(s); update the explicit inventory only after reviewing the source:
changed site internal/provision/reconcile.go:Reconcile: source differs from the reviewed digest
2026/10/24 23:46:13 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: converged a.shop.example.com assets off false -> false, generation "0123456789abcdef" -> "fedcba9876543210"
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: skipping record apps/bac/shop/instances/b.shop.example.com.json: read failed: get refused
2026/10/24 23:46:13 provision: skipping record apps/bac/shop/instances/c.shop.example.com.json: read failed: get refused
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: skipping record apps/bac/shop/instances/b.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:13 provision: not removing b.shop.example.com: its record exists but could not be read cleanly this pass
2026/10/24 23:46:13 provision: skipping record apps/bac/shop/instances/c.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: listing apps/bac/notes/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: trash marker for bac/shop unreadable: release: read trash marker for bac/shop: get refused — not minting for this app
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: converge gate on a.shop.example.com: constraint failed: injected (1811)
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: converged b.shop.example.com assets off false -> false, generation "0123456789abcdef" -> "fedcba9876543210"
2026/10/24 23:46:13 provision: remove retired instance route a.shop.example.com: constraint failed: injected (1811)
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: converged b.shop.example.com assets off false -> false, generation "0123456789abcdef" -> "fedcba9876543210"
2026/10/24 23:46:13 provision: skipping record apps/bac/notes/instances/n.notes.example.com.json: read failed: get refused
2026/10/24 23:46:13 provision: not removing any route this pass: the record view lacks a record or holds a trash marker, and the bucket's own walk could not be read cleanly
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: converged a.shop.example.com steering "" -> "latency"
2026/10/24 23:46:13 provision: converge assets on a.shop.example.com: constraint failed: injected (1811)
2026/10/24 23:46:13 provision: converged a.shop.example.com update settings "" -> "{\"updates\":\"manual\",\"channel\":\"stable\"}"
2026/10/24 23:46:13 provision: dry-run: would converge a.shop.example.com assets off false -> false, generation "0123456789abcdef" -> "fedcba9876543210"
2026/10/24 23:46:13 provision: converged a.shop.example.com steering "latency" -> ""
2026/10/24 23:46:13 provision: converge assets on a.shop.example.com: constraint failed: injected (1811)
2026/10/24 23:46:13 provision: converged a.shop.example.com update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/24 23:46:13 provision: a.shop.example.com: import sd_hvxmoyxfw3sa5qcepllmufsv2q is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 23:46:13 provision: removed retired instance route a.notes.example.com (record gone)
2026/10/24 23:46:13 provision: bac/shop is in the trash — not minting instance routes for it
2026/10/24 23:46:13 provision: adopted existing route a.shop.example.com (app "shop" acct "bac") — this record now owns its channel and environment
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: held a.shop.example.com landing by op-1 (was ready)
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bab")
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: skipping accounts/bab/account.json: read failed: get refused
2026/10/24 23:46:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route b.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:13 provision: minted instance route n.notes.example.com (app "notes" acct "bac")
2026/10/24 23:46:13 provision: converged a.shop.example.com assets off false -> false, generation "0123456789abcdef" -> "fedcba9876543210"
2026/10/24 23:46:13 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:13 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 23:46:14 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/24 23:46:14 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/24 23:46:14 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/24 23:46:14 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged acme.go.tito.io hibernate false -> true
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged acme.go.tito.io status-named false -> true
2026/10/24 23:46:14 provision: converged acme.go.tito.io status-named true -> false
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7001,127.0.0.1:7002" -> "127.0.0.1:7001,127.0.0.1:7003" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:46:14 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7001,127.0.0.1:7003" -> "127.0.0.1:7003,127.0.0.1:7001" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:46:14 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7003,127.0.0.1:7001" -> "127.0.0.1:7003,127.0.0.1:7001" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/healthz\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:46:14 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: converged whole.go.tito.io upstreams addr "127.0.0.1:9443" -> "", addrs "" -> "127.0.0.1:9443,127.0.0.1:9444" (probe "" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:46:14 provision: converged whole.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:9443,127.0.0.1:9444" -> "" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "")
2026/10/24 23:46:14 provision: whole.go.tito.io: record describes a different route SHAPE than the row (kind "instance"/"service" unit ""/"" socket "/run/carlos/whole.go.tito.io.sock"/"" db "/data/whole.go.tito.io.db"/"") — not converged in place; `carlos remove whole.go.tito.io` purges this route's capability grants (registry.Delete's contract, not a bug) before the next pass re-mints it, so treat that as a last resort, not a routine fix
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/24 23:46:14 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: disagrees with its own path (host="wrong-host.go.tito.io" account="bac" app="tito")
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/acme$evil.go.tito.io.json: host "acme$evil.go.tito.io" is not a hostname
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/acme$evil.go.tito.io.json: host "acme$evil.go.tito.io" is not a hostname
2026/10/24 23:46:14 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/bad-service.go.tito.io.json: invalid shape: kind service with no addr: the platform only proxies to a service, so the record must name the upstream it proxies to
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/bad-service.go.tito.io.json: invalid shape: kind service with no addr: the platform only proxies to a service, so the record must name the upstream it proxies to
2026/10/24 23:46:14 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 23:46:14 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:14 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:46:14 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/24 23:46:14 provision: duplicate host dup.go.tito.io: keeping apps/bac/tito/instances/dup.go.tito.io.json, skipping apps/bad/tito/instances/dup.go.tito.io.json
2026/10/24 23:46:14 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:46:14 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 23:46:14 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:46:14 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/24 23:46:14 provision: trash marker for bac/tito unreadable: release: malformed trash marker for bac/tito: invalid character 'n' looking for beginning of object key string — not minting for this app
2026/10/24 23:46:14 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:46:14 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 23:46:14 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:46:14 provision: trash marker for bac/tito unreadable: release: malformed trash marker for bac/tito: invalid character 'n' looking for beginning of object key string — not minting for this app
2026/10/24 23:46:14 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:46:14 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 23:46:14 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:46:14 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/24 23:46:14 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (backing "unit" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (tunnel "pi-fleet" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (caps "port:25" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (platform (owned by the domains reconcile pass)) — leaving it alone
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (canary (owned by the domains reconcile pass)) — leaving it alone
2026/10/24 23:46:14 provision: acme.go.tito.io exists but is not the route this record describes (db "/data/other.db"/"/data/acme.go.tito.io.db") — leaving it alone
2026/10/24 23:46:14 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:46:14 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:46:14 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/24 23:46:14 provision: dry-run: would adopt existing route adopt.go.tito.io (app "tito" acct "bac") — this record would own its channel and environment
2026/10/24 23:46:14 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/24 23:46:14 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/24 23:46:14 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/24 23:46:14 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/24 23:46:14 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/24 23:46:14 provision: dry-run: would converge owned.go.tito.io seed
2026/10/24 23:46:14 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:46:14 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/24 23:46:14 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/24 23:46:14 provision: converged owned.go.tito.io channel stable -> edge
2026/10/24 23:46:14 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/24 23:46:14 provision: converged owned.go.tito.io hibernate false -> true
2026/10/24 23:46:14 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/24 23:46:14 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/24 23:46:14 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: removed retired static route site.go.tito.io (record gone)
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/24 23:46:15 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/24 23:46:15 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: acme.go.tito.io: row is on the nested layout (db "/data/instances/acme.go.tito.io/acme.go.tito.io.db" socket "/run/carlos/instances/acme.go.tito.io/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:15 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 23:46:15 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 23:46:15 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:46:15 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 23:46:15 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/24 23:46:15 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:46:15 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 23:46:15 provision: refusing to mint held route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:46:15 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 23:46:15 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/24 23:46:15 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/24 23:46:15 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:46:15 provision: dry-run: would mint instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac" channel "stable")
2026/10/24 23:46:15 provision: acme.go.tito.io: not held landing by mv_acme: the row's hold changed under this pass; the next pass judges it afresh
2026/10/24 23:46:15 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 23:46:15 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/24 23:46:15 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/24 23:46:15 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:15 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 23:46:15 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:15 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 23:46:15 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:15 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 23:46:15 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:15 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:15 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:15 provision: converged a.shop.example.com assets off false -> false, generation "" -> "0123456789abcdef"
2026/10/24 23:46:15 provision: converged a.shop.example.com assets off false -> false, generation "0123456789abcdef" -> "fedcba9876543210"
2026/10/24 23:46:15 provision: converged a.shop.example.com assets off false -> true, generation "fedcba9876543210" -> "fedcba9876543210"
2026/10/24 23:46:15 provision: converged a.shop.example.com assets off true -> false, generation "fedcba9876543210" -> ""
2026/10/24 23:46:16 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:16 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:46:16 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:16 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:46:16 provision: minted sidecar route bot.shop.bac.sidecar.internal (app "shop" acct "bac" args ["run"])
2026/10/24 23:46:16 provision: removed retired sidecar route bot.shop.bac.sidecar.internal (record gone)
2026/10/24 23:46:16 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 23:46:16 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 23:46:16 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:16 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:16 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 23:46:16 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:16 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:16 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 23:46:16 provision: a.shop.example.com: swapped for import sd_sev2tgvbojetyhubmwhfbljzwi (the original route is journaled)
2026/10/24 23:46:16 provision: a.shop.example.com: import sd_sev2tgvbojetyhubmwhfbljzwi committed: its gate is cleared and its journal row dropped
2026/10/24 23:46:16 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_ti3rf5r7qqaomd74huv5shgwye rolled back to its original route
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_ti3rf5r7qqaomd74huv5shgwye: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_ti3rf5r7qqaomd74huv5shgwye is cleaned up and its journal row retired
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_5s6vo5wlx5bcv5akxzmzzqibue rolled back to its original route
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_5s6vo5wlx5bcv5akxzmzzqibue: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_5s6vo5wlx5bcv5akxzmzzqibue is cleaned up and its journal row retired
2026/10/24 23:46:17 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_fum4zwxq7y6n7drmrsqax3fwxq
2026/10/24 23:46:17 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/24 23:46:17 provision: dry-run: would converge a.shop.example.com seed source
2026/10/24 23:46:17 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:17 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (connection reset)
2026/10/24 23:46:17 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (provision: invalid maintenance projection or protected fields)
2026/10/24 23:46:17 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (the record under apps/bac/shop/instances/a.shop.example.com.json is apps/bac/shop/instances/b.shop.example.com.json's)
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_3wiltsk6k4lvopaqax44beg3we cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_rt7rm6jgo6gy5ex2y7utq33lpi cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_w3eypma3lhwuk6qt3dw4wirm4e is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_koyfvpy5c4gfd6vvbnjm4nu7oi is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_ekvmx7pehizvnpbtd3jl6k5a4u is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 23:46:17 provision: the import journal could not be read: registry: import journal a.shop.example.com: original row: unexpected end of JSON input (no import is acted on and no route is removed this pass)
2026/10/24 23:46:17 provision: b.shop.example.com: import sd_zwjedfau5n7awmnhxypx4lurvi left alone this pass: the import journal could not be read
2026/10/24 23:46:17 provision: c.shop.example.com: import sd_5oelzqfc2urbqgjsiqv7wstyqa left alone this pass: the import journal could not be read
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_qiseaojp7s6bzyw5hrx3r3gwz4 committed: its gate is cleared and its journal row dropped
2026/10/24 23:46:17 provision: a.shop.example.com: not converging import sd_tp32t4z7ziderkhua6hs6y7m7e: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 23:46:17 provision: a.shop.example.com: not converging import sd_ymsvjw4qudelyll2csrcchutva: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 23:46:17 provision: a.shop.example.com: not converging import sd_jtlmj5xxwfhood75sr47tsv6ze: it is placed but not committed, and the row on this box has no import gate
2026/10/24 23:46:17 provision: a.shop.example.com: not converging import sd_i35b3hqkzrla3yxj7ex3zqn6um: it is placed but not committed, and the row on this box has no import gate
2026/10/24 23:46:17 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:17 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/24 23:46:17 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_hg46d4pvb2pbcrzta4ucg3n6qq committed: its gate is cleared and its journal row dropped
2026/10/24 23:46:17 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:17 provision: acme.go.tito.io: row is on the nested layout (db "/data/instances/acme.go.tito.io/acme.go.tito.io.db" socket "/run/carlos/instances/acme.go.tito.io/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:17 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/24 23:46:17 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_q7u3mayxwsxa6mk6pcqsnq4td4: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_q7u3mayxwsxa6mk6pcqsnq4td4 rolled back (no box had swapped it)
2026/10/24 23:46:17 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/24 23:46:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:17 provision: removed instance route acme.go.tito.io (its seed sd_4ykfugd7uvcdwprxhbeifepi7q was aborted); the next pass rolls it back
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_4ykfugd7uvcdwprxhbeifepi7q: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_4ykfugd7uvcdwprxhbeifepi7q rolled back (no box had swapped it)
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_u6obkjvdfzlrk7gab72hmv4qtm has a row this pass may not remove; leaving the seed aborted
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_ye4w2tssvqdk4nyrgr74whbb6i rolled back (no box had swapped it)
2026/10/24 23:46:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:17 provision: removed instance route acme.go.tito.io (its seed sd_lzk2bs3utgtmyzeucvfzwosfce was aborted); the next pass rolls it back
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_lzk2bs3utgtmyzeucvfzwosfce has no route on this box: its local data is removed
2026/10/24 23:46:17 provision: acme.go.tito.io: aborted seed sd_lzk2bs3utgtmyzeucvfzwosfce rolled back (no box had swapped it)
2026/10/24 23:46:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:17 provision: a.shop.example.com: swapped for import sd_dbqlzfvoa7dtnclh2sfpcli2iq (the original route is journaled)
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_dbqlzfvoa7dtnclh2sfpcli2iq rolled back to its original route
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_dbqlzfvoa7dtnclh2sfpcli2iq is cleaned up and its journal row retired
2026/10/24 23:46:17 provision: a.shop.example.com: swapped for import sd_jaiqgvnvuqpjxl2bjf5ect6zgu (the original route is journaled)
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_jaiqgvnvuqpjxl2bjf5ect6zgu rolled back to its original route
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_jaiqgvnvuqpjxl2bjf5ect6zgu is cleaned up and its journal row retired
2026/10/24 23:46:17 provision: a.shop.example.com: swapped for import sd_odaumxlxmxlmg7uni24drt4ec4 (the original route is journaled)
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_odaumxlxmxlmg7uni24drt4ec4 rolled back to its original route
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_odaumxlxmxlmg7uni24drt4ec4: the host's replica is left alone: its record no longer names this seed
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_odaumxlxmxlmg7uni24drt4ec4 is cleaned up and its journal row retired
2026/10/24 23:46:17 provision: a.shop.example.com: swapped for import sd_fszwel36ftkalwz3jjxq3m2w2m (the original route is journaled)
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_fszwel36ftkalwz3jjxq3m2w2m rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_fszwel36ftkalwz3jjxq3m2w2m rolled back to its original route
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_fszwel36ftkalwz3jjxq3m2w2m is cleaned up and its journal row retired
2026/10/24 23:46:17 provision: a.shop.example.com: swapped for import sd_vy6m3n6gvqbkqohvnguextxqkq (the original route is journaled)
2026/10/24 23:46:17 provision: a.shop.example.com: import sd_vy6m3n6gvqbkqohvnguextxqkq rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_3zimhkl6szv3nb7g2xx7y22drm (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_3zimhkl6szv3nb7g2xx7y22drm is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_3d2ineb2aiqdqzc4bgx27fjm5q (the original route is journaled)
2026/10/24 23:46:18 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_3d2ineb2aiqdqzc4bgx27fjm5q left alone this pass: its record could not be read
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_vxxsn7waki2wbqdtflddbodzye (the original route is journaled)
2026/10/24 23:46:18 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_vxxsn7waki2wbqdtflddbodzye left alone this pass: its record could not be read
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_7scq4mmp4v2my3aexpihimzuji (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_7scq4mmp4v2my3aexpihimzuji: close the import gate: constraint failed: injected (1811)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_7scq4mmp4v2my3aexpihimzuji rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_7scq4mmp4v2my3aexpihimzuji is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_2w5xvlfghywxas2ovniqssisku (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_2w5xvlfghywxas2ovniqssisku: close the import gate: constraint failed: injected (1811)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_2w5xvlfghywxas2ovniqssisku rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_2w5xvlfghywxas2ovniqssisku is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_v7ek6bvufpw5ook43i2o6thhji (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_v7ek6bvufpw5ook43i2o6thhji rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_v7ek6bvufpw5ook43i2o6thhji rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_v7ek6bvufpw5ook43i2o6thhji is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_c5nx6xqybclylixggppuzd4lh4 (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_c5nx6xqybclylixggppuzd4lh4 rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_c5nx6xqybclylixggppuzd4lh4 is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_6ljxqy2f2s2jg26viygbnhnbyu (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_6ljxqy2f2s2jg26viygbnhnbyu: retire its instance key: injected failure at retire-key
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_6ljxqy2f2s2jg26viygbnhnbyu rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_6ljxqy2f2s2jg26viygbnhnbyu is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_fms72n3kc3vghiklcsglczu5da (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fms72n3kc3vghiklcsglczu5da rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fms72n3kc3vghiklcsglczu5da is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_zog5dlntucuj2q6xcyahutnpxm (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_zog5dlntucuj2q6xcyahutnpxm: remove its local data: injected failure at remove-local
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_zog5dlntucuj2q6xcyahutnpxm rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_zog5dlntucuj2q6xcyahutnpxm is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_fzy25ypwkm7vshqtehboyx62du (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fzy25ypwkm7vshqtehboyx62du rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fzy25ypwkm7vshqtehboyx62du is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_m5klwijt4xyrqnryemmny3fjdu (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_m5klwijt4xyrqnryemmny3fjdu: remove its local data: injected failure at remove-local-done
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_m5klwijt4xyrqnryemmny3fjdu rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_m5klwijt4xyrqnryemmny3fjdu is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_qwxmmkempxmbb6uu7rzbhjci7m (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_qwxmmkempxmbb6uu7rzbhjci7m rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_qwxmmkempxmbb6uu7rzbhjci7m is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_h3i5so3o3wvftzricmg5f2qzy4 (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_h3i5so3o3wvftzricmg5f2qzy4: restore the original route: constraint failed: injected (1811)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_h3i5so3o3wvftzricmg5f2qzy4 rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_h3i5so3o3wvftzricmg5f2qzy4 is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_bnrt6k4etefmi7hx6byanx66ha (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_bnrt6k4etefmi7hx6byanx66ha: restore the original route: constraint failed: injected (1811)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_bnrt6k4etefmi7hx6byanx66ha rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_bnrt6k4etefmi7hx6byanx66ha is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_2qjkusgptver64isaoyfc7acwe (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_2qjkusgptver64isaoyfc7acwe is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_qjqv3q53bbsptb3sxcw5rexi4y (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_qjqv3q53bbsptb3sxcw5rexi4y rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_qjqv3q53bbsptb3sxcw5rexi4y: delete its snapshot: injected failure at delete-snapshot
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_qjqv3q53bbsptb3sxcw5rexi4y is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_fbfeba6pgtpah5ylhf4rmt42iy (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fbfeba6pgtpah5ylhf4rmt42iy rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fbfeba6pgtpah5ylhf4rmt42iy is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_hptqidkta2r7nm2ipbqxq6ujey (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_hptqidkta2r7nm2ipbqxq6ujey rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_hptqidkta2r7nm2ipbqxq6ujey: delete the host's replica: injected failure at delete-replica
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_hptqidkta2r7nm2ipbqxq6ujey is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_dqdbb24favpututkczrt2lwm2e (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_dqdbb24favpututkczrt2lwm2e rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_dqdbb24favpututkczrt2lwm2e is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_pmzcbybb7cttim7w25j4hmkd4i (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_pmzcbybb7cttim7w25j4hmkd4i rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_pmzcbybb7cttim7w25j4hmkd4i: retire its journal row: constraint failed: injected (1811)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_pmzcbybb7cttim7w25j4hmkd4i is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_lpul45bniw53opf3nwh5kgg3ii (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_lpul45bniw53opf3nwh5kgg3ii rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_lpul45bniw53opf3nwh5kgg3ii: retire its journal row: constraint failed: injected (1811)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_lpul45bniw53opf3nwh5kgg3ii is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_bhkkbq5inoawel7yhk4dlv53yi (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_bhkkbq5inoawel7yhk4dlv53yi rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_bhkkbq5inoawel7yhk4dlv53yi is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: mark import sd_bhkkbq5inoawel7yhk4dlv53yi rolled back: injected failure at cas
2026/10/24 23:46:18 provision: a.shop.example.com: aborted seed sd_bhkkbq5inoawel7yhk4dlv53yi rolled back (no box had swapped it)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_fr6vfsvbo4u3aesocd2nkohz2e (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fr6vfsvbo4u3aesocd2nkohz2e rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_fr6vfsvbo4u3aesocd2nkohz2e is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: aborted seed sd_fr6vfsvbo4u3aesocd2nkohz2e rolled back (no box had swapped it)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_ume2ve4ppx2be4g4sprpj445la (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_ume2ve4ppx2be4g4sprpj445la rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_ume2ve4ppx2be4g4sprpj445la rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_ume2ve4ppx2be4g4sprpj445la rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_ume2ve4ppx2be4g4sprpj445la is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_l55c2xdjlezc57gpndqsh6wyvu (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_l55c2xdjlezc57gpndqsh6wyvu rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_l55c2xdjlezc57gpndqsh6wyvu is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_b4xrjwubn36xphe7xxlikkdtfm (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_b4xrjwubn36xphe7xxlikkdtfm rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_b4xrjwubn36xphe7xxlikkdtfm is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_khtjn4nf63ecjeahcd4eqyz2ga (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_khtjn4nf63ecjeahcd4eqyz2ga rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_khtjn4nf63ecjeahcd4eqyz2ga is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_36y4adujtmhn3eoqhwqb7e7xwi (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_36y4adujtmhn3eoqhwqb7e7xwi rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_36y4adujtmhn3eoqhwqb7e7xwi is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_5upuyqwvw2yk2er7nk76vh75ou (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_5upuyqwvw2yk2er7nk76vh75ou rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_5upuyqwvw2yk2er7nk76vh75ou is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_iveacgiqftfgkk6r42jcgjx734 (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_iveacgiqftfgkk6r42jcgjx734 rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_iveacgiqftfgkk6r42jcgjx734 is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_unhlxuhgb6xmpdbra2zd34rnnq (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_unhlxuhgb6xmpdbra2zd34rnnq rolled back to its original route
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_unhlxuhgb6xmpdbra2zd34rnnq is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_p22rv4auwriiim4p2e5f53fi7a (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_p22rv4auwriiim4p2e5f53fi7a has no route on this box: its local data is removed and no route is put back
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_p22rv4auwriiim4p2e5f53fi7a is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_f6yhjxlvxldtckmqdtykpirrk4 (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_mtxcbe6tzm27znrc5cyvcasd3y (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_zlsnfxldl2b45sliseuhrgg7i4 (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_zlsnfxldl2b45sliseuhrgg7i4 cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_o7pt65yt4gbnv7w5rrbqt66wbe (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_o7pt65yt4gbnv7w5rrbqt66wbe is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/24 23:46:18 provision: a.shop.example.com: import "../not-a-seed" names no snapshot and no replica; only its journal row is cleaned up
2026/10/24 23:46:18 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_hdjdlmsroye5dupsk2cj2boeym (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_agaxrb6d2fz6xt2kn7s6fdd7g4 (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_yysex3pxvl2mancbbzvk6szghu (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_cxvdthwfxo3s26alg4dl2xh45y (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_quldpoysv5tcjh4jn3alyignyi (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_quldpoysv5tcjh4jn3alyignyi rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_i37ynj5lxen2yznjijxcxppg7a (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_i37ynj5lxen2yznjijxcxppg7a has no route on this box: its local data is removed and no route is put back
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_i37ynj5lxen2yznjijxcxppg7a is cleaned up and its journal row retired
2026/10/24 23:46:18 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_2lczo5wfe4wirboau3mqqhvq2u (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_2lczo5wfe4wirboau3mqqhvq2u: remove its local data: injected failure at remove-local
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_2lczo5wfe4wirboau3mqqhvq2u is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_p3d2vjziu5vqgmlcoxtjje3wky (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_p3d2vjziu5vqgmlcoxtjje3wky: a route appeared at the host, so its local database is left and the rollback waits
2026/10/24 23:46:18 provision: a.shop.example.com: swapped for import sd_if56yhsgdjsed6buw2zhuljkdi (the original route is journaled)
2026/10/24 23:46:18 provision: a.shop.example.com: import sd_if56yhsgdjsed6buw2zhuljkdi rollback deferred: no fence generation: registry busy
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_ooldz42h2ow5jmboztsvbdifl4 (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_ooldz42h2ow5jmboztsvbdifl4 rollback deferred: no fence generation: the generation source answered 0
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_dtwzktnfdhox4mupmlvshjhjqi (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_no4br2yjgrwzkc3drn3rm7r2gm (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_dy57zywxgc76pyo6baed5siwim (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/24 23:46:19 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_bnyafm7gzfb2khpbfr6bdmv3sm (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_bnyafm7gzfb2khpbfr6bdmv3sm rolled back to its original route
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_bnyafm7gzfb2khpbfr6bdmv3sm is cleaned up and its journal row retired
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_5f74pd25udixyddoert2hglhru (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_5f74pd25udixyddoert2hglhru rolled back to its original route
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_5f74pd25udixyddoert2hglhru is cleaned up and its journal row retired
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_zpn6ezsyvsq7j5kkxlxssfnqoq (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_zpn6ezsyvsq7j5kkxlxssfnqoq rolled back to its original route
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_zpn6ezsyvsq7j5kkxlxssfnqoq is cleaned up and its journal row retired
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_wicictxiqhdbre2cce37avveky (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_wicictxiqhdbre2cce37avveky: retire its instance key: the env file is a symlink
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_wicictxiqhdbre2cce37avveky rolled back to its original route
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_wicictxiqhdbre2cce37avveky is cleaned up and its journal row retired
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_574c5acd54oiygagi3f642aiwa (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_jzdsm757a4lm3j2nqxrl4mdu6y (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_l6fd4hwrdagwknjrvwpzp2cmpu refused: there is no route at a.shop.example.com to replace
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_f5gh67ulfqdkg7e6iavst2srfe refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_heobx6af5e2zb2g2qmjspunpwy refused: the route's address is 127.0.0.1:8401,127.0.0.1:8402, not 127.0.0.1:8401
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_dmkzsmvaviw6qncftlahjhjt7e refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_mxwddk3ho6d3ihouhaqdqlnnn4 refused: the route belongs to app other
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_3rcdm5zlguko53n3wmhyt7ojwi refused: the route is filed under another account
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_kvqrvuehr2yc7vs4l22u4xygbm refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_zxivghrlbrvkutr4vxbi7cc4o4 refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_zu2sdcs3ddeznys3kkz7ylrbn4 refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_6cnrw5oo4rxrnrk4k5hohtfjpy refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_h754u3ft2ovv2xjpknw2xg66me refused: the route is not an address route this import can take over (socket)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_7neuy4tz2bfdcxmtmloecmaroa refused: the route is not an address route this import can take over (no address)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_gn4mwbqhw24teufefkcuv7t7dy refused: the route is not an address route this import can take over (provisioned)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_nnjmxxsocnmog7ckalvcuvmmru refused: the route is not an address route this import can take over (kind static)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_ytrxpvvtn37pdsumpgsbmhcroy refused: the route is not an address route this import can take over (backing)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_olo2lxhao3uja5ep4zbrw74xt4 refused: the route is not an address route this import can take over (tunnel)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_zvvqnb7bpvzs2x4raerndwdcb4 refused: the route is not an address route this import can take over (caps)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_6wghv6fapncwhygnt3gdic3jhu refused: the route is not an address route this import can take over (platform)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_cmk5ijd3w2af7dr5qpwkuizf5e refused: the route is not an address route this import can take over (canary)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_tfjxh2ulkazlbt4mxrkoyvh3kq refused: the route is not an address route this import can take over (kind sidecar)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_afpij2phzfjghqgk57kr4dfw5e refused: the route is not an address route this import can take over (region)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_tmb36ftavfajrdhls4eupopchy refused: the route is not an address route this import can take over (fleet_box)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_mly6wcnge3nz6bznsuvsqgiila refused: the route is not an address route this import can take over (hibernate)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_ir42bjawvl3khcjz77lwcjw5ui refused: the route is not an address route this import can take over (claim_owner)
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_y265pt4g76zquzzu6hbuqiz4hi refused: this box does not run instances nested
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_hthjijkeqpcwep5qbd7cjy4hoa refused: this box does not run instances nested
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_lcq63zrnm46ibom4kxrsj6dosa refused: claim control is on for this box
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_dnn2cb4g6qdou2oq443doih3g4 (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_47eyrcxalialj6enyx5gzuchve (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/24 23:46:19 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_kce4a4j7mnz7ime727dprq3pwu: its verify hash is not a sha256
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_v6yd3dublbrglsgrfmmmc3nsky: its verify hash is not a sha256
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_6xgtxkutjq6msbes7sikbnwlt4: its verify hash is not a sha256
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_../../x: its host or seed id is malformed (seeds: not a seed id)
2026/10/24 23:46:19 provision: A.shop.example.com/..: not swapping for import sd_hghriwfllo2gk4ukzds3s3jx6m: its host or seed id is malformed (seeds: not a host)
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_yd72avftrapikhaqnajmoqhngq: its record does not describe a nested, hibernating instance
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_uwgold25ifoibl6o5emqfjxfu4: its record does not describe a nested, hibernating instance
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_uvcbpnv3d7la7csgm7ficsbzqq: its record does not describe a nested, hibernating instance
2026/10/24 23:46:19 provision: a.shop.example.com: not swapping for import sd_u6pvox5kii7kyvaydd2chwqmva: its record does not describe a nested, hibernating instance
2026/10/24 23:46:19 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_anwlehrmu4pwtg36yzijlan4ae (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_a3vfgjmlk43jssoeeubhbnaiqy (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: swapped for import sd_t2ojwyc6eqe6yncpclapjaxakm (the original route is journaled)
2026/10/24 23:46:19 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/24 23:46:19 provision: dry-run: would consider swapping a.shop.example.com for import sd_mmn24nrlefrolcbkvvwh6vzanq
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_dvk46bm44zvgqdijvtmyzbzhoa rolled back to its original route
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_dvk46bm44zvgqdijvtmyzbzhoa: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_dvk46bm44zvgqdijvtmyzbzhoa is cleaned up and its journal row retired
2026/10/24 23:46:19 provision: a.shop.example.com: import sd_ygim4rjha5twlyu7ee7zggrd3u left alone: the import journal holds seed sd_m53uuastkpd7zpwjtozh2nxmnq at swapped
2026/10/24 23:46:20 provision: a.shop.example.com: not minting import sd_wjyotn34qk7vidao7doouxgvum: it is swapped but not committed, and only its swap makes its row
2026/10/24 23:46:20 provision: a.shop.example.com: not minting import sd_til6lrjd6iyxtpp2l2q3fahuv4: it is placed but not committed, and only its swap makes its row
2026/10/24 23:46:20 provision: a.shop.example.com: swapped for import sd_ko2tv7rkkgeoiws3jiwypm4cmu (the original route is journaled)
2026/10/24 23:46:20 provision: a.shop.example.com: not minting import sd_ko2tv7rkkgeoiws3jiwypm4cmu: it is swapped but not committed, and only its swap makes its row
2026/10/24 23:46:20 provision: a.shop.example.com: not minting import sd_ko2tv7rkkgeoiws3jiwypm4cmu: it is placed but not committed, and only its swap makes its row
2026/10/24 23:46:20 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:46:20 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/24 23:46:20 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/24 23:46:20 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/24 23:46:20 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/24 23:46:20 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/24 23:46:20 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 23:46:20 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/24 23:46:20 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/24 23:46:20 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 23:46:20 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:46:20 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/24 23:46:20 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/24 23:46:20 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:20 provision: sidecar hub.relay.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/24 23:46:20 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:20 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:46:20 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/24 23:46:20 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 23:46:20 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:46:20 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/24 23:46:20 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:46:20 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 23:46:20 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:20 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/24 23:46:20 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:20 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:20 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 23:46:20 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 23:46:20 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 23:46:20 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:46:20 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 23:46:20 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 23:46:20 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 23:46:20 provision: record view: change index unusable (release: change index unreadable: store has no conditional read: unsupported operation): the walk records no generations
2026/10/24 23:46:20 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:46:20 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 23:46:20 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:20 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 23:46:20 provision: an app's records could not be listed: they are skipped
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:46:20 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:46:20 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 23:46:20 provision: listing apps/bqc/shop/instances/: context canceled — its records are unseen this pass
2026/10/24 23:46:20 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:46:20 provision: record view: change index unusable (get refused): walking
2026/10/24 23:46:20 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: record view: change index unusable (release: change index malformed: invalid character 'n' looking for beginning of object key string): walking
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: removed retired instance route one.example.com (record gone)
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 23:46:20 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 23:46:20 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 23:46:20 provision: record view: re-reading accounts/bqd failed: retrying on the next refresh
2026/10/24 23:46:20 provision: skipping accounts/bqd/account.json: read failed: list refused
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: removed retired instance route one.example.com (record gone)
2026/10/24 23:46:20 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 23:46:20 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 23:46:20 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 23:46:20 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 23:46:20 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 23:46:20 provision: record view: change index unusable (context deadline exceeded): walking
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:46:20 provision: record view: change index unusable (context deadline exceeded): the walk records no generations
2026/10/24 23:46:20 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
--- FAIL: TestPlan14RootReadCensus (6.69s)
plan14_root_reads_test.go:1462: root read census: 57 discrepancies
changed registry schema
changed root read cli.go:runShip; review class, task, sites and digest
changed root read config.go:loadConfig; review class, task, sites and digest
changed root read deploy.go:runDeploy; review class, task, sites and digest
changed root read internal/console/apicli.go:Server.handleAPIShip; review class, task, sites and digest
changed root read internal/domains/aliases.go:deriveInstanceAliases; review class, task, sites and digest
changed root read internal/host/agent.go:runAgent; review class, task, sites and digest
changed root read internal/host/edgesfile.go:edgesFileLoop; review class, task, sites and digest
changed root read internal/host/edgesfile.go:edgesFileWriteClaims; review class, task, sites and digest
changed root read internal/provision/reconcile.go:Reconcile; review class, task, sites and digest
changed root read internal/provision/reconcile.go:RouteFor; review class, task, sites and digest
changed root read internal/provision/reconcile.go:convergeOwned; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.Fingerprint; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.SnapshotFingerprint; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.Upsert; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.migrate; review class, task, sites and digest
changed root read internal/registry/registry.go:routeArgs; review class, task, sites and digest
changed root read internal/registry/registry.go:scanRoute; review class, task, sites and digest
changed root read internal/registry/remote_dispatch.go:Registry.dispatchRemote; review class, task, sites and digest
changed root source envelope .
changed root source envelope internal/console
changed root source envelope internal/domains
changed root source envelope internal/edge
changed root source envelope internal/edgesfile
changed root source envelope internal/host
changed root source envelope internal/provision
changed root source envelope internal/registry
changed root source envelope internal/release
stale root read internal/domains/aliases.go:ReconcileAliases
unclassified root read internal/domains/aliases.go:ReconcileAliasesReport registry:Account@15690,registry:Account@15703,registry:Alias@15283,registry:Alias@15323,registry:Alias@15393,registry:App@12502,registry:App@12702,registry:App@12858,registry:App@13059,registry:App@15716,registry:App@15725,registry:App@2553,registry:App@2749,registry:App@6373,registry:App@6572,registry:Host@15675,registry:Host@15986,registry:Host@16039,registry:Host@16111,registry:Host@16645,registry:Host@16758,registry:Host@16817,registry:Host@16898,registry:Host@724,registry:Prefix@16653,registry:Prefix@16772,registry:Prefix@16825,registry:Prefix@16906,registry:Status@9236,whole:Route@12471,whole:Route@12546,whole:Route@12693,whole:Route@12755,whole:Route@12898,whole:Route@13054,whole:Route@13950,whole:Route@15045,whole:Route@15053,whole:Route@1896,whole:Route@2593,whole:Route@2744,whole:Route@2800,whole:Route@5719,whole:Route@6417,whole:Route@6563,whole:Route@677,whole:Route@706,whole:Route@717,whole:Route@735,whole:Route@844,whole:Route@8566,whole:Route@9018,whole:Route@9180,whole:RouteAlias@15061,whole:RouteAlias@15258,whole:RouteAlias@852,whole:RoutePath@10763,whole:RoutePath@16538,whole:RoutePath@16580,whole:RoutePath@16715,whole:RoutePath@16745,whole:WildcardDomain@13270,whole:WildcardDomain@15605,whole:WildcardDomain@15654,whole:WildcardDomain@15817,whole:WildcardDomain@15945,whole:WildcardDomain@15974
unclassified root read internal/domains/aliases.go:relevantDropped registry:Account@944,registry:Alias@728,registry:Alias@749,registry:Alias@810,registry:Alias@875,registry:Host@605,whole:Route@304,whole:Route@335,whole:Route@374,whole:Route@590,whole:Route@652,whole:RouteAlias@707
unclassified root read internal/host/assetpolicy.go:assetInputs.primary whole:Route@112,whole:Route@174,whole:Route@194,whole:Route@84
unclassified root read internal/host/assetpolicy.go:assetPolicy.buildSnapshot whole:Route@361
unclassified root read internal/host/assetpolicy.go:assetPolicy.decide registry:AssetGen@1927,registry:AssetGen@586,registry:AssetsOff@571,registry:Gate@606,registry:Host@1235,registry:Host@884,registry:Host@947,registry:ImportGate@622,registry:Pool@1794,registry:Status@277,registry:Version@1201
unclassified root read internal/host/assetpolicy.go:assetPolicy.keepBuilds registry:App@238,registry:App@348,registry:Host@292,registry:Version@189,registry:Version@245,whole:Route@113,whole:Route@141,whole:Route@181
unclassified root read internal/host/assetpolicy.go:assetPolicy.publishSnapshot registry:Host@298,registry:Status@248,whole:Route@206,whole:Route@234,whole:Route@376,whole:RouteAlias@399,whole:RoutePath@392
unclassified root read internal/host/assetpolicy.go:assetPolicy.readAssetInputs registry:Host@489,registry:Status@439,whole:Route@397,whole:Route@425,whole:Route@540,whole:RouteAlias@563,whole:RoutePath@556
unclassified root read internal/host/assetpolicy.go:assetPolicy.servingDigest whole:Route@154
unclassified root read internal/host/assetpolicy.go:newAssetInputs registry:Alias@476,registry:Alias@511,registry:Alias@557,registry:Host@367,registry:Host@424,registry:Host@568,whole:Route@195,whole:Route@239,whole:Route@346,whole:Route@360,whole:Route@377,whole:Route@628,whole:RouteAlias@461,whole:RoutePath@401,whole:RoutePath@644
unclassified root read internal/host/assetpolicy.go:servingBuildsDigest registry:Host@229,whole:Route@168,whole:Route@196
unclassified root read internal/provision/provision.go:NewAssetGen file:Read@66
unclassified root read internal/registry/registry.go:Registry.SetAssets file:Exec@239,registry:remote@106,registry:remote@76,registry:sql@239,whole:remoteClient@108,whole:remoteClient@78
changed legacy declaration cli.go:runShip
changed legacy declaration config.go:loadConfig
changed legacy declaration deploy.go:runDeploy
changed legacy declaration internal/console/apicli.go:Server.handleAPIShip
changed legacy declaration internal/domains/aliases.go:ReconcileAliases
changed legacy declaration internal/domains/aliases.go:deriveInstanceAliases
changed legacy declaration internal/host/edgesfile.go:edgesFileLoop
changed legacy declaration internal/provision/reconcile.go:Reconcile
changed legacy declaration internal/provision/reconcile.go:convergeOwned
changed legacy declaration internal/registry/registry.go:Registry.Fingerprint
changed legacy declaration internal/registry/registry.go:Registry.SnapshotFingerprint
changed legacy declaration internal/registry/registry.go:Registry.migrate
changed legacy declaration internal/registry/registry.go:scanRoute
changed reclassified declaration internal/registry/registry.go:Registry.Upsert
changed reclassified declaration internal/registry/remote_dispatch.go:Registry.dispatchRemote
FAIL
FAIL github.com/carlosframework/platform/internal/provision 16.483s
ok github.com/carlosframework/platform/internal/publicrelease 0.015s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 6.112s
ok github.com/carlosframework/platform/internal/relay 7.233s
ok github.com/carlosframework/platform/internal/release 26.336s
ok github.com/carlosframework/platform/internal/rollout 4.067s
ok github.com/carlosframework/platform/internal/rolloutwords 0.006s
ok github.com/carlosframework/platform/internal/rootaws 0.009s
ok github.com/carlosframework/platform/internal/rootparticipation 0.075s
ok github.com/carlosframework/platform/internal/rootstate 0.032s
ok github.com/carlosframework/platform/internal/runs 0.605s
ok github.com/carlosframework/platform/internal/s3compat 0.005s
ok github.com/carlosframework/platform/internal/safefile 0.016s
ok github.com/carlosframework/platform/internal/schedule 3.104s
ok github.com/carlosframework/platform/internal/seeds 0.021s
ok github.com/carlosframework/platform/internal/sim/engines 3.174s
ok github.com/carlosframework/platform/internal/sim/hostlife 10.775s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 3.845s
ok github.com/carlosframework/platform/internal/status 0.117s
ok github.com/carlosframework/platform/internal/steering 0.008s
ok github.com/carlosframework/platform/internal/stopevidence 0.204s
ok github.com/carlosframework/platform/internal/svcrole 0.002s
ok github.com/carlosframework/platform/internal/telemetry 0.005s
ok github.com/carlosframework/platform/internal/termfence 0.004s
ok github.com/carlosframework/platform/internal/tunnelclient 0.005s
ok github.com/carlosframework/platform/internal/unixdial 0.003s
ok github.com/carlosframework/platform/internal/updatewords 0.005s
ok github.com/carlosframework/platform/internal/usage 0.006s
ok github.com/carlosframework/platform/internal/version 0.002s
ok github.com/carlosframework/platform/internal/vet 1.664s
FAIL
=== internal_console@0 (89 s)
ok github.com/carlosframework/platform/internal/console 86.710s
=== internal_console@1 (44 s)
ok github.com/carlosframework/platform/internal/console 41.617s
=== internal_console@2 (40 s)
ok github.com/carlosframework/platform/internal/console 37.365s
=== internal_console@3 (41 s)
ok github.com/carlosframework/platform/internal/console 38.660s
=== internal_console@4 (38 s)
ok github.com/carlosframework/platform/internal/console 35.186s
=== internal_console@5 (42 s)
ok github.com/carlosframework/platform/internal/console 39.151s
=== internal_console@6 (46 s)
ok github.com/carlosframework/platform/internal/console 43.593s
=== internal_console@7 (47 s)
ok github.com/carlosframework/platform/internal/console 44.458s
=== root@0 (110 s)
ok github.com/carlosframework/platform 108.251s
=== root@1 (102 s)
ok github.com/carlosframework/platform 99.760s
=== root@2 (74 s)
ok github.com/carlosframework/platform 72.415s
FAILED: rest
make: *** [Makefile:19: 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
diff --git a/config.go b/config.go| index 3192ee065..dd092b5fb 100644 |
| --- a/config.go |
| +++ b/config.go |
| @@ -222,6 +222,19 @@ func configDestination(console string) string { |
| return cfg.Destination |
| } |
| +// configAssets resolves the saved asset folders: the nearest file that sets |
| +// the assets key (an empty list is an opinion: it declares nothing), with that |
| +// same file's console for the pairing rule, configApp's contract for the |
| +// sibling key. Independent of the deploy block, so a deploy that names its |
| +// artifact on the command line still finds the project's list. |
| +func configAssets() (assets []string, source, fileConsole string, err error) { |
| + cfg, src, err := walkConfig(func(c cliConfig) bool { return c.Assets != nil }) |
| + if err != nil || src == "" { |
| + return nil, "", "", err |
| + } |
| + return cfg.Assets, src, cfg.Console, nil |
| +} |
| + |
| // configDeploy resolves the project's deploy block: the nearest file that |
| // names an artifact, whole — kind/artifact/target travel together, and |
| // mixing halves of two files would ship one project's bytes with |
diff --git a/config_test.go b/config_test.go| index 9f8b8ec0d..b7b39d456 100644 |
| --- a/config_test.go |
| +++ b/config_test.go |
| @@ -478,12 +478,12 @@ func TestConfigLoadsAssetsList(t *testing.T) { |
| } |
| return p |
| } |
| - cfg, err := loadConfig(write(`{"console":"https://tito.example","assets":[" /assets/ ","","/img/"]}`)) |
| + cfg, err := loadConfig(write(`{"console":"https://console.example.com","assets":[" /assets/ ","","/img/"]}`)) |
| if err != nil || !reflect.DeepEqual(cfg.Assets, []string{"/assets/", "/img/"}) { |
| t.Fatalf("flat = %#v, %v", cfg.Assets, err) |
| } |
| - blocks := write(`{"console":"https://tito.example","assets":["/top/"],"destinations":{` + |
| + blocks := write(`{"console":"https://console.example.com","assets":["/top/"],"destinations":{` + |
| `"prod":{"assets":["/prod/"]},"plain":{"app":"shop"},"none":{"assets":[]}}}`) |
| for dest, want := range map[string][]string{"prod": {"/prod/"}, "plain": {"/top/"}, "none": nil} { |
| t.Setenv("CARLOS_DESTINATION", dest) |
| @@ -511,10 +511,10 @@ func TestConfigRewritesPreserveAssets(t *testing.T) { |
| if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { |
| t.Fatal(err) |
| } |
| - if err := os.WriteFile(path, []byte(`{"console":"https://tito.example","assets":["/assets/","/img/"]}`), 0o644); err != nil { |
| + if err := os.WriteFile(path, []byte(`{"console":"https://console.example.com","assets":["/assets/","/img/"]}`), 0o644); err != nil { |
| t.Fatal(err) |
| } |
| - if err := saveConfigAccount(path, "https://tito.example", "abc", 0o755); err != nil { |
| + if err := saveConfigAccount(path, "https://console.example.com", "abc", 0o755); err != nil { |
| t.Fatal(err) |
| } |
| if err := writeConfigKeys(path, map[string]any{"app": "shop"}, 0o755); err != nil { |
diff --git a/deploy.go b/deploy.go| index faf3a1779..1152ab2b9 100644 |
| --- a/deploy.go |
| +++ b/deploy.go |
| @@ -104,6 +104,27 @@ func deployAssets(flagSet bool, flag []string, noAssets bool, saved []string, ki |
| return saved, "", nil |
| } |
| +// savedAssetsFor is the project's saved asset folders for a session on |
| +// console: nil unless the file that sets them names that same console, the |
| +// pairing every project default follows (a file's defaults mean its stack). |
| +func savedAssetsFor(console string) ([]string, error) { |
| + assets, src, fileConsole, err := configAssets() |
| + if err != nil || src == "" || fileConsole != console { |
| + return nil, err |
| + } |
| + return assets, nil |
| +} |
| + |
| +// deployAssetsToSave says whether this run's --assets is worth offering to |
| +// save, and the list to save: the run used --assets, declares something, and |
| +// it is not what the project already has saved. |
| +func deployAssetsToSave(flagSet bool, paths, saved []string) ([]string, bool) { |
| + if !flagSet || len(paths) == 0 || slices.Equal(paths, saved) { |
| + return nil, false |
| + } |
| + return paths, true |
| +} |
| + |
| // runDeploy is `carlos deploy`. API-mode only (spec §6): direct-bucket |
| // operators keep ship + promote as separate acts; deploy is the member path |
| // that ships, promotes to the channel the app's instances already follow, |
| @@ -256,12 +277,7 @@ func runDeploy(args []string) { |
| printTemporaryExpiry(ctx, sess, acct, *app) |
| } |
| - // The project's saved asset folders belong to the zero-arg deploy, like |
| - // the rest of the saved deploy block: set below, from the config that |
| - // answered. |
| - var savedAssets []string |
| - zeroArg := fs.NArg() == 0 |
| - if zeroArg { |
| + if fs.NArg() == 0 { |
| // Zero-arg: the saved deploy block answers, else the first-run |
| // wizard names the artifact once — never a silent guess. |
| artifact := "" |
| @@ -286,7 +302,6 @@ func runDeploy(args []string) { |
| if !flagWasSet(fs, "target") && dcfg.Target != "" { |
| *target = dcfg.Target |
| } |
| - savedAssets = dcfg.Assets |
| from := dsrc |
| if dcfg.Destination != "" { |
| from = "the " + dcfg.Destination + " destination in " + dsrc |
| @@ -328,8 +343,13 @@ func runDeploy(args []string) { |
| // the deploy's shape instead of being shipped (or refused). |
| fs.Parse([]string{"--", artifact}) |
| } |
| - // The kind is final here, whether a flag, the config or the wizard chose |
| - // it, so this is where a static release drops the saved list (EAC-9). |
| + // The saved list answers for every deploy in the project, whether the |
| + // artifact came from the config, the wizard or the command line. The kind |
| + // is final here, so this is where a static release drops it (EAC-9). |
| + savedAssets, serr := savedAssetsFor(sess.console) |
| + if serr != nil { |
| + log.Fatalf("deploy: %v", serr) |
| + } |
| assetPaths, assetsNotice, aerr := deployAssets(flagAssets, assets, *noAssets, savedAssets, *kind) |
| if aerr != nil { |
| log.Fatalf("deploy: %v", aerr) |
| @@ -339,11 +359,11 @@ func runDeploy(args []string) { |
| } |
| sess.shipAssets = assetPaths |
| // --assets is a choice made on the command line, but it is the one flag |
| - // worth keeping: a later zero-arg deploy that forgot it would turn the |
| - // cache off for the release. Offer it, on the zero-arg path (the only one |
| - // that reads the saved list), when it differs from what is saved. |
| - if zeroArg && flagAssets && len(assetPaths) > 0 && !slices.Equal(assetPaths, savedAssets) { |
| - newly["assets"] = assetPaths |
| + // worth keeping: a later deploy that forgot it would turn the cache off |
| + // for the release. Offered on any deploy, when it differs from what is |
| + // saved. |
| + if list, ok := deployAssetsToSave(flagAssets, assetPaths, savedAssets); ok { |
| + newly["assets"] = list |
| } |
| if len(newly) > 0 && interactiveTerminal() { |
diff --git a/deploy_assets_test.go b/deploy_assets_test.go| index c083f0367..c9faeb478 100644 |
| --- a/deploy_assets_test.go |
| +++ b/deploy_assets_test.go |
| @@ -121,8 +121,10 @@ func TestDeployWithoutSavedAssetsDeclaresNone(t *testing.T) { |
| } |
| } |
| -// deployFixture is a stand-in console just deep enough for a zero-arg deploy |
| -// to reach its ship: one account, one instance, a release door that keeps the |
| +// deployFixture is a stand-in console just deep enough for a deploy to reach |
| +// its ship. It is not acceptance: it witnesses what the CLI sends, not what a |
| +// real console does with it (the real door is internal/console's ship tests). |
| +// It answers: one account, one instance, a release door that keeps the |
| // meta part, and a promote that refuses (the test is about what was shipped). |
| type deployFixture struct { |
| mu sync.Mutex |
| @@ -188,16 +190,23 @@ func (f *deployFixture) touch() { |
| } |
| // runDeploy runs `carlos deploy -version x1 <args>` in a project whose |
| -// .carlos/config carries extraConfig after the usual defaults, and returns |
| -// the combined output. |
| +// .carlos/config carries the usual defaults (an artifact, kind and target) |
| +// plus extraConfig, and returns the combined output. |
| func (f *deployFixture) runDeploy(t *testing.T, extraConfig string, args ...string) string { |
| + t.Helper() |
| + return f.runDeployConfig(t, `"app":"shop","kind":"binary","artifact":"./bin/server","target":"linux-arm64"`+extraConfig, args...) |
| +} |
| + |
| +// runDeployConfig is runDeploy with the whole config body (after the console |
| +// and account) given, so a test can leave the deploy block out. |
| +func (f *deployFixture) runDeployConfig(t *testing.T, body string, args ...string) string { |
| t.Helper() |
| bin := buildCarlos(t) |
| project := t.TempDir() |
| if err := os.MkdirAll(filepath.Join(project, ".carlos"), 0o755); err != nil { |
| t.Fatal(err) |
| } |
| - cfg := `{"console":"` + f.url + `","account":"abc@example.com","app":"shop","kind":"binary","artifact":"./bin/server","target":"linux-arm64"` + extraConfig + `}` |
| + cfg := `{"console":"` + f.url + `","account":"abc@example.com",` + strings.TrimPrefix(body, ",") + `}` |
| if err := os.WriteFile(filepath.Join(project, ".carlos", "config"), []byte(cfg), 0o644); err != nil { |
| t.Fatal(err) |
| } |
| @@ -207,6 +216,12 @@ func (f *deployFixture) runDeploy(t *testing.T, extraConfig string, args ...stri |
| if err := os.WriteFile(filepath.Join(project, "bin", "server"), []byte("bin"), 0o755); err != nil { |
| t.Fatal(err) |
| } |
| + if err := os.MkdirAll(filepath.Join(project, "site"), 0o755); err != nil { |
| + t.Fatal(err) |
| + } |
| + if err := os.WriteFile(filepath.Join(project, "site", "index.html"), []byte("<p>shop</p>"), 0o644); err != nil { |
| + t.Fatal(err) |
| + } |
| credPath := filepath.Join(t.TempDir(), "credentials") |
| creds := `{"version":1,"credentials":[{"console":"` + f.url + `","address":"abc@example.com","token":"tok"}]}` |
| if err := os.WriteFile(credPath, []byte(creds), 0o600); err != nil { |
| @@ -225,9 +240,11 @@ func (f *deployFixture) shippedMeta() string { |
| return f.meta |
| } |
| -// TestZeroArgDeployCarriesSavedAssets: a zero-arg deploy sends the project's |
| -// saved asset folders in the ship meta, --assets replaces them for the run, |
| -// and --no-assets sends none. |
| +// TestZeroArgDeployCarriesSavedAssets: a deploy sends the project's saved |
| +// asset folders in the ship meta, --assets replaces them for the run, and |
| +// --no-assets sends none, whether the artifact is the config's (zero-arg) or |
| +// named on the command line. Not acceptance: the console is a stand-in that |
| +// keeps the meta part (see deployFixture). |
| func TestZeroArgDeployCarriesSavedAssets(t *testing.T) { |
| t.Parallel() |
| const saved = `,"assets":["/assets/","/img/"]` |
| @@ -240,6 +257,10 @@ func TestZeroArgDeployCarriesSavedAssets(t *testing.T) { |
| {"flag replaces it", saved, []string{"--assets", "/static/"}, `"assets":{"paths":["/static/"]}`}, |
| {"no-assets sends none", saved, []string{"--no-assets"}, ""}, |
| {"nothing saved sends none", "", nil, ""}, |
| + {"explicit artifact keeps the saved list", saved, []string{"./bin/server"}, `"assets":{"paths":["/assets/","/img/"]}`}, |
| + {"explicit artifact, flag replaces it", saved, []string{"--assets", "/static/", "./bin/server"}, `"assets":{"paths":["/static/"]}`}, |
| + {"explicit artifact, no-assets sends none", saved, []string{"--no-assets", "./bin/server"}, ""}, |
| + {"explicit artifact, nothing saved sends none", "", []string{"./bin/server"}, ""}, |
| } { |
| t.Run(c.name, func(t *testing.T) { |
| t.Parallel() |
| @@ -277,20 +298,37 @@ func TestDeployRefusesBothAssetFlagsBeforeTheConsole(t *testing.T) { |
| } |
| // TestDeployStaticSavedAssetsAreIgnoredAloud: a static deploy under a config |
| -// that saves folders ships none and says EAC-9; --assets on a static deploy is |
| -// EAC-8 and nothing is shipped. |
| +// that saves folders ships none and says EAC-9, with the site directory named |
| +// on the command line or by the config; --assets on a static deploy is EAC-8 |
| +// and nothing is shipped. Not acceptance: the console is a stand-in (see |
| +// deployFixture). |
| func TestDeployStaticSavedAssetsAreIgnoredAloud(t *testing.T) { |
| t.Parallel() |
| - f := newDeployFixture(t) |
| - out := f.runDeploy(t, `,"assets":["/assets/"]`, "--kind", "static") |
| - if !strings.Contains(out, eac9Text) { |
| - t.Fatalf("output does not carry the approved notice %q:\n%s", eac9Text, out) |
| - } |
| - if meta := f.shippedMeta(); strings.Contains(meta, "assets") { |
| - t.Fatalf("a static deploy declared folders: %s", meta) |
| + const staticSaved = `"app":"shop","kind":"static","artifact":"./site","assets":["/assets/"]` |
| + for name, run := range map[string]func(f *deployFixture) string{ |
| + "explicit site": func(f *deployFixture) string { |
| + return f.runDeploy(t, `,"assets":["/assets/"]`, "--kind", "static", "./site") |
| + }, |
| + "saved site": func(f *deployFixture) string { return f.runDeployConfig(t, staticSaved) }, |
| + "saved, no block": func(f *deployFixture) string { |
| + return f.runDeployConfig(t, `"app":"shop","assets":["/assets/"]`, "--kind", "static", "./site") |
| + }, |
| + } { |
| + f := newDeployFixture(t) |
| + out := run(f) |
| + if !strings.Contains(out, eac9Text) { |
| + t.Fatalf("%s: output does not carry the approved notice %q:\n%s", name, eac9Text, out) |
| + } |
| + meta := f.shippedMeta() |
| + if meta == "" { |
| + t.Fatalf("%s: the static deploy never shipped, so there is no meta to check:\n%s", name, out) |
| + } |
| + if strings.Contains(meta, "assets") { |
| + t.Fatalf("%s: a static deploy declared folders: %s", name, meta) |
| + } |
| } |
| g := newDeployFixture(t) |
| - out = g.runDeploy(t, "", "--kind", "static", "--assets", "/assets/") |
| + out := g.runDeploy(t, "", "--kind", "static", "--assets", "/assets/", "./site") |
| if !strings.Contains(out, shipAssetsStatic) { |
| t.Fatalf("output does not carry the approved refusal %q:\n%s", shipAssetsStatic, out) |
| } |
| @@ -298,3 +336,118 @@ func TestDeployStaticSavedAssetsAreIgnoredAloud(t *testing.T) { |
| t.Fatalf("a refused deploy shipped: %s", meta) |
| } |
| } |
| + |
| +// TestDeploySavedAssetsNeedNoDeployBlock: a project whose config saves only |
| +// the folders (no artifact) still declares them when the artifact is named on |
| +// the command line. Not acceptance: the console is a stand-in. |
| +func TestDeploySavedAssetsNeedNoDeployBlock(t *testing.T) { |
| + t.Parallel() |
| + f := newDeployFixture(t) |
| + out := f.runDeployConfig(t, `"app":"shop","assets":["/assets/"]`, "./bin/server") |
| + meta := f.shippedMeta() |
| + if meta == "" { |
| + t.Fatalf("the deploy never shipped:\n%s", out) |
| + } |
| + if !strings.Contains(meta, `"assets":{"paths":["/assets/"]}`) { |
| + t.Fatalf("meta = %s, want the saved folders", meta) |
| + } |
| +} |
| + |
| +// TestSavedAssetsFollowTheConsolePairing: the saved list answers only for the |
| +// console its file names, like every project default, and the nearest file |
| +// that sets the key wins (an empty list included). |
| +func TestSavedAssetsFollowTheConsolePairing(t *testing.T) { |
| + cfgPath := filepath.Join(t.TempDir(), "config") |
| + t.Setenv("CARLOS_CONFIG", cfgPath) |
| + t.Setenv("CARLOS_DESTINATION", "") |
| + write := func(body string) { |
| + t.Helper() |
| + if err := os.WriteFile(cfgPath, []byte(body), 0o644); err != nil { |
| + t.Fatal(err) |
| + } |
| + } |
| + write(`{"console":"https://console.example.com","assets":["/assets/"]}`) |
| + if got, err := savedAssetsFor("https://console.example.com"); err != nil || !reflect.DeepEqual(got, []string{"/assets/"}) { |
| + t.Fatalf("paired console = %#v, %v", got, err) |
| + } |
| + if got, err := savedAssetsFor("https://other.example.com"); err != nil || got != nil { |
| + t.Fatalf("another console = %#v, %v, want none", got, err) |
| + } |
| + write(`{"console":"https://console.example.com","app":"shop"}`) |
| + if got, err := savedAssetsFor("https://console.example.com"); err != nil || got != nil { |
| + t.Fatalf("no key = %#v, %v, want none", got, err) |
| + } |
| + write(`{"console":"https://console.example.com","assets":[]}`) |
| + if got, err := savedAssetsFor("https://console.example.com"); err != nil || len(got) != 0 { |
| + t.Fatalf("empty list = %#v, %v, want none", got, err) |
| + } |
| +} |
| + |
| +// TestDeployAssetsToSave: --assets is offered for saving when it declares |
| +// something the project does not already have saved, on any kind of deploy. |
| +func TestDeployAssetsToSave(t *testing.T) { |
| + saved := []string{"/assets/"} |
| + for _, c := range []struct { |
| + name string |
| + flagSet bool |
| + paths []string |
| + saved []string |
| + want bool |
| + }{ |
| + {"first use of the flag", true, []string{"/assets/"}, nil, true}, |
| + {"a different list", true, []string{"/static/"}, saved, true}, |
| + {"the same list", true, []string{"/assets/"}, saved, false}, |
| + {"no flag, saved list in use", false, saved, saved, false}, |
| + {"no flag, nothing", false, nil, nil, false}, |
| + {"flag but nothing declared", true, nil, saved, false}, |
| + } { |
| + got, ok := deployAssetsToSave(c.flagSet, c.paths, c.saved) |
| + if ok != c.want || (ok && !reflect.DeepEqual(got, c.paths)) { |
| + t.Errorf("%s: = %#v, %v, want %v", c.name, got, ok, c.want) |
| + } |
| + } |
| +} |
| + |
| +// TestAssetsOfferSavesFromAnExplicitArtifactDeploy: the first run of |
| +// `carlos deploy --assets /assets/ ./bin/server` at a terminal, answered y, |
| +// writes the list into the project's .carlos/config next to what was there, |
| +// and the next deploy reads it back. The prompt is offerSaveProjectDefaults, |
| +// fed the entry runDeploy builds (deployAssetsToSave). Not acceptance: the |
| +// terminal is simulated and the deploy itself is not run. |
| +func TestAssetsOfferSavesFromAnExplicitArtifactDeploy(t *testing.T) { |
| + project, home := t.TempDir(), t.TempDir() |
| + t.Setenv("HOME", home) |
| + t.Setenv("CARLOS_CONFIG", "") |
| + t.Setenv("CARLOS_DESTINATION", "") |
| + t.Chdir(project) |
| + if err := os.MkdirAll(".carlos", 0o755); err != nil { |
| + t.Fatal(err) |
| + } |
| + if err := os.WriteFile(filepath.Join(".carlos", "config"), []byte(`{"console":"https://console.example.com","app":"shop"}`), 0o644); err != nil { |
| + t.Fatal(err) |
| + } |
| + forceTerminal(t, true) |
| + oldIn := chooserIn |
| + t.Cleanup(func() { chooserIn = oldIn }) |
| + chooserIn = strings.NewReader("y\n") |
| + captureStdout(t) |
| + |
| + saved, err := savedAssetsFor("https://console.example.com") |
| + if err != nil || saved != nil { |
| + t.Fatalf("before = %#v, %v", saved, err) |
| + } |
| + list, ok := deployAssetsToSave(true, []string{"/assets/"}, saved) |
| + if !ok { |
| + t.Fatal("the first --assets was not offered for saving") |
| + } |
| + offerSaveProjectDefaults("https://console.example.com", "abc", map[string]any{"assets": list}, |
| + "save these as this project's deploy defaults") |
| + |
| + cfg, err := loadConfig(filepath.Join(".carlos", "config")) |
| + if err != nil || !reflect.DeepEqual(cfg.Assets, []string{"/assets/"}) || cfg.App != "shop" || cfg.Account != "abc" { |
| + t.Fatalf("after the offer = %+v, %v", cfg, err) |
| + } |
| + if got, err := savedAssetsFor("https://console.example.com"); err != nil || !reflect.DeepEqual(got, []string{"/assets/"}) { |
| + t.Fatalf("the next deploy reads %#v, %v", got, err) |
| + } |
| +} |