carlos / platform Public

edge, host, release: one unreadable cert is never a failed changed-only poll; index polls are bounded and give up on a stuck watch (#336)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev bcf2d9c2c66a97e8344a8126a3d85b42fc98949e parent a0e3fb0
7 files changed, +285 −19
  • internal/edge/certsync.go +30 −11
  • internal/edge/certsync_test.go +100 −0
  • internal/edge/homemap.go +8 −3
  • internal/edge/homemap_test.go +39 −0
  • internal/host/agent.go +7 −1
  • internal/release/changewatch.go +25 −4
  • internal/release/changewatch_test.go +76 −0

CI failed — run details

CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (1 s)
ok  	amadan.net/carlos/platform.git/launchctx	0.020s
?   	amadan.net/carlos/platform.git/launchctx/controlname	[no test files]
?   	amadan.net/carlos/platform.git/launchctx/wireid	[no test files]
=== vet (36 s)
=== gofmt (2 s)
gofmt -l .: clean
=== rest (184 s)
?   	github.com/carlosframework/platform/cmd/changelog	[no test files]
ok  	github.com/carlosframework/platform/cmd/console	6.565s
ok  	github.com/carlosframework/platform/cmd/moveprobe	13.333s
ok  	github.com/carlosframework/platform/cmd/zddprobe	0.791s
ok  	github.com/carlosframework/platform/internal/activator	67.561s
ok  	github.com/carlosframework/platform/internal/agentsock	0.067s
ok  	github.com/carlosframework/platform/internal/alerting	0.018s
ok  	github.com/carlosframework/platform/internal/analytics	0.099s
ok  	github.com/carlosframework/platform/internal/appconfig	5.159s
ok  	github.com/carlosframework/platform/internal/apperr	0.220s
ok  	github.com/carlosframework/platform/internal/applog	0.499s
ok  	github.com/carlosframework/platform/internal/awsinv	0.058s
ok  	github.com/carlosframework/platform/internal/boxchoice	0.009s
ok  	github.com/carlosframework/platform/internal/boxid	2.024s
?   	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.054s
ok  	github.com/carlosframework/platform/internal/caps	0.016s
ok  	github.com/carlosframework/platform/internal/certwarm	0.055s
ok  	github.com/carlosframework/platform/internal/cgroup	0.975s
ok  	github.com/carlosframework/platform/internal/changelog	1.549s
ok  	github.com/carlosframework/platform/internal/claimactivation	2.435s
ok  	github.com/carlosframework/platform/internal/clamd	0.094s
?   	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	6.495s
ok  	github.com/carlosframework/platform/internal/dbdoor/dbdoortest	0.043s
ok  	github.com/carlosframework/platform/internal/dbverify	0.049s
ok  	github.com/carlosframework/platform/internal/dnsrec	0.043s
ok  	github.com/carlosframework/platform/internal/docsite	0.054s
ok  	github.com/carlosframework/platform/internal/domains	4.971s
ok  	github.com/carlosframework/platform/internal/doorkey	0.062s
ok  	github.com/carlosframework/platform/internal/economics	0.048s
ok  	github.com/carlosframework/platform/internal/edge	49.573s
?   	github.com/carlosframework/platform/internal/edgeproof	[no test files]
ok  	github.com/carlosframework/platform/internal/edgesfile	0.011s
ok  	github.com/carlosframework/platform/internal/fleetapi	0.187s
ok  	github.com/carlosframework/platform/internal/gate	1.725s
ok  	github.com/carlosframework/platform/internal/genselect	0.030s
ok  	github.com/carlosframework/platform/internal/geo	0.031s
ok  	github.com/carlosframework/platform/internal/geoip	0.038s
ok  	github.com/carlosframework/platform/internal/historyreadback	0.247s
ok  	github.com/carlosframework/platform/internal/host	132.880s
ok  	github.com/carlosframework/platform/internal/hostactors	8.380s
ok  	github.com/carlosframework/platform/internal/hostactors/awsmembership	0.006s
ok  	github.com/carlosframework/platform/internal/hostbox	5.019s
ok  	github.com/carlosframework/platform/internal/hostclaim	1.641s
ok  	github.com/carlosframework/platform/internal/hostenv	0.007s
ok  	github.com/carlosframework/platform/internal/hostevidence	0.008s
ok  	github.com/carlosframework/platform/internal/hostexec	8.694s
ok  	github.com/carlosframework/platform/internal/hostfence	0.073s
ok  	github.com/carlosframework/platform/internal/hostfiles	11.552s
ok  	github.com/carlosframework/platform/internal/hostfloor	0.046s
ok  	github.com/carlosframework/platform/internal/hostguard	1.259s
ok  	github.com/carlosframework/platform/internal/hostops	3.484s
?   	github.com/carlosframework/platform/internal/hostops/fencerelease	[no test files]
ok  	github.com/carlosframework/platform/internal/hostops/internal/fencerelease	0.003s
ok  	github.com/carlosframework/platform/internal/hostquarantine	0.004s
ok  	github.com/carlosframework/platform/internal/hostrelocate	1.304s
ok  	github.com/carlosframework/platform/internal/hostresolve	0.351s
ok  	github.com/carlosframework/platform/internal/hostwrite	0.004s
ok  	github.com/carlosframework/platform/internal/infraview	0.005s
ok  	github.com/carlosframework/platform/internal/instancectl	5.309s
ok  	github.com/carlosframework/platform/internal/instanceexec	3.091s
ok  	github.com/carlosframework/platform/internal/instancefs	0.020s
ok  	github.com/carlosframework/platform/internal/instancekey	0.007s
ok  	github.com/carlosframework/platform/internal/instanceupdates	0.016s
ok  	github.com/carlosframework/platform/internal/layout	3.357s
ok  	github.com/carlosframework/platform/internal/lbhealth	0.005s
ok  	github.com/carlosframework/platform/internal/lease	10.715s
ok  	github.com/carlosframework/platform/internal/lease/leasetest	1.150s
ok  	github.com/carlosframework/platform/internal/ledger	0.054s
ok  	github.com/carlosframework/platform/internal/mail	0.551s
ok  	github.com/carlosframework/platform/internal/maintenance	0.099s
ok  	github.com/carlosframework/platform/internal/maintenanceexec	5.945s
ok  	github.com/carlosframework/platform/internal/maintenanceguard	0.384s
ok  	github.com/carlosframework/platform/internal/metrics	0.025s
ok  	github.com/carlosframework/platform/internal/moves	28.533s
ok  	github.com/carlosframework/platform/internal/moves/archive	1.926s
ok  	github.com/carlosframework/platform/internal/objstore	0.820s
ok  	github.com/carlosframework/platform/internal/ops	0.642s
ok  	github.com/carlosframework/platform/internal/park	0.583s
ok  	github.com/carlosframework/platform/internal/plans	0.010s
ok  	github.com/carlosframework/platform/internal/privatefile	0.008s
2026/10/22 11:03:03 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/22 11:03:03 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/22 11:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:03 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/22 11:03:03 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/22 11:03:03 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/22 11:03:03 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/22 11:03:03 provision: an app's records could not be listed: they are skipped
2026/10/22 11:03:03 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:03 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/22 11:03:03 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/22 11:03:03 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/22 11:03:03 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/22 11:03:03 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/22 11:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:03 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/22 11:03:03 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/22 11:03:03 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/22 11:03:03 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/22 11:03:03 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/22 11:03:03 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/22 11:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:03 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/22 11:03:03 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/22 11:03:03 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/22 11:03:03 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/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 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/22 11:03:04 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/22 11:03:04 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/22 11:03:04 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/22 11:03:04 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/22 11:03:04 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/22 11:03:04 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/22 11:03:04 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/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:04 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:04 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/22 11:03:04 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:04 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:04 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:04 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/22 11:03:05 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/22 11:03:05 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/22 11:03:05 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/22 11:03:05 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/22 11:03:05 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:05 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan9B8RecordWriteCensus (1.58s)
    plan9_b8_census_test.go:372: record-write census rejected 15 site(s); update the explicit inventory only after reviewing the source:
          changed site internal/provision/reconcile.go:Reconcile: source differs from the reviewed digest
          changed site internal/provision/sidecar_reconcile.go:ReconcileSidecars: source differs from the reviewed digest
          changed site internal/release/store.go:DirStore.Put: source differs from the reviewed digest
          changed site internal/release/store.go:DirStore.PutFrom: source differs from the reviewed digest
          changed site internal/release/store.go:S3Store.Put: source differs from the reviewed digest
          changed site internal/release/store.go:S3Store.PutFrom: source differs from the reviewed digest
          unlisted site internal/provision/recordview.go:RecordView.readApp [key:SidecarManifestKey]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview.go:RecordView.readScope [lit:instances,lit:sidecars]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview.go:RecordView.walk [lit:instances,lit:sidecars]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview.go:walkComplete [lit:instances,lit:sidecars]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview_store.go:ViewSnapshot.list [lit:instances,lit:sidecars]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview_store.go:ViewSnapshot.lookup [lit:instances,lit:sidecars]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview_store.go:snapStore.Put [def:Put,sel:Put]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview_store.go:snapStore.PutFrom [def:PutFrom,sel:PutObjectFrom]: review it, classify it, and update its explicit inventory entry
          unlisted site internal/provision/recordview_store.go:uncachedStore.Put [def:Put]: review it, classify it, and update its explicit inventory entry
2026/10/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 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/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: converged acme.go.tito.io channel stable -> edge
2026/10/22 11:03:07 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/22 11:03:07 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:07 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/22 11:03:07 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/22 11:03:08 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/22 11:03:08 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: converged acme.go.tito.io hibernate false -> true
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: converged acme.go.tito.io status-named false -> true
2026/10/22 11:03:08 provision: converged acme.go.tito.io status-named true -> false
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 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/22 11:03:08 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/22 11:03:08 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/22 11:03:08 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 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/22 11:03:08 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/22 11:03:08 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/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/22 11:03:08 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/22 11:03:08 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/22 11:03:08 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/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 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/22 11:03:08 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/22 11:03:08 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/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 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/22 11:03:08 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/22 11:03:08 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/22 11:03:08 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:08 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/22 11:03:08 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/22 11:03:08 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/22 11:03:08 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/22 11:03:08 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/22 11:03:08 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/22 11:03:08 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/22 11:03:08 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/22 11:03:08 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/22 11:03:08 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/22 11:03:08 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/22 11:03:08 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/22 11:03:08 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/22 11:03:08 provision: converged acme.go.tito.io channel stable -> edge
2026/10/22 11:03:08 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/22 11:03:08 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/22 11:03:08 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/22 11:03:08 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/22 11:03:08 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/22 11:03:08 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/22 11:03:08 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/22 11:03:08 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/22 11:03:08 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/22 11:03:08 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/22 11:03:08 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/22 11:03:08 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/22 11:03:08 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/22 11:03:08 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/22 11:03:08 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/22 11:03:08 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/22 11:03:08 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/22 11:03:08 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/22 11:03:08 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/22 11:03:08 provision: dry-run: would converge owned.go.tito.io seed
2026/10/22 11:03:08 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/22 11:03:08 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/22 11:03:08 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/22 11:03:08 provision: converged owned.go.tito.io channel stable -> edge
2026/10/22 11:03:08 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/22 11:03:08 provision: converged owned.go.tito.io hibernate false -> true
2026/10/22 11:03:08 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/22 11:03:08 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/22 11:03:08 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/22 11:03:08 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:08 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: removed retired static route site.go.tito.io (record gone)
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/22 11:03:09 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/22 11:03:09 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 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/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:09 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/22 11:03:09 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/22 11:03:09 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/22 11:03:09 provision: converged acme.go.tito.io channel stable -> edge
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/22 11:03:09 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/22 11:03:09 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/22 11:03:09 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/22 11:03:09 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/22 11:03:09 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/22 11:03:09 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/22 11:03:09 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/22 11:03:09 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/22 11:03:09 provision: dry-run: would mint instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac" channel "stable")
2026/10/22 11:03:09 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/22 11:03:09 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/22 11:03:09 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/22 11:03:09 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/22 11:03:09 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:09 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/22 11:03:09 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:09 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/22 11:03:09 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:09 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/22 11:03:09 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:09 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/22 11:03:10 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:10 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:10 provision: not removing acme.go.tito.io: the record view lacks its record but the bucket has it; the view catches up at its next refresh or rebuild
2026/10/22 11:03:10 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/22 11:03:11 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:11 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/22 11:03:11 provision: not removing bac/tito's rows: the record view has its trash marker but the bucket does not (<nil>)
2026/10/22 11:03:11 provision: minted sidecar route bot.shop.bac.sidecar.internal (app "shop" acct "bac" args ["run"])
2026/10/22 11:03:11 provision: not removing sidecar bot.shop.bac.sidecar.internal: the record view lacks its record but the bucket has it; the view catches up at its next refresh or rebuild
2026/10/22 11:03:11 provision: removed retired sidecar route bot.shop.bac.sidecar.internal (record gone)
2026/10/22 11:03:11 provision: a.shop.example.com: swapped for import sd_snvs7l3jozvog5n3o537q3ed2m (the original route is journaled)
2026/10/22 11:03:11 provision: a.shop.example.com: import sd_snvs7l3jozvog5n3o537q3ed2m committed: its gate is cleared and its journal row dropped
2026/10/22 11:03:11 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/22 11:03:11 provision: a.shop.example.com: import sd_evq5tcalzcvb3rkc7rjcuke5fm rolled back to its original route
2026/10/22 11:03:11 provision: a.shop.example.com: import sd_evq5tcalzcvb3rkc7rjcuke5fm: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/22 11:03:11 provision: a.shop.example.com: import sd_evq5tcalzcvb3rkc7rjcuke5fm is cleaned up and its journal row retired
2026/10/22 11:03:11 provision: a.shop.example.com: import sd_65zi3n3zou727w6dfk3cwhvb3u rolled back to its original route
2026/10/22 11:03:11 provision: a.shop.example.com: import sd_65zi3n3zou727w6dfk3cwhvb3u: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/22 11:03:11 provision: a.shop.example.com: import sd_65zi3n3zou727w6dfk3cwhvb3u is cleaned up and its journal row retired
2026/10/22 11:03:11 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_2n7uj2djnnqu3fz25wkx3xubg4
2026/10/22 11:03:11 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/22 11:03:11 provision: dry-run: would converge a.shop.example.com seed source
2026/10/22 11:03:11 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/22 11:03:12 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/22 11:03:12 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/22 11:03:12 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/22 11:03:12 provision: a.shop.example.com: import sd_saft66xefmwmj4bn3l6uvwy6zu cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_gyeggbommn32pzeekdvribxnjq cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_nev52gn7j3ccbdsd7a4rbjkrsq is journaled, but this box cannot act on imports; its row is left alone
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_b2exe5mdk6b7qulylgf7kr334q is journaled, but this box cannot act on imports; its row is left alone
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_jfj2zbejk7kpj7q5eki5q7i5va is journaled, but this box cannot act on imports; its row is left alone
2026/10/22 11:03:12 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/22 11:03:12 provision: b.shop.example.com: import sd_i2ds4bbkirmvk7fy6log2fpdsm left alone this pass: the import journal could not be read
2026/10/22 11:03:12 provision: c.shop.example.com: import sd_z7t2oph7f7sujffswx3i3htgli left alone this pass: the import journal could not be read
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_juphlu4gu3zmrhov5hozcyax2i committed: its gate is cleared and its journal row dropped
2026/10/22 11:03:12 provision: a.shop.example.com: not converging import sd_jlcpc6dmnoyjnox4a4tiuitj3u: it is swapped but not committed, and the row on this box has no import gate
2026/10/22 11:03:12 provision: a.shop.example.com: not converging import sd_krn4mxi4cvpffvjnutbfqhzhce: it is swapped but not committed, and the row on this box has no import gate
2026/10/22 11:03:12 provision: a.shop.example.com: not converging import sd_eonnrxrnelm2rqp4aq5qxjutwy: it is placed but not committed, and the row on this box has no import gate
2026/10/22 11:03:12 provision: a.shop.example.com: not converging import sd_wxquunyzivqqpuevy4mkkn2p4m: it is placed but not committed, and the row on this box has no import gate
2026/10/22 11:03:12 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/22 11:03:12 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/22 11:03:12 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/22 11:03:12 provision: a.shop.example.com: import sd_me5yp4bklrqplcawqvy3fhe2du committed: its gate is cleared and its journal row dropped
2026/10/22 11:03:12 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/22 11:03:12 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:12 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/22 11:03:12 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/22 11:03:12 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_lc5f3gi4v3wccoinyrdszxfhp4: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_lc5f3gi4v3wccoinyrdszxfhp4 rolled back (no box had swapped it)
2026/10/22 11:03:12 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/22 11:03:12 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:12 provision: removed instance route acme.go.tito.io (its seed sd_b5ynhvupcj76lwn35x3ursx62e was aborted); the next pass rolls it back
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_b5ynhvupcj76lwn35x3ursx62e: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_b5ynhvupcj76lwn35x3ursx62e rolled back (no box had swapped it)
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_45gi4gv3vselmmma4uw6m5p24i has a row this pass may not remove; leaving the seed aborted
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_p2q2m3kmzc6blbqkfbycortsna rolled back (no box had swapped it)
2026/10/22 11:03:12 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:12 provision: removed instance route acme.go.tito.io (its seed sd_xijamxlvngxlgxdydcf27elzme was aborted); the next pass rolls it back
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_xijamxlvngxlgxdydcf27elzme has no route on this box: its local data is removed
2026/10/22 11:03:12 provision: acme.go.tito.io: aborted seed sd_xijamxlvngxlgxdydcf27elzme rolled back (no box had swapped it)
2026/10/22 11:03:12 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:12 provision: a.shop.example.com: swapped for import sd_khgeeax7fouq4bkfvwbzuutfke (the original route is journaled)
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_khgeeax7fouq4bkfvwbzuutfke rolled back to its original route
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_khgeeax7fouq4bkfvwbzuutfke is cleaned up and its journal row retired
2026/10/22 11:03:12 provision: a.shop.example.com: swapped for import sd_k6bqumevn3wujbu3jc2u2lpwge (the original route is journaled)
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_k6bqumevn3wujbu3jc2u2lpwge rolled back to its original route
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_k6bqumevn3wujbu3jc2u2lpwge is cleaned up and its journal row retired
2026/10/22 11:03:12 provision: a.shop.example.com: swapped for import sd_tabtjwhrsb4vyjowhpd2fqhkvy (the original route is journaled)
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_tabtjwhrsb4vyjowhpd2fqhkvy rolled back to its original route
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_tabtjwhrsb4vyjowhpd2fqhkvy: the host's replica is left alone: its record no longer names this seed
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_tabtjwhrsb4vyjowhpd2fqhkvy is cleaned up and its journal row retired
2026/10/22 11:03:12 provision: a.shop.example.com: swapped for import sd_2bhsxs2clz6k3iddgsikz33foi (the original route is journaled)
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_2bhsxs2clz6k3iddgsikz33foi rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_2bhsxs2clz6k3iddgsikz33foi rolled back to its original route
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_2bhsxs2clz6k3iddgsikz33foi is cleaned up and its journal row retired
2026/10/22 11:03:12 provision: a.shop.example.com: swapped for import sd_lwa5c7snauknx23hmqhkhtjrh4 (the original route is journaled)
2026/10/22 11:03:12 provision: a.shop.example.com: import sd_lwa5c7snauknx23hmqhkhtjrh4 rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/22 11:03:12 provision: a.shop.example.com: swapped for import sd_un6j6fha5scrplwwrstqytwwem (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_un6j6fha5scrplwwrstqytwwem is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_nmsk7q2axzlqedercywaniq3za (the original route is journaled)
2026/10/22 11:03:13 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_nmsk7q2axzlqedercywaniq3za left alone this pass: its record could not be read
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_4ei5xykhzqluprkuxupoy3vxka (the original route is journaled)
2026/10/22 11:03:13 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_4ei5xykhzqluprkuxupoy3vxka left alone this pass: its record could not be read
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_rjiyd3d4hqyfkjp4u7hnwfnesu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_rjiyd3d4hqyfkjp4u7hnwfnesu: close the import gate: constraint failed: injected (1811)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_rjiyd3d4hqyfkjp4u7hnwfnesu rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_rjiyd3d4hqyfkjp4u7hnwfnesu is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_gxzox7gpn4u4x5xk3q3r3wyqam (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_gxzox7gpn4u4x5xk3q3r3wyqam: close the import gate: constraint failed: injected (1811)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_gxzox7gpn4u4x5xk3q3r3wyqam rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_gxzox7gpn4u4x5xk3q3r3wyqam is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_vfqwo4jy3mw3s653a55lcworpm (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_vfqwo4jy3mw3s653a55lcworpm rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_vfqwo4jy3mw3s653a55lcworpm rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_vfqwo4jy3mw3s653a55lcworpm is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_ytio2kggy64qr7bpus67howxl4 (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_ytio2kggy64qr7bpus67howxl4 rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_ytio2kggy64qr7bpus67howxl4 is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_lk2356v63qilbklbzsid5bipcu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_lk2356v63qilbklbzsid5bipcu: retire its instance key: injected failure at retire-key
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_lk2356v63qilbklbzsid5bipcu rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_lk2356v63qilbklbzsid5bipcu is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_wwkwm37ywun6yjj3vy3norv7ym (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_wwkwm37ywun6yjj3vy3norv7ym rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_wwkwm37ywun6yjj3vy3norv7ym is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_bzfuywoq3llmbvdb33esfmtrea (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_bzfuywoq3llmbvdb33esfmtrea: remove its local data: injected failure at remove-local
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_bzfuywoq3llmbvdb33esfmtrea rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_bzfuywoq3llmbvdb33esfmtrea is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_l4rgugr5be2qhregcprxdbllay (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_l4rgugr5be2qhregcprxdbllay rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_l4rgugr5be2qhregcprxdbllay is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_njzmtqizqk7erbrfqe53rkoape (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_njzmtqizqk7erbrfqe53rkoape: remove its local data: injected failure at remove-local-done
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_njzmtqizqk7erbrfqe53rkoape rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_njzmtqizqk7erbrfqe53rkoape is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_b3vsow24dvhqak2x24dtixyxfa (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_b3vsow24dvhqak2x24dtixyxfa rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_b3vsow24dvhqak2x24dtixyxfa is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_5ipp3cmgruwgqetfoppnhb4rz4 (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_5ipp3cmgruwgqetfoppnhb4rz4: restore the original route: constraint failed: injected (1811)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_5ipp3cmgruwgqetfoppnhb4rz4 rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_5ipp3cmgruwgqetfoppnhb4rz4 is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_dtactoq7q44ifhucnywkane6ku (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_dtactoq7q44ifhucnywkane6ku: restore the original route: constraint failed: injected (1811)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_dtactoq7q44ifhucnywkane6ku rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_dtactoq7q44ifhucnywkane6ku is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_xom37ss75qeuemehutl345mtbu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_xom37ss75qeuemehutl345mtbu is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_xwkv2lnjxi47hvt3hdqg3eyg5a (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_xwkv2lnjxi47hvt3hdqg3eyg5a rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_xwkv2lnjxi47hvt3hdqg3eyg5a: delete its snapshot: injected failure at delete-snapshot
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_xwkv2lnjxi47hvt3hdqg3eyg5a is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_o4fijoutqty4t5le5z7iwnapq4 (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_o4fijoutqty4t5le5z7iwnapq4 rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_o4fijoutqty4t5le5z7iwnapq4 is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_csspcfck6mgeozkxlp4rpkweae (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_csspcfck6mgeozkxlp4rpkweae rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_csspcfck6mgeozkxlp4rpkweae: delete the host's replica: injected failure at delete-replica
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_csspcfck6mgeozkxlp4rpkweae is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_u73q3d7kle6v2sp7652g32ejry (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_u73q3d7kle6v2sp7652g32ejry rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_u73q3d7kle6v2sp7652g32ejry is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_asabv7yemm33l4reznh3czthgu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_asabv7yemm33l4reznh3czthgu rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_asabv7yemm33l4reznh3czthgu: retire its journal row: constraint failed: injected (1811)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_asabv7yemm33l4reznh3czthgu is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_7s5pbyyemohbgj3wv6sbppdj3q (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_7s5pbyyemohbgj3wv6sbppdj3q rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_7s5pbyyemohbgj3wv6sbppdj3q: retire its journal row: constraint failed: injected (1811)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_7s5pbyyemohbgj3wv6sbppdj3q is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_qfx5tdf7novfrtikwqswccwoje (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_qfx5tdf7novfrtikwqswccwoje rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_qfx5tdf7novfrtikwqswccwoje is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: mark import sd_qfx5tdf7novfrtikwqswccwoje rolled back: injected failure at cas
2026/10/22 11:03:13 provision: a.shop.example.com: aborted seed sd_qfx5tdf7novfrtikwqswccwoje rolled back (no box had swapped it)
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_egvm5bssb6eba4qwe3mjlejhei (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_egvm5bssb6eba4qwe3mjlejhei rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_egvm5bssb6eba4qwe3mjlejhei is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: aborted seed sd_egvm5bssb6eba4qwe3mjlejhei rolled back (no box had swapped it)
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_hi4vf67xd6bawjiy2jlksyxsgu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_hi4vf67xd6bawjiy2jlksyxsgu rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_hi4vf67xd6bawjiy2jlksyxsgu rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_hi4vf67xd6bawjiy2jlksyxsgu rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_hi4vf67xd6bawjiy2jlksyxsgu is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_vf42il7gwwdx4czzav3i22oywe (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_vf42il7gwwdx4czzav3i22oywe rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_vf42il7gwwdx4czzav3i22oywe is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_crw3wfwlflj4pewvbqxhdezbwu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_crw3wfwlflj4pewvbqxhdezbwu rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_crw3wfwlflj4pewvbqxhdezbwu is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_ttcwsdopbxe5bu7bxtyhk6gidi (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_ttcwsdopbxe5bu7bxtyhk6gidi rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_ttcwsdopbxe5bu7bxtyhk6gidi is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_33uekqwa5o7xqlca64bxh63jxi (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_33uekqwa5o7xqlca64bxh63jxi rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_33uekqwa5o7xqlca64bxh63jxi is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_6r6gztesj4frgjcgawwa5jp5ta (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_6r6gztesj4frgjcgawwa5jp5ta rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_6r6gztesj4frgjcgawwa5jp5ta is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_tvsaqa6gjmrr3wzbv6aojxnjgq (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_tvsaqa6gjmrr3wzbv6aojxnjgq rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_tvsaqa6gjmrr3wzbv6aojxnjgq is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_6p33xhzldncivrvodunkoceasq (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_6p33xhzldncivrvodunkoceasq rolled back to its original route
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_6p33xhzldncivrvodunkoceasq is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_gis67bqtjlzr5i7sbunrtipmcu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_gis67bqtjlzr5i7sbunrtipmcu has no route on this box: its local data is removed and no route is put back
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_gis67bqtjlzr5i7sbunrtipmcu is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_f4rhqz7hvgyifrl7c3z2kpa2wu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_2edphq4aux544g6ikl7yrs2ygq (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_4w6x2i74vi7y2aaqk4oectxroq (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_4w6x2i74vi7y2aaqk4oectxroq cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_s7r6n4j3jn4y77ze53eg7lxkfe (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: import sd_s7r6n4j3jn4y77ze53eg7lxkfe is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/22 11:03:13 provision: a.shop.example.com: import "../not-a-seed" names no snapshot and no replica; only its journal row is cleaned up
2026/10/22 11:03:13 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_yivbdtvetasaffastthqjvgfmu (the original route is journaled)
2026/10/22 11:03:13 provision: a.shop.example.com: swapped for import sd_yxqgwqce2a3tiwgsljvgvlbn3u (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_phur5toszxkos7hliyblvexjgy (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_vrxkaxahrsqg2uhw4cte6e7q3q (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_vuopudwnxwkx3wx52doacgow24 (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_vuopudwnxwkx3wx52doacgow24 rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_lwmydx5kqmbpnjuohaesswys4q (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_lwmydx5kqmbpnjuohaesswys4q has no route on this box: its local data is removed and no route is put back
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_lwmydx5kqmbpnjuohaesswys4q is cleaned up and its journal row retired
2026/10/22 11:03:14 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_vne4ls6iro3b7hryir3txfy6ze (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_vne4ls6iro3b7hryir3txfy6ze: remove its local data: injected failure at remove-local
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_vne4ls6iro3b7hryir3txfy6ze is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_vqy7l7swdxxkwxh3mr4l5zu3ba (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_vqy7l7swdxxkwxh3mr4l5zu3ba: a route appeared at the host, so its local database is left and the rollback waits
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_cma36cu45i5rdax4oy72mwwwxa (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_cma36cu45i5rdax4oy72mwwwxa rollback deferred: no fence generation: registry busy
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_24aipzflfvnddxzzkzbicg2pgi (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_24aipzflfvnddxzzkzbicg2pgi rollback deferred: no fence generation: the generation source answered 0
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_dfxaraqnv3k2i3452253eabp2e (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_zwwqkglysq4zarslur4ogac6ye (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_uyj4pzeah5kqf3xvsjbhzepxwi (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/22 11:03:14 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_52irhhsir4kx4tymdknof5km3q (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_52irhhsir4kx4tymdknof5km3q rolled back to its original route
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_52irhhsir4kx4tymdknof5km3q is cleaned up and its journal row retired
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_ebtdrzmpym6dj2b7swenlytnke (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_ebtdrzmpym6dj2b7swenlytnke rolled back to its original route
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_ebtdrzmpym6dj2b7swenlytnke is cleaned up and its journal row retired
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_bdthx4uqru4dp6kee3vpxnmbc4 (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_bdthx4uqru4dp6kee3vpxnmbc4 rolled back to its original route
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_bdthx4uqru4dp6kee3vpxnmbc4 is cleaned up and its journal row retired
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_a24swzqdlgq3ylvfx4nfmxxvdi (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_a24swzqdlgq3ylvfx4nfmxxvdi: retire its instance key: the env file is a symlink
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_a24swzqdlgq3ylvfx4nfmxxvdi rolled back to its original route
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_a24swzqdlgq3ylvfx4nfmxxvdi is cleaned up and its journal row retired
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_ynzj75cglgb7okviuugbp5tu7a (the original route is journaled)
2026/10/22 11:03:14 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/22 11:03:14 provision: a.shop.example.com: swapped for import sd_67wmxhisefaoppnqai3p5noabi (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_e2zqelmzyzilfeha2zfvcwbcwe refused: there is no route at a.shop.example.com to replace
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_4np7heodoy73xpb6xlyaibjjvy refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_zc7uqgkfp7wudwz3xacx6elbl4 refused: the route's address is 127.0.0.1:8401,127.0.0.1:8402, not 127.0.0.1:8401
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_yhf52rwqjap2z6rpyfazprt2la refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_xkjj4k7yijlas5ke7ey4cq3qbq refused: the route belongs to app other
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_w6savfjldgdmzj4n4pfxin5vv4 refused: the route is filed under another account
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_brblnrlvwdls7zfv7li77jxruq refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_jtjxkeikxdl7mwqarb4nsw3sdm refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_t325txp6vud2mqlvhwnyrg6b4q refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_domwv5aqswnhe67gxzalyyj6pe refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_o6wm5qlqtemssewqyprepkyxpm refused: the route is not an address route this import can take over (socket)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_4uxdhuktfmtcl4z5zllxyizc2i refused: the route is not an address route this import can take over (no address)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_xq66aqkx3exupkp3pbdsryxsqm refused: the route is not an address route this import can take over (provisioned)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_x34w6ny6l3v77bxihge4ttqd3q refused: the route is not an address route this import can take over (kind static)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_53sr7de3ffy6zystddvaxluive refused: the route is not an address route this import can take over (backing)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_t2s4eljucvyreo7gez3ntvs2e4 refused: the route is not an address route this import can take over (tunnel)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_qtt3kibhot4mpnutcex2dhuygu refused: the route is not an address route this import can take over (caps)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_3zgvqflsvqwb4rsn7mnluon4jm refused: the route is not an address route this import can take over (platform)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_wmaecwwcmbsaxhidhzx7ryuvqy refused: the route is not an address route this import can take over (canary)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_vejv34ablmy3qeo4r3wuemuy74 refused: the route is not an address route this import can take over (kind sidecar)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_6cn4zfud2zdfoype3fnmryfn3i refused: the route is not an address route this import can take over (region)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_map2qqb77hruugahlv7j4jqibm refused: the route is not an address route this import can take over (fleet_box)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_ssitti5326pcdnkdwntchg6uga refused: the route is not an address route this import can take over (hibernate)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_n3zxyxzw2ezvb224bmwwzw2r3m refused: the route is not an address route this import can take over (claim_owner)
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_gew4ftoir2nmsj6lugxbh5giay refused: this box does not run instances nested
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_zg4tdnaxxvtrybvep5qcg3qlgu refused: this box does not run instances nested
2026/10/22 11:03:14 provision: a.shop.example.com: import sd_5rvre6njoutpkvl4q2lvxxfzj4 refused: claim control is on for this box
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_azewllqosrpp7tderpr6f54zia (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: swapped for import sd_ze244jr2dgmb2siz5y7aguq5k4 (the original route is journaled)
2026/10/22 11:03:14 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/22 11:03:14 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/22 11:03:14 provision: a.shop.example.com: not swapping for import sd_kprt6a42qalhmc6osgrbijobsa: its verify hash is not a sha256
2026/10/22 11:03:14 provision: a.shop.example.com: not swapping for import sd_4oq4dihpiv233xrkn3h4dixd3e: its verify hash is not a sha256
2026/10/22 11:03:14 provision: a.shop.example.com: not swapping for import sd_mnagwvaflvnjnnh5xur553jzq4: its verify hash is not a sha256
2026/10/22 11:03:14 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/22 11:03:14 provision: A.shop.example.com/..: not swapping for import sd_yijit2oo6qfgp4whfoc2npofcy: its host or seed id is malformed (seeds: not a host)
2026/10/22 11:03:14 provision: a.shop.example.com: not swapping for import sd_blt6p5qm6opjptzhheirfv2vyq: its record does not describe a nested, hibernating instance
2026/10/22 11:03:14 provision: a.shop.example.com: not swapping for import sd_ru4jgrqv3bue3ywjed2gae4g2e: its record does not describe a nested, hibernating instance
2026/10/22 11:03:14 provision: a.shop.example.com: not swapping for import sd_xqqqyv2svdhkuld3wddgign46a: its record does not describe a nested, hibernating instance
2026/10/22 11:03:15 provision: a.shop.example.com: not swapping for import sd_do2zib2morqt5knjuk6ruq4o4q: its record does not describe a nested, hibernating instance
2026/10/22 11:03:15 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/22 11:03:15 provision: a.shop.example.com: swapped for import sd_jvquguy6zuk5gk7i4dntdrhcwi (the original route is journaled)
2026/10/22 11:03:15 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/22 11:03:15 provision: a.shop.example.com: swapped for import sd_kosdg3bj5m6bew34ctylmhd2pm (the original route is journaled)
2026/10/22 11:03:15 provision: a.shop.example.com: swapped for import sd_ndfidit7cre6gy24csxzqqguau (the original route is journaled)
2026/10/22 11:03:15 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/22 11:03:15 provision: dry-run: would consider swapping a.shop.example.com for import sd_ijyw3qs3aibartwymytiekyiyu
2026/10/22 11:03:15 provision: a.shop.example.com: import sd_izgfrudfvh5pby6rk6xatahg6e rolled back to its original route
2026/10/22 11:03:15 provision: a.shop.example.com: import sd_izgfrudfvh5pby6rk6xatahg6e: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/22 11:03:15 provision: a.shop.example.com: import sd_izgfrudfvh5pby6rk6xatahg6e is cleaned up and its journal row retired
2026/10/22 11:03:15 provision: a.shop.example.com: import sd_oa2sq6xu7hkbyoi4og4bgpocpm left alone: the import journal holds seed sd_3inqnegb2kfbzlhbnieytlbalm at swapped
2026/10/22 11:03:15 provision: a.shop.example.com: not minting import sd_tnkcdvhriytyfo52m7cydnmwwu: it is swapped but not committed, and only its swap makes its row
2026/10/22 11:03:15 provision: a.shop.example.com: not minting import sd_mueckmvin3umlxpsekwlfsu67e: it is placed but not committed, and only its swap makes its row
2026/10/22 11:03:15 provision: a.shop.example.com: swapped for import sd_6ga2r3maswkiphsj6r57wfe7v4 (the original route is journaled)
2026/10/22 11:03:15 provision: a.shop.example.com: not minting import sd_6ga2r3maswkiphsj6r57wfe7v4: it is swapped but not committed, and only its swap makes its row
2026/10/22 11:03:15 provision: a.shop.example.com: not minting import sd_6ga2r3maswkiphsj6r57wfe7v4: it is placed but not committed, and only its swap makes its row
2026/10/22 11:03:15 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/22 11:03:15 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/22 11:03:15 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/22 11:03:15 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/22 11:03:15 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/22 11:03:15 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/22 11:03:15 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/22 11:03:15 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/22 11:03:15 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/22 11:03:15 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/22 11:03:15 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/22 11:03:15 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/22 11:03:15 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/22 11:03:15 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/22 11:03:15 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/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/22 11:03:15 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/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 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/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 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/22 11:03:15 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 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/22 11:03:15 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/22 11:03:15 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/22 11:03:15 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/22 11:03:15 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/22 11:03:15 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/22 11:03:15 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/22 11:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:15 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/22 11:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:15 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/22 11:03:15 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/22 11:03:15 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/22 11:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/22 11:03:15 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/22 11:03:15 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/22 11:03:15 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/22 11:03:15 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/22 11:03:15 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/22 11:03:15 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/22 11:03:15 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/22 11:03:15 provision: record view: change index unusable (release: change index unreadable: store has no conditional read: unsupported operation): the walk records no generations
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/22 11:03:15 provision: listing apps/bqc/shop/instances/: context canceled — its records are unseen this pass
2026/10/22 11:03:15 provision: record view: change index unusable (get refused): walking
2026/10/22 11:03:15 provision: record view: change index unusable (get refused): the walk records no generations
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/22 11:03:15 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/22 11:03:15 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/22 11:03:15 provision: an app's records could not be listed: they are skipped
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: record view: change index unusable (release: change index malformed: invalid character 'n' looking for beginning of object key string): walking
2026/10/22 11:03:15 provision: record view: change index unusable (release: change index malformed: invalid character 'n' looking for beginning of object key string): the walk records no generations
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/22 11:03:15 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/22 11:03:15 provision: record view: re-reading accounts/bqd failed: retrying on the next refresh
2026/10/22 11:03:15 provision: skipping accounts/bqd/account.json: read failed: list refused
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/22 11:03:15 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
--- FAIL: TestPlan14RootReadCensus (20.00s)
    plan14_root_reads_test.go:1124: root read census: 60 discrepancies
        changed root read internal/appconfig/syncexec.go:SyncExecWithCallbacks; review class, task, sites and digest
        changed root read internal/host/activation_command_linux.go:runSystemClaims; review class, task, sites and digest
        changed root read internal/host/agent.go:configGenLoop; review class, task, sites and digest
        changed root read internal/host/agent.go:fastConvergeLoop; review class, task, sites and digest
        changed root read internal/host/agent.go:fastTick; review class, task, sites and digest
        changed root read internal/host/agent.go:genPollPass; review class, task, sites and digest
        changed root read internal/host/agent.go:runAgent; review class, task, sites and digest
        changed root read internal/host/steering_loop.go:steeringPass; 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:holdExisting; review class, task, sites and digest
        changed root read internal/provision/sidecar_reconcile.go:ReconcileSidecars; review class, task, sites and digest
        changed root read internal/release/adopt.go:PassFilter; review class, task, sites and digest
        changed root read internal/telemetry/telemetry.go:Resolve; review class, task, sites and digest
        changed root source envelope .
        changed root source envelope cmd/console
        changed root source envelope internal/appconfig
        changed root source envelope internal/edge
        changed root source envelope internal/host
        changed root source envelope internal/hostops
        changed root source envelope internal/ops
        changed root source envelope internal/provision
        changed root source envelope internal/release
        changed root source envelope internal/telemetry
        changed root source envelope internal/vet
        stale root read internal/host/buildstate.go:buildStates.refreshAll
        stale root read internal/host/telemetry_pass.go:telemetrySwitches
        stale root read internal/release/adopt.go:type passConfig
        stale root read internal/release/conditional_delete.go:DirStore.DeleteIfMatch
        stale root read internal/release/store.go:DirStore.Put
        stale root read internal/release/store.go:DirStore.PutFrom
        unclassified root read internal/appconfig/syncexec.go:syncOptions.kept whole:Route@84
        unclassified root read internal/host/agent.go:fastDeps.canaryPointerGate whole:Route@486
        unclassified root read internal/host/agent.go:fastDeps.canarySettled registry:Host@244,whole:Route@137,whole:Route@190
        unclassified root read internal/host/buildstate.go:buildStates.refreshKept registry:Host@549,whole:Route@442,whole:Route@472,whole:Route@517
        unclassified root read internal/host/changeindex.go:movedRoutes registry:App@297,whole:Route@292
        unclassified root read internal/host/telemetry_pass.go:telemetryReads.read file:Read@396
        unclassified root read internal/host/telemetry_pass.go:telemetrySwitchesWith registry:App@459,registry:App@547,registry:App@842,registry:Kind@436,whole:Route@422,whole:Route@521
        unclassified root read internal/provision/recordview_store.go:confirmRecordGone registry:Account@195,registry:App@207,registry:Host@215,registry:Host@428,registry:Host@646
        unclassified root read internal/provision/recordview_store.go:confirmSidecarGone registry:Account@210,registry:App@222,registry:Host@451,registry:Host@498,registry:Host@700,registry:Slug@230
        unclassified root read internal/provision/recordview_store.go:snapStore.Open file:Open@20
        unclassified root read internal/release/adopt.go:passConfig.gatePointers registry:App@305,whole:Route@300,whole:Route@326,whole:Route@420,whole:Route@442,whole:Route@479,whole:Route@497,whole:Route@548,whole:Route@567,whole:Route@578,whole:Route@750,whole:Route@955,whole:Route@979
        unclassified root read internal/release/conditional_delete.go:DirStore.deleteIfMatchRaw file:ReadFile@244
        unclassified root read internal/release/store.go:DirStore.ListETags file:WalkDir@145
        unclassified root read internal/release/store.go:DirStore.putFromRaw file:Stat@462
        unclassified root read internal/release/store.go:DirStore.putRaw file:Stat@443
        unclassified root read internal/release/store.go:S3Store.GetIfChanged file:ReadAll@511
        changed legacy declaration internal/appconfig/syncexec.go:SyncExecWithCallbacks
        changed legacy declaration internal/host/agent.go:configGenLoop
        changed legacy declaration internal/host/agent.go:fastTick
        changed legacy declaration internal/host/agent.go:genPollPass
        changed legacy declaration internal/host/steering_loop.go:steeringPass
        changed legacy declaration internal/host/telemetry_pass.go:telemetrySwitches
        changed legacy declaration internal/provision/reconcile.go:Reconcile
        changed legacy declaration internal/provision/reconcile.go:holdExisting
        changed legacy declaration internal/provision/sidecar_reconcile.go:ReconcileSidecars
        changed legacy declaration internal/release/conditional_delete.go:DirStore.DeleteIfMatch
        changed legacy declaration internal/release/store.go:DirStore.Put
        changed legacy declaration internal/release/store.go:DirStore.PutFrom
        changed legacy declaration internal/telemetry/telemetry.go:Resolve
        changed reclassified declaration internal/host/agent.go:fastConvergeLoop
FAIL
FAIL	github.com/carlosframework/platform/internal/provision	32.441s
ok  	github.com/carlosframework/platform/internal/publicrelease	0.018s
?   	github.com/carlosframework/platform/internal/regionname	[no test files]
ok  	github.com/carlosframework/platform/internal/registry	7.141s
ok  	github.com/carlosframework/platform/internal/relay	7.244s
ok  	github.com/carlosframework/platform/internal/release	31.515s
ok  	github.com/carlosframework/platform/internal/rollout	5.356s
ok  	github.com/carlosframework/platform/internal/rolloutwords	0.005s
ok  	github.com/carlosframework/platform/internal/rootaws	0.008s
ok  	github.com/carlosframework/platform/internal/rootparticipation	0.137s
ok  	github.com/carlosframework/platform/internal/rootstate	0.027s
ok  	github.com/carlosframework/platform/internal/runs	0.675s
ok  	github.com/carlosframework/platform/internal/s3compat	0.007s
ok  	github.com/carlosframework/platform/internal/safefile	0.012s
ok  	github.com/carlosframework/platform/internal/schedule	3.620s
ok  	github.com/carlosframework/platform/internal/seeds	0.022s
ok  	github.com/carlosframework/platform/internal/sim/hostlife	25.118s
ok  	github.com/carlosframework/platform/internal/sim/litestreamfacts	4.158s
ok  	github.com/carlosframework/platform/internal/status	0.229s
ok  	github.com/carlosframework/platform/internal/steering	0.008s
ok  	github.com/carlosframework/platform/internal/stopevidence	0.614s
ok  	github.com/carlosframework/platform/internal/svcrole	0.014s
ok  	github.com/carlosframework/platform/internal/telemetry	0.014s
ok  	github.com/carlosframework/platform/internal/termfence	0.012s
ok  	github.com/carlosframework/platform/internal/tunnelclient	0.013s
ok  	github.com/carlosframework/platform/internal/unixdial	0.003s
ok  	github.com/carlosframework/platform/internal/updatewords	0.010s
ok  	github.com/carlosframework/platform/internal/usage	0.006s
ok  	github.com/carlosframework/platform/internal/version	0.009s
ok  	github.com/carlosframework/platform/internal/vet	2.304s
FAIL
=== internal_console@0 (84 s)
2026/10/22 11:02:51 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:51 console: backfilled account manifest for bab (ops)
2026/10/22 11:02:51 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:51 console: could not notify paul@keymail.dev of a CLI token issue: Post "http://127.0.0.1:43107/api/app/send": dial tcp 127.0.0.1:43107: connect: connection refused
2026/10/22 11:02:51 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:51 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: api instance move bab/titogo/acme.go.tito.io: storage binding: read timeout
2026/10/22 11:02:52 console: api instance move bab/titogo/acme.go.tito.io: manifest: read timeout
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:52 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: could not notify eve@keymail.dev of a CLI token issue: Post "http://127.0.0.1:42073/api/app/send": dial tcp 127.0.0.1:42073: connect: connection refused
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: api system status: canary pointer: system pointer does not verify: system pointer router/canary: signature does not verify
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: app region bab/tmp-docs:  (default)
2026/10/22 11:02:53 console: backfilled account manifest for bab (ops)
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: api updates bab/km policy: enable refused, not every box applies update settings: ie-1: runs a binary that does not apply update settings
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: api updates bab/km policy: enable refused, the box inventory could not be read: edges records: AccessDenied: s3://carlos-prod-secret-bucket/ledgers request id ABC123
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:53 console: backfilled account manifest for bab (ops)
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: backfilled account manifest for bab (ops)
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: store destroy bab/kass: objstore: empty bucket carlos-bab-kass: backend unreachable
2026/10/22 11:02:54 console: backfilled account manifest for bab (ops)
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: account bac names owner "not-an-address", which is not a keymail address — nobody could sign in as it, so no membership was created. Fix it with: console member --add <address> bac --role owner
2026/10/22 11:02:54 console: materialized account bac (Typo) from the bucket
2026/10/22 11:02:54 console: accounts/bac/account.json names owner "not-an-address", which is not a keymail address — materializing the account without it; give it one with `console member --add <address> bac --role owner`
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:54 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:55 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:55 console: refused: no eligible box in uk
2026/10/22 11:02:55 console: claim request refused: no eligible box in uk: hostops: region has no box that can take this
2026/10/22 11:02:55 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:55 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:55 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:55 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:02:55 console: backfilled account manifest for bab (ops)
2026/10/22 11:02:56 console: api relay enable: hostops: pending
2026/10/22 11:02:56 console: relay enabled bab/titogo in eu-west-1 by paul@keymail.dev (incarnation acbd03a8554ce823, op 1)
2026/10/22 11:02:57 console: relay enabled bab/titogo in eu-west-1 by paul@keymail.dev (incarnation 86c66424c3944660, op 1)
2026/10/22 11:02:57 console: api relay adopted: hostops: pending
2026/10/22 11:02:58 console: relay enabled bab/titogo in eu-west-1 by paul@keymail.dev (incarnation 142f30d4bc716369, op 1)
2026/10/22 11:02:58 console: api relay disable: hostops: pending
2026/10/22 11:02:58 console: relay disabled bab/titogo by paul@keymail.dev (op 2)
2026/10/22 11:02:59 console: relay enabled bab/titogo in eu-west-1 by paul@keymail.dev (incarnation d2bad8b54903c03d, op 1)
2026/10/22 11:02:59 console: relay rotate eu-west-1: bab/titogo: hostops: pending
2026/10/22 11:02:59 console: relay rotated eu-west-1 to kid k2, re-issued 0 app(s)
2026/10/22 11:02:59 console: audit relay-rotate platform: sql: no rows in result set
2026/10/22 11:02:59 console: relay rotated eu-west-1 to kid k3, re-issued 1 app(s)
2026/10/22 11:02:59 console: audit relay-rotate platform: sql: no rows in result set
2026/10/22 11:03:00 console: mail push: bab/titogo: hostops: pending
2026/10/22 11:03:07 console: relay enabled bab/titogo in eu-west-1 by paul@keymail.dev (incarnation af89c1836b9046e1, op 1)
2026/10/22 11:03:07 console: relay writer lease acquired (holder 15282ac07adf0bf4)
2026/10/22 11:03:07 console: relay reconcile bab/titogo: hostops: pending
2026/10/22 11:03:10 console: relay writer lease acquired (holder 15282ac07adf0bf4)
2026/10/22 11:03:14 console: control-plane set bab/titogo: hostops: pending
2026/10/22 11:03:14 console: production kass -> true: hostops: pending
2026/10/22 11:03:14 console: promote kass v1 -> canary/x: hostops: pending
2026/10/22 11:03:15 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:03:15 console: app region bab/tmp-claim-keep:  (default)
2026/10/22 11:03:15 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:15 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:15 console: pipeline settings save bab/titogo: set: hostops: pending
2026/10/22 11:03:15 console: reject pending change f8aabe6ca5c31c6d31cc6b16da21f284: hostops: pending
2026/10/22 11:03:15 console: confirm pending change: hostops: pending
2026/10/22 11:03:15 console: api updates install bab/titogo/acme.go.tito.io: hostops: pending
2026/10/22 11:03:15 console: keep bab/tmp-claim-keep: hostops: pending
2026/10/22 11:03:15 console: api updates bab/titogo/acme.go.tito.io: hostops: pending
2026/10/22 11:03:16 console: browser retry bab/titogo/web.go.tito.io: hostops: pending
2026/10/22 11:03:16 console: browser restart bab/kass/kass.carlosapp.dev: hostops: pending
2026/10/22 11:03:16 console: gate write bab/titogo/acme.go.tito.io: hostops: pending
2026/10/22 11:03:16 console: errors level bab/kass: hostops: pending
2026/10/22 11:03:16 console: fast-track kass stable: hostops: pending
2026/10/22 11:03:16 console: trash bab/titogo: hostops: pending
2026/10/22 11:03:17 console: api email pause bab/titogo: mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:18 console: claim request refused: hostops: pending
2026/10/22 11:03:18 console: api instance channel bab/titogo/web.go.tito.io: hostops: pending
2026/10/22 11:03:18 console: api instance token bab/titogo: hostops: pending
2026/10/22 11:03:18 console: api features set bab/titogo: hostops: pending
2026/10/22 11:03:18 console: service rotate bab/svc-a: hostops: pending
2026/10/22 11:03:18 console: api email rotate bab/titogo: mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:19 console: api trash bab/titogo: hostops: pending
2026/10/22 11:03:19 console: api config sync bab/titogo: hostops: pending
2026/10/22 11:03:19 console: api resign bab/kass canary/x: hostops: pending
2026/10/22 11:03:19 console: app region bab/tmp-claim-cli:  (default)
2026/10/22 11:03:19 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:19 console: app region bab/claim-cli-new:  (default)
2026/10/22 11:03:19 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:19 console: claim request refused: hostops: pending
2026/10/22 11:03:19 console: restore bab/titogo: hostops: pending
2026/10/22 11:03:20 console: api email enable bab/titogo: apply grant: mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:20 console: api email credentials create bab/titogo: mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:20 console: api email domain ensure bab/titogo (titogo.bab.oncarlos.com): mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:20 console: api email domain verify bab/titogo.bab.oncarlos.com: mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:20 console: app region bab/tmp-claim-expiry:  (default)
2026/10/22 11:03:20 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:20 console: api store rotate bab/titogo: hostops: pending
2026/10/22 11:03:20 console: scan drain: bab/titogo: hostops: pending
2026/10/22 11:03:20 console: scan pass: bab/titogo: hostops: pending
2026/10/22 11:03:21 console: expiry pass: trash bab/tmp-claim-expiry: hostops: pending
2026/10/22 11:03:21 console: door keys re-sign bab/titogo: hostops: pending
2026/10/22 11:03:21 console: api version-target set bab/titogo: hostops: pending
2026/10/22 11:03:21 console: api updates policy bab/titogo: hostops: pending
2026/10/22 11:03:21 console: api telemetry bab/titogo: hostops: pending
2026/10/22 11:03:22 console: api sidecars enable bab/titogo: hostops: pending
2026/10/22 11:03:22 console: api swap bab/titogo: hostops: pending
2026/10/22 11:03:22 console: api pipeline put bab/titogo: set: hostops: pending
2026/10/22 11:03:23 console: api updates bab/titogo/acme.go.tito.io: hostops: pending
2026/10/22 11:03:23 console: api instances enable bab/titogo: hostops: pending
2026/10/22 11:03:24 console: claim restore bab/titogo: recovered (restored)
2026/10/22 11:03:24 console: api email push key bab/titogo: hostops: pending
2026/10/22 11:03:24 console: api config apply bab/titogo (default): hostops: pending
2026/10/22 11:03:25 console: api domains paths bab/titogo ti.to: hostops: pending
2026/10/22 11:03:25 console: cli token revoke paul@keymail.dev: hostops: pending
2026/10/22 11:03:26 console: ses events: logging Delivery for bab/titogo: hostops: pending
2026/10/22 11:03:26 console: ses events: recording Delivery for bab/titogo: hostops: pending
2026/10/22 11:03:27 console: service rotate bab/svc-a: hostops: pending
2026/10/22 11:03:27 console: service revoke bab: hostops: pending
2026/10/22 11:03:28 console: app region bab/tmp-claim-ttl:  (default)
2026/10/22 11:03:28 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:28 console: service create bab/svc-cli: hostops: pending
2026/10/22 11:03:28 console: lifecycle tmp-claim-ttl: hostops: pending
2026/10/22 11:03:28 console: api scan sweep bab/titogo: hostops: pending
2026/10/22 11:03:28 console: api scan enqueue bab/titogo "claim-fixture.txt": hostops: pending
2026/10/22 11:03:28 console: api scan revoke bab/titogo: hostops: pending
2026/10/22 11:03:28 console: api scan grant bab/titogo: enable: hostops: pending
2026/10/22 11:03:28 console: api scan enforce bab/titogo: hostops: pending
2026/10/22 11:03:29 console: api scan callback rotate bab/titogo: deliver: hostops: pending
2026/10/22 11:03:29 console: api scan request bab/titogo: hostops: pending
2026/10/22 11:03:29 console: api store rotate finish bab/titogo: hostops: pending
2026/10/22 11:03:29 console: control-plane clear bab/titogo: hostops: pending
2026/10/22 11:03:29 console: retire kass canary/rc: hostops: pending
2026/10/22 11:03:29 console: canary kass v1 -> canary/rc: hostops: pending
2026/10/22 11:03:29 console: analytics setting bab/kass: hostops: pending
2026/10/22 11:03:30 console: api instances update bab/titogo/ha.go.tito.io: hostops: pending
2026/10/22 11:03:30 console: control-plane clear bab/titogo: hostops: pending
2026/10/22 11:03:30 console: app region bab/claim-web-new:  (default)
2026/10/22 11:03:30 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:30 console: audit db-read titogo: hostops: pending
2026/10/22 11:03:30 console: api email push off bab/titogo: hostops: pending
2026/10/22 11:03:30 console: audit sidecar-delete titogo: hostops: pending
2026/10/22 11:03:30 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:03:31 console: api email domain remove bab/titogo (titogo.bab.oncarlos.com): mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:31 console: api store provision bab/titogo: hostops: pending
2026/10/22 11:03:31 console: audit instance-delete titogo: hostops: pending
2026/10/22 11:03:31 console: api store grant bab/titogo (bucket ""): hostops: pending
2026/10/22 11:03:31 console: api store create bab/titogo: hostops: pending
2026/10/22 11:03:31 console: api sidecars wake bab/titogo/bot: hostops: pending
2026/10/22 11:03:31 console: claim request refused: hostops: pending
2026/10/22 11:03:31 console: api schedule run bab/titogo sync: hostops: pending
2026/10/22 11:03:32 console: api schedule rm bab/titogo sync: hostops: pending
2026/10/22 11:03:32 console: api schedule set bab/titogo sync: hostops: pending
2026/10/22 11:03:32 console: api rollback kass canary/x: hostops: pending
2026/10/22 11:03:32 console: api retention set bab/titogo: hostops: pending
2026/10/22 11:03:32 console: api restore bab/titogo: hostops: pending
2026/10/22 11:03:32 console: api restart scope bab/kass (host kass.carlosapp.dev): hostops: pending
2026/10/22 11:03:32 console: api restart bab/titogo: hostops: pending
2026/10/22 11:03:33 console: api authorize bab/kass v1: hostops: pending
2026/10/22 11:03:33 console: api ship titogo abc1234: hostops: pending
2026/10/22 11:03:33 console: api promote kass v1 -> canary/claim: hostops: pending
2026/10/22 11:03:33 console: door key revoke bab/titogo 80d18dd859f759bc: hostops: pending
2026/10/22 11:03:33 console: api email declare bab/titogo: mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:33 console: api email credentials revoke bab/titogo (laptop): mail: lifecycle resource operation pending
hostops: pending
2026/10/22 11:03:34 console: swap policy bab/kass: hostops: pending
2026/10/22 11:03:34 console: service revoke bab: hostops: pending
2026/10/22 11:03:34 console: service create bab/svc-web: hostops: pending
2026/10/22 11:03:34 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:03:34 console: rollback kass canary/x: hostops: pending
2026/10/22 11:03:34 console: store destroy bab/titogo: hostops: pending
2026/10/22 11:03:34 console: ledger blob bab/titogo/prompts: hostops: pending
2026/10/22 11:03:35 console: ledger append bab/titogo/carbon: hostops: pending
2026/10/22 11:03:35 console: app region bab/tmp-claim-keep:  (default)
2026/10/22 11:03:35 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:35 console: ledger publish bab/titogo: hostops: pending
2026/10/22 11:03:35 console: lifecycle tmp-claim-keep: hostops: pending
2026/10/22 11:03:35 console: api updates install bab/titogo/acme.go.tito.io: hostops: pending
2026/10/22 11:03:36 console: door key mint bab/titogo: hostops: pending
2026/10/22 11:03:36 console: api instance retry bab/titogo/web.go.tito.io: hostops: pending
2026/10/22 11:03:36 console: browser restart bab/kass/: hostops: pending
2026/10/22 11:03:41 console: geoip published ed972738 (GeoIP2-City, manual)
2026/10/22 11:03:41 console: audit geoip off platform: sql: no rows in result set
2026/10/22 11:03:42 console: relay enabled bab/titogo in eu-west-1 by paul@keymail.dev (incarnation 4eacf1ab346244bd, op 1)
2026/10/22 11:03:42 console: geoip published ed972738 (GeoIP2-City, manual)
2026/10/22 11:03:43 console: geoip published ed972738 (GeoIP2-City, manual)
2026/10/22 11:03:43 console: audit geoip publish platform: sql: no rows in result set
2026/10/22 11:03:51 console: audit store-apply : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:03:52 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:03:53 console: audit store-apply : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:03:53 console: audit store-decline : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:03:56 console: audit analytics-setting account: sql: no rows in result set
2026/10/22 11:03:56 console: audit system-update platform: sql: no rows in result set
2026/10/22 11:03:57 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:57 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:57 console: audit store-apply : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:03:57 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:58 console: audit system-update platform: sql: no rows in result set
2026/10/22 11:03:58 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:58 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:58 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:58 console: audit system-update platform: sql: no rows in result set
2026/10/22 11:03:59 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:59 console: audit seeds-floor-publish platform: sql: no rows in result set
2026/10/22 11:03:59 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:59 console: backfilled account manifest for bab (ops)
2026/10/22 11:03:59 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:00 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:01 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:01 console: audit fleet-add-box pi: sql: no rows in result set
2026/10/22 11:04:01 console: audit fleet-rotate-box pi: sql: no rows in result set
2026/10/22 11:04:02 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:02 console: audit fleet-add-box pi: sql: no rows in result set
2026/10/22 11:04:02 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:02 console: audit fleet-tag-box pi: sql: no rows in result set
2026/10/22 11:04:03 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:03 console: account telemetry bab: dirstore: invalid key "apps/bab//telemetry.json"
2026/10/22 11:04:03 console: audit store-apply : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:04:03 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:03 console: audit fleet-add-box pi: sql: no rows in result set
2026/10/22 11:04:03 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:03 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:03 console: audit fleet-add-box pi: sql: no rows in result set
2026/10/22 11:04:04 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:04 console: audit fleet-detach-box pi: sql: no rows in result set
2026/10/22 11:04:04 console: audit fleet-detach-box pi: sql: no rows in result set
2026/10/22 11:04:04 console: audit store-apply : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:04:04 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:04 console: audit store-decline : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:04:04 console: audit errors-level account: sql: no rows in result set
2026/10/22 11:04:04 console: audit fleet-add-box pi: sql: no rows in result set
2026/10/22 11:04:04 console: audit system-update platform: sql: no rows in result set
2026/10/22 11:04:04 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:04 console: audit system-activation-cancel platform: sql: no rows in result set
2026/10/22 11:04:04 console: audit pointer-digests-on platform: sql: no rows in result set
2026/10/22 11:04:05 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:05 console: audit fleet-add-box pi: sql: no rows in result set
2026/10/22 11:04:05 console: audit system-layout platform: sql: no rows in result set
2026/10/22 11:04:05 console: audit fleet-create pi: sql: no rows in result set
2026/10/22 11:04:05 console: audit fleet-tag-box pi: sql: no rows in result set
2026/10/22 11:04:05 console: audit fleet-add-box pi: sql: no rows in result set
2026/10/22 11:04:05 console: object scanning enabled deployment-wide by paul@keymail.dev
2026/10/22 11:04:05 console: audit fleet-rotate-box pi: sql: no rows in result set
2026/10/22 11:04:05 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:06 console: audit store-apply : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:04:06 console: audit store-apply : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:04:06 console: audit store-approve : constraint failed: claim: app write not permitted (1811)
2026/10/22 11:04:06 console: audit system-update platform: sql: no rows in result set
2026/10/22 11:04:06 console: audit system-update platform: sql: no rows in result set
2026/10/22 11:04:06 console: audit system-rollback platform: sql: no rows in result set
--- FAIL: TestClaimConsoleMutationInvariant (71.17s)
    claim_invariant_test.go:360: app-scoped writer bucket/GetIfChanged is reached by no door's open run and has no reason in claimWriterReasons
    claim_invariant_test.go:360: app-scoped writer bucket/ListETags is reached by no door's open run and has no reason in claimWriterReasons
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: could not notify alice@keymail.dev of a CLI token issue: keymail: grant revoked or invalid
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:07 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: materialized account bbw (Blog) from the bucket
2026/10/22 11:04:08 console: materialized account mdbbndjqx (Kass) from the bucket
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:08 console: moves: acme.go.tito.io: move mv_5f6uskzjmh4zvxtiigxeijmpxy is still preparing after 6h0m0s; aborted
2026/10/22 11:04:08 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:09 console: app region bab/solo:  (default)
2026/10/22 11:04:09 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: ALERT [carlos] SQL effect old on bab/demo needs the restore break-glass path
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:10 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 provision: skipping record apps/bab/shop/instances/other.example.com.json: unreadable: slow down
2026/10/22 11:04:11 console: run sweep: some records could not be read; their runs wait for a later pass, and no orphan run is deleted on this one
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: scan queue rebuild: acct-bad: transient listing failure
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: scan queue rebuild: acct-bad/shop: transient listing failure
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000004
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000004 maxTXID=0000000000000004 size=537
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000004 txid.db=0000000000000004
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000004 txid.db=0000000000000005
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000005 maxTXID=0000000000000005 size=621
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000005 txid.db=0000000000000005
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000005 txid.db=0000000000000006
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000006 maxTXID=0000000000000006 size=704
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000006 txid.db=0000000000000006
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000006 txid.db=0000000000000007
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000007 maxTXID=0000000000000007 size=788
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000007 txid.db=0000000000000007
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000007 txid.db=0000000000000008
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000008 maxTXID=0000000000000008 size=871
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000008 txid.db=0000000000000008
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000008 txid.db=0000000000000009
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000009 maxTXID=0000000000000009 size=955
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000009 txid.db=0000000000000009
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000009 txid.db=000000000000000a
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=000000000000000a maxTXID=000000000000000a size=1038
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000a txid.db=000000000000000a
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000a txid.db=000000000000000b
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=000000000000000b maxTXID=000000000000000b size=1124
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000b txid.db=000000000000000b
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000b txid.db=000000000000000c
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=000000000000000c maxTXID=000000000000000c size=1208
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000c txid.db=000000000000000c
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000c txid.db=000000000000000d
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=000000000000000d maxTXID=000000000000000d size=1294
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000d txid.db=000000000000000d
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000d txid.db=000000000000000e
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=000000000000000e maxTXID=000000000000000e size=1387
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000e txid.db=000000000000000e
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000e txid.db=000000000000000f
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=000000000000000f maxTXID=000000000000000f size=1481
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000f txid.db=000000000000000f
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=000000000000000f txid.db=0000000000000010
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000010 maxTXID=0000000000000010 size=1569
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000010 txid.db=0000000000000010
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000010 txid.db=0000000000000011
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000011 maxTXID=0000000000000011 size=1661
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000011 txid.db=0000000000000011
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000011 txid.db=0000000000000012
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000012 maxTXID=0000000000000012 size=1755
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000012 txid.db=0000000000000012
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000012 txid.db=0000000000000013
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000013 maxTXID=0000000000000013 size=1843
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000013 txid.db=0000000000000013
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000013 txid.db=0000000000000014
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000014 maxTXID=0000000000000014 size=1935
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000014 txid.db=0000000000000014
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000014 txid.db=0000000000000015
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000015 maxTXID=0000000000000015 size=2031
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000015 txid.db=0000000000000015
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000015 txid.db=0000000000000016
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000016 maxTXID=0000000000000016 size=2119
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000016 txid.db=0000000000000016
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000016 txid.db=0000000000000017
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000017 maxTXID=0000000000000017 size=2216
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000017 txid.db=0000000000000017
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000017 txid.db=0000000000000018
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000018 maxTXID=0000000000000018 size=2309
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000018 txid.db=0000000000000018
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000018 txid.db=0000000000000019
2026/10/22 11:04:11 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000019 maxTXID=0000000000000019 size=2403
2026/10/22 11:04:11 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000019 txid.db=0000000000000019
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 edges: box "kass-2" has an edges file under control/edges/ but no status snapshot at all, so no region outside the home is automatically eligible until it reports; said once
2026/10/22 11:04:11 console: seeds readiness: box "kass-2" in region "the home region" is unconfirmed: stale heartbeat, generated 2026-10-22T10:04:11Z
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: place bab/shop: read instances: records that do not read: [broken.example.com]
2026/10/22 11:04:11 console: place bab/shop: read instances: provision: read record apps/bab/shop/instances/plain.example.com.json: injected read failure
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: seeds pass: abandoned seed sd_uxntif5eqp4nn4nmvv7wxkzkty of bab/shop/canary.shop.example.com (reserving since 2026-10-22T10:54:11Z)
2026/10/22 11:04:11 console: seeds pass: deleted seeds/canary.shop.example.com/sd_uxntif5eqp4nn4nmvv7wxkzkty/snapshot.db
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: ses events: refused topic "arn:aws:sns:eu-west-1:9:someone-else" — this deployment expects "arn:aws:sns:eu-west-1:1:carlos-mail"
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: materialized account bac (Testco) from the bucket
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: store decision bab: no keymail grant for paul@keymail.dev — not notified (they must sign in to the console once)
2026/10/22 11:04:11 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:11 console: account telemetry bab: dirstore: invalid key "apps/bab//telemetry.json"
2026/10/22 11:04:12 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:12 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:12 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:12 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:12 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:12 console: app region bab/tmp-plain: ie (default)
2026/10/22 11:04:12 console: backfilled account manifest for bab (ops)
2026/10/22 11:04:12 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/22 11:04:12 status: fleet: skipping status/boxes/zz-1.json: corrupt snapshot: invalid character 'n' looking for beginning of object key string
FAIL
FAIL	github.com/carlosframework/platform/internal/console	80.743s
FAIL
=== internal_console@1 (46 s)
ok  	github.com/carlosframework/platform/internal/console	42.472s
=== internal_console@2 (51 s)
ok  	github.com/carlosframework/platform/internal/console	47.935s
=== internal_console@3 (44 s)
ok  	github.com/carlosframework/platform/internal/console	41.268s
=== internal_console@4 (47 s)
ok  	github.com/carlosframework/platform/internal/console	43.784s
=== internal_console@5 (44 s)
ok  	github.com/carlosframework/platform/internal/console	40.972s
=== internal_console@6 (45 s)
ok  	github.com/carlosframework/platform/internal/console	42.294s
=== internal_console@7 (52 s)
ok  	github.com/carlosframework/platform/internal/console	48.979s
=== root@0 (40 s)
ok  	github.com/carlosframework/platform	37.993s
=== root@1 (53 s)
ok  	github.com/carlosframework/platform	50.552s
=== root@2 (51 s)
ok  	github.com/carlosframework/platform	48.199s

FAILED: rest internal_console@0
make: *** [Makefile:19: test] Error 1

amadan: step gate failed: exit status 2

amadan: job failed at step gate — its output is above, not at the tail of this log
diff --git a/internal/edge/certsync.go b/internal/edge/certsync.go
index cbea09f81..106085435 100644
--- a/internal/edge/certsync.go
+++ b/internal/edge/certsync.go
@@ -529,6 +529,9 @@ type certMirror struct {
// now is the poll's clock (nil is time.Now; tests inject one).
watch func() *release.ChangeWatch
now func() time.Time
+ // watchTimeout bounds the poll of the watch (0 is
+ // release.ChangeIndexPollTimeout; tests shorten it).
+ watchTimeout time.Duration
// Guarded by refreshMu: what the published snapshot was read at.
// etags is each entry's ETag as its Get returned it ("" = unknown, read
@@ -740,14 +743,15 @@ func (m *certMirror) poll(ctx context.Context) error {
if w == nil {
return m.Refresh(ctx)
}
- // An error leaves the watch unusable, which Gen reports below; the poll
- // itself has nothing to add.
- _, _ = w.Poll(ctx)
+ // Bounded on its own: the watch is shared, and a hung index GET from
+ // another caller holds its poll lock. Any error, giving up on that lock
+ // included, is "unknown": a full read, as before the index.
+ _, perr := pollWatch(ctx, w, m.watchTimeout)
m.refreshMu.Lock()
defer m.refreshMu.Unlock()
gen, ok := w.Gen(certScope)
switch {
- case !ok, m.lastFull.IsZero(), !m.clock().Before(m.lastFull.Add(m.fullAge)):
+ case perr != nil, !ok, m.lastFull.IsZero(), !m.clock().Before(m.lastFull.Add(m.fullAge)):
return m.refreshFull(ctx)
case m.actedOK && gen == m.actedGen:
return nil
@@ -763,7 +767,8 @@ func (m *certMirror) poll(ctx context.Context) error {
// - a key absent from the listing (a spent challenge token) is absent from
// the new snapshot, because the snapshot is built from the listing;
// - a failed get of a changed object carries the previous copy forward
-// with an unknown ETag, so the next poll fetches it again;
+// with an unknown ETag, so the next poll fetches it again, and is never
+// a failed poll, even when it is the only object that changed;
// - the new snapshot is built whole and swapped in by publish, which also
// copies changed material into the local cache and wakes the wildcard
// manager, exactly as Refresh does.
@@ -798,12 +803,13 @@ func (m *certMirror) refreshChanged(ctx context.Context, gen uint64) error {
}
tried := len(items)
failed, lastErr := applyCertFetches(items, m.fetchCerts(ctx, items), prev, next, etags)
- if tried > 0 && failed == tried {
- // Refresh's rule: nothing that changed could be read, so the bucket
- // is at fault and last-good stands whole. The generation stays
- // unacted, so the next poll tries again.
- return fmt.Errorf("get %s*: every one of %d changed object(s) failed, last: %w", certPrefix, tried, lastErr)
- }
+ // No "every object failed" rule here, unlike Refresh: the listing just
+ // answered, so the bucket is up, and a changed-only read is often ONE
+ // object. Treating that one failure as a bucket fault would turn a single
+ // unreadable key into a failed poll until the backstop, holding back
+ // every deletion in the listing and the loop's backfill with it. The
+ // failed objects carry their previous copies with unknown ETags and the
+ // generation stays unacted, so the next poll reads them again.
if failed > 0 {
m.logPartialPoll(failed, tried, lastErr)
}
@@ -926,6 +932,19 @@ func (m *certMirror) publish(ctx context.Context, prev *certSnapshot, next map[s
}
}
+// pollWatch polls w under a bound of its own (timeout, or
+// release.ChangeIndexPollTimeout when 0) inside ctx. The watch is shared with
+// the agent's tick, whose hung index GET would otherwise hold this loop, and
+// the health heartbeat it stamps, behind the watch's poll lock.
+func pollWatch(ctx context.Context, w *release.ChangeWatch, timeout time.Duration) ([]string, error) {
+ if timeout <= 0 {
+ timeout = release.ChangeIndexPollTimeout
+ }
+ pctx, cancel := context.WithTimeout(ctx, timeout)
+ defer cancel()
+ return w.Poll(pctx)
+}
+
// certScope is the change-index scope every write under certPrefix bumps.
const certScope = "control/certs"
diff --git a/internal/edge/certsync_test.go b/internal/edge/certsync_test.go
index 681bed511..fa3651297 100644
--- a/internal/edge/certsync_test.go
+++ b/internal/edge/certsync_test.go
@@ -1964,6 +1964,31 @@ type changeIndexStore struct {
mu sync.Mutex
calls []string
failGet string // Get of exactly this key fails
+ // block, when set, parks every GetIfChanged until it is closed: a hung
+ // index GET holding the shared watch's poll lock. entered says one has.
+ block chan struct{}
+ entered chan struct{}
+}
+
+// blockIndex makes the next index reads hang; closing the returned channel
+// (done at cleanup too) releases them.
+func (s *changeIndexStore) blockIndex(t *testing.T) (entered <-chan struct{}, release func()) {
+ t.Helper()
+ s.mu.Lock()
+ s.block, s.entered = make(chan struct{}), make(chan struct{}, 16)
+ block, ent := s.block, s.entered
+ s.mu.Unlock()
+ var once sync.Once
+ release = func() {
+ once.Do(func() {
+ s.mu.Lock()
+ s.block = nil
+ s.mu.Unlock()
+ close(block)
+ })
+ }
+ t.Cleanup(release)
+ return ent, release
}
func (s *changeIndexStore) setFailGet(key string) { s.mu.Lock(); s.failGet = key; s.mu.Unlock() }
@@ -2009,6 +2034,13 @@ func (s *changeIndexStore) Get(ctx context.Context, key string) ([]byte, string,
func (s *changeIndexStore) GetIfChanged(ctx context.Context, key, etag string) ([]byte, string, bool, error) {
s.note("GetIfChanged", key)
+ s.mu.Lock()
+ block, entered := s.block, s.entered
+ s.mu.Unlock()
+ if block != nil {
+ entered <- struct{}{}
+ <-block
+ }
return s.DirStore.GetIfChanged(ctx, key, etag)
}
@@ -2301,3 +2333,71 @@ func TestCertMirrorWithChangeWatchReachesTheMirrorAndHomeMap(t *testing.T) {
t.Fatal("a watch armed after the edge started must reach both loops")
}
}
+
+// ONE bad object is not a bad poll, on the changed-only read too: a changed
+// cert that cannot be read keeps its previous copy, a token deleted in the
+// same window still leaves, and the poll succeeds (so the loop's backfill
+// runs), on every poll until the object reads again.
+func TestCertMirrorOneUnreadableChangedKeyIsNotABadPoll(t *testing.T) {
+ t.Parallel()
+ const token = "0123456789abcdefghij0123456789abcdefghijkl"
+ s := newChangeIndexStore(t)
+ putBucket(t, s, "example.com", []byte("PEM"))
+ putBucket(t, s, token+httpTokenSuffix, []byte("resp"))
+ m, clk := armedMirror(t, s)
+ mirrorPoll(t, m)
+
+ putBucket(t, s, "example.com", []byte("PEM-RENEWED"))
+ s.setFailGet(certKey("example.com"))
+ if err := s.Delete(context.Background(), certKey(token+httpTokenSuffix)); err != nil {
+ t.Fatal(err)
+ }
+ for i := 0; i < 2; i++ {
+ s.reset()
+ clk.advance(certMirrorInterval)
+ if err := m.poll(context.Background()); err != nil {
+ t.Fatalf("poll %d with one unreadable changed object: %v — want a successful partial poll", i, err)
+ }
+ if _, ok := m.Challenge(token); ok {
+ t.Fatalf("poll %d: the deleted token must leave even while another object is unreadable", i)
+ }
+ if b, ok := m.Cert("example.com"); !ok || string(b) != "PEM" {
+ t.Fatalf("poll %d: the unreadable cert = %q, %v — want the previous copy", i, b, ok)
+ }
+ if n := s.count("Get", certKey("example.com")); n != 1 {
+ t.Fatalf("poll %d: %d Get(s) of the unreadable cert, want it retried once", i, n)
+ }
+ }
+}
+
+// A hung index GET elsewhere in the process (the agent's tick holding the
+// shared watch's poll lock) costs the mirror its index read, not its poll:
+// it gives up on the watch and reads in full.
+func TestCertMirrorPollsPastAStuckWatch(t *testing.T) {
+ t.Parallel()
+ s := newChangeIndexStore(t)
+ putBucket(t, s, "example.com", []byte("PEM"))
+ m, clk := armedMirror(t, s)
+ m.watchTimeout = 50 * time.Millisecond
+ mirrorPoll(t, m)
+
+ entered, release := s.blockIndex(t)
+ go func() { _, _ = m.watch().Poll(context.Background()) }()
+ <-entered
+ putBucket(t, s, "example.com", []byte("PEM-RENEWED"))
+ clk.advance(certMirrorInterval)
+ done := make(chan error, 1)
+ go func() { done <- m.poll(context.Background()) }()
+ select {
+ case err := <-done:
+ if err != nil {
+ t.Fatalf("poll: %v", err)
+ }
+ case <-time.After(5 * time.Second):
+ release()
+ t.Fatal("the mirror's poll waited on a stuck watch")
+ }
+ if b, ok := m.Cert("example.com"); !ok || string(b) != "PEM-RENEWED" {
+ t.Fatalf("a poll that could not read the index must read in full: mirror = %q, %v", b, ok)
+ }
+}
diff --git a/internal/edge/homemap.go b/internal/edge/homemap.go
index e266bc40e..da513e36c 100644
--- a/internal/edge/homemap.go
+++ b/internal/edge/homemap.go
@@ -294,6 +294,9 @@ type homeMap struct {
// on them; the mesh keys keep their own read on every poll.
watch func() *release.ChangeWatch
now func() time.Time
+ // watchTimeout bounds the poll of the watch (0 is
+ // release.ChangeIndexPollTimeout; tests shorten it).
+ watchTimeout time.Duration
// Guarded by refreshMu: the last hosts rebuild that read every edges
// file (lastHosts), the jittered backstop after which the next poll
@@ -356,12 +359,14 @@ func (m *homeMap) poll(ctx context.Context) error {
if w == nil {
return m.Refresh(ctx)
}
- // An error leaves the watch unusable, which Gen reports below.
- _, _ = w.Poll(ctx)
+ // Bounded on its own (pollWatch): a hung index GET elsewhere in the
+ // process must not stop this poll from stamping RefreshAttempted. Any
+ // error, giving up on the watch's lock included, reads the hosts.
+ _, perr := pollWatch(ctx, w, m.watchTimeout)
m.refreshMu.Lock()
defer m.refreshMu.Unlock()
gen, ok := w.Gen(edgesScope)
- current := ok && m.actedOK && gen == m.actedGen &&
+ current := perr == nil && ok && m.actedOK && gen == m.actedGen &&
!m.lastHosts.IsZero() && m.clock().Before(m.lastHosts.Add(m.hostsAge))
return m.refresh(ctx, !current)
}
diff --git a/internal/edge/homemap_test.go b/internal/edge/homemap_test.go
index 9c3e786ea..898eaf95f 100644
--- a/internal/edge/homemap_test.go
+++ b/internal/edge/homemap_test.go
@@ -1921,3 +1921,42 @@ func TestHomeMapDisarmedPollReadsHosts(t *testing.T) {
}
}
}
+
+// codex 8 again: a hung index GET elsewhere in the process holds the shared
+// watch's poll lock, and the home map must still finish its poll and stamp
+// RefreshAttempted, or the load balancer pulls a working box after five
+// minutes.
+func TestHomeMapStampsRefreshWhileTheWatchIsStuck(t *testing.T) {
+ t.Parallel()
+ s := newChangeIndexStore(t)
+ putJSON(t, s, "control/edges/betty.json", `{"v":1,"box":"betty","eip":"2.2.2.2","hosts":{"b.test":{"role":"home"}}}`)
+ putJSON(t, s, meshKeyKey, strings.Repeat("aa", 32))
+ m, clk := armedHomeMap(t, s, "annie")
+ m.watchTimeout = 50 * time.Millisecond
+ health := &lbhealth.State{}
+ m.health = health
+ homePoll(t, m)
+
+ entered, release := s.blockIndex(t)
+ go func() { _, _ = m.watch().Poll(context.Background()) }()
+ <-entered
+ for i := 0; i < 2; i++ {
+ clk.advance(lbhealth.RefreshWindow - time.Minute)
+ done := make(chan error, 1)
+ go func() { done <- m.poll(context.Background()) }()
+ select {
+ case err := <-done:
+ if err != nil {
+ t.Fatalf("poll %d: %v", i, err)
+ }
+ case <-time.After(5 * time.Second):
+ release()
+ t.Fatalf("poll %d waited on the stuck watch", i)
+ }
+ for _, c := range health.Failing(clk.now()) {
+ if c == lbhealth.CondRefresh {
+ t.Fatalf("poll %d: the refresh heartbeat lapsed behind a stuck watch", i)
+ }
+ }
+ }
+}
diff --git a/internal/host/agent.go b/internal/host/agent.go
index 1bee56397..03210bc69 100644
--- a/internal/host/agent.go
+++ b/internal/host/agent.go
@@ -2828,7 +2828,13 @@ func (d *fastDeps) observeIndex(ctx context.Context) (map[string]uint64, bool) {
return nil, false
}
// Poll's moved list is advisory (shared watch): only Observed counts.
- if _, err := d.watch.Poll(ctx); err != nil {
+ // Bounded: the tick runs on a background context, and a hung index GET
+ // would otherwise stall the tick and hold the watch's poll lock that the
+ // edge's loops share. Running out is "unknown", like any other error.
+ pctx, cancel := context.WithTimeout(ctx, release.ChangeIndexPollTimeout)
+ _, err := d.watch.Poll(pctx)
+ cancel()
+ if err != nil {
if !d.indexBroken {
log.Printf("agent: fast converge change index: %v (scoped passes wait; the serial and the floors carry on)", err)
d.indexBroken = true
diff --git a/internal/release/changewatch.go b/internal/release/changewatch.go
index 894fdd2eb..018cb7854 100644
--- a/internal/release/changewatch.go
+++ b/internal/release/changewatch.go
@@ -16,6 +16,12 @@ import (
// Callers jitter it by +-10%.
const ChangeIndexBackstop = 30 * time.Minute
+// ChangeIndexPollTimeout bounds one Poll from a caller with a deadline of its
+// own to keep (the agent's fast tick, the edge's health-stamping loops): the
+// wait for another caller's in-flight poll and the conditional GET together.
+// A poll that runs out is "unknown" to its caller, never "unchanged".
+const ChangeIndexPollTimeout = 5 * time.Second
+
// ChangeWatch follows the change index (ChangeIndexKey) with one conditional
// GET per Poll: an unchanged index costs a 304 and no body. It is safe for
// concurrent use.
@@ -29,7 +35,10 @@ const ChangeIndexBackstop = 30 * time.Minute
type ChangeWatch struct {
store Store
- pollMu sync.Mutex // serializes polls; held across the network call
+ // pollSem serializes polls: a one-slot semaphore held across the
+ // network call. A channel rather than a mutex so a waiter behind a hung
+ // poll gives up when its context ends instead of inheriting the hang.
+ pollSem chan struct{}
mu sync.Mutex // guards the fields below; never held across I/O
usable bool
@@ -40,7 +49,7 @@ type ChangeWatch struct {
// NewChangeWatch returns a watch over s. It has not polled yet, so it is
// unusable.
func NewChangeWatch(s Store) *ChangeWatch {
- return &ChangeWatch{store: s, entries: map[string]uint64{}}
+ return &ChangeWatch{store: s, entries: map[string]uint64{}, pollSem: make(chan struct{}, 1)}
}
// Poll reads the index conditionally and returns, sorted, the scopes whose
@@ -55,9 +64,21 @@ func NewChangeWatch(s Store) *ChangeWatch {
// consumes a moved list and the others see nil. A consumer that must act on
// movement compares Observed against the map it last acted on instead of
// relying on Poll's return.
+//
+// A Poll that waits behind another caller's in-flight poll stops waiting when
+// ctx ends and returns ctx's error with the watch's state unchanged: it read
+// nothing, so it has nothing to say about the index. Callers treat that error
+// as they treat any other, as "unknown".
func (w *ChangeWatch) Poll(ctx context.Context) (moved []string, err error) {
- w.pollMu.Lock()
- defer w.pollMu.Unlock()
+ if err := ctx.Err(); err != nil {
+ return nil, err
+ }
+ select {
+ case w.pollSem <- struct{}{}:
+ case <-ctx.Done():
+ return nil, ctx.Err()
+ }
+ defer func() { <-w.pollSem }()
g, ok := w.store.(ConditionalGetter)
if !ok {
diff --git a/internal/release/changewatch_test.go b/internal/release/changewatch_test.go
index eb0d605a8..4baaf9a97 100644
--- a/internal/release/changewatch_test.go
+++ b/internal/release/changewatch_test.go
@@ -434,3 +434,79 @@ func TestReadGateCapturedGenSurvivesRaceWithPoll(t *testing.T) {
t.Fatal("a mark of the pre-read generation hid a write that landed during the read")
}
}
+
+// blockingCond is a DirStore whose GetIfChanged, once armed, parks until
+// released: a hung index GET holding the watch's poll lock.
+type blockingCond struct {
+ *DirStore
+ mu sync.Mutex
+ block chan struct{} // nil = no blocking
+ entered chan struct{}
+}
+
+func (b *blockingCond) arm() (entered, release chan struct{}) {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+ b.block, b.entered = make(chan struct{}), make(chan struct{}, 1)
+ return b.entered, b.block
+}
+
+func (b *blockingCond) GetIfChanged(ctx context.Context, key, etag string) ([]byte, string, bool, error) {
+ b.mu.Lock()
+ block, entered := b.block, b.entered
+ b.mu.Unlock()
+ if block != nil {
+ entered <- struct{}{}
+ <-block
+ }
+ return b.DirStore.GetIfChanged(ctx, key, etag)
+}
+
+// A Poll waiting behind a stuck one gives up when its context ends, and its
+// give-up leaves the watch's last good observation untouched.
+func TestChangeWatchPollLockWaitHonoursContext(t *testing.T) {
+ t.Parallel()
+ d := indexedDirStore(t)
+ writeScoped(t, d, "apps/bab/shop/instances/h.json")
+ b := &blockingCond{DirStore: d}
+ w := NewChangeWatch(b)
+ if _, err := w.Poll(context.Background()); err != nil {
+ t.Fatal(err)
+ }
+ gen, _ := w.Gen("apps/bab/shop")
+
+ entered, release := b.arm()
+ stuck := make(chan error, 1)
+ go func() {
+ _, err := w.Poll(context.Background())
+ stuck <- err
+ }()
+ <-entered
+
+ ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
+ defer cancel()
+ done := make(chan error, 1)
+ go func() {
+ _, err := w.Poll(ctx)
+ done <- err
+ }()
+ select {
+ case err := <-done:
+ if !errors.Is(err, context.DeadlineExceeded) {
+ t.Fatalf("waiting Poll returned %v, want the context's error", err)
+ }
+ case <-time.After(5 * time.Second):
+ close(release)
+ t.Fatal("a Poll waiting behind a stuck one ignored its context")
+ }
+ if !w.Usable() {
+ t.Fatal("a give-up on the lock must leave the watch usable as it was")
+ }
+ if g, ok := w.Gen("apps/bab/shop"); !ok || g != gen {
+ t.Fatalf("Gen after a give-up = %d, %v; want %d, true", g, ok, gen)
+ }
+ close(release)
+ if err := <-stuck; err != nil {
+ t.Fatalf("the stuck Poll, released: %v", err)
+ }
+}