carlos / platform Public

applog: Sink.Edge producer for edge request records, own rate budget

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev dd08d20cd1e12e98d12caa56cb24cae93ab3231b parent 6535925
3 files changed, +149 −4
  • docs/superpowers/specs/2026-10-24-edge-request-protection-design.md +1 −1
  • internal/applog/sink.go +100 −3
  • internal/applog/sink_edge_test.go +48 −0

CI failed — run details

CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (0 s)
ok  	amadan.net/carlos/platform.git/launchctx	0.015s
?   	amadan.net/carlos/platform.git/launchctx/controlname	[no test files]
?   	amadan.net/carlos/platform.git/launchctx/wireid	[no test files]
=== vet (12 s)
=== gofmt (0 s)
gofmt -l .: clean
=== rest (166 s)
?   	github.com/carlosframework/platform/cmd/changelog	[no test files]
ok  	github.com/carlosframework/platform/cmd/console	3.939s
ok  	github.com/carlosframework/platform/cmd/moveprobe	11.795s
ok  	github.com/carlosframework/platform/cmd/zddprobe	0.803s
ok  	github.com/carlosframework/platform/internal/activator	59.089s
ok  	github.com/carlosframework/platform/internal/agentsock	0.019s
ok  	github.com/carlosframework/platform/internal/alerting	0.005s
ok  	github.com/carlosframework/platform/internal/analytics	0.019s
ok  	github.com/carlosframework/platform/internal/appconfig	2.995s
ok  	github.com/carlosframework/platform/internal/apperr	0.128s
ok  	github.com/carlosframework/platform/internal/applog	0.193s
ok  	github.com/carlosframework/platform/internal/awsinv	0.008s
ok  	github.com/carlosframework/platform/internal/boxchoice	0.004s
ok  	github.com/carlosframework/platform/internal/boxid	0.787s
?   	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.010s
ok  	github.com/carlosframework/platform/internal/caps	0.014s
ok  	github.com/carlosframework/platform/internal/certwarm	0.007s
ok  	github.com/carlosframework/platform/internal/cgroup	0.813s
ok  	github.com/carlosframework/platform/internal/changelog	0.431s
ok  	github.com/carlosframework/platform/internal/claimactivation	1.233s
ok  	github.com/carlosframework/platform/internal/clamd	0.058s
?   	github.com/carlosframework/platform/internal/cliflag	[no test files]
?   	github.com/carlosframework/platform/internal/controlname	[no test files]
?   	github.com/carlosframework/platform/internal/controlsock	[no test files]
ok  	github.com/carlosframework/platform/internal/dbdoor	8.407s
ok  	github.com/carlosframework/platform/internal/dbdoor/dbdoortest	0.014s
ok  	github.com/carlosframework/platform/internal/dbquery	0.008s
ok  	github.com/carlosframework/platform/internal/dbreads	2.112s
?   	github.com/carlosframework/platform/internal/dbreads/dbreadstest	[no test files]
ok  	github.com/carlosframework/platform/internal/dbverify	0.012s
ok  	github.com/carlosframework/platform/internal/dnsrec	0.008s
ok  	github.com/carlosframework/platform/internal/docsite	0.018s
ok  	github.com/carlosframework/platform/internal/domains	3.027s
ok  	github.com/carlosframework/platform/internal/doorkey	0.008s
ok  	github.com/carlosframework/platform/internal/economics	0.011s
ok  	github.com/carlosframework/platform/internal/edge	45.104s
?   	github.com/carlosframework/platform/internal/edgeproof	[no test files]
ok  	github.com/carlosframework/platform/internal/edgesfile	0.008s
ok  	github.com/carlosframework/platform/internal/fleetapi	0.131s
ok  	github.com/carlosframework/platform/internal/gate	1.656s
ok  	github.com/carlosframework/platform/internal/genselect	0.014s
ok  	github.com/carlosframework/platform/internal/geo	0.016s
ok  	github.com/carlosframework/platform/internal/geoip	0.029s
ok  	github.com/carlosframework/platform/internal/historyreadback	0.152s
ok  	github.com/carlosframework/platform/internal/host	142.789s
ok  	github.com/carlosframework/platform/internal/hostactors	5.838s
ok  	github.com/carlosframework/platform/internal/hostactors/awsmembership	0.005s
ok  	github.com/carlosframework/platform/internal/hostbox	2.977s
ok  	github.com/carlosframework/platform/internal/hostclaim	0.750s
ok  	github.com/carlosframework/platform/internal/hostenv	0.005s
ok  	github.com/carlosframework/platform/internal/hostevidence	0.006s
ok  	github.com/carlosframework/platform/internal/hostexec	5.293s
ok  	github.com/carlosframework/platform/internal/hostfence	0.064s
ok  	github.com/carlosframework/platform/internal/hostfiles	10.283s
ok  	github.com/carlosframework/platform/internal/hostfloor	0.014s
ok  	github.com/carlosframework/platform/internal/hostguard	1.093s
ok  	github.com/carlosframework/platform/internal/hostops	1.874s
?   	github.com/carlosframework/platform/internal/hostops/fencerelease	[no test files]
ok  	github.com/carlosframework/platform/internal/hostops/internal/fencerelease	0.002s
ok  	github.com/carlosframework/platform/internal/hostquarantine	0.002s
ok  	github.com/carlosframework/platform/internal/hostrelocate	0.613s
ok  	github.com/carlosframework/platform/internal/hostresolve	0.201s
ok  	github.com/carlosframework/platform/internal/hostwrite	0.002s
ok  	github.com/carlosframework/platform/internal/infraview	0.017s
ok  	github.com/carlosframework/platform/internal/instancectl	5.229s
ok  	github.com/carlosframework/platform/internal/instanceexec	2.776s
ok  	github.com/carlosframework/platform/internal/instancefs	0.016s
ok  	github.com/carlosframework/platform/internal/instancekey	0.016s
ok  	github.com/carlosframework/platform/internal/instanceupdates	0.018s
ok  	github.com/carlosframework/platform/internal/layout	1.792s
ok  	github.com/carlosframework/platform/internal/lbhealth	0.016s
ok  	github.com/carlosframework/platform/internal/lease	10.094s
ok  	github.com/carlosframework/platform/internal/lease/leasetest	0.541s
ok  	github.com/carlosframework/platform/internal/ledger	0.030s
ok  	github.com/carlosframework/platform/internal/mail	0.245s
ok  	github.com/carlosframework/platform/internal/maintenance	0.108s
ok  	github.com/carlosframework/platform/internal/maintenanceexec	5.596s
ok  	github.com/carlosframework/platform/internal/maintenanceguard	0.123s
ok  	github.com/carlosframework/platform/internal/metrics	0.007s
ok  	github.com/carlosframework/platform/internal/moves	21.920s
ok  	github.com/carlosframework/platform/internal/moves/archive	0.940s
ok  	github.com/carlosframework/platform/internal/objstore	0.343s
ok  	github.com/carlosframework/platform/internal/ops	0.205s
ok  	github.com/carlosframework/platform/internal/park	0.237s
ok  	github.com/carlosframework/platform/internal/plans	0.008s
ok  	github.com/carlosframework/platform/internal/privatefile	0.009s
2026/10/24 23:27:58 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/24 23:27:58 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 23:27:58 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 23:27:58 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/24 23:27:58 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/24 23:27:58 provision: an app's records could not be listed: they are skipped
2026/10/24 23:27:58 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:27:58 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 23:27:58 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/24 23:27:58 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 23:27:58 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/24 23:27:58 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 23:27:58 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/24 23:27:58 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:27:58 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 23:27:58 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:27:58 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 23:27:58 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:27:58 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:27:58 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 23:27:58 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:27:58 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/24 23:27:58 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 23:27:58 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/24 23:27:58 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/24 23:27:58 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:27:58 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:58 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:27:59 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:27:59 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:27:59 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:27:59 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:27:59 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:27:59 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 23:27:59 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/24 23:27:59 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/24 23:27:59 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/24 23:27:59 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:27:59 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/24 23:27:59 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 23:28:00 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/24 23:28:00 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/24 23:28:00 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/24 23:28:00 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:00 provision: converged acme.go.tito.io hibernate false -> true
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: converged acme.go.tito.io status-named false -> true
2026/10/24 23:28:01 provision: converged acme.go.tito.io status-named true -> false
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7001,127.0.0.1:7002" -> "127.0.0.1:7001,127.0.0.1:7003" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:28:01 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7001,127.0.0.1:7003" -> "127.0.0.1:7003,127.0.0.1:7001" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:28:01 provision: converged ha.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:7003,127.0.0.1:7001" -> "127.0.0.1:7003,127.0.0.1:7001" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "{\"path\":\"/healthz\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:28:01 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: converged whole.go.tito.io upstreams addr "127.0.0.1:9443" -> "", addrs "" -> "127.0.0.1:9443,127.0.0.1:9444" (probe "" -> "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}")
2026/10/24 23:28:01 provision: converged whole.go.tito.io upstreams addr "" -> "", addrs "127.0.0.1:9443,127.0.0.1:9444" -> "" (probe "{\"path\":\"/\",\"status\":200,\"interval_ms\":2000,\"fail_after\":3,\"rise_after\":2}" -> "")
2026/10/24 23:28:01 provision: whole.go.tito.io: record describes a different route SHAPE than the row (kind "instance"/"service" unit ""/"" socket "/run/carlos/whole.go.tito.io.sock"/"" db "/data/whole.go.tito.io.db"/"") — not converged in place; `carlos remove whole.go.tito.io` purges this route's capability grants (registry.Delete's contract, not a bug) before the next pass re-mints it, so treat that as a last resort, not a routine fix
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/24 23:28:01 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: disagrees with its own path (host="wrong-host.go.tito.io" account="bac" app="tito")
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/acme$evil.go.tito.io.json: host "acme$evil.go.tito.io" is not a hostname
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/acme$evil.go.tito.io.json: host "acme$evil.go.tito.io" is not a hostname
2026/10/24 23:28:01 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/bad-service.go.tito.io.json: invalid shape: kind service with no addr: the platform only proxies to a service, so the record must name the upstream it proxies to
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/bad-service.go.tito.io.json: invalid shape: kind service with no addr: the platform only proxies to a service, so the record must name the upstream it proxies to
2026/10/24 23:28:01 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/24 23:28:01 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:01 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/24 23:28:01 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/24 23:28:01 provision: duplicate host dup.go.tito.io: keeping apps/bac/tito/instances/dup.go.tito.io.json, skipping apps/bad/tito/instances/dup.go.tito.io.json
2026/10/24 23:28:01 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:28:01 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 23:28:01 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:28:01 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/24 23:28:01 provision: trash marker for bac/tito unreadable: release: malformed trash marker for bac/tito: invalid character 'n' looking for beginning of object key string — not minting for this app
2026/10/24 23:28:01 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:28:01 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/24 23:28:01 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:28:01 provision: trash marker for bac/tito unreadable: release: malformed trash marker for bac/tito: invalid character 'n' looking for beginning of object key string — not minting for this app
2026/10/24 23:28:01 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:28:01 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 23:28:01 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:28:01 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/24 23:28:01 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (backing "unit" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (tunnel "pi-fleet" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (caps "port:25" (box-scoped, not expressible in a record)) — leaving it alone
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (platform (owned by the domains reconcile pass)) — leaving it alone
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (canary (owned by the domains reconcile pass)) — leaving it alone
2026/10/24 23:28:01 provision: acme.go.tito.io exists but is not the route this record describes (db "/data/other.db"/"/data/acme.go.tito.io.db") — leaving it alone
2026/10/24 23:28:01 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:28:01 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:28:01 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/24 23:28:01 provision: dry-run: would adopt existing route adopt.go.tito.io (app "tito" acct "bac") — this record would own its channel and environment
2026/10/24 23:28:01 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/24 23:28:01 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/24 23:28:01 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/24 23:28:01 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/24 23:28:01 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/24 23:28:01 provision: dry-run: would converge owned.go.tito.io seed
2026/10/24 23:28:01 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/24 23:28:01 provision: converged owned.go.tito.io channel stable -> edge
2026/10/24 23:28:01 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/24 23:28:01 provision: converged owned.go.tito.io hibernate false -> true
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:28:01 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/24 23:28:01 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/24 23:28:01 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/24 23:28:01 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/24 23:28:01 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: removed retired static route site.go.tito.io (record gone)
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/24 23:28:01 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/24 23:28:01 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: acme.go.tito.io: row is on the nested layout (db "/data/instances/acme.go.tito.io/acme.go.tito.io.db" socket "/run/carlos/instances/acme.go.tito.io/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:01 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 23:28:01 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/24 23:28:01 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/24 23:28:01 provision: converged acme.go.tito.io channel stable -> edge
2026/10/24 23:28:01 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 23:28:01 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/24 23:28:01 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:28:02 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 23:28:02 provision: refusing to mint held route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/24 23:28:02 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 23:28:02 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/24 23:28:02 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/24 23:28:02 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/24 23:28:02 provision: dry-run: would mint instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac" channel "stable")
2026/10/24 23:28:02 provision: acme.go.tito.io: not held landing by mv_acme: the row's hold changed under this pass; the next pass judges it afresh
2026/10/24 23:28:02 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/24 23:28:02 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/24 23:28:02 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/24 23:28:02 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:02 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 23:28:02 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:02 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 23:28:02 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:02 provision: skipping record apps/bac/shop/instances/liar.shop.example.com.json: disagrees with its own path (host="other.shop.example.com" account="bac" app="shop")
2026/10/24 23:28:02 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:02 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/24 23:28:03 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:03 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/24 23:28:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:03 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/24 23:28:03 provision: minted sidecar route bot.shop.bac.sidecar.internal (app "shop" acct "bac" args ["run"])
2026/10/24 23:28:03 provision: removed retired sidecar route bot.shop.bac.sidecar.internal (record gone)
2026/10/24 23:28:03 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 23:28:03 provision: minted sidecar route bot.shop.bum.sidecar.internal (app "shop" acct "bum" args ["run"])
2026/10/24 23:28:03 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:03 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:03 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 23:28:03 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:03 provision: sidecar bot.shop.bum.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:03 provision: removed retired sidecar route bot.shop.bum.sidecar.internal (record gone)
2026/10/24 23:28:03 provision: a.shop.example.com: swapped for import sd_zspu3sewtkd2z5squlals66uxi (the original route is journaled)
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_zspu3sewtkd2z5squlals66uxi committed: its gate is cleared and its journal row dropped
2026/10/24 23:28:03 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_ysunfzprq5bc4xb54r6jvyyv64 rolled back to its original route
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_ysunfzprq5bc4xb54r6jvyyv64: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_ysunfzprq5bc4xb54r6jvyyv64 is cleaned up and its journal row retired
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_5mn3f2h652nacoowurizwinl7e rolled back to its original route
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_5mn3f2h652nacoowurizwinl7e: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_5mn3f2h652nacoowurizwinl7e is cleaned up and its journal row retired
2026/10/24 23:28:03 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_zsv5b34b4usdr7t67rba4adj3m
2026/10/24 23:28:03 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/24 23:28:03 provision: dry-run: would converge a.shop.example.com seed source
2026/10/24 23:28:03 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:03 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (connection reset)
2026/10/24 23:28:03 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (provision: invalid maintenance projection or protected fields)
2026/10/24 23:28:03 provision: a.shop.example.com: the import's record apps/bac/shop/instances/a.shop.example.com.json is not one this pass can use (the record under apps/bac/shop/instances/a.shop.example.com.json is apps/bac/shop/instances/b.shop.example.com.json's)
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_ejhjbalpnamdyrqm3uxu6vxhh4 cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_efuekpsqzxowcw7c3vnzxyq5ce cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_2rabd67lzfff5p5unndpx2gyom is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_bdzal7ggy6id4ldcigcv6babsa is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 23:28:03 provision: a.shop.example.com: import sd_d5yk5js7azkhz7vwwby5hcysgi is journaled, but this box cannot act on imports; its row is left alone
2026/10/24 23:28:03 provision: the import journal could not be read: registry: import journal a.shop.example.com: original row: unexpected end of JSON input (no import is acted on and no route is removed this pass)
2026/10/24 23:28:03 provision: b.shop.example.com: import sd_kxxutohaggongh4bt4jtiwojrm left alone this pass: the import journal could not be read
2026/10/24 23:28:03 provision: c.shop.example.com: import sd_yilcpzxvswljgecmc6s6df77sy left alone this pass: the import journal could not be read
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_rfctgqfovlcvlilv2bxbzwlzsq committed: its gate is cleared and its journal row dropped
2026/10/24 23:28:04 provision: a.shop.example.com: not converging import sd_nu2wuco6rfwoomiqjemq6zwkxm: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 23:28:04 provision: a.shop.example.com: not converging import sd_y43lvx7qsxdljapleiyxtywwr4: it is swapped but not committed, and the row on this box has no import gate
2026/10/24 23:28:04 provision: a.shop.example.com: not converging import sd_xwpefjmro5ndxw6vlz2vleeema: it is placed but not committed, and the row on this box has no import gate
2026/10/24 23:28:04 provision: a.shop.example.com: not converging import sd_h2mhtehz4byqzphinnr4lh6li4: it is placed but not committed, and the row on this box has no import gate
2026/10/24 23:28:04 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:04 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/24 23:28:04 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_wfxtbm47isvyw3lbje4fbzy2he committed: its gate is cleared and its journal row dropped
2026/10/24 23:28:04 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:04 provision: acme.go.tito.io: row is on the nested layout (db "/data/instances/acme.go.tito.io/acme.go.tito.io.db" socket "/run/carlos/instances/acme.go.tito.io/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:04 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/24 23:28:04 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_ysbtzob2d5jchrcbymh7e6twse: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_ysbtzob2d5jchrcbymh7e6twse rolled back (no box had swapped it)
2026/10/24 23:28:04 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/24 23:28:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:04 provision: removed instance route acme.go.tito.io (its seed sd_4jd5x77h6kk25kyd3vueiq7g5e was aborted); the next pass rolls it back
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_4jd5x77h6kk25kyd3vueiq7g5e: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_4jd5x77h6kk25kyd3vueiq7g5e rolled back (no box had swapped it)
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_yb4pc7z5qado7x7ljsavipkrna has a row this pass may not remove; leaving the seed aborted
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_amdar5a6jwotmjzdodhp3uvaue rolled back (no box had swapped it)
2026/10/24 23:28:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:04 provision: removed instance route acme.go.tito.io (its seed sd_od53gbsmzg233cr43ofcmlbj3m was aborted); the next pass rolls it back
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_od53gbsmzg233cr43ofcmlbj3m has no route on this box: its local data is removed
2026/10/24 23:28:04 provision: acme.go.tito.io: aborted seed sd_od53gbsmzg233cr43ofcmlbj3m rolled back (no box had swapped it)
2026/10/24 23:28:04 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_e6awetctnofdshkhdgh2wdcjyy (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_e6awetctnofdshkhdgh2wdcjyy rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_e6awetctnofdshkhdgh2wdcjyy is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_6itkh3ts556q65ss6y275p5fwu (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_6itkh3ts556q65ss6y275p5fwu rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_6itkh3ts556q65ss6y275p5fwu is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_7rx56jycvdaymgalkvlrsysvby (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_7rx56jycvdaymgalkvlrsysvby rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_7rx56jycvdaymgalkvlrsysvby: the host's replica is left alone: its record no longer names this seed
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_7rx56jycvdaymgalkvlrsysvby is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_yiidtxfhwlbjfzd4nld3cq7shm (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_yiidtxfhwlbjfzd4nld3cq7shm rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_yiidtxfhwlbjfzd4nld3cq7shm rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_yiidtxfhwlbjfzd4nld3cq7shm is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_wx5upgxqmf2pwi3fdfmzbqbtqa (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_wx5upgxqmf2pwi3fdfmzbqbtqa rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_gglvyayvntj5zn43z754azdk3a (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_gglvyayvntj5zn43z754azdk3a is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_j3zij6r4njpu63iqx2xxjc574e (the original route is journaled)
2026/10/24 23:28:04 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_j3zij6r4njpu63iqx2xxjc574e left alone this pass: its record could not be read
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_6zbuq4taiz6mql5fbeoblzml5u (the original route is journaled)
2026/10/24 23:28:04 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_6zbuq4taiz6mql5fbeoblzml5u left alone this pass: its record could not be read
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_rnexzx7np5vz2qocoggzlb7jxm (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_rnexzx7np5vz2qocoggzlb7jxm: close the import gate: constraint failed: injected (1811)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_rnexzx7np5vz2qocoggzlb7jxm rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_rnexzx7np5vz2qocoggzlb7jxm is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_3y4ecc2bylftjkod3oividtm7i (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_3y4ecc2bylftjkod3oividtm7i: close the import gate: constraint failed: injected (1811)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_3y4ecc2bylftjkod3oividtm7i rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_3y4ecc2bylftjkod3oividtm7i is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_rmlvmgpbx3myswi2httu42c56q (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_rmlvmgpbx3myswi2httu42c56q rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_rmlvmgpbx3myswi2httu42c56q rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_rmlvmgpbx3myswi2httu42c56q is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_sjf3vaj2j4p5u5tfbg5doz62jm (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_sjf3vaj2j4p5u5tfbg5doz62jm rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_sjf3vaj2j4p5u5tfbg5doz62jm is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_dwn72isx5axo7dfabpqnaiim74 (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_dwn72isx5axo7dfabpqnaiim74: retire its instance key: injected failure at retire-key
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_dwn72isx5axo7dfabpqnaiim74 rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_dwn72isx5axo7dfabpqnaiim74 is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_6tn7jgsccgtbfflthfbp73zoia (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_6tn7jgsccgtbfflthfbp73zoia rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_6tn7jgsccgtbfflthfbp73zoia is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_g4556gncj4m3bssmyvfy3vr56y (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_g4556gncj4m3bssmyvfy3vr56y: remove its local data: injected failure at remove-local
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_g4556gncj4m3bssmyvfy3vr56y rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_g4556gncj4m3bssmyvfy3vr56y is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_txdyup6gmta5tjomucexiho34u (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_txdyup6gmta5tjomucexiho34u rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_txdyup6gmta5tjomucexiho34u is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_pccxszlwxbet7nbvo7cfokzgtq (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_pccxszlwxbet7nbvo7cfokzgtq: remove its local data: injected failure at remove-local-done
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_pccxszlwxbet7nbvo7cfokzgtq rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_pccxszlwxbet7nbvo7cfokzgtq is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_q6ynxsner75dznwmhb622msxyq (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_q6ynxsner75dznwmhb622msxyq rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_q6ynxsner75dznwmhb622msxyq is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_2glhsqkua5cv5qtuhc4sn3vhl4 (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_2glhsqkua5cv5qtuhc4sn3vhl4: restore the original route: constraint failed: injected (1811)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_2glhsqkua5cv5qtuhc4sn3vhl4 rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_2glhsqkua5cv5qtuhc4sn3vhl4 is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_p7vflx55j2e6g73pbv4sqc6wpm (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_p7vflx55j2e6g73pbv4sqc6wpm: restore the original route: constraint failed: injected (1811)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_p7vflx55j2e6g73pbv4sqc6wpm rolled back to its original route
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_p7vflx55j2e6g73pbv4sqc6wpm is cleaned up and its journal row retired
2026/10/24 23:28:04 provision: a.shop.example.com: swapped for import sd_weaikfoz7hmmb2zelossjoa35m (the original route is journaled)
2026/10/24 23:28:04 provision: a.shop.example.com: import sd_weaikfoz7hmmb2zelossjoa35m is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_gxir7vxn4owt2eerq6kaenfz3y (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_gxir7vxn4owt2eerq6kaenfz3y rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_gxir7vxn4owt2eerq6kaenfz3y: delete its snapshot: injected failure at delete-snapshot
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_gxir7vxn4owt2eerq6kaenfz3y is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_nausxgkseuphnuc4quo42o26em (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_nausxgkseuphnuc4quo42o26em rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_nausxgkseuphnuc4quo42o26em is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_hwvf5vasvifyit7bf3ke5rlh74 (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hwvf5vasvifyit7bf3ke5rlh74 rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hwvf5vasvifyit7bf3ke5rlh74: delete the host's replica: injected failure at delete-replica
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hwvf5vasvifyit7bf3ke5rlh74 is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_o2nphufxd2c4norpme3xibmg4e (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_o2nphufxd2c4norpme3xibmg4e rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_o2nphufxd2c4norpme3xibmg4e is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_hdmdgeszmk5fd5itoleuhqbj64 (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hdmdgeszmk5fd5itoleuhqbj64 rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hdmdgeszmk5fd5itoleuhqbj64: retire its journal row: constraint failed: injected (1811)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hdmdgeszmk5fd5itoleuhqbj64 is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_oxamp5wi5nqw47xyqwjh2eepgm (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_oxamp5wi5nqw47xyqwjh2eepgm rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_oxamp5wi5nqw47xyqwjh2eepgm: retire its journal row: constraint failed: injected (1811)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_oxamp5wi5nqw47xyqwjh2eepgm is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_3fyn74efexuia4icg252dirroq (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_3fyn74efexuia4icg252dirroq rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_3fyn74efexuia4icg252dirroq is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: mark import sd_3fyn74efexuia4icg252dirroq rolled back: injected failure at cas
2026/10/24 23:28:05 provision: a.shop.example.com: aborted seed sd_3fyn74efexuia4icg252dirroq rolled back (no box had swapped it)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_scrz4xgeo7mermd7uz25gkfgnq (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_scrz4xgeo7mermd7uz25gkfgnq rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_scrz4xgeo7mermd7uz25gkfgnq is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: aborted seed sd_scrz4xgeo7mermd7uz25gkfgnq rolled back (no box had swapped it)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_edoo5intrjkbe55slpuwenk65q (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_edoo5intrjkbe55slpuwenk65q rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_edoo5intrjkbe55slpuwenk65q rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_edoo5intrjkbe55slpuwenk65q rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_edoo5intrjkbe55slpuwenk65q is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_wnfhnn2zfnfg534muzuhfyhoa4 (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_wnfhnn2zfnfg534muzuhfyhoa4 rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_wnfhnn2zfnfg534muzuhfyhoa4 is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_ygxff5izw6rl6ebdhygpu4644e (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_ygxff5izw6rl6ebdhygpu4644e rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_ygxff5izw6rl6ebdhygpu4644e is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_vjy436log5l2lb2d2j27gswpta (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_vjy436log5l2lb2d2j27gswpta rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_vjy436log5l2lb2d2j27gswpta is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_mq42d66vms24nzgspy4upzrpgq (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_mq42d66vms24nzgspy4upzrpgq rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_mq42d66vms24nzgspy4upzrpgq is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_dxi5vvp3w7rq3ntsr7lvsfhquq (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_dxi5vvp3w7rq3ntsr7lvsfhquq rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_dxi5vvp3w7rq3ntsr7lvsfhquq is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_cnjqnmo3rmlbqtbz6yck7c3mwa (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_cnjqnmo3rmlbqtbz6yck7c3mwa rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_cnjqnmo3rmlbqtbz6yck7c3mwa is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_by3tp2vqre6fzj6labshy2asfu (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_by3tp2vqre6fzj6labshy2asfu rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_by3tp2vqre6fzj6labshy2asfu is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_3ewe72uzjcuk3p6w5itdoxd6ze (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_3ewe72uzjcuk3p6w5itdoxd6ze has no route on this box: its local data is removed and no route is put back
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_3ewe72uzjcuk3p6w5itdoxd6ze is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_jym7xu2fnetx7xdavehzqio3ka (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_7gjnkltkkbfwtfkeldo535l6xq (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_gbfot32aqjhprzpfv3zmuqzwku (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_gbfot32aqjhprzpfv3zmuqzwku cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_vc2daix4eyi7okjtbgmrz2zbsy (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_vc2daix4eyi7okjtbgmrz2zbsy is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/24 23:28:05 provision: a.shop.example.com: import "../not-a-seed" names no snapshot and no replica; only its journal row is cleaned up
2026/10/24 23:28:05 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_vu7viao3vigkmwrqseegl4jz3i (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_gj7flsgn2r7nohv72f5bispnea (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_blfdlkkvcsyelruxmu6ccr63ce (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_attjndfjjxpyswnkipwgi3kfgy (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_ojsunm76brory7tk2wrugj2ymq (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_ojsunm76brory7tk2wrugj2ymq rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_i5rc57zkabagnqw3cumzdoie5m (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_i5rc57zkabagnqw3cumzdoie5m has no route on this box: its local data is removed and no route is put back
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_i5rc57zkabagnqw3cumzdoie5m is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_acrj45p67h47ixrxdxpuohix7u (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_acrj45p67h47ixrxdxpuohix7u: remove its local data: injected failure at remove-local
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_acrj45p67h47ixrxdxpuohix7u is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_2cxbjykgz46sjnjb6gn6dz6kzu (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_2cxbjykgz46sjnjb6gn6dz6kzu: a route appeared at the host, so its local database is left and the rollback waits
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_7fpxc54l3w4pfa3jloa7moz2k4 (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_7fpxc54l3w4pfa3jloa7moz2k4 rollback deferred: no fence generation: registry busy
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_niqsqznmsmqtjongyquk5sgbwa (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_niqsqznmsmqtjongyquk5sgbwa rollback deferred: no fence generation: the generation source answered 0
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_fpk5373axqjiorfm5tpxw22oom (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_tkwzgdafusrovlzqpum6hm7gw4 (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_2sklz25g4roq2w3qrms52o2r7y (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/24 23:28:05 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_hfpmtd2f2pjvzb735lklom3oky (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hfpmtd2f2pjvzb735lklom3oky rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_hfpmtd2f2pjvzb735lklom3oky is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_yenoj3rbzs3zbcgpgv3774bx3m (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_yenoj3rbzs3zbcgpgv3774bx3m rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_yenoj3rbzs3zbcgpgv3774bx3m is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_zjg6g5qvsbadese6vpigoqzai4 (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_zjg6g5qvsbadese6vpigoqzai4 rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_zjg6g5qvsbadese6vpigoqzai4 is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_gxbcya6pnzrm2tlcwq64e7wlzq (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_gxbcya6pnzrm2tlcwq64e7wlzq: retire its instance key: the env file is a symlink
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_gxbcya6pnzrm2tlcwq64e7wlzq rolled back to its original route
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_gxbcya6pnzrm2tlcwq64e7wlzq is cleaned up and its journal row retired
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_ra6lorsth3bwpdkizedzfdpsje (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: row is on the nested layout (db "/data/instances/a.shop.example.com/a.shop.example.com.db" socket "/run/carlos/instances/a.shop.example.com/app.sock"); the record's shared paths are not drift
2026/10/24 23:28:05 provision: a.shop.example.com: swapped for import sd_nyjnexnnucxch4iju7v72ulssi (the original route is journaled)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_dxn4znrvc77ydqxuugulb5zdie refused: there is no route at a.shop.example.com to replace
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_ntuneh6yttwiy2l6wg4mndm3z4 refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_3thxgtk5d47qwfxbvjtpqb2niy refused: the route's address is 127.0.0.1:8401,127.0.0.1:8402, not 127.0.0.1:8401
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_eki6d4spe7e55qzsph5ghlyqnq refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_x2hbfp6u2hqxid5h42lrlhrsou refused: the route belongs to app other
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_2mqhkgk7gtqaiuqklaxn5u2dhu refused: the route is filed under another account
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_bmi5lhmdtvhpp5di23u2orbgxq refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_ztkw6qwerknstzskxdn5vtw33y refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_dg22yim5o7gylober63l3flfv4 refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_6l4hj6wn2pcpm22wxr5a5r2254 refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_6t7fbmgmryuhp2hfqktffkb7zq refused: the route is not an address route this import can take over (socket)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_dpqtwpzznp4wwb5cwstl5pp64q refused: the route is not an address route this import can take over (no address)
2026/10/24 23:28:05 provision: a.shop.example.com: import sd_lzcsbcvvgtkjfkk2hzohve7l2q refused: the route is not an address route this import can take over (provisioned)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_k5tl2ad2t5t3ceueczk2amlunm refused: the route is not an address route this import can take over (kind static)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_sv644xl6zekyrgrnr7zwgblaeq refused: the route is not an address route this import can take over (backing)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_abuiqxv2dgum7igahai2zltaa4 refused: the route is not an address route this import can take over (tunnel)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_tj5lqmwy6xblqx2d3hsurkpxcq refused: the route is not an address route this import can take over (caps)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_g4etn6gq4caxlrdabcloautgbu refused: the route is not an address route this import can take over (platform)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_7ogiwpesjogydspkx43dn45ae4 refused: the route is not an address route this import can take over (canary)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_fzimwdjwfcvii24erpwpoegfaa refused: the route is not an address route this import can take over (kind sidecar)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_lz6zexacbl4faacwoj6aawuf7y refused: the route is not an address route this import can take over (region)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_l4y6mf3ojorzxs33jfzde6z7dy refused: the route is not an address route this import can take over (fleet_box)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_2ggkuycevocewq2nu4spm5c2x4 refused: the route is not an address route this import can take over (hibernate)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_l5x4xmbewsnokfnahrlr4eyctm refused: the route is not an address route this import can take over (claim_owner)
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_r6tlxnmlrlf3wo5hzlzmkujtsy refused: this box does not run instances nested
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_ozr2cqqxpts4qvyngn2aj2ipie refused: this box does not run instances nested
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_ipvsnvlgt5njy5fl7g4lei26nq refused: claim control is on for this box
2026/10/24 23:28:06 provision: a.shop.example.com: swapped for import sd_4etqg7gwhofcuotjkhgn4fcuae (the original route is journaled)
2026/10/24 23:28:06 provision: a.shop.example.com: swapped for import sd_zmollmhlbbjdfugut3hlar3yoi (the original route is journaled)
2026/10/24 23:28:06 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/24 23:28:06 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_gpbxhtcxt3uwcyoookwhikaaxe: its verify hash is not a sha256
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_3smw4b2bhu6w4dxbysf5ukzize: its verify hash is not a sha256
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_tid3ahxx5mfvjrugebs6g7upqu: its verify hash is not a sha256
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_../../x: its host or seed id is malformed (seeds: not a seed id)
2026/10/24 23:28:06 provision: A.shop.example.com/..: not swapping for import sd_nrb5wdc5wapzluowm7g43rathq: its host or seed id is malformed (seeds: not a host)
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_ekhjo3qeg4pvmu7gn5xn4rrrwi: its record does not describe a nested, hibernating instance
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_d5er24hcmt75rn2yyjyn6hb4eu: its record does not describe a nested, hibernating instance
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_hkcasmf65cse2zarefmofbx7xi: its record does not describe a nested, hibernating instance
2026/10/24 23:28:06 provision: a.shop.example.com: not swapping for import sd_oegnfqb4zkymzd6dldtfk5233i: its record does not describe a nested, hibernating instance
2026/10/24 23:28:06 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/24 23:28:06 provision: a.shop.example.com: swapped for import sd_sqyfjjyhkdffq3a4uxazd24toi (the original route is journaled)
2026/10/24 23:28:06 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/24 23:28:06 provision: a.shop.example.com: swapped for import sd_q6vrx22yiap4lmlnud5q6pu7ue (the original route is journaled)
2026/10/24 23:28:06 provision: a.shop.example.com: swapped for import sd_oealpfuhb2ws26wnnlqcz2h2yu (the original route is journaled)
2026/10/24 23:28:06 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/24 23:28:06 provision: dry-run: would consider swapping a.shop.example.com for import sd_trt52jtxklxtq4n6huchcimnha
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_25kn55y5cxzi4jqwiaznqr4rke rolled back to its original route
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_25kn55y5cxzi4jqwiaznqr4rke: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_25kn55y5cxzi4jqwiaznqr4rke is cleaned up and its journal row retired
2026/10/24 23:28:06 provision: a.shop.example.com: import sd_h7zcsohqvhgi5x4qu5uz5m5vni left alone: the import journal holds seed sd_iid3tq5mtacacf7yyubrunekpy at swapped
2026/10/24 23:28:06 provision: a.shop.example.com: not minting import sd_fwpfcfieykjj4b4ays7iccou5m: it is swapped but not committed, and only its swap makes its row
2026/10/24 23:28:06 provision: a.shop.example.com: not minting import sd_u74bp3uuziobbm72q7im4bpm5a: it is placed but not committed, and only its swap makes its row
2026/10/24 23:28:06 provision: a.shop.example.com: swapped for import sd_ahvgta5vnzpcnvt5tl7g26t2ei (the original route is journaled)
2026/10/24 23:28:06 provision: a.shop.example.com: not minting import sd_ahvgta5vnzpcnvt5tl7g26t2ei: it is swapped but not committed, and only its swap makes its row
2026/10/24 23:28:06 provision: a.shop.example.com: not minting import sd_ahvgta5vnzpcnvt5tl7g26t2ei: it is placed but not committed, and only its swap makes its row
2026/10/24 23:28:06 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/24 23:28:06 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/24 23:28:06 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/24 23:28:06 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/24 23:28:06 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/24 23:28:06 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/24 23:28:06 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 23:28:06 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/24 23:28:06 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/24 23:28:06 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/24 23:28:06 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:28:06 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/24 23:28:06 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/24 23:28:06 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:06 provision: sidecar hub.relay.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/24 23:28:06 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:06 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: sidecar bot.eleven.bac.sidecar.internal is not placeable here: it asks for "no-inbound" placement and this box accepts inbound work (CARLOS_INBOUND="")
2026/10/24 23:28:06 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/24 23:28:06 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/24 23:28:06 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/24 23:28:06 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/24 23:28:06 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/24 23:28:06 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/24 23:28:06 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:06 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/24 23:28:06 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:06 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:06 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 23:28:06 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 23:28:06 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 23:28:06 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/24 23:28:06 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/24 23:28:06 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/24 23:28:06 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/24 23:28:06 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:28:06 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:28:06 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:28:06 provision: record view: change index unusable (release: change index unreadable: store has no conditional read: unsupported operation): the walk records no generations
2026/10/24 23:28:06 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: listing apps/bqd/: listdirs refused — its records are unseen this pass
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: record view: change index unusable (release: change index malformed: invalid character 'n' looking for beginning of object key string): walking
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: record view: change index unusable (get refused): walking
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 23:28:06 provision: listing apps/bqc/shop/instances/: context canceled — its records are unseen this pass
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: record view: re-reading apps/bqc/shop failed: retrying on the next refresh
2026/10/24 23:28:06 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 23:28:06 provision: listing apps/bqc/shop/instances/: list refused — its records are unseen this pass
2026/10/24 23:28:06 provision: an app's records could not be listed: they are skipped
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 23:28:06 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 23:28:06 provision: skipping accounts/bqd/account.json: malformed account manifest: invalid character 'n' looking for beginning of object key string
2026/10/24 23:28:06 provision: record view: re-reading accounts/bqd failed: retrying on the next refresh
2026/10/24 23:28:06 provision: skipping accounts/bqd/account.json: read failed: list refused
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 23:28:06 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:06 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 23:28:06 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 23:28:06 provision: skipping record apps/bum/shop/instances/one.example.com.json: empty channel
2026/10/24 23:28:06 provision: not removing one.example.com: its record exists but could not be read cleanly this pass
2026/10/24 23:28:07 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 23:28:07 provision: minted instance route one.example.com (app "shop" acct "bum")
2026/10/24 23:28:07 provision: removed retired instance route one.example.com (record gone)
2026/10/24 23:28:07 provision: removed retired instance route one.example.com (record gone)
2026/10/24 23:28:07 provision: record view: change index unusable (context deadline exceeded): walking
2026/10/24 23:28:07 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/24 23:28:07 provision: record view: change index unusable (context deadline exceeded): the walk records no generations
2026/10/24 23:28:07 provision: skipping record apps/bqe/store/instances/bad.store.example.com.json: malformed: provision: invalid maintenance projection or protected fields
--- FAIL: TestPlan14RootReadCensus (12.79s)
    plan14_root_reads_test.go:600: root read census: 3 discrepancies
        changed root source envelope internal/applog
        changed root source envelope internal/reqrec
        unclassified root read internal/reqrec/ref.go:NewRef file:Read@484
        
        make census-card shows what changed; make census-propose NAME=<branch> CLAIMS=<file> writes the overlay and its approval card (AGENTS.md, The census)
FAIL
FAIL	github.com/carlosframework/platform/internal/provision	21.433s
ok  	github.com/carlosframework/platform/internal/publicrelease	0.012s
?   	github.com/carlosframework/platform/internal/regionname	[no test files]
ok  	github.com/carlosframework/platform/internal/registry	5.586s
ok  	github.com/carlosframework/platform/internal/relay	7.222s
ok  	github.com/carlosframework/platform/internal/release	25.825s
ok  	github.com/carlosframework/platform/internal/reqrec	0.023s
ok  	github.com/carlosframework/platform/internal/rollout	3.738s
ok  	github.com/carlosframework/platform/internal/rolloutwords	0.003s
ok  	github.com/carlosframework/platform/internal/rootaws	0.007s
ok  	github.com/carlosframework/platform/internal/rootparticipation	0.061s
ok  	github.com/carlosframework/platform/internal/rootstate	0.032s
ok  	github.com/carlosframework/platform/internal/runs	0.592s
ok  	github.com/carlosframework/platform/internal/s3compat	0.006s
ok  	github.com/carlosframework/platform/internal/safefile	0.005s
ok  	github.com/carlosframework/platform/internal/schedule	2.620s
ok  	github.com/carlosframework/platform/internal/seeds	0.012s
ok  	github.com/carlosframework/platform/internal/sim/engines	2.556s
ok  	github.com/carlosframework/platform/internal/sim/hostlife	9.997s
ok  	github.com/carlosframework/platform/internal/sim/litestreamfacts	3.895s
ok  	github.com/carlosframework/platform/internal/status	0.090s
ok  	github.com/carlosframework/platform/internal/steering	0.007s
ok  	github.com/carlosframework/platform/internal/stopevidence	0.321s
ok  	github.com/carlosframework/platform/internal/svcrole	0.004s
ok  	github.com/carlosframework/platform/internal/telemetry	0.004s
ok  	github.com/carlosframework/platform/internal/termfence	0.005s
ok  	github.com/carlosframework/platform/internal/tunnelclient	0.004s
ok  	github.com/carlosframework/platform/internal/unixdial	0.002s
ok  	github.com/carlosframework/platform/internal/updatewords	0.005s
ok  	github.com/carlosframework/platform/internal/usage	0.007s
ok  	github.com/carlosframework/platform/internal/version	0.002s
ok  	github.com/carlosframework/platform/internal/vet	1.674s
FAIL
=== internal_console@0 (86 s)
ok  	github.com/carlosframework/platform/internal/console	83.656s
=== internal_console@1 (44 s)
ok  	github.com/carlosframework/platform/internal/console	41.797s
=== internal_console@2 (41 s)
ok  	github.com/carlosframework/platform/internal/console	38.690s
=== internal_console@3 (42 s)
ok  	github.com/carlosframework/platform/internal/console	39.927s
=== internal_console@4 (42 s)
ok  	github.com/carlosframework/platform/internal/console	40.297s
=== internal_console@5 (42 s)
ok  	github.com/carlosframework/platform/internal/console	40.175s
=== internal_console@6 (37 s)
ok  	github.com/carlosframework/platform/internal/console	34.545s
=== internal_console@7 (46 s)
ok  	github.com/carlosframework/platform/internal/console	43.913s
=== root@0 (110 s)
ok  	github.com/carlosframework/platform	108.486s
=== root@1 (85 s)
ok  	github.com/carlosframework/platform	82.574s
=== root@2 (92 s)
ok  	github.com/carlosframework/platform	89.841s

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

amadan: step gate failed: exit status 2

amadan: job failed at step gate — its output is above, not at the tail of this log
diff --git a/docs/superpowers/specs/2026-10-24-edge-request-protection-design.md b/docs/superpowers/specs/2026-10-24-edge-request-protection-design.md
index c80215fea..72c714762 100644
--- a/docs/superpowers/specs/2026-10-24-edge-request-protection-design.md
+++ b/docs/superpowers/specs/2026-10-24-edge-request-protection-design.md
@@ -494,7 +494,7 @@ backtested.
were dropped.
- **Shipping** uses the existing per-app log pipeline (`internal/applog`,
`StreamEdge`) and its budgets, so they are readable with `carlos logs` and in
- the console. *My call:* 14 days' retention.
+ the console. Retention is the logs family's 7 days (`logshipMaxAge`, `internal/host/logship.go`), changed at plan time from 14 because retention is per family and the calibration report can read two 7-day windows. Edge records have their own rate budget in the sink so they never crowd out the app's own lines.
- **Reference codes** are short, unguessable, and resolve (for the app's members
only) to the record: which rule fired, on what, and the one-line exception
that would allow it.
diff --git a/internal/applog/sink.go b/internal/applog/sink.go
index 6f1f68d78..3f337bdb2 100644
--- a/internal/applog/sink.go
+++ b/internal/applog/sink.go
@@ -2,6 +2,7 @@ package applog
import (
"fmt"
+ "strconv"
"strings"
"sync"
"time"
@@ -25,6 +26,12 @@ type Sink struct {
RatePerMin float64 // sustained app-line budget per app (default 1 MiB/min)
Burst float64 // token bucket depth (default 4 MiB)
+ // The edge stream has its own bucket, so a flood of request records
+ // (a scanner hammering one host) can never spend the tokens the app's
+ // own lines need. Same unit as RatePerMin: recCost plus field bytes.
+ EdgeRatePerMin float64 // sustained edge-record budget per app (default 256 KiB/min)
+ EdgeBurst float64 // edge bucket depth (default 1 MiB)
+
box string
now func() time.Time
@@ -41,6 +48,14 @@ type appBuf struct {
tokens float64
lastRef time.Time
dropped int
+
+ // Edge bucket state. edgeInit is false until the app's first edge
+ // record: the bucket is made lazily, starting full at whatever
+ // EdgeBurst is by then, as buf() does for the app bucket.
+ edgeInit bool
+ edgeTokens float64
+ edgeLastRef time.Time
+ edgeDropped int
}
// NewSink returns a Sink stamping records with box and timestamps from now
@@ -56,6 +71,8 @@ func NewSink(box string, now func() time.Time) *Sink {
MaxBytesPerApp: 4 << 20,
RatePerMin: 1 << 20,
Burst: 4 << 20,
+ EdgeRatePerMin: 256 << 10,
+ EdgeBurst: 1 << 20,
box: box,
now: now,
apps: make(map[AppKey]*appBuf),
@@ -106,6 +123,53 @@ func (s *Sink) App(acct, app, host, line string) {
})
}
+// Edge buffers one edge request record for (acct, app). It runs on the
+// request goroutine through reqrec, so it takes s.mu briefly and does
+// nothing else: no I/O, no blocking send, and it does not poke notify
+// (edge records ride the ship tick; only wake failures need the fast
+// flush). The edge bucket is separate from App's, and the fields map is
+// copied because callers may reuse it.
+func (s *Sink) Edge(acct, app, host, level, msg string, fields map[string]string) {
+ r := Record{
+ Host: host,
+ Stream: StreamEdge,
+ Level: level,
+ Msg: msg,
+ Fields: copyFields(fields),
+ }
+ cost := float64(costOf(r))
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ b := s.buf(AppKey{acct, app})
+ now := s.now()
+ if !b.edgeInit {
+ b.edgeInit, b.edgeTokens, b.edgeLastRef = true, s.EdgeBurst, now
+ }
+ elapsed := now.Sub(b.edgeLastRef)
+ b.edgeLastRef = now
+ b.edgeTokens += s.EdgeRatePerMin * elapsed.Minutes()
+ if b.edgeTokens > s.EdgeBurst {
+ b.edgeTokens = s.EdgeBurst
+ }
+ if b.edgeTokens < cost {
+ b.edgeDropped++
+ return
+ }
+ b.edgeTokens -= cost
+ s.append(b, r)
+}
+
+func copyFields(f map[string]string) map[string]string {
+ if len(f) == 0 {
+ return nil
+ }
+ out := make(map[string]string, len(f))
+ for k, v := range f {
+ out[k] = v
+ }
+ return out
+}
+
// Event buffers one platform event — member-safe text composed at the emit
// site (spec §5), never a relayed journal line. Events bypass the rate cap:
// they are the diagnosis, and a chatty app must not crowd out its own
@@ -155,6 +219,17 @@ func (s *Sink) Drain() map[AppKey][]Record {
})
b.dropped = 0
}
+ if b.edgeDropped > 0 {
+ // Not IsDropNotice: this is an edge-stream record about the
+ // edge budget, so Availability (platform stream) never sees it.
+ s.append(b, Record{
+ Stream: StreamEdge,
+ Level: LevelWarn,
+ Msg: fmt.Sprintf("dropped %d edge record(s)"+dropNoticeSuffix, b.edgeDropped),
+ Fields: map[string]string{"kind": "dropped", "n": strconv.Itoa(b.edgeDropped)},
+ })
+ b.edgeDropped = 0
+ }
if len(b.recs) == 0 {
continue
}
@@ -183,11 +258,18 @@ func (s *Sink) append(b *appBuf, r Record) {
r.Box = s.box
r.Seq = s.seq
b.recs = append(b.recs, r)
- b.bytes += recCost(r.Msg)
+ b.bytes += costOf(r)
for b.bytes > s.MaxBytesPerApp && len(b.recs) > 1 {
- b.bytes -= recCost(b.recs[0].Msg)
+ old := b.recs[0]
+ b.bytes -= costOf(old)
b.recs = b.recs[1:]
- b.dropped++
+ // An evicted edge record is owed to the edge notice, not the app
+ // one: "dropped N app log line(s)" would be untrue.
+ if old.Stream == StreamEdge {
+ b.edgeDropped++
+ } else {
+ b.dropped++
+ }
}
}
@@ -205,3 +287,18 @@ func (b *appBuf) refill(now time.Time, perMin, burst float64) {
// overhead standing in for the envelope. Both budgets use the same measure
// so "4 MiB of ring" and "1 MiB/min of rate" describe the same bytes.
func recCost(msg string) int { return len(msg) + 64 }
+
+// costOf is recCost for a whole record. Edge records carry their request
+// detail in Fields, so those bytes count; app and platform records cost
+// exactly what they did before, which keeps their budgets unchanged. The
+// ring accounting in append (add and evict) and the edge bucket must all
+// use this one measure.
+func costOf(r Record) int {
+ c := recCost(r.Msg)
+ if r.Stream == StreamEdge {
+ for k, v := range r.Fields {
+ c += len(k) + len(v)
+ }
+ }
+ return c
+}
diff --git a/internal/applog/sink_edge_test.go b/internal/applog/sink_edge_test.go
new file mode 100644
index 000000000..8be42afb0
--- /dev/null
+++ b/internal/applog/sink_edge_test.go
@@ -0,0 +1,48 @@
+package applog
+
+import (
+ "strings"
+ "testing"
+ "time"
+)
+
+func TestSinkEdgeOwnBudget(t *testing.T) {
+ now := time.Date(2026, 10, 24, 21, 0, 0, 0, time.UTC)
+ s := NewSink("box1", func() time.Time { return now })
+ s.EdgeBurst, s.EdgeRatePerMin = 4096, 0
+ f := map[string]string{"kind": "notfound", "path": strings.Repeat("p", 900)}
+ for i := 0; i < 100; i++ {
+ s.Edge("a1", "shop", "shop.example.com", LevelInfo, "404 GET /x", f)
+ }
+ s.App("a1", "shop", "shop.example.com", "app line still lands")
+ recs := s.Drain()[AppKey{"a1", "shop"}]
+ var edge, app, notice int
+ for _, r := range recs {
+ switch {
+ case r.Stream == StreamEdge && r.Fields["kind"] == "dropped":
+ notice++
+ if r.Fields["n"] == "" || r.Level != LevelWarn {
+ t.Fatalf("bad notice %+v", r)
+ }
+ case r.Stream == StreamEdge:
+ edge++
+ case r.Stream == StreamApp:
+ app++
+ }
+ }
+ if edge == 0 || edge >= 100 || app != 1 || notice != 1 {
+ t.Fatalf("edge=%d app=%d notice=%d", edge, app, notice)
+ }
+}
+
+func TestSinkEdgeFieldsCountAgainstRing(t *testing.T) {
+ s := NewSink("box1", time.Now)
+ s.MaxBytesPerApp, s.EdgeBurst, s.EdgeRatePerMin = 2000, 1<<20, 1<<20
+ big := map[string]string{"path": strings.Repeat("p", 900)}
+ for i := 0; i < 10; i++ {
+ s.Edge("a1", "shop", "h", LevelInfo, "m", big)
+ }
+ if n := len(s.Drain()[AppKey{"a1", "shop"}]); n > 3 {
+ t.Fatalf("ring held %d records of ~1KB in 2000 bytes", n)
+ }
+}