carlos ratelimit: fan-out truncation, path zero resets, approved -h (#358)
A list cut at the console's record cap now ends the fan-out with the existing instances-list truncation note and a non-zero exit. A zero named in -path resets that field to inherit the base rule. -h on any subcommand prints the approved usage text, with no flag descriptions of its own.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
3 files changed,
+136
−48
instances_cli.go+5 −1ratelimit_cli.go+69 −39ratelimit_cli_test.go+62 −8
CI failed — run details
CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (0 s)
ok amadan.net/carlos/platform.git/launchctx 0.014s
? amadan.net/carlos/platform.git/launchctx/controlname [no test files]
? amadan.net/carlos/platform.git/launchctx/wireid [no test files]
=== vet (17 s)
=== gofmt (0 s)
gofmt -l .: clean
=== rest (169 s)
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 3.623s
ok github.com/carlosframework/platform/cmd/moveprobe 11.959s
ok github.com/carlosframework/platform/cmd/zddprobe 0.772s
ok github.com/carlosframework/platform/internal/activator 57.759s
ok github.com/carlosframework/platform/internal/agentsock 0.047s
ok github.com/carlosframework/platform/internal/alerting 0.007s
ok github.com/carlosframework/platform/internal/analytics 0.031s
ok github.com/carlosframework/platform/internal/appconfig 3.045s
ok github.com/carlosframework/platform/internal/apperr 0.156s
ok github.com/carlosframework/platform/internal/applog 0.305s
ok github.com/carlosframework/platform/internal/awsinv 0.008s
ok github.com/carlosframework/platform/internal/boxchoice 0.014s
ok github.com/carlosframework/platform/internal/boxid 1.077s
? 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.011s
ok github.com/carlosframework/platform/internal/caps 0.026s
ok github.com/carlosframework/platform/internal/certwarm 0.011s
ok github.com/carlosframework/platform/internal/cgroup 0.824s
ok github.com/carlosframework/platform/internal/changelog 0.608s
ok github.com/carlosframework/platform/internal/claimactivation 1.255s
ok github.com/carlosframework/platform/internal/clamd 0.072s
? 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 8.353s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.022s
ok github.com/carlosframework/platform/internal/dbquery 0.016s
ok github.com/carlosframework/platform/internal/dbreads 2.139s
? github.com/carlosframework/platform/internal/dbreads/dbreadstest [no test files]
ok github.com/carlosframework/platform/internal/dbverify 0.010s
ok github.com/carlosframework/platform/internal/dnsrec 0.007s
--- FAIL: TestFenceLanguagesAreDeclared (0.00s)
fences_test.go:32: cli.md:1196: fence declares no language
FAIL
FAIL github.com/carlosframework/platform/internal/docsite 0.014s
ok github.com/carlosframework/platform/internal/domains 2.801s
ok github.com/carlosframework/platform/internal/doorkey 0.014s
ok github.com/carlosframework/platform/internal/economics 0.012s
ok github.com/carlosframework/platform/internal/edge 46.226s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.008s
ok github.com/carlosframework/platform/internal/fleetapi 0.141s
ok github.com/carlosframework/platform/internal/gate 1.658s
ok github.com/carlosframework/platform/internal/genselect 0.015s
ok github.com/carlosframework/platform/internal/geo 0.016s
ok github.com/carlosframework/platform/internal/geoip 0.031s
ok github.com/carlosframework/platform/internal/historyreadback 0.153s
ok github.com/carlosframework/platform/internal/host 141.149s
ok github.com/carlosframework/platform/internal/hostactors 5.933s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.006s
ok github.com/carlosframework/platform/internal/hostbox 2.845s
ok github.com/carlosframework/platform/internal/hostclaim 0.784s
ok github.com/carlosframework/platform/internal/hostenv 0.006s
ok github.com/carlosframework/platform/internal/hostevidence 0.013s
ok github.com/carlosframework/platform/internal/hostexec 5.243s
ok github.com/carlosframework/platform/internal/hostfence 0.052s
ok github.com/carlosframework/platform/internal/hostfiles 10.402s
ok github.com/carlosframework/platform/internal/hostfloor 0.018s
ok github.com/carlosframework/platform/internal/hostguard 1.081s
ok github.com/carlosframework/platform/internal/hostops 1.958s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.015s
ok github.com/carlosframework/platform/internal/hostquarantine 0.013s
ok github.com/carlosframework/platform/internal/hostrelocate 0.639s
ok github.com/carlosframework/platform/internal/hostresolve 0.253s
ok github.com/carlosframework/platform/internal/hostwrite 0.013s
ok github.com/carlosframework/platform/internal/infraview 0.014s
ok github.com/carlosframework/platform/internal/instancectl 5.231s
ok github.com/carlosframework/platform/internal/instanceexec 2.793s
ok github.com/carlosframework/platform/internal/instancefs 0.027s
ok github.com/carlosframework/platform/internal/instancekey 0.014s
ok github.com/carlosframework/platform/internal/instanceupdates 0.013s
ok github.com/carlosframework/platform/internal/layout 1.758s
ok github.com/carlosframework/platform/internal/lbhealth 0.018s
ok github.com/carlosframework/platform/internal/lease 10.207s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.501s
ok github.com/carlosframework/platform/internal/ledger 0.027s
ok github.com/carlosframework/platform/internal/mail 0.264s
ok github.com/carlosframework/platform/internal/maintenance 0.091s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.547s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.088s
ok github.com/carlosframework/platform/internal/metrics 0.008s
ok github.com/carlosframework/platform/internal/moves 22.658s
ok github.com/carlosframework/platform/internal/moves/archive 1.043s
ok github.com/carlosframework/platform/internal/objstore 0.252s
ok github.com/carlosframework/platform/internal/ops 0.245s
ok github.com/carlosframework/platform/internal/park 0.267s
ok github.com/carlosframework/platform/internal/plans 0.006s
ok github.com/carlosframework/platform/internal/privatefile 0.007s
2026/10/24 22:22:28 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/24 22:22:28 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 22:22:28 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 22:22:28 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/24 22:22:28 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 22:22:28 provision: an app's records could not be listed: they are skipped
2026/10/24 22:22:28 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:28 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 22:22:28 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 22:22:28 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 22:22:28 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 22:22:28 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 22:22:28 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/24 22:22:28 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:22:28 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 22:22:28 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:22:28 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:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 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:22:28 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:22:28 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:22:28 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:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 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:22:28 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:22:28 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 22:22:28 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:22:28 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 22:22:28 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 22:22:28 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:22:28 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:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:28 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:28 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:28 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:22:28 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:28 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:28 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:28 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 22:22:29 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 22:22:29 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/24 22:22:29 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/24 22:22:29 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:22:29 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:29 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan9B8RecordWriteCensus (0.74s)
plan9_b8_census_test.go:372: record-write census rejected 6 site(s); update the explicit inventory only after reviewing the source:
changed site internal/console/apiinstances.go:Server.handleAPIInstanceUpdate: source differs from the reviewed digest
changed site internal/console/authcli.go:Server.registerCLIRoutes: source differs from the reviewed digest
changed site internal/provision/reconcile.go:Reconcile: source differs from the reviewed digest
changed site main.go:main: source differs from the reviewed digest
unlisted site apimode.go:apiSession.instanceRateLimit [lit:instances]: review it, classify it, and update its explicit inventory entry
unlisted site apimode.go:apiSession.instanceSetRateLimit [lit:instances]: review it, classify it, and update its explicit inventory entry
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 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:22:30 provision: minted instance route shop.example.com (app "shop" acct "bac")
2026/10/24 22:22:30 provision: minted instance route shop.example.com (app "shop" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 22:22:30 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/24 22:22:30 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/24 22:22:30 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/24 22:22:30 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: converged acme.go.tito.io hibernate false -> true
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: converged acme.go.tito.io status-named false -> true
2026/10/24 22:22:30 provision: converged acme.go.tito.io status-named true -> false
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 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:22:30 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:22:30 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:22:30 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 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:22:30 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:22:30 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:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:22:30 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:30 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/24 22:22:31 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/24 22:22:31 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:22:31 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:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 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:22:31 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:22:31 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:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 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:22:31 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:22:31 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 22:22:31 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:31 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 22:22:31 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/24 22:22:31 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:22:31 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:22:31 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 22:22:31 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:22:31 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/24 22:22:31 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:22:31 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:22:31 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 22:22:31 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:22:31 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:22:31 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:22:31 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 22:22:31 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:22:31 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/24 22:22:31 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 22:22:31 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:22:31 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:22:31 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:22:31 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:22:31 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:22:31 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:22:31 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:22:31 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:22:31 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:22:31 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/24 22:22:31 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:22:31 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/24 22:22:31 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/24 22:22:31 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/24 22:22:31 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/24 22:22:31 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/24 22:22:31 provision: dry-run: would converge owned.go.tito.io seed
2026/10/24 22:22:31 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:22:31 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/24 22:22:31 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/24 22:22:31 provision: converged owned.go.tito.io channel stable -> edge
2026/10/24 22:22:31 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/24 22:22:31 provision: converged owned.go.tito.io hibernate false -> true
2026/10/24 22:22:31 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/24 22:22:31 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/24 22:22:31 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: removed retired static route site.go.tito.io (record gone)
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/24 22:22:31 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/24 22:22:31 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 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:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:31 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 22:22:31 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 22:22:31 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 22:22:31 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 22:22:31 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/24 22:22:31 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:22:31 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 22:22:31 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:22:31 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 22:22:31 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/24 22:22:31 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:22:31 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 22:22:31 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:22:32 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:22:32 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 22:22:32 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/24 22:22:32 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/24 22:22:32 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:32 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:22:32 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:32 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:22:32 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:32 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:22:32 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:32 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/24 22:22:32 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:32 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:32 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 22:22:32 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:32 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 22:22:32 provision: minted sidecar route bot.shop.bac.sidecar.internal (app "shop" acct "bac" args ["run"])
2026/10/24 22:22:32 provision: removed retired sidecar route bot.shop.bac.sidecar.internal (record gone)
2026/10/24 22:22:33 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 22:22:33 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:22:33 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 22:22:33 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:22:33 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 22:22:33 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:22:33 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:22:33 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 22:22:33 provision: a.shop.example.com: swapped for import sd_tghqlefjmepidisja2wneza4te (the original route is journaled)
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_tghqlefjmepidisja2wneza4te committed: its gate is cleared and its journal row dropped
2026/10/24 22:22:33 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:22:33 provision: a.shop.example.com: import sd_626hhhcieemp6rueb742h6r7ki rolled back to its original route
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_626hhhcieemp6rueb742h6r7ki: 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:22:33 provision: a.shop.example.com: import sd_626hhhcieemp6rueb742h6r7ki is cleaned up and its journal row retired
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_4eaton66rtbzwi3roq3yhfzyha rolled back to its original route
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_4eaton66rtbzwi3roq3yhfzyha: 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:22:33 provision: a.shop.example.com: import sd_4eaton66rtbzwi3roq3yhfzyha is cleaned up and its journal row retired
2026/10/24 22:22:33 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_n36wzg46d5izprk5t6lauyodmy
2026/10/24 22:22:33 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/24 22:22:33 provision: dry-run: would converge a.shop.example.com seed source
2026/10/24 22:22:33 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:22:33 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:22:33 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:22:33 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:22:33 provision: a.shop.example.com: import sd_ylih3lti3ojfdvynnk5uihzytm cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_fo4y5rct6z4kbx55dypulxpwxe cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_q3kqy7dl747sx7rhzx6ww6xsw4 is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_3llc7zcnmjbwvtfluy2wqtpb2e is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_dhmkmlchql4oywkryy4gjbtsku is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 22:22:33 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:22:33 provision: b.shop.example.com: import sd_jvoxi3ilz6otg3yfa5go2whdq4 left alone this pass: the import journal could not be read
2026/10/24 22:22:33 provision: c.shop.example.com: import sd_iv27uy45ufh6bmn5jwdfnwsb2y left alone this pass: the import journal could not be read
2026/10/24 22:22:33 provision: a.shop.example.com: import sd_oanvdxh4n34dw4idnr5qzvagdq committed: its gate is cleared and its journal row dropped
2026/10/24 22:22:33 provision: a.shop.example.com: not converging import sd_h4men5gpkgp7usvjrgps7roxxu: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 22:22:33 provision: a.shop.example.com: not converging import sd_bqhgrux577ufwlttomlsqd7g3u: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 22:22:33 provision: a.shop.example.com: not converging import sd_bm44xlanyqmhabq2fby6lcc3lm: it is placed but not committed, and the row on this box has no import gate
2026/10/24 22:22:33 provision: a.shop.example.com: not converging import sd_yd5gnaht7mxhhklfyc3dwb7aaq: it is placed but not committed, and the row on this box has no import gate
2026/10/24 22:22:33 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:22:33 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/24 22:22:33 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:22:34 provision: a.shop.example.com: import sd_b5fabxtz4kmplbernaclg2an7a committed: its gate is cleared and its journal row dropped
2026/10/24 22:22:34 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:22:34 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:34 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:22:34 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/24 22:22:34 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_jki6kfmebp7wnhxrboxemwnmtu: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_jki6kfmebp7wnhxrboxemwnmtu rolled back (no box had swapped it)
2026/10/24 22:22:34 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/24 22:22:34 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:34 provision: removed instance route acme.go.tito.io (its seed sd_4pairea4l6vdbjf34nb6tcfyze was aborted); the next pass rolls it back
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_4pairea4l6vdbjf34nb6tcfyze: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_4pairea4l6vdbjf34nb6tcfyze rolled back (no box had swapped it)
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_ht2dk2hixkpns6hpcupktwdl6a has a row this pass may not remove; leaving the seed aborted
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_floem5bme7ue6sy7mlou46zsey rolled back (no box had swapped it)
2026/10/24 22:22:34 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:34 provision: removed instance route acme.go.tito.io (its seed sd_igvi3h3uggjsuw4chg2pgg6mby was aborted); the next pass rolls it back
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_igvi3h3uggjsuw4chg2pgg6mby has no route on this box: its local data is removed
2026/10/24 22:22:34 provision: acme.go.tito.io: aborted seed sd_igvi3h3uggjsuw4chg2pgg6mby rolled back (no box had swapped it)
2026/10/24 22:22:34 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_xeqde3udprqw3rexatz75byr3i (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_xeqde3udprqw3rexatz75byr3i rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_xeqde3udprqw3rexatz75byr3i is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_y24x5pxfrtenzcw7gpdjpqiqzq (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_y24x5pxfrtenzcw7gpdjpqiqzq rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_y24x5pxfrtenzcw7gpdjpqiqzq is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_mqfg6irwhbepcvurvnyscuety4 (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_mqfg6irwhbepcvurvnyscuety4 rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_mqfg6irwhbepcvurvnyscuety4: the host's replica is left alone: its record no longer names this seed
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_mqfg6irwhbepcvurvnyscuety4 is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_ozhh7cfamrnyoxs6u2sngqg45u (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ozhh7cfamrnyoxs6u2sngqg45u rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ozhh7cfamrnyoxs6u2sngqg45u rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ozhh7cfamrnyoxs6u2sngqg45u is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_wu455bqxoezpd6sxd2tuqvwiq4 (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_wu455bqxoezpd6sxd2tuqvwiq4 rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_sxrjbiibs7qjamgign6kehk5ji (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_sxrjbiibs7qjamgign6kehk5ji is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_r2e2h4c3czyssomgxdfovpn7lu (the original route is journaled)
2026/10/24 22:22:34 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_r2e2h4c3czyssomgxdfovpn7lu left alone this pass: its record could not be read
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_lmhl4sy7cae7gsgzvwxwtd3sie (the original route is journaled)
2026/10/24 22:22:34 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_lmhl4sy7cae7gsgzvwxwtd3sie left alone this pass: its record could not be read
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_uxnnvwdrok3jms3w27zgnbhsoi (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_uxnnvwdrok3jms3w27zgnbhsoi: close the import gate: constraint failed: injected (1811)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_uxnnvwdrok3jms3w27zgnbhsoi rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_uxnnvwdrok3jms3w27zgnbhsoi is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_3afyivsheeafz273o57zkbrlpq (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_3afyivsheeafz273o57zkbrlpq: close the import gate: constraint failed: injected (1811)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_3afyivsheeafz273o57zkbrlpq rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_3afyivsheeafz273o57zkbrlpq is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_xuxucwnd74eta2qwwzset6vzri (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_xuxucwnd74eta2qwwzset6vzri rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_xuxucwnd74eta2qwwzset6vzri rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_xuxucwnd74eta2qwwzset6vzri is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_a5c73jtplihkoazfpo63indytu (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_a5c73jtplihkoazfpo63indytu rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_a5c73jtplihkoazfpo63indytu is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_6ev2mkca4tqpzvqrdni5cjuu7m (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_6ev2mkca4tqpzvqrdni5cjuu7m: retire its instance key: injected failure at retire-key
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_6ev2mkca4tqpzvqrdni5cjuu7m rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_6ev2mkca4tqpzvqrdni5cjuu7m is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_dv6ke4afc5vhslg4jw7fnujqz4 (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_dv6ke4afc5vhslg4jw7fnujqz4 rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_dv6ke4afc5vhslg4jw7fnujqz4 is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_ogf5zsj7uhawi7fgfwhrngjfna (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ogf5zsj7uhawi7fgfwhrngjfna: remove its local data: injected failure at remove-local
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ogf5zsj7uhawi7fgfwhrngjfna rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ogf5zsj7uhawi7fgfwhrngjfna is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_2b4g7a7cy6gmu4zpkitymyzru4 (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_2b4g7a7cy6gmu4zpkitymyzru4 rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_2b4g7a7cy6gmu4zpkitymyzru4 is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_u75xwhz5jxfwkwqcgexw7t5um4 (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_u75xwhz5jxfwkwqcgexw7t5um4: remove its local data: injected failure at remove-local-done
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_u75xwhz5jxfwkwqcgexw7t5um4 rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_u75xwhz5jxfwkwqcgexw7t5um4 is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_lvmn3lquc35wsvnoskvftbsema (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_lvmn3lquc35wsvnoskvftbsema rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_lvmn3lquc35wsvnoskvftbsema is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_wprwtha3dyulghnlar3rioxrvy (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_wprwtha3dyulghnlar3rioxrvy: restore the original route: constraint failed: injected (1811)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_wprwtha3dyulghnlar3rioxrvy rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_wprwtha3dyulghnlar3rioxrvy is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_odqedrzbnqo75nsnuaprbqkzim (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_odqedrzbnqo75nsnuaprbqkzim: restore the original route: constraint failed: injected (1811)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_odqedrzbnqo75nsnuaprbqkzim rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_odqedrzbnqo75nsnuaprbqkzim is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_pmokwdjvne6wihx6uyx4dl66gm (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_pmokwdjvne6wihx6uyx4dl66gm is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_ft54zxrkilueeu7ugbnor4zkdm (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ft54zxrkilueeu7ugbnor4zkdm rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ft54zxrkilueeu7ugbnor4zkdm: delete its snapshot: injected failure at delete-snapshot
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ft54zxrkilueeu7ugbnor4zkdm is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_bealofqycrdcj2dlndzcpp3wfu (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_bealofqycrdcj2dlndzcpp3wfu rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_bealofqycrdcj2dlndzcpp3wfu is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_ksnkem2zdxgq23oowavhzkji6i (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ksnkem2zdxgq23oowavhzkji6i rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ksnkem2zdxgq23oowavhzkji6i: delete the host's replica: injected failure at delete-replica
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ksnkem2zdxgq23oowavhzkji6i is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_otrnoqn5olk3exa6qvhonegfkm (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_otrnoqn5olk3exa6qvhonegfkm rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_otrnoqn5olk3exa6qvhonegfkm is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_ascudhduywdmelgswch57njy6e (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ascudhduywdmelgswch57njy6e rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ascudhduywdmelgswch57njy6e: retire its journal row: constraint failed: injected (1811)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_ascudhduywdmelgswch57njy6e is cleaned up and its journal row retired
2026/10/24 22:22:34 provision: a.shop.example.com: swapped for import sd_b5hl3zjaposmzdbwsfxkmzhv4q (the original route is journaled)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_b5hl3zjaposmzdbwsfxkmzhv4q rolled back to its original route
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_b5hl3zjaposmzdbwsfxkmzhv4q: retire its journal row: constraint failed: injected (1811)
2026/10/24 22:22:34 provision: a.shop.example.com: import sd_b5hl3zjaposmzdbwsfxkmzhv4q is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_jbcwd2dqstnbwn6hmwhbcoumve (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_jbcwd2dqstnbwn6hmwhbcoumve rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_jbcwd2dqstnbwn6hmwhbcoumve is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: mark import sd_jbcwd2dqstnbwn6hmwhbcoumve rolled back: injected failure at cas
2026/10/24 22:22:35 provision: a.shop.example.com: aborted seed sd_jbcwd2dqstnbwn6hmwhbcoumve rolled back (no box had swapped it)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_nv25xvrvdvdxj2azaz637kf7eq (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_nv25xvrvdvdxj2azaz637kf7eq rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_nv25xvrvdvdxj2azaz637kf7eq is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: aborted seed sd_nv25xvrvdvdxj2azaz637kf7eq rolled back (no box had swapped it)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_46ojrrvvqa2p43f7dfr36bb7yq (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_46ojrrvvqa2p43f7dfr36bb7yq rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_46ojrrvvqa2p43f7dfr36bb7yq rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_46ojrrvvqa2p43f7dfr36bb7yq rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_46ojrrvvqa2p43f7dfr36bb7yq is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_fmgxc2ustxyaap4n6kvwy5twqi (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_fmgxc2ustxyaap4n6kvwy5twqi rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_fmgxc2ustxyaap4n6kvwy5twqi is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_tld5l3guekpcqdgcs7q2avcxlu (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_tld5l3guekpcqdgcs7q2avcxlu rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_tld5l3guekpcqdgcs7q2avcxlu is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_dyw43wkjmuh4olfufkfjophdia (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_dyw43wkjmuh4olfufkfjophdia rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_dyw43wkjmuh4olfufkfjophdia is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_44idlthzronj4xwamo6isuoseu (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_44idlthzronj4xwamo6isuoseu rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_44idlthzronj4xwamo6isuoseu is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_uuz6lelv2zh56tipg2764unmqq (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_uuz6lelv2zh56tipg2764unmqq rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_uuz6lelv2zh56tipg2764unmqq is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_b4h4f2apqm4xflbpklgdkgkhia (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_b4h4f2apqm4xflbpklgdkgkhia rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_b4h4f2apqm4xflbpklgdkgkhia is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_as3f5yde4htswndugbfqgo42ce (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_as3f5yde4htswndugbfqgo42ce rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_as3f5yde4htswndugbfqgo42ce is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_x3uyq4yr62joc3yci76drv7o6i (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_x3uyq4yr62joc3yci76drv7o6i has no route on this box: its local data is removed and no route is put back
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_x3uyq4yr62joc3yci76drv7o6i is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_3zovnfyizmvnoodoljenm4zgpu (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_qdkwgnh5spbm44nvpqblutfbki (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_ynlki74cuv5rcxrnqtzuoydudu (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_ynlki74cuv5rcxrnqtzuoydudu cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_t27s4lsgijdoeft3amw4adnbcm (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_t27s4lsgijdoeft3amw4adnbcm is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/24 22:22:35 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:22:35 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_5lwzhvmdwqsbq3nxvmqunznxxy (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_cpq44t44weu633xx7lpyiaycgq (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_3ylzzsb6ftspapinnf5pk5paqq (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_7yusulsjqikccnylvw7akp3nyi (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_gg2npgfy5pv3aqjoce6nm2tmb4 (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_gg2npgfy5pv3aqjoce6nm2tmb4 rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_7jiv2fuqwt43tmhmhxawzrqmji (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_7jiv2fuqwt43tmhmhxawzrqmji has no route on this box: its local data is removed and no route is put back
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_7jiv2fuqwt43tmhmhxawzrqmji is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_n2j45b3uhd5ogyduthvaadhbk4 (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_n2j45b3uhd5ogyduthvaadhbk4: remove its local data: injected failure at remove-local
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_n2j45b3uhd5ogyduthvaadhbk4 is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_pvhfe634zgkynnjly6iifigzr4 (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_pvhfe634zgkynnjly6iifigzr4: a route appeared at the host, so its local database is left and the rollback waits
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_5nraqrf77nua3gkyizysjjuzm4 (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_5nraqrf77nua3gkyizysjjuzm4 rollback deferred: no fence generation: registry busy
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_3ujxl4qev4ypsru6zycmf3rwq4 (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_3ujxl4qev4ypsru6zycmf3rwq4 rollback deferred: no fence generation: the generation source answered 0
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_r2duu5wnjformb7f75zvb4ue4u (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_vlu4u6btqqahmkly5hvgcfegsu (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_2isxtbt2eu2noljz6h4c6j47ne (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/24 22:22:35 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_stq33kv7twb2drudqimt6pit5e (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_stq33kv7twb2drudqimt6pit5e rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_stq33kv7twb2drudqimt6pit5e is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_kxc5r3hqhnpreg3joybovts2au (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_kxc5r3hqhnpreg3joybovts2au rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_kxc5r3hqhnpreg3joybovts2au is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_2ds5nlsdzbu6acchb7otgt5huy (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_2ds5nlsdzbu6acchb7otgt5huy rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_2ds5nlsdzbu6acchb7otgt5huy is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_525ptn5daaajdrrmfyfhxcjgwq (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_525ptn5daaajdrrmfyfhxcjgwq: retire its instance key: the env file is a symlink
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_525ptn5daaajdrrmfyfhxcjgwq rolled back to its original route
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_525ptn5daaajdrrmfyfhxcjgwq is cleaned up and its journal row retired
2026/10/24 22:22:35 provision: a.shop.example.com: swapped for import sd_yxjobhy6qytgdn2mq3tjgco4ky (the original route is journaled)
2026/10/24 22:22:35 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:22:35 provision: a.shop.example.com: swapped for import sd_vqcqcz2lgbkykmwjw7b3erswt4 (the original route is journaled)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_renruoboprdrk2xjdwbhlwgw6y refused: there is no route at a.shop.example.com to replace
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_7u4m7ow4c4jfitpxpp5wnnh4ci refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_grhrprf32b523o3kaaj5ntjve4 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:22:35 provision: a.shop.example.com: import sd_i5gfjkdjlzuhzbeinar4mmi76u refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_6fz2irnpt7xcad7sf7iuglur6e refused: the route belongs to app other
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_udyqci7vgfz5kdwql2jxfahlea refused: the route is filed under another account
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_emy7qq6vnad34um5jvvuk5mlbi refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_4bkjiqo55kmxb57icq655nfrt4 refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_2zrc5vnru6nd3tbxsnt5frfcfq refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_qvuufepealz7pxzpkdylixlc6a refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_olixdzknveyxzcojq645ypobqi refused: the route is not an address route this import can take over (socket)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_gg2fjcji3if5appvscohyyc6wu refused: the route is not an address route this import can take over (no address)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_g6jzp5qzacpgfzpyotbrpu72wy refused: the route is not an address route this import can take over (provisioned)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_wlzjbplupiggejq534ejeixhba refused: the route is not an address route this import can take over (kind static)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_cfsmx6of2qloiwzqx2bidxz5rq refused: the route is not an address route this import can take over (backing)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_hp5e6vv2kgleaxceklhc2oywg4 refused: the route is not an address route this import can take over (tunnel)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_yq7335gfxy7iscul6ved4xycfi refused: the route is not an address route this import can take over (caps)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_yycbx3cfn3eryzbcrqqb4xygb4 refused: the route is not an address route this import can take over (platform)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_jmfm7rjta5u3qzikpuszmwpiny refused: the route is not an address route this import can take over (canary)
2026/10/24 22:22:35 provision: a.shop.example.com: import sd_jybfmtbapjzy5uj7gkvmxnqygu refused: the route is not an address route this import can take over (kind sidecar)
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_j6cx7hoojufjqpmz4z7xqqbczy refused: the route is not an address route this import can take over (region)
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_a4twfph23a5qkwdwo64gt75rqy refused: the route is not an address route this import can take over (fleet_box)
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_s2pmklq2s2hbjmvynwk35hdine refused: the route is not an address route this import can take over (hibernate)
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_2qqcltv5bo3vsk3jx7e25jyz7q refused: the route is not an address route this import can take over (claim_owner)
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_xmhsdnn6sx47ivieck3k45i7cm refused: this box does not run instances nested
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_ndszjbevelfnt4xigfxyoeq36q refused: this box does not run instances nested
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_3itb7bvlevomytwyvnjr3b7uju refused: claim control is on for this box
2026/10/24 22:22:36 provision: a.shop.example.com: swapped for import sd_6joj2wwr4ru4cby2ryfem4myh4 (the original route is journaled)
2026/10/24 22:22:36 provision: a.shop.example.com: swapped for import sd_64fyh7zdgbd74cvx4vrv2t7ane (the original route is journaled)
2026/10/24 22:22:36 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/24 22:22:36 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/24 22:22:36 provision: a.shop.example.com: not swapping for import sd_alsp2oo3x3mka5aaj3ms3czgfy: its verify hash is not a sha256
2026/10/24 22:22:36 provision: a.shop.example.com: not swapping for import sd_vy3zkysuyft7bph6tz7p4amqhe: its verify hash is not a sha256
2026/10/24 22:22:36 provision: a.shop.example.com: not swapping for import sd_ewbrkjwd6vjukemgvltcmshrym: its verify hash is not a sha256
2026/10/24 22:22:36 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:22:36 provision: A.shop.example.com/..: not swapping for import sd_yrbwvrxqmbsxhcvnfim3d3kjf4: its host or seed id is malformed (seeds: not a host)
2026/10/24 22:22:36 provision: a.shop.example.com: not swapping for import sd_gpy5xlg2z4zn3wsxpvoty7lws4: its record does not describe a nested, hibernating instance
2026/10/24 22:22:36 provision: a.shop.example.com: not swapping for import sd_x7jxdk5jjwzc54yvjunb43u4me: its record does not describe a nested, hibernating instance
2026/10/24 22:22:36 provision: a.shop.example.com: not swapping for import sd_wq2kxnci5bq5xsxrsxeknyvlea: its record does not describe a nested, hibernating instance
2026/10/24 22:22:36 provision: a.shop.example.com: not swapping for import sd_ljaaudbzeiiqxpcwxvzfr6fyeq: its record does not describe a nested, hibernating instance
2026/10/24 22:22:36 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/24 22:22:36 provision: a.shop.example.com: swapped for import sd_5325wi6w47slssaojrhgvlnrh4 (the original route is journaled)
2026/10/24 22:22:36 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/24 22:22:36 provision: a.shop.example.com: swapped for import sd_2o4fa3iahr7f66brf6pjbaynca (the original route is journaled)
2026/10/24 22:22:36 provision: a.shop.example.com: swapped for import sd_tlhcokoqry52o43f7jvzih3ps4 (the original route is journaled)
2026/10/24 22:22:36 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/24 22:22:36 provision: dry-run: would consider swapping a.shop.example.com for import sd_6zfs4qvbmc3jyc3vte6ju4myua
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_fqlqerrrhsqm46vgkwp2rxexr4 rolled back to its original route
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_fqlqerrrhsqm46vgkwp2rxexr4: 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:22:36 provision: a.shop.example.com: import sd_fqlqerrrhsqm46vgkwp2rxexr4 is cleaned up and its journal row retired
2026/10/24 22:22:36 provision: a.shop.example.com: import sd_pkaozhgojurocf5brf6e5bbdyi left alone: the import journal holds seed sd_yarokoaugpomdhaumy5rn4mppq at swapped
2026/10/24 22:22:36 provision: a.shop.example.com: not minting import sd_a3ut4yvuv36dijoo6llphl26ei: it is swapped but not committed, and only its swap makes its row
2026/10/24 22:22:36 provision: a.shop.example.com: not minting import sd_mpzm2vfqyejjkaz7znphrnrgua: it is placed but not committed, and only its swap makes its row
2026/10/24 22:22:36 provision: a.shop.example.com: swapped for import sd_d33dopyvubirfgylzr57eiovoi (the original route is journaled)
2026/10/24 22:22:36 provision: a.shop.example.com: not minting import sd_d33dopyvubirfgylzr57eiovoi: it is swapped but not committed, and only its swap makes its row
2026/10/24 22:22:36 provision: a.shop.example.com: not minting import sd_d33dopyvubirfgylzr57eiovoi: it is placed but not committed, and only its swap makes its row
2026/10/24 22:22:36 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 22:22:36 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/24 22:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/24 22:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/24 22:22:36 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/24 22:22:36 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/24 22:22:36 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/24 22:22:36 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:22:36 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 22:22:36 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/24 22:22:36 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/24 22:22:36 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 22:22:36 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:22:36 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/24 22:22:36 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/24 22:22:36 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:22:36 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:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/24 22:22:36 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:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 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:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 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:22:36 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 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:22:36 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/24 22:22:36 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:22:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 22:22:36 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:22:36 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 22:22:36 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:22:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:36 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/24 22:22:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:36 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 22:22:36 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 22:22:36 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 22:22:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 22:22:36 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 22:22:36 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 22:22:36 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:22:36 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:22:36 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:22:36 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:22:36 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:22:36 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 22:22:36 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 22:22:36 provision: listing apps/bqc/shop/instances/: context canceled — its records are unseen this pass
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: record view: change index unusable (get refused): walking
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 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:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 22:22:36 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 22:22:36 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 22:22:36 provision: an app's records could not be listed: they are skipped
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 22:22:36 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 22:22:36 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 22:22:36 provision: record view: re-reading accounts/bqd failed: retrying on the next refresh
2026/10/24 22:22:36 provision: skipping accounts/bqd/account.json: read failed: list refused
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 22:22:36 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 22:22:36 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 22:22:36 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 22:22:36 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 22:22:36 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 22:22:36 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 22:22:36 provision: removed retired instance route one.example.com (record gone)
2026/10/24 22:22:36 provision: removed retired instance route one.example.com (record gone)
2026/10/24 22:22:36 provision: record view: change index unusable (context deadline exceeded): walking
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 22:22:36 provision: record view: change index unusable (context deadline exceeded): the walk records no generations
2026/10/24 22:22:36 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
--- FAIL: TestPlan14RootReadCensus (14.63s)
plan14_root_reads_test.go:600: root read census: 35 discrepancies
changed registry schema
changed root read internal/edge/edge.go:Edge.Reload; review class, task, sites and digest
changed root read internal/edge/edge.go:Edge.ServeHTTP; review class, task, sites and digest
changed root read internal/host/agent.go:runAgent; review class, task, sites and digest
changed root read internal/provision/reconcile.go:Reconcile; review class, task, sites and digest
changed root read internal/provision/reconcile.go:RouteFor; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.Fingerprint; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.Upsert; review class, task, sites and digest
changed root read internal/registry/registry.go:Registry.migrate; review class, task, sites and digest
changed root read internal/registry/registry.go:routeArgs; review class, task, sites and digest
changed root read internal/registry/registry.go:scanRoute; review class, task, sites and digest
changed root read internal/registry/remote_dispatch.go:Registry.dispatchRemote; review class, task, sites and digest
changed root source envelope .
changed root source envelope internal/console
changed root source envelope internal/edge
changed root source envelope internal/host
changed root source envelope internal/plans
changed root source envelope internal/provision
changed root source envelope internal/ratelimit
changed root source envelope internal/registry
changed root source envelope internal/usage
unclassified root read internal/edge/ratelimit.go:Edge.noteRateLimited registry:Host@505,registry:Host@597,whole:Route@166
unclassified root read internal/edge/ratelimit.go:Edge.parseRateSettings registry:Host@271,registry:Host@367,registry:RateLimit@158,registry:RateLimit@77
unclassified root read internal/edge/ratelimit.go:Edge.rateAdmit registry:Host@834,registry:Kind@150,whole:Route@153,whole:Route@561,whole:Route@837,whole:Route@943
unclassified root read internal/edge/usagemeter.go:UsageMeter.RecordRateLimited registry:App@206,registry:Host@146,registry:Host@294,whole:Route@191
unclassified root read internal/host/plans_pass.go:planRateCeilingFor whole:Route@108
unclassified root read internal/registry/registry.go:Registry.SetRateLimit file:Exec@225,registry:remote@68,registry:remote@98,registry:sql@225,whole:remoteClient@100,whole:remoteClient@70
changed legacy declaration internal/edge/edge.go:Edge.Reload
changed legacy declaration internal/edge/edge.go:Edge.ServeHTTP
changed legacy declaration internal/provision/reconcile.go:Reconcile
changed legacy declaration internal/registry/registry.go:Registry.Fingerprint
changed legacy declaration internal/registry/registry.go:Registry.migrate
changed legacy declaration internal/registry/registry.go:scanRoute
changed reclassified declaration internal/registry/registry.go:Registry.Upsert
changed reclassified declaration internal/registry/remote_dispatch.go:Registry.dispatchRemote
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.407s
ok github.com/carlosframework/platform/internal/publicrelease 0.014s
ok github.com/carlosframework/platform/internal/ratelimit 0.108s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 5.781s
ok github.com/carlosframework/platform/internal/relay 4.222s
ok github.com/carlosframework/platform/internal/release 26.213s
ok github.com/carlosframework/platform/internal/rollout 3.842s
ok github.com/carlosframework/platform/internal/rolloutwords 0.006s
ok github.com/carlosframework/platform/internal/rootaws 0.007s
ok github.com/carlosframework/platform/internal/rootparticipation 0.060s
ok github.com/carlosframework/platform/internal/rootstate 0.028s
ok github.com/carlosframework/platform/internal/runs 0.533s
ok github.com/carlosframework/platform/internal/s3compat 0.007s
ok github.com/carlosframework/platform/internal/safefile 0.004s
ok github.com/carlosframework/platform/internal/schedule 2.644s
ok github.com/carlosframework/platform/internal/seeds 0.011s
ok github.com/carlosframework/platform/internal/sim/engines 2.560s
ok github.com/carlosframework/platform/internal/sim/hostlife 10.260s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 3.643s
ok github.com/carlosframework/platform/internal/status 0.072s
ok github.com/carlosframework/platform/internal/steering 0.006s
ok github.com/carlosframework/platform/internal/stopevidence 0.331s
ok github.com/carlosframework/platform/internal/svcrole 0.004s
ok github.com/carlosframework/platform/internal/telemetry 0.005s
ok github.com/carlosframework/platform/internal/termfence 0.007s
ok github.com/carlosframework/platform/internal/tunnelclient 0.004s
ok github.com/carlosframework/platform/internal/unixdial 0.002s
ok github.com/carlosframework/platform/internal/updatewords 0.004s
ok github.com/carlosframework/platform/internal/usage 0.005s
ok github.com/carlosframework/platform/internal/version 0.002s
ok github.com/carlosframework/platform/internal/vet 1.694s
FAIL
=== internal_console@0 (85 s)
ok github.com/carlosframework/platform/internal/console 83.334s
=== internal_console@1 (43 s)
ok github.com/carlosframework/platform/internal/console 41.519s
=== internal_console@2 (42 s)
ok github.com/carlosframework/platform/internal/console 40.238s
=== internal_console@3 (43 s)
ok github.com/carlosframework/platform/internal/console 41.333s
=== internal_console@4 (44 s)
ok github.com/carlosframework/platform/internal/console 42.488s
=== internal_console@5 (40 s)
ok github.com/carlosframework/platform/internal/console 38.384s
=== internal_console@6 (37 s)
ok github.com/carlosframework/platform/internal/console 35.193s
=== internal_console@7 (46 s)
ok github.com/carlosframework/platform/internal/console 45.000s
=== root@0 (109 s)
ok github.com/carlosframework/platform 107.484s
=== root@1 (83 s)
ok github.com/carlosframework/platform 81.869s
=== root@2 (92 s)
ok github.com/carlosframework/platform 90.509s
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/instances_cli.go b/instances_cli.go| index 1824a8012..6239a7c7d 100644 |
| --- a/instances_cli.go |
| +++ b/instances_cli.go |
| @@ -52,6 +52,10 @@ is the operator's call, and --domain is required. |
| ` |
| +// instancesTruncatedNote is the line that says an instance list stopped at |
| +// the console's 500-record cap. `carlos ratelimit` ends a cut fan-out with it too. |
| +const instancesTruncatedNote = "(truncated at 500 records)" |
| + |
| func runInstancesEnable(args []string) { |
| fs := flag.NewFlagSet("instances enable", flag.ExitOnError) |
| app := appFlag(fs, "app whose instances this enables") |
| @@ -591,7 +595,7 @@ func runInstancesList(args []string) { |
| mutedf(stdout, instancesListRetryHint, app2, app2) |
| } |
| if truncated { |
| - mutedf(stdout, "(truncated at 500 records)") |
| + mutedf(stdout, "%s", instancesTruncatedNote) |
| } |
| // total is the server's count of every record matching --match/--health, not |
| // just the page returned above — worth a line only when a filter is |
diff --git a/ratelimit_cli.go b/ratelimit_cli.go| index 19cca7030..3f14c6422 100644 |
| --- a/ratelimit_cli.go |
| +++ b/ratelimit_cli.go |
| @@ -104,32 +104,49 @@ func requireRatelimitAPISession(consoleFlag string) *apiSession { |
| func ratelimitFlags(name string) (*flag.FlagSet, *string, *string, *string, *string, *string) { |
| fs := flag.NewFlagSet("ratelimit "+name, flag.ExitOnError) |
| - app := appFlag(fs, "app whose instances to limit") |
| - host := fs.String("host", "", "one instance host (default: every instance of the app)") |
| - consoleFlag := consoleOption(fs, "console to act through (default: the only logged-in one)") |
| - acctRaw := fs.String("account", "", "account (sqid or name) the app belongs to (default: your only account, or the configured/chosen one)") |
| - acctIDRaw := fs.String("account-id", "", "account sqid, matched as a sqid ONLY — supersedes -account") |
| + // -h and a bad flag print the approved usage text and nothing the flag |
| + // package would generate from descriptions. |
| + fs.Usage = func() { fmt.Fprint(fs.Output(), ratelimitUsage) } |
| + app := appFlag(fs, "") |
| + host := fs.String("host", "", "") |
| + consoleFlag := consoleOption(fs, "") |
| + acctRaw := fs.String("account", "", "") |
| + acctIDRaw := fs.String("account-id", "", "") |
| return fs, app, host, consoleFlag, acctRaw, acctIDRaw |
| } |
| // ratelimitHosts is the hosts a verb acts on: -host alone, else every |
| // instance record of the app, from the same lister the gate verb uses. |
| -func ratelimitHosts(sess *apiSession, acct apiAcct, app, host string) []string { |
| +// |
| +// truncated is the console's word that the list stopped at its record cap |
| +// (paging cannot go past it), so the hosts returned are not all of them. |
| +func ratelimitHosts(sess *apiSession, acct apiAcct, app, host string) (hosts []string, truncated bool) { |
| if host != "" { |
| - return []string{host} |
| + return []string{host}, false |
| } |
| - recs, _, _, err := sess.instanceList(context.Background(), acct, app, "", "") |
| + recs, truncated, _, err := sess.instanceList(context.Background(), acct, app, "", "") |
| if err != nil { |
| log.Fatalf("ratelimit: list instances: %v", err) |
| } |
| if len(recs) == 0 { |
| log.Fatalf("ratelimit: %s has no instances", app) |
| } |
| - hosts := make([]string, 0, len(recs)) |
| + hosts = make([]string, 0, len(recs)) |
| for _, r := range recs { |
| hosts = append(hosts, r.Host) |
| } |
| - return hosts |
| + return hosts, truncated |
| +} |
| + |
| +// ratelimitTruncatedNote ends a fan-out that did not cover every instance: |
| +// it says the list was cut (the same note `carlos instances list` gives), |
| +// and counts as a failure so the exit status is not a clean 0. |
| +func ratelimitTruncatedNote(w io.Writer, truncated bool) (failed int) { |
| + if truncated { |
| + mutedf(w, "%s", instancesTruncatedNote) |
| + return 1 |
| + } |
| + return 0 |
| } |
| func runRatelimitShow(args []string) { |
| @@ -139,7 +156,10 @@ func runRatelimitShow(args []string) { |
| printUsing(stdout, sess) |
| acct := resolvedAccount(sess, acctRaw, acctIDRaw) |
| app2 := resolvedApp(sess, acct, *app, ratelimitUsage) |
| - if failed := ratelimitShow(sess, acct, app2, ratelimitHosts(sess, acct, app2, strings.TrimSpace(*host)), stdout); failed > 0 { |
| + hosts, truncated := ratelimitHosts(sess, acct, app2, strings.TrimSpace(*host)) |
| + failed := ratelimitShow(sess, acct, app2, hosts, stdout) |
| + failed += ratelimitTruncatedNote(stdout, truncated) |
| + if failed > 0 { |
| os.Exit(1) |
| } |
| } |
| @@ -223,10 +243,18 @@ type pathFlags []string |
| func (p *pathFlags) String() string { return strings.Join(*p, " ") } |
| func (p *pathFlags) Set(v string) error { *p = append(*p, v); return nil } |
| +// pathEdit is one parsed -path: the rule's numbers and which of them the |
| +// owner named, because a named zero is a reset (the field inherits the base |
| +// rule again) and must not be mistaken for an omitted field. |
| +type pathEdit struct { |
| + ratelimit.PathRule |
| + share, rate, burst bool |
| +} |
| + |
| // parseRatelimitPath reads one -path value, /prefix:share=N,rate=N,burst=N, |
| // naming any non-empty subset of the three. |
| -func parseRatelimitPath(v string) (ratelimit.PathRule, bool) { |
| - var p ratelimit.PathRule |
| +func parseRatelimitPath(v string) (pathEdit, bool) { |
| + var p pathEdit |
| i := strings.LastIndex(v, ":") |
| if i < 0 || !strings.HasPrefix(v, "/") { |
| return p, false |
| @@ -245,11 +273,11 @@ func parseRatelimitPath(v string) (ratelimit.PathRule, bool) { |
| } |
| switch k { |
| case "share": |
| - p.ClientShare = num |
| + p.ClientShare, p.share = num, true |
| case "rate": |
| - p.Rate = num |
| + p.Rate, p.rate = num, true |
| case "burst": |
| - p.Burst = num |
| + p.Burst, p.burst = num, true |
| default: |
| return p, false |
| } |
| @@ -262,7 +290,7 @@ func parseRatelimitPath(v string) (ratelimit.PathRule, bool) { |
| // names; the last -path for one prefix wins over an earlier one. Removals |
| // go first, so a prefix named in both is added fresh. Paths come back in |
| // prefix order so the PATCH body does not depend on flag order. |
| -func overlayRatelimit(cur ratelimit.Settings, busyAt, share, rate, burst *int, add []ratelimit.PathRule, remove []string) ratelimit.Settings { |
| +func overlayRatelimit(cur ratelimit.Settings, busyAt, share, rate, burst *int, add []pathEdit, remove []string) ratelimit.Settings { |
| out := cur |
| if busyAt != nil { |
| out.BusyAt = *busyAt |
| @@ -283,23 +311,23 @@ func overlayRatelimit(cur ratelimit.Settings, busyAt, share, rate, burst *int, a |
| for _, pre := range remove { |
| delete(byPrefix, pre) |
| } |
| - last := map[string]ratelimit.PathRule{} |
| + last := map[string]pathEdit{} |
| for _, p := range add { |
| last[p.Prefix] = p |
| } |
| - for pre, p := range last { |
| - if old, ok := byPrefix[pre]; ok { |
| - if p.ClientShare == 0 { |
| - p.ClientShare = old.ClientShare |
| - } |
| - if p.Rate == 0 { |
| - p.Rate = old.Rate |
| - } |
| - if p.Burst == 0 { |
| - p.Burst = old.Burst |
| - } |
| + for pre, e := range last { |
| + r := byPrefix[pre] // the zero rule when the prefix is new |
| + r.Prefix = pre |
| + if e.share { |
| + r.ClientShare = e.ClientShare |
| + } |
| + if e.rate { |
| + r.Rate = e.Rate |
| + } |
| + if e.burst { |
| + r.Burst = e.Burst |
| } |
| - byPrefix[pre] = p |
| + byPrefix[pre] = r |
| } |
| out.Paths = nil |
| for _, p := range byPrefix { |
| @@ -311,13 +339,13 @@ func overlayRatelimit(cur ratelimit.Settings, busyAt, share, rate, burst *int, a |
| func runRatelimitSet(args []string) { |
| fs, app, host, consoleFlag, acctRaw, acctIDRaw := ratelimitFlags("set") |
| - busyAt := fs.Int("busy-at", 0, "in-flight count at which the app counts as busy") |
| - share := fs.Int("share", 0, "in-flight requests each address may have while busy") |
| - rate := fs.Int("rate", 0, "backstop: requests a second from one address") |
| - burst := fs.Int("burst", 0, "backstop: burst size on top of the rate") |
| + busyAt := fs.Int("busy-at", 0, "") |
| + share := fs.Int("share", 0, "") |
| + rate := fs.Int("rate", 0, "") |
| + burst := fs.Int("burst", 0, "") |
| var paths, removes pathFlags |
| - fs.Var(&paths, "path", "/prefix:share=N,rate=N,burst=N for one path prefix (repeatable)") |
| - fs.Var(&removes, "remove-path", "/prefix to drop the rule for (repeatable)") |
| + fs.Var(&paths, "path", "") |
| + fs.Var(&removes, "remove-path", "") |
| fs.Parse(args) |
| given := map[string]*int{} |
| @@ -334,7 +362,7 @@ func runRatelimitSet(args []string) { |
| } |
| }) |
| // A malformed -path is refused before anything is read or sent. |
| - var add []ratelimit.PathRule |
| + var add []pathEdit |
| for _, v := range paths { |
| p, ok := parseRatelimitPath(v) |
| if !ok { |
| @@ -351,11 +379,12 @@ func runRatelimitSet(args []string) { |
| printUsing(stdout, sess) |
| acct := resolvedAccount(sess, acctRaw, acctIDRaw) |
| app2 := resolvedApp(sess, acct, *app, ratelimitUsage) |
| - hosts := ratelimitHosts(sess, acct, app2, strings.TrimSpace(*host)) |
| + hosts, truncated := ratelimitHosts(sess, acct, app2, strings.TrimSpace(*host)) |
| failed := ratelimitApply(sess, acct, app2, hosts, func(cur ratelimit.Settings) ratelimit.Settings { |
| return overlayRatelimit(cur, given["busy-at"], given["share"], given["rate"], given["burst"], add, removes) |
| }, stdout) |
| ratelimitPickupLine(stdout, len(hosts), failed) |
| + failed += ratelimitTruncatedNote(stdout, truncated) |
| if failed > 0 { |
| os.Exit(1) |
| } |
| @@ -368,9 +397,10 @@ func runRatelimitClear(args []string) { |
| printUsing(stdout, sess) |
| acct := resolvedAccount(sess, acctRaw, acctIDRaw) |
| app2 := resolvedApp(sess, acct, *app, ratelimitUsage) |
| - hosts := ratelimitHosts(sess, acct, app2, strings.TrimSpace(*host)) |
| + hosts, truncated := ratelimitHosts(sess, acct, app2, strings.TrimSpace(*host)) |
| failed := ratelimitApply(sess, acct, app2, hosts, nil, stdout) |
| ratelimitPickupLine(stdout, len(hosts), failed) |
| + failed += ratelimitTruncatedNote(stdout, truncated) |
| if failed > 0 { |
| os.Exit(1) |
| } |
diff --git a/ratelimit_cli_test.go b/ratelimit_cli_test.go| index 52a1b16bc..3c41a1804 100644 |
| --- a/ratelimit_cli_test.go |
| +++ b/ratelimit_cli_test.go |
| @@ -64,6 +64,15 @@ func patchedSettings(t *testing.T, body string) ratelimit.Settings { |
| return *in.RateLimit |
| } |
| +func mustPath(t *testing.T, v string) pathEdit { |
| + t.Helper() |
| + p, ok := parseRatelimitPath(v) |
| + if !ok { |
| + t.Fatalf("parseRatelimitPath(%q) refused", v) |
| + } |
| + return p |
| +} |
| + |
| func ratelimitSet(fc *rlConsole, hosts []string, change func(ratelimit.Settings) ratelimit.Settings) (int, string) { |
| var out bytes.Buffer |
| failed := ratelimitApply(newTestSession(fc.ts.URL), apiAcct{Seg: "bah"}, "app", hosts, change, &out) |
| @@ -102,16 +111,13 @@ func TestRatelimitPathFlagParse(t *testing.T) { |
| } |
| var cur ratelimit.Settings |
| - add := []ratelimit.PathRule{ |
| - {Prefix: "/api/", Rule: ratelimit.Rule{ClientShare: 8}}, |
| - {Prefix: "/api/", Rule: ratelimit.Rule{ClientShare: 32, Rate: 1000}}, |
| - } |
| + add := []pathEdit{mustPath(t, "/api/:share=8"), mustPath(t, "/api/:share=32,rate=1000")} |
| cur = overlayRatelimit(cur, nil, nil, nil, nil, add, nil) |
| if len(cur.Paths) != 1 || cur.Paths[0].ClientShare != 32 || cur.Paths[0].Rate != 1000 { |
| t.Fatalf("the last -path for a prefix should win: %+v", cur.Paths) |
| } |
| // A later -path for the same prefix changes only the numbers it names. |
| - cur = overlayRatelimit(cur, nil, nil, nil, nil, []ratelimit.PathRule{{Prefix: "/api/", Rule: ratelimit.Rule{Burst: 50}}}, nil) |
| + cur = overlayRatelimit(cur, nil, nil, nil, nil, []pathEdit{mustPath(t, "/api/:burst=50")}, nil) |
| if r := cur.Paths[0].Rule; r.ClientShare != 32 || r.Rate != 1000 || r.Burst != 50 { |
| t.Fatalf("named values should overlay the old rule: %+v", cur.Paths) |
| } |
| @@ -196,11 +202,11 @@ func TestRatelimitFanOutReportsEach(t *testing.T) { |
| // And the lister: no -host is every instance, -host is that one alone. |
| fc.list = `{"instances":[{"host":"a.example.com"},{"host":"b.example.com"}],"total":2}` |
| sess := newTestSession(fc.ts.URL) |
| - if got := ratelimitHosts(sess, apiAcct{Seg: "bah"}, "app", ""); len(got) != 2 { |
| - t.Errorf("hosts = %v", got) |
| + if got, trunc := ratelimitHosts(sess, apiAcct{Seg: "bah"}, "app", ""); len(got) != 2 || trunc { |
| + t.Errorf("hosts = %v, truncated %v", got, trunc) |
| } |
| fc.seen = nil |
| - if got := ratelimitHosts(sess, apiAcct{Seg: "bah"}, "app", "x.example.com"); len(got) != 1 || len(fc.seen) != 0 { |
| + if got, trunc := ratelimitHosts(sess, apiAcct{Seg: "bah"}, "app", "x.example.com"); len(got) != 1 || trunc || len(fc.seen) != 0 { |
| t.Errorf("hosts = %v, requests %v", got, fc.seen) |
| } |
| } |
| @@ -288,3 +294,51 @@ func TestRatelimitDocsCarryTheUsage(t *testing.T) { |
| t.Error("docs/site/cli.md does not carry the ratelimit usage text verbatim") |
| } |
| } |
| + |
| +// The console cut the list at its cap: the fan-out is partial, so it says |
| +// so (the note `carlos instances list` gives) and counts as a failure. |
| +func TestRatelimitTruncatedListIsNotSuccess(t *testing.T) { |
| + fc := newRLConsole(t) |
| + fc.list = `{"instances":[{"host":"a.example.com"},{"host":"b.example.com"}],"truncated":true,"total":2}` |
| + hosts, truncated := ratelimitHosts(newTestSession(fc.ts.URL), apiAcct{Seg: "bah"}, "app", "") |
| + if len(hosts) != 2 || !truncated { |
| + t.Fatalf("hosts = %v, truncated = %v", hosts, truncated) |
| + } |
| + var out bytes.Buffer |
| + if failed := ratelimitTruncatedNote(&out, truncated); failed != 1 || !strings.Contains(out.String(), instancesTruncatedNote) { |
| + t.Errorf("failed = %d, output = %q", failed, out.String()) |
| + } |
| + out.Reset() |
| + if failed := ratelimitTruncatedNote(&out, false); failed != 0 || out.Len() != 0 { |
| + t.Errorf("a complete list: failed = %d, output = %q", failed, out.String()) |
| + } |
| +} |
| + |
| +// A zero named in -path is a reset: the field goes back to inheriting the |
| +// base rule. It is not the same as leaving the field out. |
| +func TestRatelimitPathZeroResetsAField(t *testing.T) { |
| + fc := newRLConsole(t) |
| + fc.current = `{"host":"a.example.com","settings":{"paths":[{"prefix":"/api/","client_share":32,"rate":1000}]}}` |
| + edit := mustPath(t, "/api/:rate=0") |
| + failed, out := ratelimitSet(fc, []string{"a.example.com"}, func(cur ratelimit.Settings) ratelimit.Settings { |
| + return overlayRatelimit(cur, nil, nil, nil, nil, []pathEdit{edit}, nil) |
| + }) |
| + if failed != 0 { |
| + t.Fatalf("failed = %d: %s", failed, out) |
| + } |
| + got := patchedSettings(t, fc.bodies["a.example.com"]) |
| + if len(got.Paths) != 1 || got.Paths[0].Rate != 0 || got.Paths[0].ClientShare != 32 { |
| + t.Errorf("PATCHed %+v, want rate 0 and share 32", got.Paths) |
| + } |
| +} |
| + |
| +// -h prints the approved usage and only that, not the flag package's |
| +// generated list of flag descriptions. |
| +func TestRatelimitHelpPrintsTheApprovedUsage(t *testing.T) { |
| + for _, verb := range []string{"set", "show", "clear"} { |
| + out, _ := runCarlosCLI(t, "ratelimit", verb, "-h") |
| + if out != ratelimitUsage { |
| + t.Errorf("ratelimit %s -h printed:\n%s", verb, out) |
| + } |
| + } |
| +} |