harness: boxes from host-init a0b3f5a with pre-boot shims, signer, snapshot base (step 5)
Layout probe: /opt/carlos carlos:carlos, OpenProtected refuses, which is defect 1's precondition reproduced from the infrastructure's own user_data.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 files changed,
+501
−0
harness/RUNLOG.md+57 −0harness/boxes/boxes-up.sh+86 −0harness/boxes/layout-probe.sh+15 −0harness/boxes/shims/sysctl+38 −0harness/boxes/shims/systemd-zram-setup@.service+11 −0harness/infra-copies/747f699/dev/host-init.sh+53 −0harness/infra-copies/PROVENANCE.md+13 −0harness/infra-copies/a0b3f5a/dev/host-init.sh+50 −0harness/infra-copies/a0b3f5a/scripts/bootstrap-box.sh+80 −0harness/infra-copies/a0b3f5a/scripts/update-platform-binary.sh+98 −0
CI failed — run details
CI log
=== gate ===
cd launchctx && go vet ./... && go test ./... -count=1
ok amadan.net/carlos/platform.git/launchctx 0.012s
? amadan.net/carlos/platform.git/launchctx/controlname [no test files]
? amadan.net/carlos/platform.git/launchctx/wireid [no test files]
go vet ./...
gofmt -l .: clean
go test ./... -count=1 -timeout 30m
ok github.com/carlosframework/platform 324.788s
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 3.517s
ok github.com/carlosframework/platform/cmd/moveprobe 93.871s
ok github.com/carlosframework/platform/cmd/zddprobe 0.738s
ok github.com/carlosframework/platform/internal/activator 252.016s
ok github.com/carlosframework/platform/internal/agentsock 0.028s
ok github.com/carlosframework/platform/internal/alerting 0.006s
ok github.com/carlosframework/platform/internal/analytics 0.034s
ok github.com/carlosframework/platform/internal/appconfig 2.801s
ok github.com/carlosframework/platform/internal/apperr 0.138s
ok github.com/carlosframework/platform/internal/applog 0.232s
ok github.com/carlosframework/platform/internal/awsinv 0.009s
ok github.com/carlosframework/platform/internal/boxchoice 0.006s
ok github.com/carlosframework/platform/internal/boxid 0.552s
? 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.018s
ok github.com/carlosframework/platform/internal/caps 0.016s
ok github.com/carlosframework/platform/internal/certwarm 0.008s
ok github.com/carlosframework/platform/internal/cgroup 0.759s
ok github.com/carlosframework/platform/internal/changelog 0.461s
ok github.com/carlosframework/platform/internal/claimactivation 1.153s
ok github.com/carlosframework/platform/internal/clamd 0.058s
? github.com/carlosframework/platform/internal/cliflag [no test files]
ok github.com/carlosframework/platform/internal/console 411.264s
? 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 5.684s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.015s
ok github.com/carlosframework/platform/internal/dbverify 0.008s
ok github.com/carlosframework/platform/internal/dnsrec 0.004s
ok github.com/carlosframework/platform/internal/docsite 0.007s
ok github.com/carlosframework/platform/internal/domains 2.548s
ok github.com/carlosframework/platform/internal/doorkey 0.009s
ok github.com/carlosframework/platform/internal/economics 0.005s
ok github.com/carlosframework/platform/internal/edge 46.117s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.017s
ok github.com/carlosframework/platform/internal/fleetapi 0.163s
ok github.com/carlosframework/platform/internal/gate 1.749s
ok github.com/carlosframework/platform/internal/genselect 0.024s
ok github.com/carlosframework/platform/internal/geo 0.032s
ok github.com/carlosframework/platform/internal/geoip 0.049s
ok github.com/carlosframework/platform/internal/historyreadback 0.229s
ok github.com/carlosframework/platform/internal/host 189.601s
ok github.com/carlosframework/platform/internal/hostactors 6.700s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.005s
ok github.com/carlosframework/platform/internal/hostbox 3.291s
ok github.com/carlosframework/platform/internal/hostclaim 0.996s
ok github.com/carlosframework/platform/internal/hostenv 0.010s
ok github.com/carlosframework/platform/internal/hostevidence 0.006s
ok github.com/carlosframework/platform/internal/hostexec 7.063s
ok github.com/carlosframework/platform/internal/hostfence 0.042s
ok github.com/carlosframework/platform/internal/hostfiles 11.293s
ok github.com/carlosframework/platform/internal/hostfloor 0.025s
ok github.com/carlosframework/platform/internal/hostguard 1.028s
ok github.com/carlosframework/platform/internal/hostops 2.404s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.009s
ok github.com/carlosframework/platform/internal/hostquarantine 0.006s
ok github.com/carlosframework/platform/internal/hostrelocate 0.840s
ok github.com/carlosframework/platform/internal/hostresolve 0.308s
ok github.com/carlosframework/platform/internal/hostwrite 0.005s
ok github.com/carlosframework/platform/internal/infraview 0.006s
ok github.com/carlosframework/platform/internal/instancectl 5.299s
ok github.com/carlosframework/platform/internal/instanceexec 2.948s
ok github.com/carlosframework/platform/internal/instancefs 0.009s
ok github.com/carlosframework/platform/internal/instancekey 0.005s
ok github.com/carlosframework/platform/internal/instanceupdates 0.011s
ok github.com/carlosframework/platform/internal/layout 1.944s
ok github.com/carlosframework/platform/internal/lbhealth 0.025s
ok github.com/carlosframework/platform/internal/lease 10.003s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.006s
ok github.com/carlosframework/platform/internal/ledger 0.037s
ok github.com/carlosframework/platform/internal/mail 0.273s
ok github.com/carlosframework/platform/internal/maintenance 0.104s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.793s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.103s
ok github.com/carlosframework/platform/internal/metrics 0.008s
ok github.com/carlosframework/platform/internal/moves 23.439s
ok github.com/carlosframework/platform/internal/moves/archive 1.475s
ok github.com/carlosframework/platform/internal/objstore 0.288s
ok github.com/carlosframework/platform/internal/ops 0.248s
ok github.com/carlosframework/platform/internal/park 0.300s
ok github.com/carlosframework/platform/internal/privatefile 0.016s
2026/10/20 01:00:05 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/20 01:00:05 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 01:00:05 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 01:00:05 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/20 01:00:05 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 01:00:05 provision: an app's records could not be listed: they are skipped
2026/10/20 01:00:05 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:05 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/20 01:00:05 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/20 01:00:05 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/20 01:00:05 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/20 01:00:05 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 01:00:05 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/20 01:00:05 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 01:00:05 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/20 01:00:05 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/20 01:00:05 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 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/20 01:00:05 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 01:00:05 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 01:00:05 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/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 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/20 01:00:05 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 01:00:05 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 01:00:05 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/20 01:00:05 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 01:00:05 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/20 01:00:05 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 01:00:05 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/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:05 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:05 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:05 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 01:00:05 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:05 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:05 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:05 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/20 01:00:06 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/20 01:00:06 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/20 01:00:06 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/20 01:00:06 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 01:00:06 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:06 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan14RootReadCensus (5.02s)
plan14_root_reads_test.go:940: root read census: 25 discrepancies
changed root read internal/hostfence/writer.go:OpenRootFenceStore; review class, task, sites and digest
changed root source envelope harness
changed root source envelope harness/boxes
changed root source envelope harness/boxes/shims
changed root source envelope harness/infra
changed root source envelope harness/infra-copies/747f699/dev
changed root source envelope harness/infra-copies/a0b3f5a/dev
changed root source envelope harness/infra-copies/a0b3f5a/scripts
changed root source envelope internal/host
changed root source envelope internal/hostfence
changed root source envelope internal/publicrelease
changed root source envelope internal/s3compat
unclassified root read harness/boxes/boxes-up.sh:external file:external@0
unclassified root read harness/boxes/layout-probe.sh:external file:external@0
unclassified root read harness/boxes/shims/systemd-zram-setup@.service:external file:external@0
unclassified root read harness/donor-user-data.sh:external file:external@0
unclassified root read harness/host-setup.sh:external file:external@0
unclassified root read harness/host-user-data.sh:external file:external@0
unclassified root read harness/infra-copies/747f699/dev/host-init.sh:external file:external@0
unclassified root read harness/infra-copies/a0b3f5a/dev/host-init.sh:external file:external@0
unclassified root read harness/infra-copies/a0b3f5a/scripts/bootstrap-box.sh:external file:external@0
unclassified root read harness/infra-copies/a0b3f5a/scripts/update-platform-binary.sh:external file:external@0
unclassified root read harness/infra/infra-setup.sh:external file:external@0
unclassified root read internal/s3compat/harness.go:readHarnessFile file:ReadFile@189,file:Stat@55
changed reclassified declaration internal/hostfence/writer.go:OpenRootFenceStore
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: refusing to mint route acme.go.tito.io (app "tito" acct "bac"): this box declares CARLOS_INBOUND=none (no-inbound) and cannot serve routed instance traffic
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 01:00:44 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/20 01:00:44 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/20 01:00:44 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/20 01:00:44 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: converged acme.go.tito.io hibernate false -> true
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: converged acme.go.tito.io status-named false -> true
2026/10/20 01:00:44 provision: converged acme.go.tito.io status-named true -> false
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 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/20 01:00:44 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/20 01:00:44 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/20 01:00:44 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 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/20 01:00:44 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/20 01:00:44 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/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 01:00:44 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:44 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/20 01:00:45 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/20 01:00:45 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/20 01:00:45 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/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 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/20 01:00:45 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 01:00:45 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/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 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/20 01:00:45 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 01:00:45 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/20 01:00:45 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:45 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 01:00:45 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/20 01:00:45 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/20 01:00:45 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 01:00:45 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/20 01:00:45 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 01:00:45 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/20 01:00:45 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/20 01:00:45 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 01:00:45 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/20 01:00:45 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 01:00:45 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/20 01:00:45 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 01:00:45 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 01:00:45 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 01:00:45 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/20 01:00:45 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/20 01:00:45 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 01:00:45 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/20 01:00:45 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/20 01:00:45 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/20 01:00:45 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/20 01:00:45 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/20 01:00:45 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/20 01:00:45 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 01:00:45 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 01:00:45 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/20 01:00:45 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/20 01:00:45 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/20 01:00:45 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/20 01:00:45 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/20 01:00:45 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/20 01:00:45 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/20 01:00:45 provision: dry-run: would converge owned.go.tito.io seed
2026/10/20 01:00:45 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 01:00:45 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/20 01:00:45 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/20 01:00:45 provision: converged owned.go.tito.io channel stable -> edge
2026/10/20 01:00:45 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/20 01:00:45 provision: converged owned.go.tito.io hibernate false -> true
2026/10/20 01:00:45 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/20 01:00:45 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/20 01:00:45 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: removed retired static route site.go.tito.io (record gone)
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/20 01:00:45 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/20 01:00:45 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 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/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:45 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/20 01:00:45 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/20 01:00:45 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 01:00:45 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/20 01:00:45 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/20 01:00:45 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 01:00:45 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/20 01:00:45 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/20 01:00:45 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/20 01:00:45 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/20 01:00:45 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/20 01:00:45 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 01:00:45 provision: dry-run: would mint instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac" channel "stable")
2026/10/20 01:00:45 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/20 01:00:46 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/20 01:00:46 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/20 01:00:46 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/20 01:00:46 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:46 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/20 01:00:46 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:46 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/20 01:00:46 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:46 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/20 01:00:46 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:46 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/20 01:00:46 provision: a.shop.example.com: swapped for import sd_w5fil3txjzps5tdbktiyd4nage (the original route is journaled)
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_w5fil3txjzps5tdbktiyd4nage committed: its gate is cleared and its journal row dropped
2026/10/20 01:00:46 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/20 01:00:46 provision: a.shop.example.com: import sd_mblx4wnjunsojtdrox62q65faq rolled back to its original route
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_mblx4wnjunsojtdrox62q65faq: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_mblx4wnjunsojtdrox62q65faq is cleaned up and its journal row retired
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_ukg2fvw5wdrge7g4lkgk2nmc7q rolled back to its original route
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_ukg2fvw5wdrge7g4lkgk2nmc7q: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_ukg2fvw5wdrge7g4lkgk2nmc7q is cleaned up and its journal row retired
2026/10/20 01:00:46 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_kicyrqhqq7ppvni5avpa3twtbm
2026/10/20 01:00:46 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/20 01:00:46 provision: dry-run: would converge a.shop.example.com seed source
2026/10/20 01:00:46 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/20 01:00:46 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/20 01:00:46 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/20 01:00:46 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/20 01:00:46 provision: a.shop.example.com: import sd_4ejy2auesleffxgkuhlowfrgui cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_23lt446zmdjsbgbeyiw7gwr2uy cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_hivluohzljlm6k5j2f2xiro4eu is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_votrlfpmgbf5tz7zmsjlhg6it4 is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_mvdy62j3armalctt3d2334jzaa is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 01:00:46 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/20 01:00:46 provision: b.shop.example.com: import sd_3vxul5rwoaawfvde5bsnkxsnt4 left alone this pass: the import journal could not be read
2026/10/20 01:00:46 provision: c.shop.example.com: import sd_a5mjmbf6z47to3ezhgkec7ohzi left alone this pass: the import journal could not be read
2026/10/20 01:00:46 provision: a.shop.example.com: import sd_q2fpb4ah44czvc23emwxwdqjhu committed: its gate is cleared and its journal row dropped
2026/10/20 01:00:46 provision: a.shop.example.com: not converging import sd_ixon5fkifp6ywerdjf7jjcmfwq: it is swapped but not committed, and the row on this box has no import gate
2026/10/20 01:00:47 provision: a.shop.example.com: not converging import sd_lj4fay7w4omcgdrticjflfxalm: it is swapped but not committed, and the row on this box has no import gate
2026/10/20 01:00:47 provision: a.shop.example.com: not converging import sd_pienpslqe4tw4i4gyl3n3zqgq4: it is placed but not committed, and the row on this box has no import gate
2026/10/20 01:00:47 provision: a.shop.example.com: not converging import sd_dzcsomjgkvalbeaup3u4k2cs4q: it is placed but not committed, and the row on this box has no import gate
2026/10/20 01:00:47 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/20 01:00:47 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/20 01:00:47 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/20 01:00:47 provision: a.shop.example.com: import sd_fduzhpnqnwos3aj25wbhofaxx4 committed: its gate is cleared and its journal row dropped
2026/10/20 01:00:47 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/20 01:00:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:47 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/20 01:00:47 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/20 01:00:47 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_hp4vfucarguei5jnpngiwmby7a: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_hp4vfucarguei5jnpngiwmby7a rolled back (no box had swapped it)
2026/10/20 01:00:47 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/20 01:00:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:47 provision: removed instance route acme.go.tito.io (its seed sd_ueq7smuubvzg4pvj3iiiq7wocq was aborted); the next pass rolls it back
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_ueq7smuubvzg4pvj3iiiq7wocq: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_ueq7smuubvzg4pvj3iiiq7wocq rolled back (no box had swapped it)
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_hsy7yyopenjf4z22ymrkefkype has a row this pass may not remove; leaving the seed aborted
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_o4pq4jyvbt56rfgl332vtuscxe rolled back (no box had swapped it)
2026/10/20 01:00:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:47 provision: removed instance route acme.go.tito.io (its seed sd_yneo3fzhobltipjjxlfnultxte was aborted); the next pass rolls it back
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_yneo3fzhobltipjjxlfnultxte has no route on this box: its local data is removed
2026/10/20 01:00:47 provision: acme.go.tito.io: aborted seed sd_yneo3fzhobltipjjxlfnultxte rolled back (no box had swapped it)
2026/10/20 01:00:47 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_fzonljb4o7qu6nigsasrmrvxdy (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_fzonljb4o7qu6nigsasrmrvxdy rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_fzonljb4o7qu6nigsasrmrvxdy is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_bj2xc4n73m66p3wjnuokyl5gfe (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_bj2xc4n73m66p3wjnuokyl5gfe rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_bj2xc4n73m66p3wjnuokyl5gfe is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_ah3y2xfiqcnghv2ycaj65bfv5a (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_ah3y2xfiqcnghv2ycaj65bfv5a rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_ah3y2xfiqcnghv2ycaj65bfv5a: the host's replica is left alone: its record no longer names this seed
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_ah3y2xfiqcnghv2ycaj65bfv5a is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_z25hnkczbfhv4dkcl22iaxyj6u (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_z25hnkczbfhv4dkcl22iaxyj6u rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_z25hnkczbfhv4dkcl22iaxyj6u rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_z25hnkczbfhv4dkcl22iaxyj6u is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_vdrsdofmjklt5dugyg43cr54ce (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_vdrsdofmjklt5dugyg43cr54ce rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_yrgjwwkozivvxtar5gnbpmvhji (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_yrgjwwkozivvxtar5gnbpmvhji is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_yr4k2ltso3wqjiuf63276pgbmy (the original route is journaled)
2026/10/20 01:00:47 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_yr4k2ltso3wqjiuf63276pgbmy left alone this pass: its record could not be read
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_2pagnxipsjukpcudxrp6ibd5yi (the original route is journaled)
2026/10/20 01:00:47 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_2pagnxipsjukpcudxrp6ibd5yi left alone this pass: its record could not be read
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_yz2ttlwpguenuwy72ceb53kemy (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_yz2ttlwpguenuwy72ceb53kemy: close the import gate: constraint failed: injected (1811)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_yz2ttlwpguenuwy72ceb53kemy rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_yz2ttlwpguenuwy72ceb53kemy is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_symnyb3b4k7fajz2gix7m6v53m (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_symnyb3b4k7fajz2gix7m6v53m: close the import gate: constraint failed: injected (1811)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_symnyb3b4k7fajz2gix7m6v53m rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_symnyb3b4k7fajz2gix7m6v53m is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_fjaoyqtoxed6hg7vjuzqbg4wna (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_fjaoyqtoxed6hg7vjuzqbg4wna rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_fjaoyqtoxed6hg7vjuzqbg4wna rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_fjaoyqtoxed6hg7vjuzqbg4wna is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_2w7hrny3sgfpq5flhlxb2suvfy (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_2w7hrny3sgfpq5flhlxb2suvfy rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_2w7hrny3sgfpq5flhlxb2suvfy is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_lsgj6b5ij5rpyuwxepjvjr36oy (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_lsgj6b5ij5rpyuwxepjvjr36oy: retire its instance key: injected failure at retire-key
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_lsgj6b5ij5rpyuwxepjvjr36oy rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_lsgj6b5ij5rpyuwxepjvjr36oy is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_nteqli43vii6fqlbgbp62nr7mi (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_nteqli43vii6fqlbgbp62nr7mi rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_nteqli43vii6fqlbgbp62nr7mi is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_bgkjangk6nytguaf5bpgwmzv6u (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_bgkjangk6nytguaf5bpgwmzv6u: remove its local data: injected failure at remove-local
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_bgkjangk6nytguaf5bpgwmzv6u rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_bgkjangk6nytguaf5bpgwmzv6u is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_5limtpwgkdsy7zu2hmc2xrxgxm (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_5limtpwgkdsy7zu2hmc2xrxgxm rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_5limtpwgkdsy7zu2hmc2xrxgxm is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_a37sqcqoslqs5hn7h4qvbjrhde (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_a37sqcqoslqs5hn7h4qvbjrhde: remove its local data: injected failure at remove-local-done
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_a37sqcqoslqs5hn7h4qvbjrhde rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_a37sqcqoslqs5hn7h4qvbjrhde is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_wg75gbwykthay6yl7ko3is5bom (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_wg75gbwykthay6yl7ko3is5bom rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_wg75gbwykthay6yl7ko3is5bom is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_rxfusvzf7f6frjpy2ucx76mnyq (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_rxfusvzf7f6frjpy2ucx76mnyq: restore the original route: constraint failed: injected (1811)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_rxfusvzf7f6frjpy2ucx76mnyq rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_rxfusvzf7f6frjpy2ucx76mnyq is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_pf5wukwmlxwkcxcokmkq7edbwa (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_pf5wukwmlxwkcxcokmkq7edbwa: restore the original route: constraint failed: injected (1811)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_pf5wukwmlxwkcxcokmkq7edbwa rolled back to its original route
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_pf5wukwmlxwkcxcokmkq7edbwa is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_2aoroly56ox6zsumzz4ch7dc6e (the original route is journaled)
2026/10/20 01:00:47 provision: a.shop.example.com: import sd_2aoroly56ox6zsumzz4ch7dc6e is cleaned up and its journal row retired
2026/10/20 01:00:47 provision: a.shop.example.com: swapped for import sd_pzldmnngvr2aoomsenascxmafa (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_pzldmnngvr2aoomsenascxmafa rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_pzldmnngvr2aoomsenascxmafa: delete its snapshot: injected failure at delete-snapshot
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_pzldmnngvr2aoomsenascxmafa is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_dseayltpqt6queuulg635j3d6y (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_dseayltpqt6queuulg635j3d6y rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_dseayltpqt6queuulg635j3d6y is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_5z3wq2pngzohzanidhuqhsa36q (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_5z3wq2pngzohzanidhuqhsa36q rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_5z3wq2pngzohzanidhuqhsa36q: delete the host's replica: injected failure at delete-replica
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_5z3wq2pngzohzanidhuqhsa36q is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_utousezxygc5lwkxz2wzs5olvu (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_utousezxygc5lwkxz2wzs5olvu rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_utousezxygc5lwkxz2wzs5olvu is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_w5bmgguuqhkmdcnudlpkx6zede (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_w5bmgguuqhkmdcnudlpkx6zede rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_w5bmgguuqhkmdcnudlpkx6zede: retire its journal row: constraint failed: injected (1811)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_w5bmgguuqhkmdcnudlpkx6zede is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_jcj7qvw4n627ybumnmsjscesfm (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_jcj7qvw4n627ybumnmsjscesfm rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_jcj7qvw4n627ybumnmsjscesfm: retire its journal row: constraint failed: injected (1811)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_jcj7qvw4n627ybumnmsjscesfm is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_sxmvt2kb5j25i2cd54mjttsxt4 (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_sxmvt2kb5j25i2cd54mjttsxt4 rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_sxmvt2kb5j25i2cd54mjttsxt4 is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: mark import sd_sxmvt2kb5j25i2cd54mjttsxt4 rolled back: injected failure at cas
2026/10/20 01:00:48 provision: a.shop.example.com: aborted seed sd_sxmvt2kb5j25i2cd54mjttsxt4 rolled back (no box had swapped it)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_y6jclx5n7xp3kuz6g6ejyll624 (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_y6jclx5n7xp3kuz6g6ejyll624 rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_y6jclx5n7xp3kuz6g6ejyll624 is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: aborted seed sd_y6jclx5n7xp3kuz6g6ejyll624 rolled back (no box had swapped it)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_6tf4owijoxiwpyypuua5kes5sm (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_6tf4owijoxiwpyypuua5kes5sm rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_6tf4owijoxiwpyypuua5kes5sm rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_6tf4owijoxiwpyypuua5kes5sm rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_6tf4owijoxiwpyypuua5kes5sm is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_whvmv25sm3l3uj2moon4fuowi4 (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_whvmv25sm3l3uj2moon4fuowi4 rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_whvmv25sm3l3uj2moon4fuowi4 is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_gvn3757pjan4thhm6omlwytgui (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_gvn3757pjan4thhm6omlwytgui rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_gvn3757pjan4thhm6omlwytgui is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_cpusuyicswfpwvnacvwn2cpvdq (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_cpusuyicswfpwvnacvwn2cpvdq rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_cpusuyicswfpwvnacvwn2cpvdq is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_dwgsvhz63s3bwqc2rgw7seh3t4 (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_dwgsvhz63s3bwqc2rgw7seh3t4 rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_dwgsvhz63s3bwqc2rgw7seh3t4 is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_zdgidnuiw53t4pim3haskl7hwy (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_zdgidnuiw53t4pim3haskl7hwy rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_zdgidnuiw53t4pim3haskl7hwy is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_tgwqwl3zsgjqldipivsx2ozkm4 (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_tgwqwl3zsgjqldipivsx2ozkm4 rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_tgwqwl3zsgjqldipivsx2ozkm4 is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_md5uevmt73uxnb7c247wl3iuzu (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_md5uevmt73uxnb7c247wl3iuzu rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_md5uevmt73uxnb7c247wl3iuzu is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_zulv5zzjkdmjzp4eicuaerahmi (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_zulv5zzjkdmjzp4eicuaerahmi has no route on this box: its local data is removed and no route is put back
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_zulv5zzjkdmjzp4eicuaerahmi is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_wfofu4kgjizpxnnxrjguwhasqq (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_rabjxcnlybqyw25fgv7orqolsy (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_rjlsjftgalv3ykmhb5yi3chate (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_rjlsjftgalv3ykmhb5yi3chate cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_akoylwv65dqlgakn5n5zftbm4i (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_akoylwv65dqlgakn5n5zftbm4i is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/20 01:00:48 provision: a.shop.example.com: import "../not-a-seed" names no snapshot and no replica; only its journal row is cleaned up
2026/10/20 01:00:48 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_utgqylb77apmp45ltdlbu24oie (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_vwgbugkueddrrf6cin2iqkylvy (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_rutrvqs2v6i6iwujm2unf5spfi (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_4hzjjtodgksw6h6jinmz62qtva (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_dmr3ncwaaizwoxm7fiiajcdczu (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_dmr3ncwaaizwoxm7fiiajcdczu rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_4mqtr25iwwge2rzbqnt7tjspne (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_4mqtr25iwwge2rzbqnt7tjspne has no route on this box: its local data is removed and no route is put back
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_4mqtr25iwwge2rzbqnt7tjspne is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_27kdl4g6ohjjjiax42cl5ifxzi (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_27kdl4g6ohjjjiax42cl5ifxzi: remove its local data: injected failure at remove-local
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_27kdl4g6ohjjjiax42cl5ifxzi is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_w3zrinsnqsrxlrcumdgkd54why (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_w3zrinsnqsrxlrcumdgkd54why: a route appeared at the host, so its local database is left and the rollback waits
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_kdgtr3ubzjidhrwv34fsvz25de (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_kdgtr3ubzjidhrwv34fsvz25de rollback deferred: no fence generation: registry busy
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_gsixp33qscdlntfuh42xb5r2fa (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_gsixp33qscdlntfuh42xb5r2fa rollback deferred: no fence generation: the generation source answered 0
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_k7xsmtjawlpkdnarr3ohvdbgka (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_qrjkt4lw2rcnxittnilf6txtyy (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_4kje67hx4ymcjpte63bnvxjaua (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/20 01:00:48 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_fw7r6z6i5dzaqv3xtb5nmyee2a (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_fw7r6z6i5dzaqv3xtb5nmyee2a rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_fw7r6z6i5dzaqv3xtb5nmyee2a is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_76ahtuzocqlgnbpf22xvc3dmm4 (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_76ahtuzocqlgnbpf22xvc3dmm4 rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_76ahtuzocqlgnbpf22xvc3dmm4 is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_a36lwihaabnfxvbj7caz4rogf4 (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_a36lwihaabnfxvbj7caz4rogf4 rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_a36lwihaabnfxvbj7caz4rogf4 is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_kkfmpggbd3o4b6q3mevkuqopbq (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_kkfmpggbd3o4b6q3mevkuqopbq: retire its instance key: the env file is a symlink
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_kkfmpggbd3o4b6q3mevkuqopbq rolled back to its original route
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_kkfmpggbd3o4b6q3mevkuqopbq is cleaned up and its journal row retired
2026/10/20 01:00:48 provision: a.shop.example.com: swapped for import sd_wcgecvfamgyyusaogsohq542oe (the original route is journaled)
2026/10/20 01:00:48 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/20 01:00:48 provision: a.shop.example.com: swapped for import sd_lyspaz3dzjkp2mtbfgxr22fozu (the original route is journaled)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_56chkchetdl4eq5xav4y6yoerm refused: there is no route at a.shop.example.com to replace
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_nwu3vfycrhn3kcesac2lglucva refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_2x5t6fpn4h6vfev3fkevgyk4gu refused: the route's address is 127.0.0.1:8401,127.0.0.1:8402, not 127.0.0.1:8401
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_cqgu7kfa6hdsrjlhwuypoybe7q refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_mziuxnb5uxutud2pfhtgjhrkmu refused: the route belongs to app other
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_g3vq5cpkqcz454tq657w2kcq2q refused: the route is filed under another account
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_p5eylgfp3d6myh4j2ssedmpehm refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_gsrksndxwpyyg6iaagrpqngska refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_2niynqehnugbuqmj2m66tj5rea refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_cps63cxuzwz6dqjy76ndodwyji refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_ism4tpckx3lsx6uj2uvs2yhyfa refused: the route is not an address route this import can take over (socket)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_r42kb7jcyu2oa3vva2sjnqrjke refused: the route is not an address route this import can take over (no address)
2026/10/20 01:00:48 provision: a.shop.example.com: import sd_52krayfw5crlm6jpxjxcgl46rq refused: the route is not an address route this import can take over (provisioned)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_k4zwkj2tlbsjpwcmxbjgnsixq4 refused: the route is not an address route this import can take over (kind static)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_lb6fki2ariuiqorfa5bfike6ue refused: the route is not an address route this import can take over (backing)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_thllcx7sqyjt4fhsqec2h3tw6q refused: the route is not an address route this import can take over (tunnel)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_mpnlvmyy7o3jrntfpupm3tnypy refused: the route is not an address route this import can take over (caps)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_7uj47v5rdacza4msstyf7u42py refused: the route is not an address route this import can take over (platform)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_sfviis3h426uphubh5ficktfzm refused: the route is not an address route this import can take over (canary)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_uuqej6qgyk6smxpbjqyijvhg4y refused: the route is not an address route this import can take over (kind sidecar)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_evf7fdd7ngm4dnld5j35t2fevu refused: the route is not an address route this import can take over (region)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_q3zrdaarwhdtqkexsreuhp6l3q refused: the route is not an address route this import can take over (fleet_box)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_4yqdfchr4s7kw7tpknwk4mktt4 refused: the route is not an address route this import can take over (hibernate)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_w4s5e5y3kqvidddeysml2bsi4e refused: the route is not an address route this import can take over (claim_owner)
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_xe3vgnlaw7dc2obfyrbapy2xvm refused: this box does not run instances nested
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_gjh6j65sfs47xn7i56zgbampei refused: this box does not run instances nested
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_gtak567lzopydpevzsujpui4xy refused: claim control is on for this box
2026/10/20 01:00:49 provision: a.shop.example.com: swapped for import sd_v2hqasczbbavkqydkt52km3jl4 (the original route is journaled)
2026/10/20 01:00:49 provision: a.shop.example.com: swapped for import sd_atpjceulci6vr6dpgcteepcomq (the original route is journaled)
2026/10/20 01:00:49 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/20 01:00:49 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/20 01:00:49 provision: a.shop.example.com: not swapping for import sd_r4poa5dhtq2riqabtgjbezohom: its verify hash is not a sha256
2026/10/20 01:00:49 provision: a.shop.example.com: not swapping for import sd_a7wllijmybr4yigqqdydsxj6ie: its verify hash is not a sha256
2026/10/20 01:00:49 provision: a.shop.example.com: not swapping for import sd_y3ec6b2ky2acymn2pnkohwzohi: its verify hash is not a sha256
2026/10/20 01:00:49 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/20 01:00:49 provision: A.shop.example.com/..: not swapping for import sd_u4cfikmyz3jl23umzkcvypumbq: its host or seed id is malformed (seeds: not a host)
2026/10/20 01:00:49 provision: a.shop.example.com: not swapping for import sd_htnig3jstkxesqwx6muehdyzfu: its record does not describe a nested, hibernating instance
2026/10/20 01:00:49 provision: a.shop.example.com: not swapping for import sd_mycwhmol3oo23u3kvqfhoqoz2e: its record does not describe a nested, hibernating instance
2026/10/20 01:00:49 provision: a.shop.example.com: not swapping for import sd_4pfqqs2dnfztzxae3tnd5vpab4: its record does not describe a nested, hibernating instance
2026/10/20 01:00:49 provision: a.shop.example.com: not swapping for import sd_qmqo5ibnwrncfi26bzttbsbl2e: its record does not describe a nested, hibernating instance
2026/10/20 01:00:49 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/20 01:00:49 provision: a.shop.example.com: swapped for import sd_mp3o65x7peoyglag57lif2guga (the original route is journaled)
2026/10/20 01:00:49 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/20 01:00:49 provision: a.shop.example.com: swapped for import sd_pigfixgfpo35ddpsvccw5lrxqu (the original route is journaled)
2026/10/20 01:00:49 provision: a.shop.example.com: swapped for import sd_ekgy2xvim6gtcrdrom3jd6e6a4 (the original route is journaled)
2026/10/20 01:00:49 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/20 01:00:49 provision: dry-run: would consider swapping a.shop.example.com for import sd_pak3amsrpogcgkhe47vsqkr5cm
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_aqndppiy6dfrfb3jenuwn3igoy rolled back to its original route
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_aqndppiy6dfrfb3jenuwn3igoy: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_aqndppiy6dfrfb3jenuwn3igoy is cleaned up and its journal row retired
2026/10/20 01:00:49 provision: a.shop.example.com: import sd_bev3cecrocdrans67ptng6k434 left alone: the import journal holds seed sd_xiwvfxknkp47ju73dsjwsewkme at swapped
2026/10/20 01:00:49 provision: a.shop.example.com: not minting import sd_7sotad6pinffpyemahod4egrtu: it is swapped but not committed, and only its swap makes its row
2026/10/20 01:00:49 provision: a.shop.example.com: not minting import sd_4zxqbjst2pneprausik7np74ei: it is placed but not committed, and only its swap makes its row
2026/10/20 01:00:49 provision: a.shop.example.com: swapped for import sd_7jxlradpaglctlvwge2fbj7w3m (the original route is journaled)
2026/10/20 01:00:49 provision: a.shop.example.com: not minting import sd_7jxlradpaglctlvwge2fbj7w3m: it is swapped but not committed, and only its swap makes its row
2026/10/20 01:00:49 provision: a.shop.example.com: not minting import sd_7jxlradpaglctlvwge2fbj7w3m: it is placed but not committed, and only its swap makes its row
2026/10/20 01:00:49 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 01:00:49 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/20 01:00:49 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/20 01:00:49 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/20 01:00:49 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/20 01:00:49 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/20 01:00:49 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/20 01:00:49 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/20 01:00:49 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/20 01:00:49 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/20 01:00:49 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/20 01:00:49 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/20 01:00:49 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/20 01:00:49 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/20 01:00:49 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/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/20 01:00:49 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/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 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/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 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/20 01:00:49 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 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/20 01:00:49 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/20 01:00:49 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/20 01:00:49 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 01:00:49 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/20 01:00:49 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/20 01:00:49 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/20 01:00:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:49 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/20 01:00:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:49 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 01:00:49 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 01:00:49 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/20 01:00:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 01:00:49 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 01:00:49 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/20 01:00:49 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
FAIL
FAIL github.com/carlosframework/platform/internal/provision 44.889s
ok github.com/carlosframework/platform/internal/publicrelease 0.008s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 6.163s
ok github.com/carlosframework/platform/internal/relay 7.295s
ok github.com/carlosframework/platform/internal/release 26.919s
ok github.com/carlosframework/platform/internal/rollout 4.320s
ok github.com/carlosframework/platform/internal/rolloutwords 0.004s
ok github.com/carlosframework/platform/internal/rootaws 0.008s
ok github.com/carlosframework/platform/internal/rootparticipation 0.059s
ok github.com/carlosframework/platform/internal/rootstate 0.034s
ok github.com/carlosframework/platform/internal/runs 0.566s
ok github.com/carlosframework/platform/internal/s3compat 0.008s
ok github.com/carlosframework/platform/internal/safefile 0.005s
ok github.com/carlosframework/platform/internal/schedule 2.905s
ok github.com/carlosframework/platform/internal/seeds 0.010s
ok github.com/carlosframework/platform/internal/sim/hostlife 17.715s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 4.321s
ok github.com/carlosframework/platform/internal/status 0.114s
ok github.com/carlosframework/platform/internal/steering 0.006s
ok github.com/carlosframework/platform/internal/stopevidence 0.338s
ok github.com/carlosframework/platform/internal/svcrole 0.002s
ok github.com/carlosframework/platform/internal/telemetry 0.004s
ok github.com/carlosframework/platform/internal/termfence 0.013s
ok github.com/carlosframework/platform/internal/tunnelclient 0.010s
ok github.com/carlosframework/platform/internal/unixdial 0.003s
ok github.com/carlosframework/platform/internal/updatewords 0.006s
ok github.com/carlosframework/platform/internal/usage 0.005s
ok github.com/carlosframework/platform/internal/version 0.002s
ok github.com/carlosframework/platform/internal/vet 1.793s
FAIL
make: *** [Makefile:18: 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/harness/RUNLOG.md b/harness/RUNLOG.md| index 2a441675a..212f8c99b 100644 |
| --- a/harness/RUNLOG.md |
| +++ b/harness/RUNLOG.md |
| @@ -213,3 +213,60 @@ openssl under internal/boxid/certs/eu-west-1.pem: Verified OK |
| ``` |
| **Step 4: GREEN** (2026-10-20T00:53:26Z). |
| + |
| +## Step 5: boxes from host-init, shims before boot, snapshot `base` |
| + |
| +Infrastructure scripts copied verbatim (`git show`) into `harness/infra-copies/`; commits, |
| +refs and sha256 in `harness/infra-copies/PROVENANCE.md`. Boxes use **as-merged main**: |
| +`dev/host-init.sh` @ `a0b3f5a` (sha256 `f95d48b3...`). `747f699` (host-root-owned-opt) is |
| +copied too, for step 9's `base-opt`; both are on the host under `/root/harness/`. |
| + |
| +`harness/boxes/boxes-up.sh` (on host, 00:55-00:58 UTC): each of leo .21, sophie .22, dennis .23 |
| +is `incus init`-ed stopped from JSON carrying `cloud-init.user-data` = host-init, and the |
| +digest incus holds is checked against the file (all three `f95d48b3...`). Before first boot: |
| +`/etc/systemd/system/systemd-zram-setup@.service` (no-op), `/usr/local/sbin/sysctl` (skips |
| +vm.*), fixed `/etc/machine-id` = md5("carlos-harness-<box>"). Started; cloud-init ran host-init. |
| +After: `systemctl mask --now amazon-ssm-agent` (+ `reset-failed`), and |
| +`/etc/carlos/harness-endpoint` (root:root 0644, `http://203.0.113.10:9000`). Signer .30: |
| +cloud-config `packages: [jq, awscli, curl, ca-certificates, openssl]`, same endpoint file, |
| +no host-init. Two fixes on the way, both in boxes-up.sh: incus parses instance JSON as YAML |
| +and refused `\ud83e` surrogate escapes (host-init's header has an emoji), so the JSON is raw |
| +UTF-8; and dennis's agent had crashed before the mask (no donor document, "failed to find |
| +agent identity") and stayed `failed`, so `reset-failed` follows the mask. |
| + |
| +Observed: on leo and sophie the SSM agent ran for about a second before the mask, took |
| +"identity from EC2" (the stand-in) and started registering against real SSM with MinIO keys |
| +(provisioning egress was open). AWS cannot accept those keys; egress is now closed. |
| + |
| +Check (`$TMPDIR/harness-build/check5.sh`, 00:58 UTC): |
| + |
| +``` |
| +== leo (sophie and dennis identical apart from machine-id) |
| +cloud-init: status: done errors: [] recoverable: [] |
| +motd: carlos host ready — awaiting bootstrap |
| +ssm agent: masked / inactive |
| +harness shim: sysctl skipped 2 vm.* line(s) from /etc/sysctl.d/90-carlos-zram.conf |
| +systemd-zram-setup@zram0: Result=success ActiveState=active FragmentPath=/etc/systemd/system/systemd-zram-setup@.service |
| +-- layout probe: |
| +/ root:root 755 |
| +/opt root:root 755 |
| +/opt/carlos carlos:carlos 755 <- defect 1's precondition, reproduced on purpose |
| +/opt/carlos/versions carlos:carlos 755 |
| +/opt/carlos/live carlos:carlos 755 |
| +/data carlos:carlos 711 |
| +/etc/carlos root:root 755 |
| +/run/carlos carlos:carlos 755 |
| +OpenProtected rule for /opt/carlos/*: REFUSE: /opt/carlos owned by carlos |
| +-- systemctl --failed: (empty) system state: running |
| +== signer: cloud-init done; jq, aws (aws-cli/2.23.6), openssl, curl present |
| +``` |
| + |
| +Snapshot `base` (`$TMPDIR/harness-build/snap-base.sh`): all five containers stopped, |
| +`incus snapshot create <c> base`, started. Then provisioning egress closed |
| +(`nft flush set inet harness egress_ports`, marker `/etc/harness/egress-closed`, which |
| +`harness-guard.service` honours on restart). After the restart every container is |
| +`running` with `systemctl --failed` empty; from leo, deb.debian.org:443 times out and |
| +MinIO 203.0.113.10:9000 connects. To reopen egress for re-provisioning (step 9's |
| +`base-opt`): `nft add element inet harness egress_ports '{ 80, 443 }'; rm /etc/harness/egress-closed`. |
| + |
| +**Step 5: GREEN** (2026-10-20T00:59:15Z). |
diff --git a/harness/boxes/boxes-up.sh b/harness/boxes/boxes-up.sh| new file mode 100644 |
| index 000000000..f931f7b47 |
| --- /dev/null |
| +++ b/harness/boxes/boxes-up.sh |
| @@ -0,0 +1,86 @@ |
| +#!/bin/bash |
| +# Step 5: boxes leo, sophie, dennis from the infrastructure repo's host-init, |
| +# byte for byte, plus the signer container. Run as root on the harness host. |
| +# |
| +# HOSTINIT=/root/harness/host-init.sh SHIMS=/root/harness/shims boxes-up.sh |
| +# |
| +# Order (spec §3.3, §3.4): `incus init` (stopped) with the user_data in the |
| +# instance config, push the shims (zram no-op unit, sysctl wrapper, fixed |
| +# machine-id), start, wait for cloud-init, then mask the SSM agent host-init |
| +# installed (B4) and write /etc/carlos/harness-endpoint (the harness build's |
| +# fallback, §3.7). |
| +set -euo pipefail |
| +HOSTINIT=${HOSTINIT:?path to host-init.sh} |
| +SHIMS=${SHIMS:?path to shims dir} |
| +BOXES=${BOXES:-leo sophie dennis} |
| +ENDPOINT=http://203.0.113.10:9000 |
| +declare -A IP=([leo]=203.0.113.21 [sophie]=203.0.113.22 [dennis]=203.0.113.23 [signer]=203.0.113.30) |
| + |
| +T=$(mktemp -d); trap 'rm -rf "$T"' EXIT |
| + |
| +machine_id() { printf 'carlos-harness-%s' "$1" | md5sum | cut -c1-32; } |
| + |
| +create() { # name user-data-file |
| + local name=$1 ud=$2 |
| + python3 - "$ud" "${IP[$name]}" > "$T/$name.json" <<'PY' |
| +import json, sys |
| +ud = open(sys.argv[1], "rb").read().decode() |
| +# Raw UTF-8, not \u escapes: incus parses this as YAML, which refuses |
| +# JSON's surrogate-pair escapes (host-init's header has an emoji). |
| +sys.stdout.buffer.write(json.dumps({"config": {"cloud-init.user-data": ud}, |
| + "devices": {"eth0": {"type": "nic", "network": "hbr0", "name": "eth0", |
| + "ipv4.address": sys.argv[2]}}}, ensure_ascii=False).encode() + b"\n") |
| +PY |
| + incus init images:debian/13/cloud "$name" -p box -q < "$T/$name.json" |
| + # The user_data incus holds is the file, byte for byte. |
| + local want got |
| + want=$(sha256sum < "$ud" | cut -d' ' -f1) |
| + got=$(incus query "/1.0/instances/$name" | python3 -c 'import json,sys,hashlib; print(hashlib.sha256(json.load(sys.stdin)["config"]["cloud-init.user-data"].encode()).hexdigest())') |
| + [ "$want" = "$got" ] || { echo "$name: user_data digest mismatch ($want vs $got)" >&2; exit 1; } |
| + echo "$name: user_data sha256 $got (= $(basename "$ud"))" |
| + machine_id "$name" > "$T/machine-id" |
| + incus file push "$T/machine-id" "$name/etc/machine-id" --mode 0444 -q |
| +} |
| + |
| +shim() { # name |
| + incus file push "$SHIMS/systemd-zram-setup@.service" "$1/etc/systemd/system/systemd-zram-setup@.service" --mode 0644 -q |
| + incus file push "$SHIMS/sysctl" "$1/usr/local/sbin/sysctl" --mode 0755 -q |
| +} |
| + |
| +for b in $BOXES; do |
| + incus info "$b" >/dev/null 2>&1 && { echo "$b exists; refusing"; exit 1; } |
| + create "$b" "$HOSTINIT" |
| + shim "$b" |
| +done |
| + |
| +# The signer: not a box (no host-init); a trusted signing host stand-in with |
| +# jq and the aws CLI. Its key and the carlos binary come later (step 7+). |
| +if ! incus info signer >/dev/null 2>&1; then |
| + printf '#cloud-config\npackages: [jq, awscli, curl, ca-certificates, openssl]\n' > "$T/signer-ud" |
| + create signer "$T/signer-ud" |
| +fi |
| + |
| +for b in $BOXES signer; do incus start "$b"; done |
| +for b in $BOXES signer; do |
| + for i in $(seq 1 60); do incus exec "$b" -- true 2>/dev/null && break; sleep 2; done |
| +done |
| +for b in $BOXES signer; do |
| + echo "== $b: cloud-init" |
| + incus exec "$b" -- cloud-init status --wait --long | sed -n '1,4p' || true |
| +done |
| + |
| +for b in $BOXES; do |
| + incus exec "$b" -- systemctl mask --now amazon-ssm-agent.service |
| + # An agent that had already crashed (a box with no donor document has no |
| + # identity) stays "failed" under the mask; the failure is the harness's, not |
| + # a platform unit's, so clear it before `systemctl --failed` is evidence. |
| + incus exec "$b" -- systemctl reset-failed amazon-ssm-agent.service 2>/dev/null || true |
| +done |
| +printf '%s\n' "$ENDPOINT" > "$T/endpoint" |
| +for b in $BOXES signer; do |
| + # Only the signer lacks /etc/carlos; on a box host-init made it, and its |
| + # mode and owner are evidence, so they are not touched. |
| + incus exec "$b" -- sh -c '[ -d /etc/carlos ] || install -d -m 0755 /etc/carlos' |
| + incus file push "$T/endpoint" "$b/etc/carlos/harness-endpoint" --uid 0 --gid 0 --mode 0644 -q |
| +done |
| +echo "boxes-up: done" |
diff --git a/harness/boxes/layout-probe.sh b/harness/boxes/layout-probe.sh| new file mode 100755 |
| index 000000000..26e9f95aa |
| --- /dev/null |
| +++ b/harness/boxes/layout-probe.sh |
| @@ -0,0 +1,15 @@ |
| +#!/bin/sh |
| +# Read-only layout probe (spec §8.1 P1a): owners and modes of /opt/carlos, its |
| +# parents and the carlos tree, against hostfloor.OpenProtected's rule |
| +# (internal/hostfloor/image_linux.go): every parent of a protected path must be |
| +# root-owned and not group- or world-writable. |
| +for p in / /opt /opt/carlos /opt/carlos/versions /opt/carlos/live /data /etc /etc/carlos /etc/carlos/host.env /run/carlos; do |
| + [ -e "$p" ] && stat -c '%n %U:%G %a' "$p" || echo "$p (absent)" |
| +done |
| +v="ok" |
| +for p in / /opt /opt/carlos; do |
| + o=$(stat -c %u "$p"); m=$(stat -c %a "$p") |
| + if [ "$o" != 0 ]; then v="REFUSE: $p owned by $(stat -c %U "$p")"; break; fi |
| + case "$m" in *[2367]?|*?[2367]) v="REFUSE: $p mode $m"; break;; esac |
| +done |
| +echo "OpenProtected rule for /opt/carlos/*: $v" |
diff --git a/harness/boxes/shims/sysctl b/harness/boxes/shims/sysctl| new file mode 100755 |
| index 000000000..ecdb6c788 |
| --- /dev/null |
| +++ b/harness/boxes/shims/sysctl |
| @@ -0,0 +1,38 @@ |
| +#!/bin/sh |
| +# harness shim H4 (spec §3.4), /usr/local/sbin/sysctl: a container's /proc/sys |
| +# is read-only outside net.*, so host-init's `sysctl -q -p <file>` of vm.* |
| +# settings would stop it under `set -e`. vm.* lines in -p files and vm.* |
| +# arguments are skipped and reported on stderr; everything else goes to the |
| +# real sysctl unchanged. Hides: vm.swappiness and vm.page-cluster. |
| +real=/usr/sbin/sysctl |
| +flags="" |
| +files="" |
| +keys="" |
| +want_p=0 |
| +for a in "$@"; do |
| + if [ "$want_p" = 1 ]; then files="$files $a"; want_p=0; continue; fi |
| + case "$a" in |
| + -p|--load) want_p=1 ;; |
| + -p*) files="$files ${a#-p}" ;; |
| + --load=*) files="$files ${a#--load=}" ;; |
| + -*) flags="$flags $a" ;; |
| + vm.*) echo "harness shim: sysctl skipped $a" >&2 ;; |
| + *) keys="$keys $a" ;; |
| + esac |
| +done |
| +rc=0 |
| +for f in $files; do |
| + n=$(grep -c -E '^[[:space:]]*vm\.' "$f" || true) |
| + echo "harness shim: sysctl skipped $n vm.* line(s) from $f" >&2 |
| + tmp=$(mktemp) |
| + grep -v -E '^[[:space:]]*vm\.' "$f" > "$tmp" || true |
| + if grep -q -E '^[[:space:]]*[A-Za-z]' "$tmp"; then |
| + $real $flags -p "$tmp" || rc=$? |
| + fi |
| + rm -f "$tmp" |
| +done |
| +if [ -n "$keys" ] || { [ -z "$files" ] && [ -n "$flags" ]; }; then |
| + # shellcheck disable=SC2086 |
| + $real $flags $keys || rc=$? |
| +fi |
| +exit $rc |
diff --git a/harness/boxes/shims/systemd-zram-setup@.service b/harness/boxes/shims/systemd-zram-setup@.service| new file mode 100644 |
| index 000000000..134445fb2 |
| --- /dev/null |
| +++ b/harness/boxes/shims/systemd-zram-setup@.service |
| @@ -0,0 +1,11 @@ |
| +# harness shim H4 (spec §3.4): a container cannot create zram devices. |
| +# Overrides the systemd-zram-generator package's template, so host-init's |
| +# `systemctl start systemd-zram-setup@zram0.service` succeeds as a no-op |
| +# instead of stopping the script under `set -e`. Hides: zram swap. |
| +[Unit] |
| +Description=harness shim: no zram in a container (%i) |
| + |
| +[Service] |
| +Type=oneshot |
| +RemainAfterExit=yes |
| +ExecStart=/bin/echo "harness shim: zram %i skipped" |
diff --git a/harness/infra-copies/747f699/dev/host-init.sh b/harness/infra-copies/747f699/dev/host-init.sh| new file mode 100755 |
| index 000000000..dc6c28d02 |
| --- /dev/null |
| +++ b/harness/infra-copies/747f699/dev/host-init.sh |
| @@ -0,0 +1,53 @@ |
| +#!/bin/bash |
| +# 🤖 First-boot init for a carlos flagship host (Debian arm64). Deliberately |
| +# minimal: the carlos binary arrives via bootstrap after the box is up — |
| +# this script only prepares the ground the binary expects. |
| +set -euo pipefail |
| + |
| +# The service user and the three directories every carlos host has. |
| +useradd --system --home /opt/carlos --shell /usr/sbin/nologin carlos || true |
| +mkdir -p /data /etc/carlos |
| +# /opt/carlos is root's: only root passes write it, and the host floor |
| +# (hostfloor.OpenProtected) refuses any parent the service user owns. |
| +install -d -o root -g root -m 0755 /opt/carlos /opt/carlos/versions /opt/carlos/live |
| +chown -R carlos:carlos /data |
| +# 711: tenant service users (kass, ...) need traversal into their own |
| +# /data/<app> subdirs; contents stay private per-owner. |
| +chmod 0711 /data |
| + |
| +# /run/carlos is tmpfs-backed; recreate on every boot. |
| +cat >/etc/tmpfiles.d/carlos.conf <<'EOF' |
| +d /run/carlos 0755 carlos carlos - |
| +EOF |
| +systemd-tmpfiles --create /etc/tmpfiles.d/carlos.conf |
| + |
| +# Keep the OS patched; everything else ships through carlos channels. |
| +export DEBIAN_FRONTEND=noninteractive |
| +apt-get update -q |
| +apt-get install -qy unattended-upgrades curl awscli |
| +systemctl enable --now unattended-upgrades |
| + |
| +# Admin access is SSM Session Manager only — no SSH ingress exists. |
| +curl -fsSL -o /tmp/amazon-ssm-agent.deb \ |
| + "https://s3.eu-west-1.amazonaws.com/amazon-ssm-eu-west-1/latest/debian_arm64/amazon-ssm-agent.deb" |
| +dpkg -i /tmp/amazon-ssm-agent.deb |
| +systemctl enable --now amazon-ssm-agent |
| + |
| +# zram swap (memory-pressure spec §2.1) — the same three files |
| +# scripts/harden-box.sh writes on a live box; keep them identical. |
| +apt-get install -qy systemd-zram-generator |
| +cat >/etc/systemd/zram-generator.conf <<'EOF' |
| +[zram0] |
| +zram-size = ram / 2 |
| +compression-algorithm = zstd |
| +swap-priority = 100 |
| +EOF |
| +cat >/etc/sysctl.d/90-carlos-zram.conf <<'EOF' |
| +vm.swappiness = 180 |
| +vm.page-cluster = 0 |
| +EOF |
| +systemctl daemon-reload |
| +systemctl start systemd-zram-setup@zram0.service |
| +sysctl -q -p /etc/sysctl.d/90-carlos-zram.conf |
| + |
| +echo "carlos host ready — awaiting bootstrap" >/etc/motd |
diff --git a/harness/infra-copies/PROVENANCE.md b/harness/infra-copies/PROVENANCE.md| new file mode 100644 |
| index 000000000..30db28a9f |
| --- /dev/null |
| +++ b/harness/infra-copies/PROVENANCE.md |
| @@ -0,0 +1,13 @@ |
| +# Verbatim copies from carlosframework/platform-infrastructure |
| + |
| +Copied read-only with `git show <commit>:<path>` from the local clone at |
| +`/home/paulca/amadan.net/carlos/platform-infrastructure` on 2026-10-20. The files are |
| +byte-for-byte; nothing is edited, so cloud-init and the SSM stand-in run exactly what |
| +the infrastructure repo holds. |
| + |
| +| File here | Repo path | Commit | Ref | sha256 | |
| +|---|---|---|---|---| |
| +| `a0b3f5a/dev/host-init.sh` | `dev/host-init.sh` | `a0b3f5a5f2221429e8fb18e69eba504704be25b7` | origin/main | `f95d48b3c9946c19...` | |
| +| `a0b3f5a/scripts/bootstrap-box.sh` | `scripts/bootstrap-box.sh` | `a0b3f5a5f2221429e8fb18e69eba504704be25b7` | origin/main | `46aa1642a24dde15...` | |
| +| `a0b3f5a/scripts/update-platform-binary.sh` | `scripts/update-platform-binary.sh` | `a0b3f5a5f2221429e8fb18e69eba504704be25b7` | origin/main | `61bf3ef8f4e6f878...` | |
| +| `747f699/dev/host-init.sh` | `dev/host-init.sh` | `747f699d8e48e14fd012a4ccd2f7ea830701dcee` | origin/host-root-owned-opt | `9ef0c3dbe9506571...` | |
diff --git a/harness/infra-copies/a0b3f5a/dev/host-init.sh b/harness/infra-copies/a0b3f5a/dev/host-init.sh| new file mode 100755 |
| index 000000000..498bc67b3 |
| --- /dev/null |
| +++ b/harness/infra-copies/a0b3f5a/dev/host-init.sh |
| @@ -0,0 +1,50 @@ |
| +#!/bin/bash |
| +# 🤖 First-boot init for a carlos flagship host (Debian arm64). Deliberately |
| +# minimal: the carlos binary arrives via bootstrap after the box is up — |
| +# this script only prepares the ground the binary expects. |
| +set -euo pipefail |
| + |
| +# The service user and the three directories every carlos host has. |
| +useradd --system --home /opt/carlos --shell /usr/sbin/nologin carlos || true |
| +mkdir -p /data /opt/carlos/versions /opt/carlos/live /etc/carlos |
| +chown -R carlos:carlos /data /opt/carlos |
| +# 711: tenant service users (kass, ...) need traversal into their own |
| +# /data/<app> subdirs; contents stay private per-owner. |
| +chmod 0711 /data |
| + |
| +# /run/carlos is tmpfs-backed; recreate on every boot. |
| +cat >/etc/tmpfiles.d/carlos.conf <<'EOF' |
| +d /run/carlos 0755 carlos carlos - |
| +EOF |
| +systemd-tmpfiles --create /etc/tmpfiles.d/carlos.conf |
| + |
| +# Keep the OS patched; everything else ships through carlos channels. |
| +export DEBIAN_FRONTEND=noninteractive |
| +apt-get update -q |
| +apt-get install -qy unattended-upgrades curl awscli |
| +systemctl enable --now unattended-upgrades |
| + |
| +# Admin access is SSM Session Manager only — no SSH ingress exists. |
| +curl -fsSL -o /tmp/amazon-ssm-agent.deb \ |
| + "https://s3.eu-west-1.amazonaws.com/amazon-ssm-eu-west-1/latest/debian_arm64/amazon-ssm-agent.deb" |
| +dpkg -i /tmp/amazon-ssm-agent.deb |
| +systemctl enable --now amazon-ssm-agent |
| + |
| +# zram swap (memory-pressure spec §2.1) — the same three files |
| +# scripts/harden-box.sh writes on a live box; keep them identical. |
| +apt-get install -qy systemd-zram-generator |
| +cat >/etc/systemd/zram-generator.conf <<'EOF' |
| +[zram0] |
| +zram-size = ram / 2 |
| +compression-algorithm = zstd |
| +swap-priority = 100 |
| +EOF |
| +cat >/etc/sysctl.d/90-carlos-zram.conf <<'EOF' |
| +vm.swappiness = 180 |
| +vm.page-cluster = 0 |
| +EOF |
| +systemctl daemon-reload |
| +systemctl start systemd-zram-setup@zram0.service |
| +sysctl -q -p /etc/sysctl.d/90-carlos-zram.conf |
| + |
| +echo "carlos host ready — awaiting bootstrap" >/etc/motd |
diff --git a/harness/infra-copies/a0b3f5a/scripts/bootstrap-box.sh b/harness/infra-copies/a0b3f5a/scripts/bootstrap-box.sh| new file mode 100755 |
| index 000000000..b3fc151d7 |
| --- /dev/null |
| +++ b/harness/infra-copies/a0b3f5a/scripts/bootstrap-box.sh |
| @@ -0,0 +1,80 @@ |
| +#!/bin/bash |
| +# 🤖 Bootstrap a carlos host over SSM: install the binary from the |
| +# deployment bucket, run `carlos bootstrap`, write host.env, start the |
| +# edge. Idempotent — safe to re-run. |
| +# Usage: bootstrap-box.sh <aws-profile> <instance-id> <deployment-bucket> \ |
| +# <data-bucket> <pubkey-file> [aws-region] [carlos-region] [status-box-region] |
| +# |
| +# aws-region (default eu-west-1) is the box's own region — it sets |
| +# CARLOS_HIBERNATE_REGION (which data bucket region the box wakes from). |
| +# AWS_REGION is pinned to the DEPLOYMENT bucket's region (eu-west-1): the |
| +# Go SDK does not follow S3 cross-region redirects, so a region box whose |
| +# AWS_REGION named its own region got PermanentRedirect 301 on every |
| +# deployment-bucket call (status, metrics, adoption, provision — learned |
| +# 2026-08-11 standing up us/uk/au). The hibernate store has its own region |
| +# var precisely so these can differ. |
| +# |
| +# carlos-region is CARLOS_REGION, the placement scope this box serves |
| +# ("us"|"uk"|"au"; unset = serves ""-scoped records only). status-box-region |
| +# is STATUS_BOX_REGION, the free-text region word the status page and the |
| +# console's shared-fleet chips display ("US · N. Virginia"). Both may come |
| +# from the environment instead of the argument, and both are OMITTED from |
| +# host.env when empty — an unset region is a legal state on this box, not a |
| +# blank one. |
| +set -euo pipefail |
| +profile=$1; instance=$2; depbucket=$3; databucket=$4; pubfile=$5 |
| +region=${6:-eu-west-1} |
| +carlosregion=${7:-${CARLOS_REGION:-}} |
| +boxregion=${8:-${STATUS_BOX_REGION:-}} |
| +pub=$(cat "$pubfile") |
| + |
| +# Appended inside the host.env heredoc below; empty keeps the file exactly as |
| +# it was before regions existed. |
| +extra="" |
| +if [ -n "$carlosregion" ]; then |
| + extra="$extra |
| +CARLOS_REGION=$carlosregion" |
| +fi |
| +if [ -n "$boxregion" ]; then |
| + extra="$extra |
| +STATUS_BOX_REGION=\"$boxregion\"" |
| +fi |
| +d=$(mktemp -d) |
| + |
| +cat > "$d/bootstrap.sh" <<EOF |
| +set -e |
| +aws s3 cp s3://$depbucket/bootstrap/carlos /opt/carlos/carlos.new --no-progress |
| +install -m755 -o carlos -g carlos /opt/carlos/carlos.new /opt/carlos/carlos && rm /opt/carlos/carlos.new |
| +/opt/carlos/carlos bootstrap |
| +cat > /etc/carlos/host.env <<ENV |
| +CARLOS_DATA_DIR=/data |
| +CARLOS_DEPLOYMENT_BUCKET=$depbucket |
| +CARLOS_RELEASE_PUBKEY=$pub |
| +CARLOS_HIBERNATE_BUCKET=$databucket |
| +CARLOS_HIBERNATE_REGION=$region |
| +CARLOS_HIBERNATE_PREFIX=instances |
| +AWS_REGION=eu-west-1$extra |
| +ENV |
| +chmod 600 /etc/carlos/host.env |
| +chown carlos:carlos /etc/carlos/host.env |
| +systemctl start carlos-edge |
| +sleep 3 |
| +systemctl is-active carlos-edge |
| +/opt/carlos/carlos version |
| +EOF |
| + |
| +jq -n --rawfile s "$d/bootstrap.sh" '{commands: ($s | split("\n"))}' > "$d/params.json" |
| +cmdid=$(aws --profile "$profile" ssm send-command --instance-ids "$instance" \ |
| + --document-name AWS-RunShellScript --parameters "file://$d/params.json" \ |
| + --query Command.CommandId --output text) |
| +echo "command $cmdid sent; polling..." |
| +for i in $(seq 1 30); do |
| + sleep 5 |
| + status=$(aws --profile "$profile" ssm get-command-invocation --command-id "$cmdid" \ |
| + --instance-id "$instance" --query Status --output text 2>/dev/null || echo Pending) |
| + [ "$status" = "Success" ] || [ "$status" = "Failed" ] && break |
| +done |
| +echo "status: $status" |
| +aws --profile "$profile" ssm get-command-invocation --command-id "$cmdid" \ |
| + --instance-id "$instance" --query StandardOutputContent --output text | tail -8 |
| +[ "$status" = "Success" ] |
diff --git a/harness/infra-copies/a0b3f5a/scripts/update-platform-binary.sh b/harness/infra-copies/a0b3f5a/scripts/update-platform-binary.sh| new file mode 100755 |
| index 000000000..d2018326d |
| --- /dev/null |
| +++ b/harness/infra-copies/a0b3f5a/scripts/update-platform-binary.sh |
| @@ -0,0 +1,98 @@ |
| +#!/bin/bash |
| +# 🤖 Roll a new carlos platform binary onto a live box over SSM, WITHOUT |
| +# re-running full `carlos bootstrap` on the box: bootstrap re-chowns and |
| +# re-modes /data (0750 carlos:carlos), which would break static-user |
| +# tenants' data access (titogo's family on the Tito box; /data is |
| +# deliberately 0711 there). Instead: install the binary, stage the |
| +# embedded units into a temp root, copy them into place, tmpfiles + |
| +# daemon-reload, restart the edge. |
| +# Usage: update-platform-binary.sh <aws-profile> <instance-id> <deployment-bucket> <sha256> |
| +set -euo pipefail |
| +profile=$1; instance=$2; depbucket=$3; sha=$4 |
| +d=$(mktemp -d) |
| + |
| +cat > "$d/update.sh" <<EOF |
| +set -e |
| +aws s3 cp s3://$depbucket/bootstrap/carlos /opt/carlos/carlos.new --no-progress |
| +echo "$sha /opt/carlos/carlos.new" | sha256sum -c - |
| +install -m755 -o carlos -g carlos /opt/carlos/carlos.new /opt/carlos/carlos |
| +rm /opt/carlos/carlos.new |
| +rm -rf /tmp/carlos-unitstage |
| +/opt/carlos/carlos bootstrap -root /tmp/carlos-unitstage >/dev/null |
| +cp /tmp/carlos-unitstage/etc/systemd/system/* /etc/systemd/system/ |
| +# The sysusers conf must land AND run BEFORE the tmpfiles conf is applied: |
| +# since platform #104 the tmpfiles /run/carlos line names the carlos-sockets |
| +# group, and systemd-tmpfiles silently DROPS a line whose group does not |
| +# resolve -- the dir then isn't created at the next boot and carlos-edge |
| +# (ReadWritePaths=/run/carlos, no "-" prefix) can never start. Guarded so |
| +# the script still works when rolling BACK to a pre-#104 binary whose |
| +# staging root has no sysusers.d. |
| +if [ -f /tmp/carlos-unitstage/etc/sysusers.d/carlos.conf ]; then |
| + mkdir -p /etc/sysusers.d |
| + cp /tmp/carlos-unitstage/etc/sysusers.d/carlos.conf /etc/sysusers.d/carlos.conf |
| + systemd-sysusers /etc/sysusers.d/carlos.conf |
| +fi |
| +cp /tmp/carlos-unitstage/etc/tmpfiles.d/carlos.conf /etc/tmpfiles.d/carlos.conf |
| +mkdir -p /etc/carlos/apps /run/carlos/apps |
| +chown carlos:carlos /run/carlos/apps |
| +systemd-tmpfiles --create /etc/tmpfiles.d/carlos.conf >/dev/null 2>&1 || true |
| +systemctl daemon-reload |
| +# Arm the adoption timer AND the path units, don't just refresh their unit |
| +# files. A past bootstrap already ran "systemctl enable", but enable ONLY |
| +# writes the .wants symlink -- the unit stays inactive until something starts |
| +# it or the box reboots. That is exactly how carlos-adopt.timer sat |
| +# enabled-but-never-active on the flagship: no NEXT, no LAST, no release ever |
| +# adopted on its own, every deploy silently needing a hand-run adoption pass. |
| +# The same trap applies to the relays: carlos-adopt.path (config fast |
| +# convergence) and carlos-stage.path (release stage relay -- without it the |
| +# sandboxed agent's 2s converge loop can SEE every promote and stage none of |
| +# them, platform PR #108/#98). --now is idempotent, so on an already-armed box |
| +# these are no-ops. carlos-restore-verify.timer is deliberately left inert |
| +# until an operator configures litestream on that box. |
| +systemctl enable --now carlos-adopt.timer |
| +systemctl enable --now carlos-adopt.path |
| +systemctl enable --now carlos-stage.path |
| +# carlos-restart.path relays `carlos restart` requests (platform #113) to a |
| +# root pass; unarmed, a member's restart lands but waits for the hourly |
| +# timer instead of seconds. Guarded so this script still runs against a |
| +# binary that predates the unit. |
| +if [ -f /etc/systemd/system/carlos-restart.path ]; then |
| + systemctl enable --now carlos-restart.path |
| +fi |
| +# carlos-system-update.path relays the agent's platform self-update request |
| +# to a root apply, and carlos-system-recover.service recovers an interrupted |
| +# apply at boot (platform spec 2026-09-06-carlos-system-update §7). Both |
| +# must be armed by this, the last hand roll; the hourly adopt pass arms |
| +# them too if this is forgotten. Guarded for a binary that predates them. |
| +if [ -f /etc/systemd/system/carlos-system-update.path ]; then |
| + systemctl enable --now carlos-system-update.path |
| + systemctl enable carlos-system-recover.service |
| +fi |
| +systemctl restart carlos-edge |
| +sleep 3 |
| +systemctl is-active carlos-edge |
| +# Post-condition, not decoration: under set -e an inactive timer fails the run |
| +# rather than letting a box go back into service unable to adopt. |
| +systemctl is-active carlos-adopt.timer |
| +if [ -f /etc/systemd/system/carlos-system-update.path ]; then |
| + systemctl is-active carlos-system-update.path |
| + systemctl is-enabled carlos-system-recover.service |
| +fi |
| +/opt/carlos/carlos version |
| +rm -rf /tmp/carlos-unitstage |
| +EOF |
| + |
| +jq -n --rawfile s "$d/update.sh" '{commands: ($s | split("\n"))}' > "$d/params.json" |
| +cmdid=$(aws --profile "$profile" ssm send-command --instance-ids "$instance" \ |
| + --document-name AWS-RunShellScript --parameters "file://$d/params.json" \ |
| + --query Command.CommandId --output text) |
| +for i in $(seq 1 36); do sleep 5 |
| + s=$(aws --profile "$profile" ssm get-command-invocation --command-id "$cmdid" \ |
| + --instance-id "$instance" --query Status --output text 2>/dev/null || echo Pending) |
| + [ "$s" = Success ] || [ "$s" = Failed ] && break |
| +done |
| +echo "status: $s" |
| +aws --profile "$profile" ssm get-command-invocation --command-id "$cmdid" \ |
| + --instance-id "$instance" --query '[StandardOutputContent,StandardErrorContent]' \ |
| + --output text | tail -8 |
| +[ "$s" = Success ] |