applog: Sink.Edge producer for edge request records, own rate budget
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
3 files changed,
+149
−4
docs/superpowers/specs/2026-10-24-edge-request-protection-design.md+1 −1internal/applog/sink.go+100 −3internal/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) |
| + } |
| +} |