harness: Run 9 setup (pre-0285), the v0.28.5 build (stamped v0.28.6), the signing session
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7 files changed,
+305
−0
harness/RESOURCES.md+1 −0harness/RUNLOG.md+63 −0harness/scenarios/cohort1/blocks/r9-console.host.sh+51 −0harness/scenarios/cohort1/blocks/r9-move-setup.host.sh+70 −0harness/scenarios/cohort1/blocks/r9-rearm.host.sh+35 −0harness/scenarios/cohort1/blocks/r9-release.host.sh+21 −0harness/scenarios/cohort1/blocks/r9-setup.host.sh+64 −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 328.167s
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 3.037s
ok github.com/carlosframework/platform/cmd/moveprobe 92.231s
ok github.com/carlosframework/platform/cmd/zddprobe 0.714s
? github.com/carlosframework/platform/harness/apps/wakecheck [no test files]
ok github.com/carlosframework/platform/internal/activator 252.485s
ok github.com/carlosframework/platform/internal/agentsock 0.017s
ok github.com/carlosframework/platform/internal/alerting 0.004s
ok github.com/carlosframework/platform/internal/analytics 0.019s
ok github.com/carlosframework/platform/internal/appconfig 2.565s
ok github.com/carlosframework/platform/internal/apperr 0.079s
ok github.com/carlosframework/platform/internal/applog 0.131s
ok github.com/carlosframework/platform/internal/awsinv 0.004s
ok github.com/carlosframework/platform/internal/boxchoice 0.006s
ok github.com/carlosframework/platform/internal/boxid 0.633s
? github.com/carlosframework/platform/internal/boxid/boxidtest [no test files]
? github.com/carlosframework/platform/internal/boxid/internal/signtest [no test files]
ok github.com/carlosframework/platform/internal/boxvolumes 0.010s
ok github.com/carlosframework/platform/internal/caps 0.013s
ok github.com/carlosframework/platform/internal/certwarm 0.003s
ok github.com/carlosframework/platform/internal/cgroup 0.705s
ok github.com/carlosframework/platform/internal/changelog 0.335s
ok github.com/carlosframework/platform/internal/claimactivation 0.828s
ok github.com/carlosframework/platform/internal/clamd 0.055s
? github.com/carlosframework/platform/internal/cliflag [no test files]
ok github.com/carlosframework/platform/internal/console 408.840s
? 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.863s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.009s
ok github.com/carlosframework/platform/internal/dbverify 0.005s
ok github.com/carlosframework/platform/internal/dnsrec 0.003s
ok github.com/carlosframework/platform/internal/docsite 0.005s
ok github.com/carlosframework/platform/internal/domains 2.462s
ok github.com/carlosframework/platform/internal/doorkey 0.006s
ok github.com/carlosframework/platform/internal/economics 0.004s
ok github.com/carlosframework/platform/internal/edge 44.979s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.008s
ok github.com/carlosframework/platform/internal/fleetapi 0.137s
ok github.com/carlosframework/platform/internal/gate 1.657s
ok github.com/carlosframework/platform/internal/genselect 0.017s
ok github.com/carlosframework/platform/internal/geo 0.012s
ok github.com/carlosframework/platform/internal/geoip 0.033s
ok github.com/carlosframework/platform/internal/historyreadback 0.160s
ok github.com/carlosframework/platform/internal/host 182.788s
ok github.com/carlosframework/platform/internal/hostactors 5.931s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.014s
ok github.com/carlosframework/platform/internal/hostbox 2.761s
ok github.com/carlosframework/platform/internal/hostclaim 0.575s
ok github.com/carlosframework/platform/internal/hostenv 0.014s
ok github.com/carlosframework/platform/internal/hostevidence 0.014s
ok github.com/carlosframework/platform/internal/hostexec 4.928s
ok github.com/carlosframework/platform/internal/hostfence 0.032s
ok github.com/carlosframework/platform/internal/hostfiles 10.396s
ok github.com/carlosframework/platform/internal/hostfloor 0.015s
ok github.com/carlosframework/platform/internal/hostguard 0.993s
ok github.com/carlosframework/platform/internal/hostops 1.698s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.014s
ok github.com/carlosframework/platform/internal/hostquarantine 0.014s
ok github.com/carlosframework/platform/internal/hostrelocate 0.476s
ok github.com/carlosframework/platform/internal/hostresolve 0.136s
ok github.com/carlosframework/platform/internal/hostwrite 0.014s
ok github.com/carlosframework/platform/internal/infraview 0.014s
ok github.com/carlosframework/platform/internal/instancectl 5.228s
ok github.com/carlosframework/platform/internal/instanceexec 2.759s
ok github.com/carlosframework/platform/internal/instancefs 0.005s
ok github.com/carlosframework/platform/internal/instancekey 0.004s
ok github.com/carlosframework/platform/internal/instanceupdates 0.009s
ok github.com/carlosframework/platform/internal/layout 1.586s
ok github.com/carlosframework/platform/internal/lbhealth 0.004s
ok github.com/carlosframework/platform/internal/lease 9.814s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.005s
ok github.com/carlosframework/platform/internal/ledger 0.014s
ok github.com/carlosframework/platform/internal/mail 0.169s
ok github.com/carlosframework/platform/internal/maintenance 0.084s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.552s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.069s
ok github.com/carlosframework/platform/internal/metrics 0.007s
ok github.com/carlosframework/platform/internal/moves 21.075s
ok github.com/carlosframework/platform/internal/moves/archive 0.810s
ok github.com/carlosframework/platform/internal/objstore 0.188s
ok github.com/carlosframework/platform/internal/ops 0.172s
ok github.com/carlosframework/platform/internal/park 0.215s
ok github.com/carlosframework/platform/internal/privatefile 0.005s
2026/10/20 16:14:36 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/20 16:14:36 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 16:14:36 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 16:14:36 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/20 16:14:36 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 16:14:36 provision: an app's records could not be listed: they are skipped
2026/10/20 16:14:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:36 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/20 16:14:36 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/20 16:14:36 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/20 16:14:36 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/20 16:14:36 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 16:14:36 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/20 16:14:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 16:14:36 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/20 16:14:36 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 16:14:36 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/20 16:14:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 16:14:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 16:14:36 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 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/20 16:14:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 16:14:36 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 16:14:36 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/20 16:14:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 16:14:36 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/20 16:14:36 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 16:14:36 provision: bot.eleven.bac.sidecar.internal exists but is not a sidecar row this pass owns (kind "sidecar" provisioned false app "eleven" acct "bac") — leaving it alone
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:36 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:36 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:36 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 16:14:36 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:36 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:36 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:36 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/20 16:14:36 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/20 16:14:36 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/20 16:14:37 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/20 16:14:37 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 16:14:37 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:37 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan14RootReadCensus (4.94s)
plan14_root_reads_test.go:940: root read census: 129 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/apps/wakecheck
changed root source envelope harness/boxes
changed root source envelope harness/boxes/shims
changed root source envelope harness/checks
changed root source envelope harness/console
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 harness/infra-copies/pr47
changed root source envelope harness/operator
changed root source envelope harness/release
changed root source envelope harness/scenarios
changed root source envelope harness/scenarios/cohort1
changed root source envelope harness/scenarios/cohort1/blocks
changed root source envelope harness/stand-ins
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/apps/wakecheck/main.go:main file:Exec@333,file:Exec@804,file:Open@277,file:QueryRow@870
unclassified root read harness/boxes/boxes-up.sh:external file:external@0
unclassified root read harness/boxes/dmi-shim.sh:external file:external@0
unclassified root read harness/boxes/layout-probe.sh:external file:external@0
unclassified root read harness/boxes/leo-ext4-from.sh:external file:external@0
unclassified root read harness/boxes/leo-ext4.sh:external file:external@0
unclassified root read harness/boxes/leo-swap.sh:external file:external@0
unclassified root read harness/boxes/shims/systemd-zram-setup@.service:external file:external@0
unclassified root read harness/boxes/vendor-shims.sh:external file:external@0
unclassified root read harness/checks/check2.sh:external file:external@0
unclassified root read harness/checks/check5.sh:external file:external@0
unclassified root read harness/checks/check6.sh:external file:external@0
unclassified root read harness/checks/check6b.sh:external file:external@0
unclassified root read harness/checks/check7.sh:external file:external@0
unclassified root read harness/checks/check8.sh:external file:external@0
unclassified root read harness/checks/fix5.sh:external file:external@0
unclassified root read harness/checks/run6b.sh:external file:external@0
unclassified root read harness/checks/snap-base.sh:external file:external@0
unclassified root read harness/checks/snap-boot.sh:external file:external@0
unclassified root read harness/checks/ssmsmoke.sh:external file:external@0
unclassified root read harness/console/console-ext4.sh:external file:external@0
unclassified root read harness/console/console-setup.sh:external file:external@0
unclassified root read harness/console/signin.sh:external file:external@0
unclassified root read harness/console/system-update.sh:external file:external@0
unclassified root read harness/donor-user-data.sh:external file:external@0
unclassified root read harness/evidence.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/hrun.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/ship-app.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-copies/pr47/probe.sh:external file:external@0
unclassified root read harness/infra-copies/pr47/remediation.sh:external file:external@0
unclassified root read harness/infra/infra-setup.sh:external file:external@0
unclassified root read harness/operator/operator-setup.sh:external file:external@0
unclassified root read harness/release/release-setup.sh:external file:external@0
unclassified root read harness/release/release-window.sh:external file:external@0
unclassified root read harness/release/step7-operator.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/50-publish-record.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/51-open-signer.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/51-roster-resume.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/51-roster.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/61-sign.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/61a-install-channel.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/62-guard-arm.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/63-run.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/63-sophie.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/7-console-report.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/7-evidence-key.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/7-run.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/7-runtime.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/74-run.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/7a-leo.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/7a-run.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/acceptance.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b1.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b2-c8.leo.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b2-list.leo.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b2.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b4-after.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b4-pair.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b4-resume.sophie.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b4.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/b5.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/g4-roll.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/g5.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/g9-check.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/p9.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/place-parent.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/pw-seed.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/r9-console.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/r9-move-setup.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/r9-rearm.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/r9-release.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/r9-setup.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/rearm-roll.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/rearm-strict.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/rearm-strict.leo.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/rearm-strict2.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/rearm.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/rearm2.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/rearm3.host.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/reports.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/run-leo.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w-env.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w-identity.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w-open-signer.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w-sums.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w81.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w81b.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w82-f4.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w82-f5.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w82.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w82b.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w84.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/blocks/w9.box.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/box-helpers.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/signer-helpers.sh:external file:external@0
unclassified root read harness/scenarios/cohort1/ssm.sh:external file:external@0
unclassified root read harness/scenarios/sync.sh:external file:external@0
unclassified root read harness/snapshot.sh:external file:external@0
unclassified root read harness/stand-ins/certs.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 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 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 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 16:14:49 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/20 16:14:49 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/20 16:14:49 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/20 16:14:49 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: converged acme.go.tito.io hibernate false -> true
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: converged acme.go.tito.io status-named false -> true
2026/10/20 16:14:49 provision: converged acme.go.tito.io status-named true -> false
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 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 16:14:49 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 16:14:49 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 16:14:49 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 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 16:14:49 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 16:14:49 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 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/20 16:14:49 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/20 16:14:49 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 16:14:49 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 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 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 16:14:49 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 16:14:49 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 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 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 16:14:49 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 16:14:49 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/20 16:14:49 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:49 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 16:14:49 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/20 16:14:49 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 16:14:49 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 16:14:49 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 16:14:49 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/20 16:14:49 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:49 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 16:14:49 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/20 16:14:49 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 16:14:49 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 16:14:49 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/20 16:14:49 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 16:14:49 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 16:14:49 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 16:14:49 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 16:14:49 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 16:14:49 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/20 16:14:49 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/20 16:14:49 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 16:14:49 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 16:14:49 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 16:14:49 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 16:14:49 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 16:14:50 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 16:14:50 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 16:14:50 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 16:14:50 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 16:14:50 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/20 16:14:50 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 16:14:50 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/20 16:14:50 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/20 16:14:50 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/20 16:14:50 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/20 16:14:50 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/20 16:14:50 provision: dry-run: would converge owned.go.tito.io seed
2026/10/20 16:14:50 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 16:14:50 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/20 16:14:50 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/20 16:14:50 provision: converged owned.go.tito.io channel stable -> edge
2026/10/20 16:14:50 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/20 16:14:50 provision: converged owned.go.tito.io hibernate false -> true
2026/10/20 16:14:50 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/20 16:14:50 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/20 16:14:50 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: removed retired static route site.go.tito.io (record gone)
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/20 16:14:50 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/20 16:14:50 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 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 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:50 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/20 16:14:50 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/20 16:14:50 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 16:14:50 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/20 16:14:50 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/20 16:14:50 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 16:14:50 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/20 16:14:50 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 16:14:50 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/20 16:14:50 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/20 16:14:50 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/20 16:14:50 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 16:14:50 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 16:14:50 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 16:14:50 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/20 16:14:50 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/20 16:14:50 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/20 16:14:50 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:50 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 16:14:50 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:50 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 16:14:50 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:50 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 16:14:50 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:50 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/20 16:14:51 provision: a.shop.example.com: swapped for import sd_h2fy2gypiitet3lmaveij45mkq (the original route is journaled)
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_h2fy2gypiitet3lmaveij45mkq committed: its gate is cleared and its journal row dropped
2026/10/20 16:14:51 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 16:14:51 provision: a.shop.example.com: import sd_xtv3ufulurl6ag5spvn4yegala rolled back to its original route
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_xtv3ufulurl6ag5spvn4yegala: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_xtv3ufulurl6ag5spvn4yegala is cleaned up and its journal row retired
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_i5o65dikaavwt2aastdm3qdlhq rolled back to its original route
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_i5o65dikaavwt2aastdm3qdlhq: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_i5o65dikaavwt2aastdm3qdlhq is cleaned up and its journal row retired
2026/10/20 16:14:51 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_ylqzlrtxmesvur4v63rk76f6a4
2026/10/20 16:14:51 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/20 16:14:51 provision: dry-run: would converge a.shop.example.com seed source
2026/10/20 16:14:51 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 16:14:51 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 16:14:51 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 16:14:51 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 16:14:51 provision: a.shop.example.com: import sd_fyuznvxu7lpfpovwgopsbhly2a cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_bnwfvg2zzm7pk4hmtvbhblh6gm cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_64z6h3f23yqtvid6vdcx5xkkka is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_cxx5bvcowovxybn2uzldozm77a is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_ddhctj3w35bpsofgxxsxxejd2e is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 16:14:51 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 16:14:51 provision: b.shop.example.com: import sd_i5rmd6yh5jzdjkmqb74a43daoq left alone this pass: the import journal could not be read
2026/10/20 16:14:51 provision: c.shop.example.com: import sd_hh4xhckgbz4mbwrg5qxo4kvwsm left alone this pass: the import journal could not be read
2026/10/20 16:14:51 provision: a.shop.example.com: import sd_tkmojg7n2jlnixk6gz4moltbfe committed: its gate is cleared and its journal row dropped
2026/10/20 16:14:51 provision: a.shop.example.com: not converging import sd_wszh6qd3tgh7wgglbyuagfhyna: it is swapped but not committed, and the row on this box has no import gate
2026/10/20 16:14:51 provision: a.shop.example.com: not converging import sd_pb5rbezwlkqopc6mfe4xqad5ty: it is swapped but not committed, and the row on this box has no import gate
2026/10/20 16:14:51 provision: a.shop.example.com: not converging import sd_5lqkpnh2vba6laweu4iy5lm6di: it is placed but not committed, and the row on this box has no import gate
2026/10/20 16:14:51 provision: a.shop.example.com: not converging import sd_6ygvrhzgv7o2r3c2lamczkjexq: it is placed but not committed, and the row on this box has no import gate
2026/10/20 16:14:51 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 16:14:51 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/20 16:14:51 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 16:14:51 provision: a.shop.example.com: import sd_espwqiricov66llq2ctwevfbqm committed: its gate is cleared and its journal row dropped
2026/10/20 16:14:51 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 16:14:51 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:51 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 16:14:51 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/20 16:14:51 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/20 16:14:51 provision: acme.go.tito.io: aborted seed sd_bheg36ebikyg5haxup65sakbia: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/20 16:14:51 provision: acme.go.tito.io: aborted seed sd_bheg36ebikyg5haxup65sakbia rolled back (no box had swapped it)
2026/10/20 16:14:52 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/20 16:14:52 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:52 provision: removed instance route acme.go.tito.io (its seed sd_yowjzwbz3m22dnlyiletqnbauq was aborted); the next pass rolls it back
2026/10/20 16:14:52 provision: acme.go.tito.io: aborted seed sd_yowjzwbz3m22dnlyiletqnbauq: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/20 16:14:52 provision: acme.go.tito.io: aborted seed sd_yowjzwbz3m22dnlyiletqnbauq rolled back (no box had swapped it)
2026/10/20 16:14:52 provision: acme.go.tito.io: aborted seed sd_zba3227tgxz33cjddezc6ed5ym has a row this pass may not remove; leaving the seed aborted
2026/10/20 16:14:52 provision: acme.go.tito.io: aborted seed sd_qmjtbjs22jpphnexq7uhxwvbty rolled back (no box had swapped it)
2026/10/20 16:14:52 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:52 provision: removed instance route acme.go.tito.io (its seed sd_br2lty2k73aooxhfgf3vxfsqvi was aborted); the next pass rolls it back
2026/10/20 16:14:52 provision: acme.go.tito.io: aborted seed sd_br2lty2k73aooxhfgf3vxfsqvi has no route on this box: its local data is removed
2026/10/20 16:14:52 provision: acme.go.tito.io: aborted seed sd_br2lty2k73aooxhfgf3vxfsqvi rolled back (no box had swapped it)
2026/10/20 16:14:52 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_fafazfa2amde4oxf37v72zzhge (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_fafazfa2amde4oxf37v72zzhge rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_fafazfa2amde4oxf37v72zzhge is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_flp4o2twkip2v3vtmsxwmeu2uq (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_flp4o2twkip2v3vtmsxwmeu2uq rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_flp4o2twkip2v3vtmsxwmeu2uq is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_cm2n5jgh6w5us7nlmbmktr7wda (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_cm2n5jgh6w5us7nlmbmktr7wda rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_cm2n5jgh6w5us7nlmbmktr7wda: the host's replica is left alone: its record no longer names this seed
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_cm2n5jgh6w5us7nlmbmktr7wda is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_ba74k4yx47ikrmj3wym2qsexa4 (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ba74k4yx47ikrmj3wym2qsexa4 rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ba74k4yx47ikrmj3wym2qsexa4 rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ba74k4yx47ikrmj3wym2qsexa4 is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_3pplebvajqsstjc6nhelx5rqea (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_3pplebvajqsstjc6nhelx5rqea rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_6wasop34am7w7mooubmilhw2tm (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_6wasop34am7w7mooubmilhw2tm is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_jw6az72dofj7ucqo6gwvn6lide (the original route is journaled)
2026/10/20 16:14:52 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_jw6az72dofj7ucqo6gwvn6lide left alone this pass: its record could not be read
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_iokldfxyatpz3cslfqa2w4kjui (the original route is journaled)
2026/10/20 16:14:52 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_iokldfxyatpz3cslfqa2w4kjui left alone this pass: its record could not be read
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_bdkdfygsuz32qqfdf3wkkqg3jm (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bdkdfygsuz32qqfdf3wkkqg3jm: close the import gate: constraint failed: injected (1811)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bdkdfygsuz32qqfdf3wkkqg3jm rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bdkdfygsuz32qqfdf3wkkqg3jm is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_x74at5ohdzplzjauqokkrhp6ai (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_x74at5ohdzplzjauqokkrhp6ai: close the import gate: constraint failed: injected (1811)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_x74at5ohdzplzjauqokkrhp6ai rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_x74at5ohdzplzjauqokkrhp6ai is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_pufyjzio2k2zltoksulqjz4fv4 (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_pufyjzio2k2zltoksulqjz4fv4 rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_pufyjzio2k2zltoksulqjz4fv4 rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_pufyjzio2k2zltoksulqjz4fv4 is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_j4agq2tewksb4cyephug62hqkm (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_j4agq2tewksb4cyephug62hqkm rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_j4agq2tewksb4cyephug62hqkm is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_zuvgeoazbhe4ahotibgp2pxd2y (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_zuvgeoazbhe4ahotibgp2pxd2y: retire its instance key: injected failure at retire-key
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_zuvgeoazbhe4ahotibgp2pxd2y rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_zuvgeoazbhe4ahotibgp2pxd2y is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_75ql72fym566xxgph2h3twxf3e (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_75ql72fym566xxgph2h3twxf3e rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_75ql72fym566xxgph2h3twxf3e is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_ie65frcnxrf7rui3mpxbgdlmoq (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ie65frcnxrf7rui3mpxbgdlmoq: remove its local data: injected failure at remove-local
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ie65frcnxrf7rui3mpxbgdlmoq rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ie65frcnxrf7rui3mpxbgdlmoq is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_72dbvpquzp7omryonc2pbeo4ju (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_72dbvpquzp7omryonc2pbeo4ju rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_72dbvpquzp7omryonc2pbeo4ju is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_fzlcxvtutrhhenp3qihoga6tjy (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_fzlcxvtutrhhenp3qihoga6tjy: remove its local data: injected failure at remove-local-done
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_fzlcxvtutrhhenp3qihoga6tjy rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_fzlcxvtutrhhenp3qihoga6tjy is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_uz2qsstzzc3abpg3hvkcugokua (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_uz2qsstzzc3abpg3hvkcugokua rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_uz2qsstzzc3abpg3hvkcugokua is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_dijk6atv2vrs5uzsjrl7yz2xnu (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_dijk6atv2vrs5uzsjrl7yz2xnu: restore the original route: constraint failed: injected (1811)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_dijk6atv2vrs5uzsjrl7yz2xnu rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_dijk6atv2vrs5uzsjrl7yz2xnu is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_xq5vkaskhha74zeioxab6yuqwu (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_xq5vkaskhha74zeioxab6yuqwu: restore the original route: constraint failed: injected (1811)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_xq5vkaskhha74zeioxab6yuqwu rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_xq5vkaskhha74zeioxab6yuqwu is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_yrdtrenypnu737hnd2ejran6a4 (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_yrdtrenypnu737hnd2ejran6a4 is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_5d5kuxotuogocud6x6d3pvmpyi (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_5d5kuxotuogocud6x6d3pvmpyi rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_5d5kuxotuogocud6x6d3pvmpyi: delete its snapshot: injected failure at delete-snapshot
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_5d5kuxotuogocud6x6d3pvmpyi is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_yu3mki3ogzrabd2istgn3yjomq (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_yu3mki3ogzrabd2istgn3yjomq rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_yu3mki3ogzrabd2istgn3yjomq is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_bvfnk47b6geep7cfdrl5l7cape (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bvfnk47b6geep7cfdrl5l7cape rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bvfnk47b6geep7cfdrl5l7cape: delete the host's replica: injected failure at delete-replica
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bvfnk47b6geep7cfdrl5l7cape is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_alklmxlmkfzctej2ohk2fzi3py (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_alklmxlmkfzctej2ohk2fzi3py rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_alklmxlmkfzctej2ohk2fzi3py is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_i3brm5mmtozdzyvruuhkoz7he4 (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_i3brm5mmtozdzyvruuhkoz7he4 rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_i3brm5mmtozdzyvruuhkoz7he4: retire its journal row: constraint failed: injected (1811)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_i3brm5mmtozdzyvruuhkoz7he4 is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_wi3i3fdgv45axdhi46cmjpnt7y (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_wi3i3fdgv45axdhi46cmjpnt7y rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_wi3i3fdgv45axdhi46cmjpnt7y: retire its journal row: constraint failed: injected (1811)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_wi3i3fdgv45axdhi46cmjpnt7y is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_ss2uvhz4yuvxrsitvmvy3if34u (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ss2uvhz4yuvxrsitvmvy3if34u rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ss2uvhz4yuvxrsitvmvy3if34u is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: mark import sd_ss2uvhz4yuvxrsitvmvy3if34u rolled back: injected failure at cas
2026/10/20 16:14:52 provision: a.shop.example.com: aborted seed sd_ss2uvhz4yuvxrsitvmvy3if34u rolled back (no box had swapped it)
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_6w3wtk36fvunpyrbahynm424xm (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_6w3wtk36fvunpyrbahynm424xm rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_6w3wtk36fvunpyrbahynm424xm is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: aborted seed sd_6w3wtk36fvunpyrbahynm424xm rolled back (no box had swapped it)
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_3md3m4byw7qnbc6efp4ccuzg3q (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_3md3m4byw7qnbc6efp4ccuzg3q rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_3md3m4byw7qnbc6efp4ccuzg3q rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_3md3m4byw7qnbc6efp4ccuzg3q rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_3md3m4byw7qnbc6efp4ccuzg3q is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_m3yolmtqqjtpda24fgggiylev4 (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_m3yolmtqqjtpda24fgggiylev4 rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_m3yolmtqqjtpda24fgggiylev4 is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_bn43vqaduicbonfim6utgyogzm (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bn43vqaduicbonfim6utgyogzm rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_bn43vqaduicbonfim6utgyogzm is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_gotxidhidxdf6wlrh5qrnllgyy (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_gotxidhidxdf6wlrh5qrnllgyy rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_gotxidhidxdf6wlrh5qrnllgyy is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_jpuwrf7f25loh5xmyrwzspvsaq (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_jpuwrf7f25loh5xmyrwzspvsaq rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_jpuwrf7f25loh5xmyrwzspvsaq is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_ke6zpvslgmwum56y7ehpro3fqu (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ke6zpvslgmwum56y7ehpro3fqu rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ke6zpvslgmwum56y7ehpro3fqu is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_2y5cife27cwmqbfhtla7btcdke (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_2y5cife27cwmqbfhtla7btcdke rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_2y5cife27cwmqbfhtla7btcdke is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_sbnirrkg5uchrujylirpf6gsg4 (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_sbnirrkg5uchrujylirpf6gsg4 rolled back to its original route
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_sbnirrkg5uchrujylirpf6gsg4 is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_ht3zcopyzbk3e2pnnmjhl6bdnq (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ht3zcopyzbk3e2pnnmjhl6bdnq has no route on this box: its local data is removed and no route is put back
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_ht3zcopyzbk3e2pnnmjhl6bdnq is cleaned up and its journal row retired
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_i5cq6z3ro7m57ovoapdpu6rpsi (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_rfvdgahl62blcao3qam33wdxcq (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_5sh2sethydfq52v6jf3avejp3y (the original route is journaled)
2026/10/20 16:14:52 provision: a.shop.example.com: import sd_5sh2sethydfq52v6jf3avejp3y cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 16:14:52 provision: a.shop.example.com: swapped for import sd_cb6nbvfumdyur4q6u6usaqxuhm (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_cb6nbvfumdyur4q6u6usaqxuhm is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/20 16:14:53 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 16:14:53 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_2xymgoqch6gkr7kjghizvz6w7y (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_tjdpkhqzv43u55xit3p22qfgue (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_6dsgrxqfjubpx6nzwzjayezymy (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_d3fbcd4sb7x5ht2np7c3ukfwzu (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_5iq3odrwebylnlpx7yqm5tgpku (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_5iq3odrwebylnlpx7yqm5tgpku rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_qc2itmbpsdt6cfect4rt5nnzpm (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_qc2itmbpsdt6cfect4rt5nnzpm has no route on this box: its local data is removed and no route is put back
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_qc2itmbpsdt6cfect4rt5nnzpm is cleaned up and its journal row retired
2026/10/20 16:14:53 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_yktq4j4aqivrxns7e2hxg36joy (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_yktq4j4aqivrxns7e2hxg36joy: remove its local data: injected failure at remove-local
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_yktq4j4aqivrxns7e2hxg36joy is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_kndn3oiihn6xcjw6u7v6j4e2le (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_kndn3oiihn6xcjw6u7v6j4e2le: a route appeared at the host, so its local database is left and the rollback waits
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_lycsmy2paleun25lhteabwa2ay (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_lycsmy2paleun25lhteabwa2ay rollback deferred: no fence generation: registry busy
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_xmt3xfwuy4df4lpgieykv6ijbm (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_xmt3xfwuy4df4lpgieykv6ijbm rollback deferred: no fence generation: the generation source answered 0
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_sl6e5ygs6p6muzd3gykbxt57me (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_nxemp5jyh4f6wsr7qrldwu2uz4 (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_v6qc2h6f47ivuwn7r4el7tagwi (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/20 16:14:53 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_pzisslvoonsmhigf6ghmogpvfe (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_pzisslvoonsmhigf6ghmogpvfe rolled back to its original route
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_pzisslvoonsmhigf6ghmogpvfe is cleaned up and its journal row retired
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_orndhldsfbrpuuevurq4gkb4e4 (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_orndhldsfbrpuuevurq4gkb4e4 rolled back to its original route
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_orndhldsfbrpuuevurq4gkb4e4 is cleaned up and its journal row retired
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_6jxv25fmxrsabxkdwf734ifg7i (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_6jxv25fmxrsabxkdwf734ifg7i rolled back to its original route
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_6jxv25fmxrsabxkdwf734ifg7i is cleaned up and its journal row retired
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_xjqxmrvah4fkmgi5mrw4jjzszm (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_xjqxmrvah4fkmgi5mrw4jjzszm: retire its instance key: the env file is a symlink
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_xjqxmrvah4fkmgi5mrw4jjzszm rolled back to its original route
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_xjqxmrvah4fkmgi5mrw4jjzszm is cleaned up and its journal row retired
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_citpb5x4osa7b5pwfo56agxrzq (the original route is journaled)
2026/10/20 16:14:53 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 16:14:53 provision: a.shop.example.com: swapped for import sd_thuc73d2vhzjnczexmnpnjhqtu (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_fa22yghirl4r7wc675ny2kdfdm refused: there is no route at a.shop.example.com to replace
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_5diy6tpwdfuyblefvzbzuc4d6e refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_ngtyzstudmnblmnqd42pebbfpq 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 16:14:53 provision: a.shop.example.com: import sd_kicmznhm4vmwl7vyuh5v4fckri refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_7kijvvop4so47rlia6zrxp5tge refused: the route belongs to app other
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_z3ja3m7hbtimvjwlbtk4hmsj7m refused: the route is filed under another account
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_qlrij3q2lwwl6j5ixls7aoxdba refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_ogggpur32xvgeb2jbsoyxtpjke refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_ktymp67rpamh6jct5mmhhptqwy refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_hm3unbifnebq3ajyy2xdv5ioyq refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_vywo3wyfzpd7jnjoujjx4w33vm refused: the route is not an address route this import can take over (socket)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_jcv66qsjfkyhyhz4vwv3355f6a refused: the route is not an address route this import can take over (no address)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_mnanmpncjnenmkaq6dzfo5baoq refused: the route is not an address route this import can take over (provisioned)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_xzlgh7f6ct5f7i7y3pnmigiaty refused: the route is not an address route this import can take over (kind static)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_t25vsvgsmiw7tbrfg5qae6wag4 refused: the route is not an address route this import can take over (backing)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_zdt4ea2cwckuaprudqnisncye4 refused: the route is not an address route this import can take over (tunnel)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_mslc2mbi4pm2zjfqlnnkobzv3y refused: the route is not an address route this import can take over (caps)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_tl2pwsijdu643v43krdxrn2nvy refused: the route is not an address route this import can take over (platform)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_kbiqnl6avmzxliw2jf4nm4ersm refused: the route is not an address route this import can take over (canary)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_vupvzsud5uoq2wz564s7fydqde refused: the route is not an address route this import can take over (kind sidecar)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_ocznjrzy5cluzm7hy2ojwec4qq refused: the route is not an address route this import can take over (region)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_fnfa6oel2gbs6j3kog54djdq54 refused: the route is not an address route this import can take over (fleet_box)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_j6rg2s3e4yz6qy6gi5s3juftju refused: the route is not an address route this import can take over (hibernate)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_k3ewy3ssqmtej74sob6fmkxrhm refused: the route is not an address route this import can take over (claim_owner)
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_ahhyx3mnrnbyzemdjzoaa2sosq refused: this box does not run instances nested
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_rpcz62twafmxlc5eg4stce4siq refused: this box does not run instances nested
2026/10/20 16:14:53 provision: a.shop.example.com: import sd_547ewxzql2bnujoj3sepl2h5fy refused: claim control is on for this box
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_b67h247glslqtdp47synb3g7dq (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_k7i6eerofvj4d6uwxmsmxqu3qe (the original route is journaled)
2026/10/20 16:14:53 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/20 16:14:53 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/20 16:14:53 provision: a.shop.example.com: not swapping for import sd_3eqsdwkwez5byyokdk3zw7zdhe: its verify hash is not a sha256
2026/10/20 16:14:53 provision: a.shop.example.com: not swapping for import sd_fibluaomezhqaqnmdf4b74fibe: its verify hash is not a sha256
2026/10/20 16:14:53 provision: a.shop.example.com: not swapping for import sd_wbpbp3fuk6vpbjs4ws4hxzdzq4: its verify hash is not a sha256
2026/10/20 16:14:53 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 16:14:53 provision: A.shop.example.com/..: not swapping for import sd_a22zk77rx77sxjqz7siiyuttee: its host or seed id is malformed (seeds: not a host)
2026/10/20 16:14:53 provision: a.shop.example.com: not swapping for import sd_bofc7hd3g3b4pbdjkoulxge3he: its record does not describe a nested, hibernating instance
2026/10/20 16:14:53 provision: a.shop.example.com: not swapping for import sd_eis3ilygz5jdrhzv5dx6lxk6qy: its record does not describe a nested, hibernating instance
2026/10/20 16:14:53 provision: a.shop.example.com: not swapping for import sd_fbv77drjbqeebggu2t64mqt6j4: its record does not describe a nested, hibernating instance
2026/10/20 16:14:53 provision: a.shop.example.com: not swapping for import sd_akt6dz2hxlyay45igbcdtrrbkq: its record does not describe a nested, hibernating instance
2026/10/20 16:14:53 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/20 16:14:53 provision: a.shop.example.com: swapped for import sd_6awxf43zk6eh2wjbu5stgtbiou (the original route is journaled)
2026/10/20 16:14:54 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/20 16:14:54 provision: a.shop.example.com: swapped for import sd_fzh57mbzvbcxw7prak7yglkbaq (the original route is journaled)
2026/10/20 16:14:54 provision: a.shop.example.com: swapped for import sd_373qr7c3thpjikqh4sy7k427lu (the original route is journaled)
2026/10/20 16:14:54 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/20 16:14:54 provision: dry-run: would consider swapping a.shop.example.com for import sd_l3puha7slk5jgbie5owkka22r4
2026/10/20 16:14:54 provision: a.shop.example.com: import sd_yuax6kozy7wfkboxjyyfg7l3zm rolled back to its original route
2026/10/20 16:14:54 provision: a.shop.example.com: import sd_yuax6kozy7wfkboxjyyfg7l3zm: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 16:14:54 provision: a.shop.example.com: import sd_yuax6kozy7wfkboxjyyfg7l3zm is cleaned up and its journal row retired
2026/10/20 16:14:54 provision: a.shop.example.com: import sd_nxlirpculxd77twsffsxdngo3q left alone: the import journal holds seed sd_h225hwqgdhrytfuubufuieek4e at swapped
2026/10/20 16:14:54 provision: a.shop.example.com: not minting import sd_f6ev3udzpd33inptmqinz4ipgi: it is swapped but not committed, and only its swap makes its row
2026/10/20 16:14:54 provision: a.shop.example.com: not minting import sd_ea5mh747shvr7go6qslyr37ep4: it is placed but not committed, and only its swap makes its row
2026/10/20 16:14:54 provision: a.shop.example.com: swapped for import sd_6igqxug3pdidgbkybepo3gf7la (the original route is journaled)
2026/10/20 16:14:54 provision: a.shop.example.com: not minting import sd_6igqxug3pdidgbkybepo3gf7la: it is swapped but not committed, and only its swap makes its row
2026/10/20 16:14:54 provision: a.shop.example.com: not minting import sd_6igqxug3pdidgbkybepo3gf7la: it is placed but not committed, and only its swap makes its row
2026/10/20 16:14:54 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 16:14:54 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/20 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/20 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/20 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/20 16:14:54 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/20 16:14:54 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/20 16:14:54 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/20 16:14:54 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/20 16:14:54 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/20 16:14:54 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/20 16:14:54 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/20 16:14:54 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/20 16:14:54 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/20 16:14:54 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/20 16:14:54 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/20 16:14:54 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 16:14:54 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 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/20 16:14:54 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 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 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 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 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 16:14:54 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/20 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 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 16:14:54 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/20 16:14:54 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 16:14:54 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 16:14:54 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/20 16:14:54 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/20 16:14:54 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 16:14:54 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:54 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/20 16:14:54 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:54 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:54 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 16:14:54 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 16:14:54 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/20 16:14:54 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 16:14:54 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 16:14:54 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/20 16:14:54 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 18.351s
ok github.com/carlosframework/platform/internal/publicrelease 0.009s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 5.493s
ok github.com/carlosframework/platform/internal/relay 7.227s
ok github.com/carlosframework/platform/internal/release 24.666s
ok github.com/carlosframework/platform/internal/rollout 3.707s
ok github.com/carlosframework/platform/internal/rolloutwords 0.005s
ok github.com/carlosframework/platform/internal/rootaws 0.007s
ok github.com/carlosframework/platform/internal/rootparticipation 0.059s
ok github.com/carlosframework/platform/internal/rootstate 0.026s
ok github.com/carlosframework/platform/internal/runs 0.579s
ok github.com/carlosframework/platform/internal/s3compat 0.005s
ok github.com/carlosframework/platform/internal/safefile 0.004s
ok github.com/carlosframework/platform/internal/schedule 2.532s
ok github.com/carlosframework/platform/internal/seeds 0.012s
ok github.com/carlosframework/platform/internal/sim/hostlife 9.274s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 4.455s
ok github.com/carlosframework/platform/internal/status 0.060s
ok github.com/carlosframework/platform/internal/steering 0.006s
ok github.com/carlosframework/platform/internal/stopevidence 0.203s
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.004s
ok github.com/carlosframework/platform/internal/tunnelclient 0.004s
ok github.com/carlosframework/platform/internal/unixdial 0.003s
ok github.com/carlosframework/platform/internal/updatewords 0.005s
ok github.com/carlosframework/platform/internal/usage 0.005s
ok github.com/carlosframework/platform/internal/version 0.003s
ok github.com/carlosframework/platform/internal/vet 1.597s
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/RESOURCES.md b/harness/RESOURCES.md| index 8ad02ac48..908e4ef8e 100644 |
| --- a/harness/RESOURCES.md |
| +++ b/harness/RESOURCES.md |
| @@ -16,3 +16,4 @@ Appended as each is created. Teardown commands: harness/TEARDOWN.md. |
| | 2026-10-20T00:51:52Z | (terminated) donor-2 | i-019177034b088459f | documents in s3://carlos-harness-640012953448/donors/donor-2/ | |
| | 2026-10-20T01:06:29Z | ebs volume (host root) | vol-035c92e5b506cc3db | 60 GiB gp3, DeleteOnTermination=true; goes with the host | |
| | 2026-10-20T09:5xZ | TTL extended | i-06a1ec144aa5226fb, sg-0b9cf4c2a508b7cec, vol-035c92e5b506cc3db, bucket carlos-harness-640012953448, role and instance profile carlos-harness | ttl and expires tags 2026-10-20T12:40Z -> 2026-10-20T18:40Z; on the host `shutdown -c; shutdown -h 18:40` (shutdown --show: 18:40:00 UTC); coordinator's request | |
| +| 2026-10-20T16:02Z | TTL extended | i-06a1ec144aa5226fb, sg-0b9cf4c2a508b7cec, vol-035c92e5b506cc3db, bucket carlos-harness-640012953448, role and instance profile carlos-harness | ttl and expires tags 2026-10-20T18:40Z -> 2026-10-20T23:40Z; on the host `shutdown -c; shutdown -h 23:40` (shutdown --show: 23:40:00 UTC); Run 9 (v0.28.5 roll) and the offline-move rehearsal | |
diff --git a/harness/RUNLOG.md b/harness/RUNLOG.md| index e65bb3b10..aad784de0 100644 |
| --- a/harness/RUNLOG.md |
| +++ b/harness/RUNLOG.md |
| @@ -1420,3 +1420,66 @@ the ext4 container that holds it, as now), wait for fresh box reports, reopen se |
| `w81.box.sh`, `w81b.sh`, `w82.box.sh`, `w82b.sh`, `w84.box.sh`, `w9.box.sh`, `g9-check.sh`, `b4.sh`, `b4-pair.sh`, |
| `b4-after.sh`, `acceptance.host.sh 1..4`; then the normal road with a restamped build. Everything runs through |
| `harness/hssm.py` / `harness/hrun.sh` from DOCS-T1 with the sandbox off. |
| + |
| +# Run 9: v0.28.5 roll (2026-10-20 evening) |
| + |
| +Coordinator's brief: rehearse (A) rolling the published release v0.28.5 onto dev-shaped boxes, guard-armed ones |
| +included, and (B) a full offline operator move from the Ireland box (sophie) to the UK box (dennis). Harness only. |
| +Host TTL extended to 2026-10-20T23:40Z first (RESOURCES.md, 16:02Z). |
| + |
| +## The build |
| + |
| +Release v0.28.5 = tag `v0.28.5` -> main `54ae7fb9` (clean checkout `~/.cache/release-v0.28.5/src`, detached). |
| +`git archive 54ae7fb9` + the harness patch (6b905c11's `internal/` diff, seven files, sha256 `b2f1ad8f...`, the |
| +same patch as every earlier run: the ONE binary deviation), `-tags harness`, `GOFLAGS=-buildvcs=false`, linux/arm64, |
| +`-ldflags "-s -w -X github.com/carlosframework/platform/internal/version.Build=<stamp>"`, for `.` and `./cmd/console`. |
| +Tests: `./internal/s3compat ./internal/publicrelease ./internal/rootaws ./internal/hostfloor` ok (default build); |
| +`-tags harness ./internal/s3compat ./internal/publicrelease` ok. |
| + |
| +| stamp | plays | carlos sha256 | console sha256 | bucket prefix | |
| +|---|---|---|---|---| |
| +| **v0.28.6** | dev's **v0.28.5** (54ae7fb9) | `9c662e4d685a1c73941a58ce74d8b14638d309de3d1915151df511874de085a1` | `dd24213dff7b8bd5df575ccaee253df866ecefb613301fb6abc57752523ba159` | `artefacts/v0.28.6-54ae7fb9/` | |
| +| v0.28.7 | v0.28.5+harness-1 (same tree restamped, normal road) | `43631b6b0573fa556f3fcbc9d57b0c49c7a26c53bdf72aa569f41bc29736affb` | `913cff5c361b53c611ed4e19c4422177253e6792e5460ad8b44d35d9ff98b8f9` | `artefacts/v0.28.7-54ae7fb9/` | |
| +| moveprobe | the move rehearsal app (`cmd/moveprobe` @ 54ae7fb9, no tag) | `6d331a2fab4d59b9ed241cca18e99bdcf010315dae3cc573639d8caaea5f7cfe` | | `artefacts/moveprobe-54ae7fb9/` | |
| + |
| +**Why the stamp is v0.28.6, not v0.28.5 (deviation from the brief, naming only).** In every harness snapshot the |
| +tag v0.28.5 is already step 7's release of 96db0efe, which plays dev's v0.28.4: s7's boxes run it, the floor's |
| +`min_release` is v0.28.5, and `control/system/router/releases/v0.28.5.json` is published create-only. A second |
| +v0.28.5 could neither get an identity (create-only refuses) nor be a newer release than what the boxes run. So, as in |
| +the window runs ("harness v0.28.6 plays dev's v0.28.5"), the release commit is stamped **v0.28.6**. The code is |
| +54ae7fb9 byte for byte apart from the harness file; read "v0.28.6" below as dev's v0.28.5, and "v0.28.5" in the |
| +harness as dev's v0.28.4. "v0.28.5+harness-1" is stamped v0.28.7 for the same reason (a release tag the console and |
| +identity accept, newer than v0.28.6). |
| + |
| +## Setup: the dev-shaped state, snapshot `pre-0285` |
| + |
| +`blocks/r9-setup.host.sh` (16:08-16:12Z): |
| +1. `leo-ext4-from.sh s7 leo-ext4-run8b 203.0.113.126`: infra, sophie, dennis, signer and the console volume restored to |
| + `s7`; leo copied onto ext4 (`hdir`, H16) from `leo-btrfs/s7` (`/` dev 259:3 in both); the Run 8 ext4 leo kept, |
| + stopped, as `leo-ext4-run8b`. Every container `running`, `--failed` empty; leo `carlos v0.28.5`. |
| +2. H14/H15 (`vendor-shims.sh`; tenant units see a read-only cgroupfs, as on EC2) and H13 certificates for |
| + `wakecheck`, `moveapp`, `rollbackapp` `.dev.harness.test`. |
| +3. **Sophie paused** (dev's state since 2026-10-19): saved copies (`paused-20261019/`, `5df17bac...`, `815226c3...`), |
| + then the runbook's **"Pause again"** block verbatim from `claim-dev-cohort1-runbook` @ 5e23c83d (C1 is already in |
| + it): `active`, `CARLOS_HOST_CLAIM=` (empty), healthz 200, 0 `off on a host-claim console` lines. |
| +4. What dev has that s7 lacks, through the ordinary doors with s7's operator CLI (harness v0.28.5): `wakecheck` |
| + (pool-less, wc4 stand-in `4a79c656...`, `created ... (channel edge, Ireland · Dublin)`, `host=sophie hits=2,3`), then |
| + runbook 4.2 on leo (`CARLOS_POOLS=cohort1`, edge restart, active) and 4.3 (`removed wakecheck.dev.harness.test`). |
| + Not seeded: claimtrial, rollcheck-0261, moverehearsal (not needed for the roll or the move). |
| +5. Snapshot **`pre-0285`** (16:11:23Z): all five containers and the console volume; after it, console |
| + `CARLOS_HOST_CLAIM=` and healthz 200. |
| + |
| +## (A) The roll |
| + |
| +### (a) The signing session: PASS (16:13:09-16:13:46Z) |
| + |
| +`blocks/r9-release.host.sh v0.28.6 v0.28.6-54ae7fb9 <carlos sha> <console sha> 54ae7fb9`: |
| +- `release-window.sh`: signed sums `f15ba662...` (`Signature Verified Successfully`); operator CLI `carlos v0.28.6` |
| + (`harness build: yes`); **C2: console `54ae7fb9` shipped and promoted to `canary/console` before publish-identity** |
| + (`canary/console 54ae7fb9 2026-10-20T16:13:15Z yes`). |
| +- Session `cohort1-20261020T161315Z` (`w-open-signer.sh`): signer `carlos v0.28.6` OK against the signed sums, helpers |
| + and release.pub OK, swap 0, `/run` tmpfs, key `root 600 1 45`. |
| +- `publish-identity` (`w-identity.sh`, WTAG=v0.28.6 WCV=54ae7fb9): one create-only write (`before_etag ""`) of |
| + `control/system/router/releases/v0.28.6.json` (`b67dffa3...`); router `9c662e4d...` (= the signed sums), console |
| + `dd24213d...`; identity file = published object; REV 9. |
| + |
diff --git a/harness/scenarios/cohort1/blocks/r9-console.host.sh b/harness/scenarios/cohort1/blocks/r9-console.host.sh| new file mode 100644 |
| index 000000000..b85eac298 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/r9-console.host.sh |
| @@ -0,0 +1,51 @@ |
| +#!/bin/bash |
| +# Run 9 (e): sophie's guarded console onto the release (on host, root). |
| +# r9-console.host.sh <TAG> <CV> <console sha> |
| +# The claim owner: a plain promote does not change what runs under 90-host-floor.conf, so the protected |
| +# console is replaced by `system claims install-console --identity --source`, then console.service restarts. |
| +# Source: the agent-staged copy of the promoted console (/opt/carlos/versions/<CV>/console), as 6.3 used, |
| +# if it is there and has the release's sha; otherwise the release artefact pushed to /root/console-<TAG>. |
| +set -uo pipefail |
| +TAG=$1 CV=$2 COS=$3 |
| +I=/home/operator/cohort1/out/identity.$TAG.json |
| +runuser -l operator -c "aws s3 cp --quiet s3://harness-deployment/control/system/router/releases/$TAG.json -" | cmp - $I && echo "identity file = published object" |
| +incus file push $I sophie/root/claim-trial/identity.$TAG.json --uid 0 --gid 0 --mode 0600 -q |
| +SRC=/opt/carlos/versions/$CV/console |
| +if [ "$(incus exec sophie -- sh -c "sha256sum < $SRC 2>/dev/null | cut -d' ' -f1")" = "$COS" ]; then |
| + echo "source: agent-staged $SRC ($(incus exec sophie -- stat -c '%U:%G %a' $SRC))" |
| +else |
| + echo "source: $SRC absent or not the release ($(incus exec sophie -- sh -c "ls -la /opt/carlos/versions/ 2>&1 | tr '\n' ' '"))" |
| + SRC=/root/console-$TAG |
| + incus file push /root/harness/release/$TAG/console-linux-arm64 sophie$SRC --uid 0 --gid 0 --mode 0700 -q |
| + echo "source: release artefact pushed to $SRC" |
| +fi |
| +incus exec sophie -- bash -s -- "$TAG" "$SRC" "$COS" <<'BOX' |
| +set -euo pipefail |
| +TAG=$1 CONSOLE_SOURCE=$2 COS=$3 |
| +umask 077 |
| +cd /root/claim-trial |
| +set -a |
| +. /etc/carlos/host.env |
| +set +a |
| +PUB=$(cat release.pub) |
| +CONSOLE_BINARY=/opt/carlos/system/console/console |
| +p=$(systemctl show -p MainPID --value console.service) |
| +echo "before: pid $p exe $(readlink /proc/$p/exe) sha $(sha256sum < /proc/$p/exe | cut -c1-16) binary $(sha256sum < $CONSOLE_BINARY | cut -c1-16)" |
| +ls /opt/carlos/system/guard/identities |
| +date -u +%T.%3NZ |
| +/opt/carlos/carlos system claims install-console --identity /root/claim-trial/identity.$TAG.json --source "$CONSOLE_SOURCE" \ |
| + --bucket harness-deployment --aws-region eu-west-1 --public-key "$PUB" --dry-run |
| +/opt/carlos/carlos system claims install-console --identity /root/claim-trial/identity.$TAG.json --source "$CONSOLE_SOURCE" \ |
| + --bucket harness-deployment --aws-region eu-west-1 --public-key "$PUB" |
| +stat -c '%n %a %U:%G %s' $CONSOLE_BINARY $CONSOLE_BINARY.prev |
| +test "$(sha256sum < $CONSOLE_BINARY | cut -d' ' -f1)" = "$COS" && echo "installed $CONSOLE_BINARY = the release console" |
| +T=$(date -u +%T.%3NZ); systemctl restart console.service; echo "restart at $T" |
| +systemctl is-active console.service |
| +for i in $(seq 1 40); do p=$(systemctl show -p MainPID --value console.service); [ "$(readlink /proc/$p/exe)" = $CONSOLE_BINARY ] && break; sleep 0.25; done |
| +H=$(sha256sum < /proc/$p/exe | cut -d' ' -f1); echo "console pid $p exe $(readlink /proc/$p/exe) sha256 $H"; test "$H" = "$COS" |
| +tr '\0' '\n' < "/proc/$p/environ" | grep '^CARLOS_HOST_CLAIM=' |
| +systemctl show console.service -p NRestarts -p ActiveState -p ExecMainStartTimestamp |
| +for i in $(seq 1 20); do c=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8090/healthz); [ "$c" = 200 ] && break; sleep 0.5; done |
| +echo "healthz $c ($(date -u +%T.%3NZ)); / $(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8090/)" |
| +case "$CONSOLE_SOURCE" in /root/*) shred -u "$CONSOLE_SOURCE" && echo "shredded $CONSOLE_SOURCE";; esac |
| +BOX |
diff --git a/harness/scenarios/cohort1/blocks/r9-move-setup.host.sh b/harness/scenarios/cohort1/blocks/r9-move-setup.host.sh| new file mode 100644 |
| index 000000000..2411f2e3e |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/r9-move-setup.host.sh |
| @@ -0,0 +1,70 @@ |
| +#!/bin/bash |
| +# Run 9 (B) step 1 (on host, root): two flagship-shaped test apps in account bab, claims off, |
| +# placed in home (sophie, Ireland), woken on sophie only. |
| +# H17 (harness seeding of dev state): the deployment secrets key. Dev's boxes hold CARLOS_SECRETS_KEY |
| +# (dennis since 2026-10-15); the harness never had one. Minted with `carlos secrets genkey`; KEY into |
| +# leo's, sophie's and dennis's host.env, PUBKEY into sophie's host.env (console.service reads it); the |
| +# private half also at /run/harness/keys/secrets.env (tmpfs, 0600). Edges and console restarted. |
| +# H18 (deviation): the store binding. The console's only store backend is AWS IAM |
| +# (cmd/console/main.go:714-758 storeBackend; CreateUser/PutUserPolicy), which MinIO cannot answer, so the |
| +# binding is made as the app's own sealed settings (MOVEPROBE_BUCKET/_REGION/_ENDPOINT/_ACCESS_KEY/ |
| +# _SECRET_KEY) naming a per-app MinIO bucket and a user whose policy covers only that bucket. It reaches |
| +# the box the same way a store binding does: the bundle, rendered into <host>.config.env. |
| +# Apps: moveapp (the move) and rollbackapp (the abort rehearsal): moveprobe from 54ae7fb9 (cmd/moveprobe), |
| +# version mp1, channel edge, secret, a plain setting, schedule every-minute /tick, a once-timer, pool-less, |
| +# region home. |
| +set -euo pipefail |
| +K=/run/harness/keys; MC=/root/harness/bin/mc |
| +OP() { runuser -l operator -c "set -euo pipefail; C=http://127.0.0.1:8090; export AWS_PROFILE=harness CARLOS_DEPLOYMENT_BUCKET=harness-deployment; $1"; } |
| +echo "== H17 secrets key ($(date -u +%T.%3NZ))" |
| +for b in leo sophie dennis; do echo "$b: $(incus exec $b -- grep -c '^CARLOS_SECRETS_' /etc/carlos/host.env || true) secrets lines before"; done |
| +if [ ! -s $K/secrets.env ]; then (umask 077; /usr/local/bin/carlos secrets genkey > $K/secrets.env 2>/dev/null); fi |
| +. $K/secrets.env |
| +for b in leo sophie dennis; do |
| + incus exec $b -- bash -c "grep -q '^CARLOS_SECRETS_KEY=' /etc/carlos/host.env || printf 'CARLOS_SECRETS_KEY=%s\n' '$CARLOS_SECRETS_KEY' >> /etc/carlos/host.env" |
| +done |
| +incus exec sophie -- bash -c "grep -q '^CARLOS_SECRETS_PUBKEY=' /etc/carlos/host.env || printf 'CARLOS_SECRETS_PUBKEY=%s\n' '$CARLOS_SECRETS_PUBKEY' >> /etc/carlos/host.env" |
| +for b in leo sophie dennis; do incus exec $b -- bash -c 'stat -c "%n %a %U:%G" /etc/carlos/host.env; systemctl restart carlos-edge.service; systemctl is-active carlos-edge.service'; done |
| +incus exec sophie -- bash -c 'systemctl restart console.service; for i in $(seq 1 40); do [ "$(curl -s -o /dev/null -w %{http_code} http://127.0.0.1:8090/healthz)" = 200 ] && break; sleep 0.5; done; echo "console $(systemctl is-active console.service) healthz 200"' |
| +echo "pubkey fp: $(printf %s "$CARLOS_SECRETS_PUBKEY" | base64 -d | sha256sum | cut -c1-16)" |
| +echo "== H18 MinIO stores ($(date -u +%T.%3NZ))" |
| +for app in moveapp rollbackapp; do |
| + bk=harness-store-$app; u=store-$app; sk=$(od -An -N20 -tx1 /dev/urandom | tr -d ' \n') |
| + $MC mb --ignore-existing harness/$bk >/dev/null |
| + printf '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:*"],"Resource":["arn:aws:s3:::%s","arn:aws:s3:::%s/*"]}]}' $bk $bk > /root/harness/policy-$u.json |
| + $MC admin policy create harness $u /root/harness/policy-$u.json >/dev/null |
| + $MC admin user add harness $u $sk >/dev/null |
| + $MC admin policy attach harness $u --user $u >/dev/null 2>&1 || true |
| + (umask 077; printf 'MOVEPROBE_BUCKET=%s\nMOVEPROBE_REGION=eu-west-1\nMOVEPROBE_ENDPOINT=http://203.0.113.10:9000\nMOVEPROBE_ACCESS_KEY=%s\nMOVEPROBE_SECRET_KEY=%s\nMOVEPROBE_SECRET=%s\n' $bk $u $sk "$(od -An -N24 -tx1 /dev/urandom | tr -d ' \n')" > $K/$app.store.env) |
| + install -o operator -g operator -m 0600 $K/$app.store.env /home/operator/.$app.store.env |
| + echo "$app: bucket $bk user $u policy $(cat /root/harness/policy-$u.json | sha256sum | cut -c1-12)" |
| +done |
| +echo "== apps ($(date -u +%T.%3NZ))" |
| +install -d -o operator -g operator -m 0755 /home/operator/r9 |
| +aws s3 cp --quiet s3://carlos-harness-640012953448/artefacts/moveprobe-54ae7fb9/moveprobe /home/operator/r9/moveprobe |
| +chown operator:operator /home/operator/r9/moveprobe; chmod 0755 /home/operator/r9/moveprobe |
| +for app in moveapp rollbackapp; do |
| + OP "F=~/r9/moveprobe; sha256sum \$F; export CARLOS_SECRETS_PUBKEY='$CARLOS_SECRETS_PUBKEY' |
| +carlos apps create --app $app --account bab --console \$C |
| +carlos ship --app $app --account bab --console \$C --version mp1 --label 'moveprobe 54ae7fb9 (harness offline-move rehearsal)' --no-prompt \$F |
| +carlos promote --app $app --account bab --console \$C --no-prompt mp1 edge |
| +carlos instances enable --app $app --account bab --domain dev.harness.test --channel edge |
| +set -a; . ~/.$app.store.env; set +a |
| +carlos secrets set --app $app --account bab --console \$C MOVEPROBE_SECRET=\"\$MOVEPROBE_SECRET\" MOVEPROBE_ACCESS_KEY=\"\$MOVEPROBE_ACCESS_KEY\" MOVEPROBE_SECRET_KEY=\"\$MOVEPROBE_SECRET_KEY\" |
| +carlos env set --app $app --account bab --console \$C MOVEPROBE_BUCKET=\"\$MOVEPROBE_BUCKET\" MOVEPROBE_REGION=\"\$MOVEPROBE_REGION\" MOVEPROBE_ENDPOINT=\"\$MOVEPROBE_ENDPOINT\" HARNESS_NOTE=r9-$app |
| +carlos schedule set --app $app --account bab --console \$C --name every-minute --every 1m --path /tick |
| +carlos instances create --app $app --account bab --host $app.dev.harness.test --console \$C --no-prompt" |
| +done |
| +echo "== wake on sophie only ($(date -u +%T.%3NZ))" |
| +sleep 40 |
| +for app in moveapp rollbackapp; do |
| + for i in 1 2 3 4 5 6; do |
| + c=$(incus exec sophie -- curl -s -m 40 --cacert /root/harness-ca.pem -o /dev/null -w '%{http_code}' --resolve $app.dev.harness.test:443:127.0.0.1 https://$app.dev.harness.test/ready); echo "$app /ready $c"; [ "$c" = 200 ] && break; sleep 10 |
| + done |
| + S=$(grep ^MOVEPROBE_SECRET= $K/$app.store.env | cut -d= -f2) |
| + incus exec sophie -- curl -s -m 20 --cacert /root/harness-ca.pem -X POST -H "Authorization: Bearer $S" --resolve $app.dev.harness.test:443:127.0.0.1 "https://$app.dev.harness.test/arm-once?in=2700"; echo |
| + incus exec sophie -- curl -s -m 20 --cacert /root/harness-ca.pem -H "Authorization: Bearer $S" --resolve $app.dev.harness.test:443:127.0.0.1 https://$app.dev.harness.test/report | jq -c '{host,region,rows,fired,file_key_sha256,platform_key_sha256,object:.object.key,has_secret,worker_writes_committed}' |
| +done |
| +for b in leo sophie dennis; do echo "== $b routes"; incus exec $b -- python3 -c "import sqlite3; c=sqlite3.connect('file:/data/registry.db?mode=ro',uri=True); [print(r) for r in c.execute('select host,app,pool,region,channel,hibernate,status from routes order by host')]" 2>&1; done |
| +incus exec sophie -- bash -c 'for a in moveapp rollbackapp; do h=$a.dev.harness.test; ls -la /data/$h.env /data/$h.config.env /data/$h.db 2>&1; done; ls /data/instances /data/.instances 2>&1' |
| +OP 'carlos status --layout --console $C' 2>&1 | grep -v ALERT |
diff --git a/harness/scenarios/cohort1/blocks/r9-rearm.host.sh b/harness/scenarios/cohort1/blocks/r9-rearm.host.sh| new file mode 100644 |
| index 000000000..43f46cc28 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/r9-rearm.host.sh |
| @@ -0,0 +1,35 @@ |
| +#!/bin/bash |
| +# Run 9: the ruled re-arm (runbook G4's seven steps) for one armed box, from the host. |
| +# r9-rearm.host.sh <container> <box label> <channel> <TAG> |
| +# rearm-strict2.host.sh generalised to any armed box and channel (sophie follows canary, H8); |
| +# the box-side commands are rearm-strict.leo.sh unchanged (they name no box). |
| +# Promote only through the console, as the runbook's step 2 does. |
| +set -uo pipefail |
| +C=$1 LABEL=$2 CH=$3 TAG=$4 |
| +T0=$(date -u +%s) |
| +incus file push /root/harness/release/$TAG/carlos-linux-arm64 $C/root/carlos-$TAG --uid 0 --gid 0 --mode 0700 -q |
| +fresh() { runuser -l operator -c 'for b in ada-letterpress kathleen-juggling noor-marquetry; do date -u -d "$(aws s3api head-object --bucket harness-deployment --key status/boxes/$b.json --query LastModified --output text)" +%s; done' | sort -n | head -1; } |
| +for i in $(seq 1 60); do [ "$(fresh)" -gt "$T0" ] && break; sleep 10; done; echo "box reports fresh at $(date -u +%T)" |
| +SUMS_SHA=$(grep ' carlos-linux-arm64$' /root/harness/release/$TAG/SHA256SUMS.txt | cut -d' ' -f1) |
| +IDENT_SHA=$(runuser -l operator -c "aws s3 cp --quiet s3://harness-deployment/control/system/router/releases/$TAG.json -" | python3 -c ' |
| +import json,sys,base64 |
| +d=json.load(sys.stdin) |
| +if "payload" in d and isinstance(d["payload"],str): d=json.loads(base64.b64decode(d["payload"])) |
| +c=d.get("current") or d.get("release") or d |
| +print(c["artifacts"]["linux-arm64"]["sha256"])') |
| +echo "SUMS_SHA=$SUMS_SHA IDENT_SHA=$IDENT_SHA" |
| +[ "$SUMS_SHA" = "$IDENT_SHA" ] || { echo STOP; exit 1; } |
| +B=$(sed -e "s/__TAG__/$TAG/" -e "s/__SUMS_SHA__/$SUMS_SHA/" -e "s/__IDENT_SHA__/$IDENT_SHA/" /home/operator/cohort1/blocks/rearm-strict.leo.sh) |
| +insp() { runuser -l operator -c 'carlos system claims inspect --bucket harness-deployment --aws-region eu-west-1 --public-key "$(cat ~/release.pub)" 2>/dev/null | jq -c "{rev: .roster.revision, activations: (.roster.activations | keys)}"'; } |
| +echo "roster before: $(insp)" |
| +echo "== $C before: $(incus exec $C -- /opt/carlos/carlos version 2>&1 | tail -1) / prev $(incus exec $C -- /opt/carlos/carlos.prev version 2>&1 | tail -1)" |
| +echo "== 1 stop the path on $C $(date -u +%T.%3NZ)"; incus exec $C -- bash -c "$B" -- stop |
| +echo "== 2 promote router/$CH $(date -u +%T.%3NZ)"; runuser -l operator -c "carlos system update --console http://127.0.0.1:8090 --channel $CH --version $TAG --file ~/release-$TAG/carlos-linux-arm64 --platform linux-arm64 --yes" 2>&1 | grep -v ALERT |
| +echo "roster after promote: $(insp)" |
| +echo "== 3-7 on $C $(date -u +%T.%3NZ)"; incus exec $C -- bash -c "$B" -- apply; RC=$?; echo "$C block exit=$RC $(date -u +%T.%3NZ)" |
| +echo "== 6 operator-side evidence" |
| +T1=$(date -u +%s); for i in $(seq 1 60); do t=$(runuser -l operator -c 'date -u -d "$(aws s3api head-object --bucket harness-deployment --key status/boxes/'$LABEL'.json --query LastModified --output text)" +%s'); [ "$t" -gt "$T1" ] && break; sleep 10; done |
| +runuser -l operator -c 'aws s3 cp s3://harness-deployment/status/boxes/'$LABEL'.json - | jq -c "{generated_at, release: .metrics.release, binary: .metrics.binary_sha256[0:16], activation_id: .metrics.activation_id, activation_complete: .metrics.activation_complete}"' |
| +for i in $(seq 1 40); do a=$(insp); case "$a" in *'"activations":[]'*) echo "$(date -u +%T) roster $a"; break;; esac; sleep 15; done |
| +runuser -l operator -c "carlos system status --console http://127.0.0.1:8090" 2>&1 | grep -v ALERT |
| +exit $RC |
diff --git a/harness/scenarios/cohort1/blocks/r9-release.host.sh b/harness/scenarios/cohort1/blocks/r9-release.host.sh| new file mode 100644 |
| index 000000000..5147115c0 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/r9-release.host.sh |
| @@ -0,0 +1,21 @@ |
| +#!/bin/bash |
| +# Run 9 (a): the harness signing session for the release (on host, root). |
| +# r9-release.host.sh <TAG> <ART> <carlos sha> <console sha> <CV> |
| +# 1. release-window.sh: signed sums, operator CLI, and 5.0a item 4 for the release (C2): the release's |
| +# console shipped as CV and promoted to canary/console BEFORE publish-identity. |
| +# 2. signing session opened (w-open-signer.sh) and publish-identity for TAG with that CV (w-identity.sh). |
| +set -euo pipefail |
| +TAG=$1 ART=$2 CS=$3 COS=$4 CV=$5 |
| +echo "== release-window $TAG ($(date -u +%T.%3NZ))" |
| +TAG=$TAG ART=$ART SUMS="$CS $COS" CV=$CV bash /root/harness/release-window.sh |
| +echo "== session open ($(date -u +%T.%3NZ))" |
| +runuser -l operator -c "WTAG=$TAG WCV=$CV bash ~/cohort1/blocks/w-open-signer.sh" 2>&1 | grep -v '^help| ' |
| +echo "== publish-identity $TAG, console $CV ($(date -u +%T.%3NZ))" |
| +runuser -l operator -c "WTAG=$TAG WCV=$CV bash ~/cohort1/blocks/w-identity.sh" |
| +runuser -l operator -c "aws s3 cp --quiet s3://harness-deployment/control/system/router/releases/$TAG.json -" | python3 -c ' |
| +import json,sys,base64 |
| +d=json.load(sys.stdin) |
| +if "payload" in d and isinstance(d["payload"],str): d=json.loads(base64.b64decode(d["payload"])) |
| +c=d.get("current") or d.get("release") or d |
| +print("identity router", c["artifacts"]["linux-arm64"]["sha256"], "console", (c.get("console_artifacts") or {}).get("linux-arm64",{}).get("sha256"))' |
| +echo "== done ($(date -u +%T.%3NZ))" |
diff --git a/harness/scenarios/cohort1/blocks/r9-setup.host.sh b/harness/scenarios/cohort1/blocks/r9-setup.host.sh| new file mode 100644 |
| index 000000000..e87e405c7 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/r9-setup.host.sh |
| @@ -0,0 +1,64 @@ |
| +#!/bin/bash |
| +# Run 9 setup (on host, root): the dev-shaped state for the v0.28.5 roll rehearsal. |
| +# 1 every container and the console volume restored to s7; leo copied onto ext4 (H16) from leo-btrfs/s7; |
| +# the Run 8 ext4 leo kept, stopped, as leo-ext4-run8b (203.0.113.126) |
| +# 2 H14/H15 (vendor-shims.sh), H13 certificates for the hosts used tonight |
| +# 3 sophie's console PAUSED: saved copies (as dev's 2026-10-19 pause), then the runbook's "Pause again" |
| +# recipe verbatim (claim-dev-cohort1-runbook 5e23c83d; C1 already applied there) |
| +# 4 what dev already has that s7 lacks, through the ordinary doors with the operator CLI of s7's release: |
| +# wakecheck (pool-less, wc4 stand-in), then runbook step 4.2 (CARLOS_POOLS=cohort1 on leo) and 4.3 |
| +# 5 snapshot pre-0285 |
| +set -euo pipefail |
| +echo "== 1 restore s7, leo onto ext4 ($(date -u +%T.%3NZ))" |
| +bash /root/harness/leo-ext4-from.sh s7 leo-ext4-run8b 203.0.113.126 |
| +for c in leo leo-btrfs; do echo "$c: $(incus snapshot list $c -f csv -c n | paste -sd,)"; done |
| +echo "== 2 H14/H15, H13 ($(date -u +%T.%3NZ))" |
| +bash /root/harness/vendor-shims.sh |
| +bash /root/harness/certs.sh wakecheck.dev.harness.test moveapp.dev.harness.test rollbackapp.dev.harness.test |
| +install -m 0755 /root/harness/release/v0.28.5/carlos-linux-arm64 /usr/local/bin/carlos |
| +echo "operator CLI: $(/usr/local/bin/carlos version 2>&1 | tail -1)" |
| +T0=$(date -u +%s) |
| +fresh() { runuser -l operator -c 'for b in ada-letterpress kathleen-juggling noor-marquetry; do date -u -d "$(aws s3api head-object --bucket harness-deployment --key status/boxes/$b.json --query LastModified --output text)" +%s; done' | sort -n | head -1; } |
| +for i in $(seq 1 60); do [ "$(fresh)" -gt "$T0" ] && break; sleep 10; done; echo "box reports fresh at $(date -u +%T)" |
| +echo "== 3a saved copies ($(date -u +%T.%3NZ))" |
| +incus exec sophie -- bash -c 'set -euo pipefail; umask 077 |
| +D=/root/claim-trial/paused-20261019; install -d -m 0700 "$D" |
| +cp -p /etc/carlos/claim-console.env "$D/claim-console.env"; cp -p /etc/systemd/system/console.service.d/91-claim-runtime.conf "$D/91-claim-runtime.conf" |
| +cmp /etc/carlos/claim-console.env "$D/claim-console.env"; cmp /etc/systemd/system/console.service.d/91-claim-runtime.conf "$D/91-claim-runtime.conf" |
| +sha256sum "$D"/*' |
| +echo "== 3b Pause again, verbatim ($(date -u +%T.%3NZ))" |
| +incus exec sophie -- bash -s <<'PAUSE' |
| +set -euo pipefail |
| +umask 077 |
| +[ "$(sha256sum /etc/carlos/claim-console.env | cut -c1-64)" = 5df17bac42a91a02d90584edc5476c045400af57e467b2ea0815ba50b7e31d03 ] |
| +printf 'CARLOS_CONSOLE_ID=dev-console\nCONSOLE_HOME_REGION=ie\nCARLOS_HOST_CLAIM=\n' > /etc/carlos/.claim-console.env.pause |
| +[ "$(sha256sum /etc/carlos/.claim-console.env.pause | cut -c1-64)" = c1ae2900db31295090d2f4f2f9b5f6cdcca07e74545a6b1a9da039c3abf5c412 ] |
| +mv -T /etc/carlos/.claim-console.env.pause /etc/carlos/claim-console.env |
| +systemctl restart console.service |
| +systemctl is-active console.service |
| +for i in $(seq 1 40); do p=$(systemctl show -p MainPID --value console.service); [ "$(readlink /proc/$p/exe)" = /opt/carlos/system/console/console ] && break; sleep 0.25; done |
| +tr '\0' '\n' < "/proc/$p/environ" | grep '^CARLOS_HOST_CLAIM=' |
| +PAUSE |
| +incus exec sophie -- bash -c 'sleep 3; curl -s -o /dev/null -w "healthz %{http_code}\n" http://127.0.0.1:8090/healthz |
| +journalctl -u console.service --since -1min --no-pager | grep -c "off on a host-claim console" || true' |
| +echo "== 4 wakecheck, step 4.2, 4.3 ($(date -u +%T.%3NZ))" |
| +OP() { runuser -l operator -c "set -euo pipefail; C=http://127.0.0.1:8090; F=~/cohort1/pw/linux-arm64; $1"; } |
| +install -d -o operator -g operator -m 0755 /home/operator/cohort1/pw |
| +aws s3 cp --quiet s3://carlos-harness-640012953448/artefacts/v0.28.6/wakecheck-linux-arm64 /home/operator/cohort1/pw/linux-arm64 |
| +chown operator:operator /home/operator/cohort1/pw/linux-arm64 |
| +OP 'sha256sum $F; carlos apps create --app wakecheck --account bab --console $C |
| +carlos ship --app wakecheck --account bab --console $C --version wc4 --label "harness wakecheck stand-in, wc4" --no-prompt $F |
| +carlos promote --app wakecheck --account bab --console $C --no-prompt wc4 edge |
| +AWS_PROFILE=harness CARLOS_DEPLOYMENT_BUCKET=harness-deployment carlos instances enable --app wakecheck --account bab --domain dev.harness.test --channel edge |
| +carlos instances create --app wakecheck --account bab --host wakecheck.dev.harness.test --console $C --no-prompt' |
| +sleep 40 |
| +for b in sophie leo; do for i in 1 2; do incus exec $b -- curl -s -m 40 --cacert /root/harness-ca.pem -w " [%{http_code}] $b\n" --resolve wakecheck.dev.harness.test:443:127.0.0.1 https://wakecheck.dev.harness.test/; done; done |
| +incus exec leo -- bash -c 'cp -p /etc/carlos/host.env /etc/carlos/host.env.bak-pool-$(date -u +%Y%m%d) |
| +printf "CARLOS_POOLS=cohort1\n" >> /etc/carlos/host.env |
| +systemctl restart carlos-edge.service && systemctl is-active carlos-edge.service' |
| +sleep 8 |
| +incus exec leo -- bash -c 'runuser -u carlos -- /opt/carlos/carlos remove --registry /data/registry.db wakecheck.dev.harness.test; systemctl is-active carlos-edge.service' |
| +for b in leo sophie dennis; do echo "== $b $(incus exec $b -- /opt/carlos/carlos version 2>&1 | tail -1)"; incus exec $b -- python3 -c "import sqlite3; c=sqlite3.connect('file:/data/registry.db?mode=ro',uri=True); [print(r) for r in c.execute('select host,app,pool,region,channel,hibernate from routes order by host')]"; done |
| +echo "== 5 snapshot pre-0285 ($(date -u +%T.%3NZ))" |
| +bash /root/harness/snapshot.sh create pre-0285 |
| +incus exec sophie -- bash -c 'tr "\0" "\n" < /proc/$(systemctl show -p MainPID --value console.service)/environ | grep ^CARLOS_HOST_CLAIM=; curl -s -o /dev/null -w "healthz %{http_code}\n" http://127.0.0.1:8090/healthz' |