console: a rootfs upload gives back its ship slot once it holds its scratch (rootfs Plan 1 Task 8, review fix round 1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 files changed,
+209
−15
internal/console/apicli.go+8 −2internal/console/apiship_rootfs.go+8 −1internal/console/apiship_rootfs_test.go+193 −12
CI failed — run details
CI log
=== gate ===
.amadan/test-gate.sh
go: downloading github.com/KarpelesLab/squashfs v1.2.0
=== launchctx (1 s)
ok amadan.net/carlos/platform.git/launchctx 0.011s
? amadan.net/carlos/platform.git/launchctx/controlname [no test files]
? amadan.net/carlos/platform.git/launchctx/wireid [no test files]
=== vet (19 s)
go: downloading github.com/KarpelesLab/squashfs v1.2.0
=== gofmt (0 s)
gofmt -l .: clean
=== rest (171 s)
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 3.326s
ok github.com/carlosframework/platform/cmd/moveprobe 11.749s
ok github.com/carlosframework/platform/cmd/zddprobe 0.729s
ok github.com/carlosframework/platform/internal/activator 58.631s
ok github.com/carlosframework/platform/internal/agentsock 0.028s
ok github.com/carlosframework/platform/internal/alerting 0.006s
ok github.com/carlosframework/platform/internal/analytics 0.024s
ok github.com/carlosframework/platform/internal/appconfig 2.756s
ok github.com/carlosframework/platform/internal/apperr 0.111s
ok github.com/carlosframework/platform/internal/applog 0.181s
ok github.com/carlosframework/platform/internal/awsinv 0.008s
ok github.com/carlosframework/platform/internal/boxchoice 0.009s
ok github.com/carlosframework/platform/internal/boxid 0.794s
? 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.013s
ok github.com/carlosframework/platform/internal/caps 0.013s
ok github.com/carlosframework/platform/internal/certwarm 0.007s
ok github.com/carlosframework/platform/internal/cgroup 0.744s
ok github.com/carlosframework/platform/internal/changelog 0.410s
ok github.com/carlosframework/platform/internal/claimactivation 1.064s
ok github.com/carlosframework/platform/internal/clamd 0.059s
? 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.916s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.013s
ok github.com/carlosframework/platform/internal/dbquery 0.010s
ok github.com/carlosframework/platform/internal/dbreads 2.098s
? github.com/carlosframework/platform/internal/dbreads/dbreadstest [no test files]
ok github.com/carlosframework/platform/internal/dbverify 0.006s
ok github.com/carlosframework/platform/internal/dnsrec 0.006s
ok github.com/carlosframework/platform/internal/docsite 0.018s
ok github.com/carlosframework/platform/internal/domains 2.599s
ok github.com/carlosframework/platform/internal/doorkey 0.007s
ok github.com/carlosframework/platform/internal/economics 0.004s
ok github.com/carlosframework/platform/internal/edge 45.648s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.026s
ok github.com/carlosframework/platform/internal/fleetapi 0.198s
ok github.com/carlosframework/platform/internal/gate 1.702s
ok github.com/carlosframework/platform/internal/genselect 0.044s
ok github.com/carlosframework/platform/internal/geo 0.035s
ok github.com/carlosframework/platform/internal/geoip 0.052s
ok github.com/carlosframework/platform/internal/historyreadback 0.253s
ok github.com/carlosframework/platform/internal/host 141.870s
ok github.com/carlosframework/platform/internal/hostactors 6.562s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.012s
ok github.com/carlosframework/platform/internal/hostbox 3.098s
ok github.com/carlosframework/platform/internal/hostclaim 0.824s
ok github.com/carlosframework/platform/internal/hostenv 0.012s
ok github.com/carlosframework/platform/internal/hostevidence 0.012s
ok github.com/carlosframework/platform/internal/hostexec 5.428s
ok github.com/carlosframework/platform/internal/hostfence 0.058s
ok github.com/carlosframework/platform/internal/hostfiles 10.324s
ok github.com/carlosframework/platform/internal/hostfloor 0.018s
ok github.com/carlosframework/platform/internal/hostguard 1.068s
ok github.com/carlosframework/platform/internal/hostops 1.995s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.012s
ok github.com/carlosframework/platform/internal/hostquarantine 0.012s
ok github.com/carlosframework/platform/internal/hostrelocate 0.620s
ok github.com/carlosframework/platform/internal/hostresolve 0.224s
ok github.com/carlosframework/platform/internal/hostwrite 0.012s
ok github.com/carlosframework/platform/internal/infraview 0.013s
ok github.com/carlosframework/platform/internal/instancectl 5.250s
ok github.com/carlosframework/platform/internal/instanceexec 2.774s
ok github.com/carlosframework/platform/internal/instancefs 0.018s
ok github.com/carlosframework/platform/internal/instancekey 0.014s
ok github.com/carlosframework/platform/internal/instanceupdates 0.025s
ok github.com/carlosframework/platform/internal/layout 1.824s
ok github.com/carlosframework/platform/internal/lbhealth 0.002s
ok github.com/carlosframework/platform/internal/lease 10.212s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.478s
ok github.com/carlosframework/platform/internal/ledger 0.011s
ok github.com/carlosframework/platform/internal/mail 0.226s
ok github.com/carlosframework/platform/internal/maintenance 0.103s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.590s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.081s
ok github.com/carlosframework/platform/internal/metrics 0.012s
ok github.com/carlosframework/platform/internal/moves 22.181s
ok github.com/carlosframework/platform/internal/moves/archive 1.000s
ok github.com/carlosframework/platform/internal/objstore 0.270s
ok github.com/carlosframework/platform/internal/ops 0.240s
ok github.com/carlosframework/platform/internal/park 0.258s
ok github.com/carlosframework/platform/internal/plans 0.008s
ok github.com/carlosframework/platform/internal/privatefile 0.005s
2026/10/24 22:46:44 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/24 22:46:44 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/24 22:46:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:44 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 22:46:44 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 22:46:44 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/24 22:46:44 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 22:46:44 provision: an app's records could not be listed: they are skipped
2026/10/24 22:46:44 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:44 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 22:46:44 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 22:46:44 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 22:46:44 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 22:46:44 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/24 22:46:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:44 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 22:46:44 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/24 22:46:44 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:46:44 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 22:46:44 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 22:46:44 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/24 22:46:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:44 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 22:46:44 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:46:44 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:46:44 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 22:46:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 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 22:46:45 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:46:45 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:46:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 22:46:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 22:46:45 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 22:46:45 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:46:45 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 22:46:45 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:46:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:46:45 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 22:46:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:45 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:45 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:46:45 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:45 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:45 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 22:46:45 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 22:46:45 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/24 22:46:45 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/24 22:46:45 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:46:45 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:45 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan9B8RecordWriteCensus (0.72s)
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/release/rootfs_ship.go:establishShipKind: source differs from the reviewed digest
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 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 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 22:46:47 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/24 22:46:47 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/24 22:46:47 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/24 22:46:47 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: converged acme.go.tito.io hibernate false -> true
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: converged acme.go.tito.io status-named false -> true
2026/10/24 22:46:47 provision: converged acme.go.tito.io status-named true -> false
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 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 22:46:47 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 22:46:47 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 22:46:47 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 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 22:46:47 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 22:46:47 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 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/24 22:46:47 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/24 22:46:47 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 22:46:47 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 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 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 22:46:47 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:46:47 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 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 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 22:46:47 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:46:47 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 22:46:47 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:47 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:46:47 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/24 22:46:47 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 22:46:47 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:46:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:46:47 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 22:46:47 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:47 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:46:47 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/24 22:46:47 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 22:46:47 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:46:47 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 22:46:47 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:46:47 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 22:46:47 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:46:47 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 22:46:47 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:46:47 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/24 22:46:47 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 22:46:47 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:46:47 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 22:46:47 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 22:46:47 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 22:46:47 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 22:46:47 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 22:46:47 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 22:46:47 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:46:47 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:46:47 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/24 22:46:47 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 22:46:47 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/24 22:46:47 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/24 22:46:47 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/24 22:46:47 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/24 22:46:47 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/24 22:46:47 provision: dry-run: would converge owned.go.tito.io seed
2026/10/24 22:46:47 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/24 22:46:48 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:46:48 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/24 22:46:48 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/24 22:46:48 provision: converged owned.go.tito.io channel stable -> edge
2026/10/24 22:46:48 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/24 22:46:48 provision: converged owned.go.tito.io hibernate false -> true
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/24 22:46:48 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/24 22:46:48 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: removed retired static route site.go.tito.io (record gone)
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/24 22:46:48 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/24 22:46:48 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 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 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:48 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 22:46:48 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 22:46:48 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:46:48 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 22:46:48 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/24 22:46:48 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:46:48 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 22:46:48 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 22:46:48 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 22:46:48 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/24 22:46:48 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/24 22:46:48 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:46:48 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 22:46:48 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 22:46:48 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 22:46:48 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/24 22:46:48 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/24 22:46:48 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:48 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 22:46:48 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:48 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 22:46:48 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:48 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 22:46:48 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:48 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/24 22:46:49 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:49 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:46:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:49 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:46:49 provision: minted sidecar route bot.shop.bac.sidecar.internal (app "shop" acct "bac" args ["run"])
2026/10/24 22:46:49 provision: removed retired sidecar route bot.shop.bac.sidecar.internal (record gone)
2026/10/24 22:46:49 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 22:46:49 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 22:46:49 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 22:46:49 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 22:46:49 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 22:46:49 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 22:46:49 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 22:46:49 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 22:46:49 provision: a.shop.example.com: swapped for import sd_j4iakkft6fqw5privohxsz5dju (the original route is journaled)
2026/10/24 22:46:49 provision: a.shop.example.com: import sd_j4iakkft6fqw5privohxsz5dju committed: its gate is cleared and its journal row dropped
2026/10/24 22:46:49 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 22:46:50 provision: a.shop.example.com: import sd_ekldikl2xti6p4raiv34sv4yxq rolled back to its original route
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_ekldikl2xti6p4raiv34sv4yxq: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_ekldikl2xti6p4raiv34sv4yxq is cleaned up and its journal row retired
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_frepqpav7me7rncjq5yskav4ly rolled back to its original route
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_frepqpav7me7rncjq5yskav4ly: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_frepqpav7me7rncjq5yskav4ly is cleaned up and its journal row retired
2026/10/24 22:46:50 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_g7kvr4t5wnktgu6yw57iq52tai
2026/10/24 22:46:50 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/24 22:46:50 provision: dry-run: would converge a.shop.example.com seed source
2026/10/24 22:46:50 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 22:46:50 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 22:46:50 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 22:46:50 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 22:46:50 provision: a.shop.example.com: import sd_fzyg4ywjulknnwhvsm425sncqa cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_xbdwydkee4fomgpwzhrshetzh4 cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_5wwi57ga7rqhvp2iudmav5iixu is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_pzhy3cy2u4zohij2gkllnft6ye is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_sntads2wwy56cy63vvd5ilabpq is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 22:46:50 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 22:46:50 provision: b.shop.example.com: import sd_penn7k7j3srxaq55s5ha3micoi left alone this pass: the import journal could not be read
2026/10/24 22:46:50 provision: c.shop.example.com: import sd_4gg6z5s3ad3hfimenez5ptijcy left alone this pass: the import journal could not be read
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_bqtr2uiez3zulf2tlrzdj73o4m committed: its gate is cleared and its journal row dropped
2026/10/24 22:46:50 provision: a.shop.example.com: not converging import sd_oql6y5usf7ni3shatodk7fqnfy: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 22:46:50 provision: a.shop.example.com: not converging import sd_rcwgk4lyg2h22fmaip5lksvhze: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 22:46:50 provision: a.shop.example.com: not converging import sd_xya5mdwkpqu52lnk2qgarzf6ve: it is placed but not committed, and the row on this box has no import gate
2026/10/24 22:46:50 provision: a.shop.example.com: not converging import sd_vfw3hkjyaqn2wh2we4ia2brtxu: it is placed but not committed, and the row on this box has no import gate
2026/10/24 22:46:50 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 22:46:50 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/24 22:46:50 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 22:46:50 provision: a.shop.example.com: import sd_3m6tn2oft3wnvmkce2wfp5vmr4 committed: its gate is cleared and its journal row dropped
2026/10/24 22:46:50 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 22:46:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:50 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 22:46:50 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/24 22:46:50 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_elx2qeumpsbhp3ahyychyf5zmi: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_elx2qeumpsbhp3ahyychyf5zmi rolled back (no box had swapped it)
2026/10/24 22:46:50 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/24 22:46:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:50 provision: removed instance route acme.go.tito.io (its seed sd_esyh36eg3fvevke2tn6rp67n7m was aborted); the next pass rolls it back
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_esyh36eg3fvevke2tn6rp67n7m: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_esyh36eg3fvevke2tn6rp67n7m rolled back (no box had swapped it)
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_5k7loruhpgq2pziz2exjtxxoke has a row this pass may not remove; leaving the seed aborted
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_gx32vyqrba7po4bbq7agxorcnu rolled back (no box had swapped it)
2026/10/24 22:46:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:50 provision: removed instance route acme.go.tito.io (its seed sd_azvepsgac4gxdcy3tsmiuwkwfy was aborted); the next pass rolls it back
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_azvepsgac4gxdcy3tsmiuwkwfy has no route on this box: its local data is removed
2026/10/24 22:46:50 provision: acme.go.tito.io: aborted seed sd_azvepsgac4gxdcy3tsmiuwkwfy rolled back (no box had swapped it)
2026/10/24 22:46:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:50 provision: a.shop.example.com: swapped for import sd_xuceclupr272gdivvr4fcxi7pu (the original route is journaled)
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_xuceclupr272gdivvr4fcxi7pu rolled back to its original route
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_xuceclupr272gdivvr4fcxi7pu is cleaned up and its journal row retired
2026/10/24 22:46:50 provision: a.shop.example.com: swapped for import sd_g6pbvsrulcfpcwgr7vtwlyps5i (the original route is journaled)
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_g6pbvsrulcfpcwgr7vtwlyps5i rolled back to its original route
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_g6pbvsrulcfpcwgr7vtwlyps5i is cleaned up and its journal row retired
2026/10/24 22:46:50 provision: a.shop.example.com: swapped for import sd_sily5phm5wudbub56a4e3q4bqe (the original route is journaled)
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_sily5phm5wudbub56a4e3q4bqe rolled back to its original route
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_sily5phm5wudbub56a4e3q4bqe: the host's replica is left alone: its record no longer names this seed
2026/10/24 22:46:50 provision: a.shop.example.com: import sd_sily5phm5wudbub56a4e3q4bqe is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_sxjace56n5jzqk636i5ewqocby (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_sxjace56n5jzqk636i5ewqocby rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_sxjace56n5jzqk636i5ewqocby rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_sxjace56n5jzqk636i5ewqocby is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_zyicfvwe2b2wn7uv3f3j5gexfu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_zyicfvwe2b2wn7uv3f3j5gexfu rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_jz4winw2ny7gsulmnaqjyuz6sy (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_jz4winw2ny7gsulmnaqjyuz6sy is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_gxkyw2f6ye3ccfmnbq7uvg7ztm (the original route is journaled)
2026/10/24 22:46:51 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_gxkyw2f6ye3ccfmnbq7uvg7ztm left alone this pass: its record could not be read
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_av4ua4bubjjxnn5jgkrbzijl7i (the original route is journaled)
2026/10/24 22:46:51 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_av4ua4bubjjxnn5jgkrbzijl7i left alone this pass: its record could not be read
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_u2g4shkmcjeymtw6xzs3o574iq (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_u2g4shkmcjeymtw6xzs3o574iq: close the import gate: constraint failed: injected (1811)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_u2g4shkmcjeymtw6xzs3o574iq rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_u2g4shkmcjeymtw6xzs3o574iq is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_dcxkbr2iqrfe5rr62gcf3ntjja (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_dcxkbr2iqrfe5rr62gcf3ntjja: close the import gate: constraint failed: injected (1811)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_dcxkbr2iqrfe5rr62gcf3ntjja rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_dcxkbr2iqrfe5rr62gcf3ntjja is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_f55wnr46ltec77eiipxs34pnre (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_f55wnr46ltec77eiipxs34pnre rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_f55wnr46ltec77eiipxs34pnre rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_f55wnr46ltec77eiipxs34pnre is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_vvbch5rfpgo7zksddpewd72znu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vvbch5rfpgo7zksddpewd72znu rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vvbch5rfpgo7zksddpewd72znu is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_vcln4xlm6h47c2og2bd3mh37zu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vcln4xlm6h47c2og2bd3mh37zu: retire its instance key: injected failure at retire-key
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vcln4xlm6h47c2og2bd3mh37zu rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vcln4xlm6h47c2og2bd3mh37zu is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_fjmxt5sgqst42c4dhiutf556fu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_fjmxt5sgqst42c4dhiutf556fu rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_fjmxt5sgqst42c4dhiutf556fu is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_v4vxq2f4n5gxnbpmyjp7c6apeq (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_v4vxq2f4n5gxnbpmyjp7c6apeq: remove its local data: injected failure at remove-local
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_v4vxq2f4n5gxnbpmyjp7c6apeq rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_v4vxq2f4n5gxnbpmyjp7c6apeq is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_qc3doc3axv2r2gl4ska4ayy2xi (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_qc3doc3axv2r2gl4ska4ayy2xi rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_qc3doc3axv2r2gl4ska4ayy2xi is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_vex4a5eiqemjdalgc45rv4zriu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vex4a5eiqemjdalgc45rv4zriu: remove its local data: injected failure at remove-local-done
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vex4a5eiqemjdalgc45rv4zriu rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vex4a5eiqemjdalgc45rv4zriu is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_2knb4jubdupa4j4ya673u5jlli (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_2knb4jubdupa4j4ya673u5jlli rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_2knb4jubdupa4j4ya673u5jlli is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_n77lwohgxc6xui7l6dhj5tosgi (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_n77lwohgxc6xui7l6dhj5tosgi: restore the original route: constraint failed: injected (1811)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_n77lwohgxc6xui7l6dhj5tosgi rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_n77lwohgxc6xui7l6dhj5tosgi is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_vd5yqjwvh2mwt74wcub2iqwlla (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vd5yqjwvh2mwt74wcub2iqwlla: restore the original route: constraint failed: injected (1811)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vd5yqjwvh2mwt74wcub2iqwlla rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_vd5yqjwvh2mwt74wcub2iqwlla is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_dgxby4wxf2c6ehphyxcaki2psi (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_dgxby4wxf2c6ehphyxcaki2psi is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_kunfncbdty6fia76oi4gj3iosu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_kunfncbdty6fia76oi4gj3iosu rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_kunfncbdty6fia76oi4gj3iosu: delete its snapshot: injected failure at delete-snapshot
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_kunfncbdty6fia76oi4gj3iosu is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_b5qpsamlq2rtnyanlulstkxpsi (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_b5qpsamlq2rtnyanlulstkxpsi rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_b5qpsamlq2rtnyanlulstkxpsi is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_xv2nghmujknv7rbnaoai3h4rqe (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_xv2nghmujknv7rbnaoai3h4rqe rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_xv2nghmujknv7rbnaoai3h4rqe: delete the host's replica: injected failure at delete-replica
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_xv2nghmujknv7rbnaoai3h4rqe is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_nn4voscy7amr3cclti7emmscva (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_nn4voscy7amr3cclti7emmscva rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_nn4voscy7amr3cclti7emmscva is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_zcg7udlxwrxora3hopqtqqvmpu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_zcg7udlxwrxora3hopqtqqvmpu rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_zcg7udlxwrxora3hopqtqqvmpu: retire its journal row: constraint failed: injected (1811)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_zcg7udlxwrxora3hopqtqqvmpu is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_3hgi3pmfjp65cd2nolqt3f6z3q (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_3hgi3pmfjp65cd2nolqt3f6z3q rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_3hgi3pmfjp65cd2nolqt3f6z3q: retire its journal row: constraint failed: injected (1811)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_3hgi3pmfjp65cd2nolqt3f6z3q is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_56l4njxew3micngxdinwo6nmti (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_56l4njxew3micngxdinwo6nmti rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_56l4njxew3micngxdinwo6nmti is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: mark import sd_56l4njxew3micngxdinwo6nmti rolled back: injected failure at cas
2026/10/24 22:46:51 provision: a.shop.example.com: aborted seed sd_56l4njxew3micngxdinwo6nmti rolled back (no box had swapped it)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_q7onjqf46yeghxdcfqnmdt4tju (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_q7onjqf46yeghxdcfqnmdt4tju rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_q7onjqf46yeghxdcfqnmdt4tju is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: aborted seed sd_q7onjqf46yeghxdcfqnmdt4tju rolled back (no box had swapped it)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_c4syehezhvyd2vzfofececa2xi (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_c4syehezhvyd2vzfofececa2xi rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_c4syehezhvyd2vzfofececa2xi rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_c4syehezhvyd2vzfofececa2xi rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_c4syehezhvyd2vzfofececa2xi is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_kuclswaqbln7c2ess66c5y4xw4 (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_kuclswaqbln7c2ess66c5y4xw4 rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_kuclswaqbln7c2ess66c5y4xw4 is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_q2mg52csi7ajdebfoldul6pkba (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_q2mg52csi7ajdebfoldul6pkba rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_q2mg52csi7ajdebfoldul6pkba is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_32o6hsb5vkbkvoqbok3d4gk43y (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_32o6hsb5vkbkvoqbok3d4gk43y rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_32o6hsb5vkbkvoqbok3d4gk43y is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_yxr3auzv2eezomkpuwff3lrfba (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_yxr3auzv2eezomkpuwff3lrfba rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_yxr3auzv2eezomkpuwff3lrfba is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_lwt543tljqesjrwxl4g6lqdtri (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_lwt543tljqesjrwxl4g6lqdtri rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_lwt543tljqesjrwxl4g6lqdtri is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_ttnffwxgx3gjlhksr67e4mz2ve (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_ttnffwxgx3gjlhksr67e4mz2ve rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_ttnffwxgx3gjlhksr67e4mz2ve is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_v3ziesardjydwzbm7sd5bdnaim (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_v3ziesardjydwzbm7sd5bdnaim rolled back to its original route
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_v3ziesardjydwzbm7sd5bdnaim is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_4427vfxfzqnlszvs6637fnbvvi (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_4427vfxfzqnlszvs6637fnbvvi has no route on this box: its local data is removed and no route is put back
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_4427vfxfzqnlszvs6637fnbvvi is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_e4t7kyl25heqhesmhndtd3mhai (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_aedktc3etgiuz4sqnunapis7va (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_ix6qukktwsqrvromwatyecxmja (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_ix6qukktwsqrvromwatyecxmja cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_yig7dy3q7ar4jkhi7bx3cq4plu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_yig7dy3q7ar4jkhi7bx3cq4plu is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/24 22:46:51 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 22:46:51 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_5zjo6tw36fzhgvwful4fvyj7ny (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_ltkkjz55hylete2gpvgnqvimc4 (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_zbwmpobsqkpmnxuqi63gs3k4dm (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_kkui4iknph62zkmg7tcw66qzku (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_tsjfzbapds3z5kum4h5xe3m724 (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_tsjfzbapds3z5kum4h5xe3m724 rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_bqhwlbce6t56uj456lub25tcrq (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_bqhwlbce6t56uj456lub25tcrq has no route on this box: its local data is removed and no route is put back
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_bqhwlbce6t56uj456lub25tcrq is cleaned up and its journal row retired
2026/10/24 22:46:51 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_cukaqedtpnbxii35pdkndtloeu (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_cukaqedtpnbxii35pdkndtloeu: remove its local data: injected failure at remove-local
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_cukaqedtpnbxii35pdkndtloeu is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_w6szqcxr3ha4gqznkmjgjjyppy (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_w6szqcxr3ha4gqznkmjgjjyppy: a route appeared at the host, so its local database is left and the rollback waits
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_mp4iwjjcaw55srzueokex7gp5i (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_mp4iwjjcaw55srzueokex7gp5i rollback deferred: no fence generation: registry busy
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_lrmw5ft2uooblz7ogwgdlwafui (the original route is journaled)
2026/10/24 22:46:51 provision: a.shop.example.com: import sd_lrmw5ft2uooblz7ogwgdlwafui rollback deferred: no fence generation: the generation source answered 0
2026/10/24 22:46:51 provision: a.shop.example.com: swapped for import sd_lworpcnqex7thg3km52ru2ksgq (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_5udt3mr2sckw5bcxz7kiujwgda (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_6e3spg2jqufueikdor2eiwys7i (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/24 22:46:52 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_3zzmxzwozxbiwabbdtrt33zaay (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_3zzmxzwozxbiwabbdtrt33zaay rolled back to its original route
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_3zzmxzwozxbiwabbdtrt33zaay is cleaned up and its journal row retired
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_23majkw7wftlvaivvgdhm2ukdq (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_23majkw7wftlvaivvgdhm2ukdq rolled back to its original route
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_23majkw7wftlvaivvgdhm2ukdq is cleaned up and its journal row retired
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_plmj2exgksrrubkqfwuobmue7q (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_plmj2exgksrrubkqfwuobmue7q rolled back to its original route
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_plmj2exgksrrubkqfwuobmue7q is cleaned up and its journal row retired
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_pjmy4x5r2thtycnzscpksi4aou (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_pjmy4x5r2thtycnzscpksi4aou: retire its instance key: the env file is a symlink
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_pjmy4x5r2thtycnzscpksi4aou rolled back to its original route
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_pjmy4x5r2thtycnzscpksi4aou is cleaned up and its journal row retired
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_tkmnjx773x7j6fnjf5cmx6os5u (the original route is journaled)
2026/10/24 22:46:52 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 22:46:52 provision: a.shop.example.com: swapped for import sd_qh7akhaed5ax4px253bujaj4xi (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_eegdbx5vh4apc2loyomrdzhhvm refused: there is no route at a.shop.example.com to replace
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_g2vlxgynxvclufldk62gedewum refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_xq4ofgyhzmra6grcfr4my5qhfe 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 22:46:52 provision: a.shop.example.com: import sd_adqsymw3eu3l7jy2ipcuwow25m refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_7pp5pi23yxc5bk5jbvty6yq67e refused: the route belongs to app other
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_voos3km4rz76tmpfjvm2wkuqsq refused: the route is filed under another account
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_cb5k7l72rmi47qlrovncz4xyuu refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_6vgnzkjfib7wrlunnts2d5j2zy refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_rjsnjrj5zcveehjcfnh4u6erj4 refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_4wjwqy5xhockhci7333ixxoxsm refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_wtdm5h7infuwcldhqcp6flunqa refused: the route is not an address route this import can take over (socket)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_7ri7s7ldluokbrvqvvgds67yh4 refused: the route is not an address route this import can take over (no address)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_x3iwlzjt5myiwd656gvim4brjq refused: the route is not an address route this import can take over (provisioned)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_tcuaoybfgerxbemrhyodehsmlu refused: the route is not an address route this import can take over (kind static)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_wwwjulj24efvqa7yimfavrwsyq refused: the route is not an address route this import can take over (backing)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_avnlvkefms4qy7wxistfap6qiu refused: the route is not an address route this import can take over (tunnel)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_po2bedfp5xflj36rqcmvux672y refused: the route is not an address route this import can take over (caps)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_5opw6nr6dfrp3xs4eukiyd2jfm refused: the route is not an address route this import can take over (platform)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_jy3zokm5o7fw6onz6kpadpuyxq refused: the route is not an address route this import can take over (canary)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_yrtxzxp7mbrl7rvnuqh3birkiu refused: the route is not an address route this import can take over (kind sidecar)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_blxaufbnovoklw4jp7trujnf3i refused: the route is not an address route this import can take over (region)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_4fir4as6wszkbhbtp3nos2dmdm refused: the route is not an address route this import can take over (fleet_box)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_vw44ekh27kosg6qhvdboc3hf6a refused: the route is not an address route this import can take over (hibernate)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_hxm42mtomxo2oqia5pcu4qvisa refused: the route is not an address route this import can take over (claim_owner)
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_x7sbmyuyozlp2lvjy77iqf7i6a refused: this box does not run instances nested
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_xifbhbnvf75u3yibzpt2orv5eu refused: this box does not run instances nested
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_sb3qbejcqrmdnwlgawsqfkw5dq refused: claim control is on for this box
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_4eu5xlc6d6dv3o6t6izzn3glda (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_xgcaldiw6fhlqbnqzpqexuwywa (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/24 22:46:52 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/24 22:46:52 provision: a.shop.example.com: not swapping for import sd_2bgoq4ixxzcnrba22hyx7rdwzu: its verify hash is not a sha256
2026/10/24 22:46:52 provision: a.shop.example.com: not swapping for import sd_zgnaau2cuqazvulwngbn4zwakq: its verify hash is not a sha256
2026/10/24 22:46:52 provision: a.shop.example.com: not swapping for import sd_3rqqwlj6hk2x7wwk4pruujchvi: its verify hash is not a sha256
2026/10/24 22:46:52 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 22:46:52 provision: A.shop.example.com/..: not swapping for import sd_fnkxckxl7g4caidnknp6acsiqe: its host or seed id is malformed (seeds: not a host)
2026/10/24 22:46:52 provision: a.shop.example.com: not swapping for import sd_jkzfrvudlzsel32k3rqhgzf2n4: its record does not describe a nested, hibernating instance
2026/10/24 22:46:52 provision: a.shop.example.com: not swapping for import sd_qkjwm67puzwnfkyfprnbhtsmcu: its record does not describe a nested, hibernating instance
2026/10/24 22:46:52 provision: a.shop.example.com: not swapping for import sd_ge2bcpz2sxgub5gn5efrgxa2eu: its record does not describe a nested, hibernating instance
2026/10/24 22:46:52 provision: a.shop.example.com: not swapping for import sd_xiqrfjuga22srfy2lga4x3yh34: its record does not describe a nested, hibernating instance
2026/10/24 22:46:52 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_62rm7ii4ec5je65m6kbvlkabpm (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_4icuq7hmwumunhy5javyqo4usu (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_75ey7wsenipgf2w3gdb5wjyniy (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/24 22:46:52 provision: dry-run: would consider swapping a.shop.example.com for import sd_wpiycmhqkbz6b7me4svyjzxkca
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_6og2yha3yqzja3lovdebhbcb2u rolled back to its original route
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_6og2yha3yqzja3lovdebhbcb2u: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_6og2yha3yqzja3lovdebhbcb2u is cleaned up and its journal row retired
2026/10/24 22:46:52 provision: a.shop.example.com: import sd_iegy4hamstf6pg2ftg54b3mpva left alone: the import journal holds seed sd_hrls373ktpkar76hof245hm22q at swapped
2026/10/24 22:46:52 provision: a.shop.example.com: not minting import sd_qvpjff3noowfamj63524oe3d5q: it is swapped but not committed, and only its swap makes its row
2026/10/24 22:46:52 provision: a.shop.example.com: not minting import sd_3u4xzpinvfvvt7fmyqwr2vsox4: it is placed but not committed, and only its swap makes its row
2026/10/24 22:46:52 provision: a.shop.example.com: swapped for import sd_yvxsmrspt4n2mr3o3tnr2v5o4i (the original route is journaled)
2026/10/24 22:46:52 provision: a.shop.example.com: not minting import sd_yvxsmrspt4n2mr3o3tnr2v5o4i: it is swapped but not committed, and only its swap makes its row
2026/10/24 22:46:52 provision: a.shop.example.com: not minting import sd_yvxsmrspt4n2mr3o3tnr2v5o4i: it is placed but not committed, and only its swap makes its row
2026/10/24 22:46:52 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:46:52 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:46:52 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:52 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:52 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/24 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/24 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/24 22:46:53 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/24 22:46:53 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/24 22:46:53 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/24 22:46:53 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/24 22:46:53 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 22:46:53 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/24 22:46:53 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/24 22:46:53 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 22:46:53 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:46:53 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/24 22:46:53 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/24 22:46:53 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 22:46:53 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 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/24 22:46:53 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 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 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 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 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 22:46:53 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 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 22:46:53 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/24 22:46:53 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 22:46:53 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:46:53 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/24 22:46:53 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:46:53 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 22:46:53 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:53 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/24 22:46:53 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:53 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:53 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 22:46:53 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 22:46:53 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 22:46:53 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:46:53 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 22:46:53 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 22:46:53 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 22:46:53 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 22:46:53 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:46:53 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:46:53 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:46:53 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:46:53 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: listing apps/bqc/shop/instances/: context canceled — its records are unseen this pass
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: record view: change index unusable (release: change index malformed: invalid character 'n' looking for beginning of object key string): walking
2026/10/24 22:46:53 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 22:46:53 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 22:46:53 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 22:46:53 provision: an app's records could not be listed: they are skipped
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: record view: change index unusable (get refused): walking
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 22:46:53 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 22:46:53 provision: record view: re-reading accounts/bqd failed: retrying on the next refresh
2026/10/24 22:46:53 provision: skipping accounts/bqd/account.json: read failed: list refused
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 22:46:53 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 22:46:53 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 22:46:53 provision: removed retired instance route one.example.com (record gone)
2026/10/24 22:46:53 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 22:46:53 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 22:46:53 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 22:46:53 provision: removed retired instance route one.example.com (record gone)
2026/10/24 22:46:53 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 22:46:53 provision: record view: change index unusable (context deadline exceeded): walking
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:46:53 provision: record view: change index unusable (context deadline exceeded): the walk records no generations
2026/10/24 22:46:53 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
--- FAIL: TestPlan14RootReadCensus (14.52s)
plan14_root_reads_test.go:600: root read census: 45 discrepancies
changed root read internal/console/apicli.go:Server.handleAPIShip; review class, task, sites and digest
changed root read internal/hostops/mutation_boundary_putfrom.go:conditionalRecordStore.PutFrom; review class, task, sites and digest
changed root read internal/hostops/mutation_boundary_putfrom.go:mutationBoundary.PutFrom; review class, task, sites and digest
changed root source envelope .
changed root source envelope internal/console
changed root source envelope internal/hostops
changed root source envelope internal/release
changed root source envelope internal/rootfsimage
unclassified root read internal/console/apiship_rootfs.go:shipBody.Read file:Read@19,file:Read@398
unclassified root read internal/console/apiship_rootfs.go:spoolRootfsPart file:OpenFile@114
unclassified root read internal/release/rootfs.go:type Process file:Command@23
unclassified root read internal/release/rootfs.go:validateProcess file:Command@242,file:Command@61,file:Command@80
unclassified root read internal/release/rootfs_ship.go:hashSpooledFile file:Open@70
unclassified root read internal/release/rootfs_ship.go:putImmutableFrom file:Open@106
unclassified root read internal/rootfsimage/archive.go:OpenArchive file:Open@226,file:Stat@73
unclassified root read internal/rootfsimage/dir.go:readDir file:EvalSymlinks@123,file:Readlink@1719,file:Stat@193,file:WalkDir@757
unclassified root read internal/rootfsimage/errors.go:CommandError.Error file:Command@237
unclassified root read internal/rootfsimage/errors.go:type CommandError file:Command@35
unclassified root read internal/rootfsimage/flatten.go:boundedReader.Read file:Read@205,file:Read@24
unclassified root read internal/rootfsimage/framework.go:FillConsole file:Command@897
unclassified root read internal/rootfsimage/oci.go:OpenLayout file:OpenRoot@66
unclassified root read internal/rootfsimage/oci.go:layoutStore.has file:Stat@57
unclassified root read internal/rootfsimage/oci.go:layoutStore.open file:Open@345,file:Stat@116,file:Stat@449
unclassified root read internal/rootfsimage/oci.go:ociReader.readBlob file:ReadAll@161
unclassified root read internal/rootfsimage/oci.go:readFile file:ReadAll@279
unclassified root read internal/rootfsimage/oci.go:verifier.Read file:Read@102,file:Read@19
unclassified root read internal/rootfsimage/processes.go:ApplyImageConfig file:Command@549,file:Command@574
unclassified root read internal/rootfsimage/processes.go:ResolveCommands file:Command@171,file:Command@230,file:Command@239
unclassified root read internal/rootfsimage/processes.go:jitOf file:Command@56
unclassified root read internal/rootfsimage/processes.go:shebangRuntime file:Open@60
unclassified root read internal/rootfsimage/progarch.go:Tree.head file:Open@60
unclassified root read internal/rootfsimage/squashfs.go:treeFS.Lstat file:Lstat@16,file:Stat@65
unclassified root read internal/rootfsimage/squashfs.go:treeFS.Open file:Open@16,file:ReadFile@204
unclassified root read internal/rootfsimage/squashfs.go:treeFS.ReadDir file:ReadDir@16
unclassified root read internal/rootfsimage/squashfs.go:treeFS.ReadFile file:Open@139,file:Read@461,file:ReadFile@16
unclassified root read internal/rootfsimage/squashfs.go:treeFS.Stat file:Stat@16
unclassified root read internal/rootfsimage/squashfs.go:treeFile.Read file:Read@19
unclassified root read internal/rootfsimage/squashfs.go:treeFile.Stat file:Stat@19
unclassified root read internal/rootfsimage/squashfs.go:writeSquashfs file:Stat@1987
unclassified root read internal/rootfsimage/tree.go:Open file:Open@5,file:Stat@154,file:Stat@58
unclassified root read internal/rootfsimage/tree.go:Tree.Open file:Open@15,file:Open@165
unclassified root read internal/rootfsimage/tree.go:Tree.writeBlob file:OpenFile@285
changed legacy declaration internal/console/apicli.go:Server.handleAPIShip
changed legacy declaration internal/hostops/mutation_boundary_putfrom.go:conditionalRecordStore.PutFrom
changed legacy declaration internal/hostops/mutation_boundary_putfrom.go:mutationBoundary.PutFrom
make census-card shows what changed; make census-propose NAME=<branch> CLAIMS=<file> writes the overlay and its approval card (AGENTS.md, The census)
FAIL
FAIL github.com/carlosframework/platform/internal/provision 23.272s
ok github.com/carlosframework/platform/internal/publicrelease 0.010s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 5.549s
ok github.com/carlosframework/platform/internal/relay 4.221s
ok github.com/carlosframework/platform/internal/release 26.671s
ok github.com/carlosframework/platform/internal/rollout 3.826s
ok github.com/carlosframework/platform/internal/rolloutwords 0.005s
ok github.com/carlosframework/platform/internal/rootaws 0.011s
ok github.com/carlosframework/platform/internal/rootfsimage 0.288s
ok github.com/carlosframework/platform/internal/rootparticipation 0.061s
ok github.com/carlosframework/platform/internal/rootstate 0.030s
ok github.com/carlosframework/platform/internal/runs 0.565s
ok github.com/carlosframework/platform/internal/s3compat 0.015s
ok github.com/carlosframework/platform/internal/safefile 0.004s
ok github.com/carlosframework/platform/internal/schedule 2.663s
ok github.com/carlosframework/platform/internal/seeds 0.015s
ok github.com/carlosframework/platform/internal/sim/engines 2.544s
ok github.com/carlosframework/platform/internal/sim/hostlife 10.228s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 3.506s
ok github.com/carlosframework/platform/internal/status 0.088s
ok github.com/carlosframework/platform/internal/steering 0.006s
ok github.com/carlosframework/platform/internal/stopevidence 0.323s
ok github.com/carlosframework/platform/internal/svcrole 0.002s
ok github.com/carlosframework/platform/internal/telemetry 0.004s
ok github.com/carlosframework/platform/internal/termfence 0.004s
ok github.com/carlosframework/platform/internal/tunnelclient 0.004s
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.004s
ok github.com/carlosframework/platform/internal/vet 1.701s
FAIL
=== internal_console@0 (79 s)
ok github.com/carlosframework/platform/internal/console 76.955s
=== internal_console@1 (41 s)
ok github.com/carlosframework/platform/internal/console 39.185s
=== internal_console@2 (38 s)
ok github.com/carlosframework/platform/internal/console 36.192s
=== internal_console@3 (43 s)
ok github.com/carlosframework/platform/internal/console 40.579s
=== internal_console@4 (44 s)
ok github.com/carlosframework/platform/internal/console 42.434s
=== internal_console@5 (44 s)
ok github.com/carlosframework/platform/internal/console 42.487s
=== internal_console@6 (39 s)
ok github.com/carlosframework/platform/internal/console 37.135s
=== internal_console@7 (50 s)
ok github.com/carlosframework/platform/internal/console 47.747s
=== root@0 (105 s)
ok github.com/carlosframework/platform 103.034s
=== root@1 (82 s)
ok github.com/carlosframework/platform 80.095s
=== root@2 (98 s)
ok github.com/carlosframework/platform 96.423s
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/internal/console/apicli.go b/internal/console/apicli.go| index 205e88cd2..4cc845d28 100644 |
| --- a/internal/console/apicli.go |
| +++ b/internal/console/apicli.go |
| @@ -22,6 +22,7 @@ import ( |
| "net/url" |
| "regexp" |
| "strings" |
| + "sync" |
| "time" |
| "github.com/carlosframework/platform/internal/caps" |
| @@ -1906,7 +1907,6 @@ func (s *Server) handleAPIShip(w http.ResponseWriter, r *http.Request) { |
| // queues indefinitely behind someone else's slow upload. |
| select { |
| case s.shipSem <- struct{}{}: |
| - defer func() { <-s.shipSem }() |
| default: |
| // Seconds, not the budget window: this refusal clears as soon as an |
| // upload in flight finishes, which is a different and much shorter |
| @@ -1916,6 +1916,12 @@ func (s *Server) handleAPIShip(w http.ResponseWriter, r *http.Request) { |
| jsonError(w, http.StatusTooManyRequests, "another ship is in progress — try again shortly") |
| return |
| } |
| + // The slot is given back once, whichever comes first: the handler's |
| + // return, or a rootfs ship that holds its scratch reservation, which |
| + // bounds rootfs uploads by itself (one per app, two in all) and may |
| + // then run for over an hour (shipRootfsParts). |
| + releaseShip := sync.OnceFunc(func() { <-s.shipSem }) |
| + defer releaseShip() |
| if s.shipStarted != nil { |
| s.shipStarted <- struct{}{} |
| } |
| @@ -2101,7 +2107,7 @@ func (s *Server) handleAPIShip(w http.ResponseWriter, r *http.Request) { |
| } |
| if rootfs { |
| s.shipRootfsParts(w, r, mr, shipRootfsReq{addr: addr, acct: acct, app: app, ver: ver, |
| - message: message, meta: meta, procs: procs}) |
| + message: message, meta: meta, procs: procs, releaseShip: releaseShip}) |
| return |
| } |
| maxParts := apiShipMaxPartsBinary |
diff --git a/internal/console/apiship_rootfs.go b/internal/console/apiship_rootfs.go| index 05e43f82a..0084be352 100644 |
| --- a/internal/console/apiship_rootfs.go |
| +++ b/internal/console/apiship_rootfs.go |
| @@ -155,13 +155,15 @@ func shipKindRefusedAtPublication(w http.ResponseWriter, err error) bool { |
| // shipRootfsReq is what handleAPIShip has settled when it hands a rootfs |
| // release to shipRootfsParts: the caller, the app, the version, the meta |
| -// and its decoded processes. |
| +// and its decoded processes, and the release of the request's shipSem |
| +// slot (safe to call more than once). |
| type shipRootfsReq struct { |
| addr string |
| acct *Account |
| app, ver, message string |
| meta shipMeta |
| procs map[string]release.Process |
| + releaseShip func() |
| } |
| // shipRootfsParts reads a rootfs release's one part, the image, into the |
| @@ -187,6 +189,11 @@ func (s *Server) shipRootfsParts(w http.ResponseWriter, r *http.Request, mr *mul |
| return |
| } |
| defer free() |
| + // The reservation bounds rootfs uploads from here on: one per app and |
| + // two across the console. Holding a shipSem slot as well, through an |
| + // upload of up to an hour, would turn every other account's ship away |
| + // for as long. |
| + req.releaseShip() |
| dir, err := os.MkdirTemp(s.seedScratch.dir(), seedScratchPrefix) |
| if err != nil { |
| log.Printf("console: api ship %s/%s: scratch: %v", acct.Sqid, app, err) |
diff --git a/internal/console/apiship_rootfs_test.go b/internal/console/apiship_rootfs_test.go| index d4640edee..e05924d61 100644 |
| --- a/internal/console/apiship_rootfs_test.go |
| +++ b/internal/console/apiship_rootfs_test.go |
| @@ -275,21 +275,21 @@ func TestAPIShipFirstShipsOfTwoKindsAtOnce(t *testing.T) { |
| key: release.AppKindMarkerKey("bab", "shop"), open: make(chan struct{})} |
| bin := randomBytes(t, 4<<10) |
| img := randomBytes(t, 64<<10) |
| - type answer struct { |
| - status int |
| - out map[string]any |
| + bodies := [2][]shipPart{ |
| + {metaPart(t, "0.1.0-1", "binary"), {name: "linux-arm64", body: bin}}, |
| + {rootfsMeta(t, "0.1.0-2", len(img), false), {name: "rootfs-linux-arm64", body: img}}, |
| } |
| - var ans [2]answer |
| + var ans [2]uploadResult |
| var wg sync.WaitGroup |
| - wg.Go(func() { |
| - s, o := postShip(t, fx.url("shop"), fx.token, []shipPart{metaPart(t, "0.1.0-1", "binary"), {name: "linux-arm64", body: bin}}) |
| - ans[0] = answer{s, o} |
| - }) |
| - wg.Go(func() { |
| - s, o := postShip(t, fx.url("shop"), fx.token, []shipPart{rootfsMeta(t, "0.1.0-2", len(img), false), {name: "rootfs-linux-arm64", body: img}}) |
| - ans[1] = answer{s, o} |
| - }) |
| + for i := range bodies { |
| + wg.Go(func() { ans[i] = postShipErr(fx.url("shop"), fx.token, bodies[i]) }) |
| + } |
| wg.Wait() |
| + for _, a := range ans { |
| + if a.err != nil { |
| + t.Fatalf("ship: %v", a.err) |
| + } |
| + } |
| if t.Failed() { |
| t.FailNow() |
| } |
| @@ -693,3 +693,184 @@ func TestAPIShipInvalidKindNamesRootfs(t *testing.T) { |
| status, out := postShip(t, fx.url("shop"), fx.token, []shipPart{metaPart(t, "0.1.0-1", "oci"), {name: "linux-arm64", body: randomBytes(t, 1024)}}) |
| wantRefusal(t, "oci", status, out, http.StatusBadRequest, `invalid kind (want "binary", "static" or "rootfs")`) |
| } |
| + |
| +// uploadResult is a ship's answer, or the error that stopped it, as a |
| +// goroutine reports it: only the test goroutine may fail the test. |
| +type uploadResult struct { |
| + status int |
| + out map[string]any |
| + err error |
| +} |
| + |
| +// postShipErr is postShip for a goroutine. |
| +func postShipErr(u, bearer string, parts []shipPart) uploadResult { |
| + var buf bytes.Buffer |
| + mw := multipart.NewWriter(&buf) |
| + for _, p := range parts { |
| + fw, err := mw.CreateFormFile(p.name, p.name) |
| + if err != nil { |
| + return uploadResult{err: err} |
| + } |
| + if _, err := fw.Write(p.body); err != nil { |
| + return uploadResult{err: err} |
| + } |
| + } |
| + if err := mw.Close(); err != nil { |
| + return uploadResult{err: err} |
| + } |
| + return doShip(u, bearer, &buf, mw.FormDataContentType()) |
| +} |
| + |
| +func doShip(u, bearer string, body io.Reader, contentType string) uploadResult { |
| + req, err := http.NewRequest(http.MethodPost, u, body) |
| + if err != nil { |
| + return uploadResult{err: err} |
| + } |
| + req.Header.Set("Content-Type", contentType) |
| + req.Header.Set("Authorization", "Bearer "+bearer) |
| + res, err := (&http.Client{Timeout: 60 * time.Second}).Do(req) |
| + if err != nil { |
| + return uploadResult{err: err} |
| + } |
| + defer res.Body.Close() |
| + raw, err := io.ReadAll(res.Body) |
| + out := map[string]any{} |
| + _ = json.Unmarshal(raw, &out) |
| + return uploadResult{status: res.StatusCode, out: out, err: err} |
| +} |
| + |
| +// rootfsUpload is a rootfs ship held mid-image: the meta and the first half |
| +// of the image are sent, and the rest waits for finish or abort. |
| +type rootfsUpload struct { |
| + pw *io.PipeWriter |
| + finish chan struct{} |
| + done chan uploadResult |
| +} |
| + |
| +func startRootfsUpload(t *testing.T, f rootfsShipFx, app, ver string, img []byte) *rootfsUpload { |
| + t.Helper() |
| + meta := rootfsMeta(t, ver, len(img), false) |
| + pr, pw := io.Pipe() |
| + mw := multipart.NewWriter(pw) |
| + u := &rootfsUpload{pw: pw, finish: make(chan struct{}), done: make(chan uploadResult, 1)} |
| + go func() { |
| + err := func() error { |
| + fw, err := mw.CreateFormFile(meta.name, meta.name) |
| + if err == nil { |
| + _, err = fw.Write(meta.body) |
| + } |
| + if err == nil { |
| + fw, err = mw.CreateFormFile(release.RootfsArtifactKey, release.RootfsArtifactKey) |
| + } |
| + if err == nil { |
| + _, err = fw.Write(img[:len(img)/2]) |
| + } |
| + if err != nil { |
| + return err |
| + } |
| + <-u.finish |
| + if _, err := fw.Write(img[len(img)/2:]); err != nil { |
| + return err |
| + } |
| + return mw.Close() |
| + }() |
| + pw.CloseWithError(err) |
| + }() |
| + go func() { u.done <- doShip(f.url(app), f.token, pr, mw.FormDataContentType()) }() |
| + return u |
| +} |
| + |
| +// complete sends the rest of the image and returns the answer. |
| +func (u *rootfsUpload) complete() uploadResult { |
| + close(u.finish) |
| + return <-u.done |
| +} |
| + |
| +// abort is the client going away mid-image. |
| +func (u *rootfsUpload) abort() uploadResult { |
| + u.pw.CloseWithError(errors.New("the client went away")) |
| + close(u.finish) |
| + return <-u.done |
| +} |
| + |
| +// waitFor polls cond for up to 10 s. |
| +func waitFor(t *testing.T, what string, cond func() bool) { |
| + t.Helper() |
| + for deadline := time.Now().Add(10 * time.Second); !cond(); { |
| + if time.Now().After(deadline) { |
| + t.Fatalf("timed out waiting for %s", what) |
| + } |
| + time.Sleep(10 * time.Millisecond) |
| + } |
| +} |
| + |
| +// spooling reports how many uploads have started writing their image into |
| +// the scratch. |
| +func (f rootfsShipFx) spooling() int { |
| + ents, _ := os.ReadDir(f.fx.srv.seedScratch.dir()) |
| + n := 0 |
| + for _, e := range ents { |
| + if st, err := os.Stat(filepath.Join(f.fx.srv.seedScratch.dir(), e.Name(), release.RootfsArtifactFile)); err == nil && st.Size() > 0 { |
| + n++ |
| + } |
| + } |
| + return n |
| +} |
| + |
| +// waitIdle waits for every ship to give back its slot and its scratch. |
| +func (f rootfsShipFx) waitIdle(t *testing.T) { |
| + t.Helper() |
| + waitFor(t, "the ship slots", func() bool { return len(f.fx.srv.shipSem) == 0 }) |
| + waitFor(t, "the scratch to empty", func() bool { |
| + ents, _ := os.ReadDir(f.fx.srv.seedScratch.dir()) |
| + return len(ents) == 0 |
| + }) |
| +} |
| + |
| +// Fix round 1: a rootfs upload gives back its ship slot once it holds its |
| +// scratch reservation, so two long uploads do not turn every other ship |
| +// away, while the reservation still refuses a second upload of the app. |
| +func TestAPIShipRootfsUploadFreesTheShipSlot(t *testing.T) { |
| + fx := rootfsShipFixture(t) |
| + fx.addApp(t, "blog") |
| + fx.addApp(t, "cafe") |
| + img := randomBytes(t, 1<<20) |
| + a := startRootfsUpload(t, fx, "shop", "0.1.0-1", img) |
| + b := startRootfsUpload(t, fx, "blog", "0.1.0-1", img) |
| + waitFor(t, "two uploads to spool", func() bool { return fx.spooling() == 2 }) |
| + |
| + r := postShipErr(fx.url("cafe"), fx.token, []shipPart{metaPart(t, "0.1.0-1", "binary"), {name: "linux-arm64", body: randomBytes(t, 1024)}}) |
| + if r.err != nil || r.status != http.StatusCreated { |
| + t.Fatalf("binary ship beside two rootfs uploads = %d %v %v, want 201", r.status, r.out, r.err) |
| + } |
| + r = postShipErr(fx.url("shop"), fx.token, []shipPart{rootfsMeta(t, "0.1.0-2", len(img), false), {name: "rootfs-linux-arm64", body: img}}) |
| + if r.err != nil { |
| + t.Fatal(r.err) |
| + } |
| + wantRefusal(t, "a second upload of shop", r.status, r.out, http.StatusTooManyRequests, "another copy or upload is running for shop. Try again when it finishes.") |
| + |
| + for app, u := range map[string]*rootfsUpload{"shop": a, "blog": b} { |
| + if r := u.complete(); r.err != nil || r.status != http.StatusCreated { |
| + t.Fatalf("%s upload = %d %v %v, want 201", app, r.status, r.out, r.err) |
| + } |
| + } |
| + fx.waitIdle(t) |
| +} |
| + |
| +// Fix round 1: a client that goes away mid-image leaves no spool, no |
| +// reservation, no ship slot and nothing in the bucket. |
| +func TestAPIShipRootfsClientGoneMidUpload(t *testing.T) { |
| + fx := rootfsShipFixture(t) |
| + img := randomBytes(t, 1<<20) |
| + u := startRootfsUpload(t, fx, "shop", "0.1.0-1", img) |
| + waitFor(t, "the upload to spool", func() bool { return fx.spooling() == 1 }) |
| + if r := u.abort(); r.err == nil && r.status < 400 { |
| + t.Fatalf("aborted upload = %d %v, want a failure", r.status, r.out) |
| + } |
| + fx.waitIdle(t) |
| + fx.assertNothingWritten(t, "shop") |
| + if status, out := postShip(t, fx.url("shop"), fx.token, []shipPart{rootfsMeta(t, "0.1.0-1", len(img), false), {name: "rootfs-linux-arm64", body: img}}); status != http.StatusCreated { |
| + t.Fatalf("ship after the abort = %d %v, want 201", status, out) |
| + } |
| + fx.waitIdle(t) |
| +} |