carlos / platform Public

harness: window run 2 blocks (8.1 to 9), F1 fix-forward patch, parameterised release and roll

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 75491d1f0a4cd4183de0f87a6a7a260d2e2805eb parent 7dd2091
14 files changed, +318 −17
  • harness/patches/f1-rootaws-child-alert.patch +14 −0
  • harness/release/release-window.sh +5 −5
  • harness/scenarios/cohort1/blocks/g4-roll.sh +3 −3
  • harness/scenarios/cohort1/blocks/run-leo.sh +8 −0
  • harness/scenarios/cohort1/blocks/w-env.box.sh +14 −0
  • harness/scenarios/cohort1/blocks/w-identity.sh +7 −7
  • harness/scenarios/cohort1/blocks/w-sums.sh +12 −0
  • harness/scenarios/cohort1/blocks/w81.box.sh +57 −0
  • harness/scenarios/cohort1/blocks/w81b.sh +40 −0
  • harness/scenarios/cohort1/blocks/w82.box.sh +57 −0
  • harness/scenarios/cohort1/blocks/w82b.sh +48 −0
  • harness/scenarios/cohort1/blocks/w84.box.sh +26 −0
  • harness/scenarios/cohort1/blocks/w9.box.sh +25 −0
  • harness/scenarios/cohort1/values.env +2 −2

CI failed — run details

CI log
=== gate ===
cd launchctx && go vet ./... && go test ./... -count=1
ok  	amadan.net/carlos/platform.git/launchctx	0.011s
?   	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	299.981s
?   	github.com/carlosframework/platform/cmd/changelog	[no test files]
ok  	github.com/carlosframework/platform/cmd/console	2.911s
ok  	github.com/carlosframework/platform/cmd/moveprobe	93.279s
ok  	github.com/carlosframework/platform/cmd/zddprobe	0.719s
?   	github.com/carlosframework/platform/harness/apps/wakecheck	[no test files]
ok  	github.com/carlosframework/platform/internal/activator	250.993s
ok  	github.com/carlosframework/platform/internal/agentsock	0.028s
ok  	github.com/carlosframework/platform/internal/alerting	0.008s
ok  	github.com/carlosframework/platform/internal/analytics	0.031s
ok  	github.com/carlosframework/platform/internal/appconfig	2.525s
ok  	github.com/carlosframework/platform/internal/apperr	0.102s
ok  	github.com/carlosframework/platform/internal/applog	0.179s
ok  	github.com/carlosframework/platform/internal/awsinv	0.005s
ok  	github.com/carlosframework/platform/internal/boxchoice	0.014s
ok  	github.com/carlosframework/platform/internal/boxid	1.504s
?   	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.008s
ok  	github.com/carlosframework/platform/internal/caps	0.015s
ok  	github.com/carlosframework/platform/internal/certwarm	0.004s
ok  	github.com/carlosframework/platform/internal/cgroup	0.710s
ok  	github.com/carlosframework/platform/internal/changelog	0.350s
ok  	github.com/carlosframework/platform/internal/claimactivation	0.847s
ok  	github.com/carlosframework/platform/internal/clamd	0.061s
?   	github.com/carlosframework/platform/internal/cliflag	[no test files]
ok  	github.com/carlosframework/platform/internal/console	401.964s
?   	github.com/carlosframework/platform/internal/controlname	[no test files]
?   	github.com/carlosframework/platform/internal/controlsock	[no test files]
ok  	github.com/carlosframework/platform/internal/dbdoor	6.440s
ok  	github.com/carlosframework/platform/internal/dbdoor/dbdoortest	0.016s
ok  	github.com/carlosframework/platform/internal/dbverify	0.005s
ok  	github.com/carlosframework/platform/internal/dnsrec	0.005s
ok  	github.com/carlosframework/platform/internal/docsite	0.007s
ok  	github.com/carlosframework/platform/internal/domains	2.426s
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.806s
?   	github.com/carlosframework/platform/internal/edgeproof	[no test files]
ok  	github.com/carlosframework/platform/internal/edgesfile	0.014s
ok  	github.com/carlosframework/platform/internal/fleetapi	0.142s
ok  	github.com/carlosframework/platform/internal/gate	1.660s
ok  	github.com/carlosframework/platform/internal/genselect	0.018s
ok  	github.com/carlosframework/platform/internal/geo	0.015s
ok  	github.com/carlosframework/platform/internal/geoip	0.040s
ok  	github.com/carlosframework/platform/internal/historyreadback	0.163s
ok  	github.com/carlosframework/platform/internal/host	182.094s
ok  	github.com/carlosframework/platform/internal/hostactors	6.485s
ok  	github.com/carlosframework/platform/internal/hostactors/awsmembership	0.005s
ok  	github.com/carlosframework/platform/internal/hostbox	2.729s
ok  	github.com/carlosframework/platform/internal/hostclaim	0.572s
ok  	github.com/carlosframework/platform/internal/hostenv	0.004s
ok  	github.com/carlosframework/platform/internal/hostevidence	0.007s
ok  	github.com/carlosframework/platform/internal/hostexec	4.762s
ok  	github.com/carlosframework/platform/internal/hostfence	0.033s
ok  	github.com/carlosframework/platform/internal/hostfiles	10.390s
ok  	github.com/carlosframework/platform/internal/hostfloor	0.014s
ok  	github.com/carlosframework/platform/internal/hostguard	1.043s
ok  	github.com/carlosframework/platform/internal/hostops	1.652s
?   	github.com/carlosframework/platform/internal/hostops/fencerelease	[no test files]
ok  	github.com/carlosframework/platform/internal/hostops/internal/fencerelease	0.002s
ok  	github.com/carlosframework/platform/internal/hostquarantine	0.002s
ok  	github.com/carlosframework/platform/internal/hostrelocate	0.456s
ok  	github.com/carlosframework/platform/internal/hostresolve	0.139s
ok  	github.com/carlosframework/platform/internal/hostwrite	0.002s
ok  	github.com/carlosframework/platform/internal/infraview	0.004s
ok  	github.com/carlosframework/platform/internal/instancectl	5.219s
ok  	github.com/carlosframework/platform/internal/instanceexec	2.718s
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.007s
ok  	github.com/carlosframework/platform/internal/layout	1.538s
ok  	github.com/carlosframework/platform/internal/lbhealth	0.005s
ok  	github.com/carlosframework/platform/internal/lease	9.799s
ok  	github.com/carlosframework/platform/internal/lease/leasetest	0.006s
ok  	github.com/carlosframework/platform/internal/ledger	0.014s
ok  	github.com/carlosframework/platform/internal/mail	0.161s
ok  	github.com/carlosframework/platform/internal/maintenance	0.082s
ok  	github.com/carlosframework/platform/internal/maintenanceexec	5.532s
ok  	github.com/carlosframework/platform/internal/maintenanceguard	0.071s
ok  	github.com/carlosframework/platform/internal/metrics	0.005s
ok  	github.com/carlosframework/platform/internal/moves	20.906s
ok  	github.com/carlosframework/platform/internal/moves/archive	0.788s
ok  	github.com/carlosframework/platform/internal/objstore	0.168s
ok  	github.com/carlosframework/platform/internal/ops	0.163s
ok  	github.com/carlosframework/platform/internal/park	0.200s
ok  	github.com/carlosframework/platform/internal/privatefile	0.003s
2026/10/20 08:03:02 provision: listing apps/bab/blog/instances/: list refused — its records are unseen this pass
2026/10/20 08:03:02 provision: listing apps/bab/: listdirs refused — its records are unseen this pass
2026/10/20 08:03:02 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:02 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:02 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:02 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 08:03:02 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 08:03:02 provision: skipping record apps/bac/tito/instances/one.example.com.json: unreadable: read refused
2026/10/20 08:03:02 provision: listing apps/bac/tito/instances/: list refused — its records are unseen this pass
2026/10/20 08:03:02 provision: an app's records could not be listed: they are skipped
2026/10/20 08:03:02 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:02 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/20 08:03:02 provision: remove retired instance route shop.example: provision: claim admission unavailable
2026/10/20 08:03:02 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/20 08:03:02 provision: remove retired sidecar route worker.sidecar.internal: provision: claim admission unavailable
2026/10/20 08:03:02 provision: claim install acme.go.tito.io: provision: claim admission unavailable
2026/10/20 08:03:02 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:02 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 08:03:02 provision: claim install bot.eleven.bac.sidecar.internal: provision: claim admission unavailable
2026/10/20 08:03:02 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 08:03:02 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/20 08:03:02 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 08:03:02 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: no sealed config
2026/10/20 08:03:02 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:02 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:02 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 08:03:02 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 08:03:02 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 08:03:02 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 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: REFUSING to mint sidecar bot.eleven.bac.sidecar.internal: bot.eleven.bac.sidecar.internal-sidecar.env is staged on this box — the legacy file co-spawn and a native sidecar row are two mechanisms for one host; remove the file to migrate this host onto sidecar records
2026/10/20 08:03:03 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 08:03:03 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: claim install acme.go.tito.io: registry: claim row ownership changed or unknown
2026/10/20 08:03:03 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 08:03:03 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["run"])
2026/10/20 08:03:03 provision: claim install bot.eleven.bac.sidecar.internal: registry: claim row ownership changed or unknown
2026/10/20 08:03:03 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 08:03:03 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 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:03 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:03 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:03 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 08:03:03 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:03 provision: skipping record apps/bac/tito/instances/new.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:03 provision: minted instance route rk.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rl.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rg.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rj.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rf.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rh.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route ri.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route ra.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rb.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rc.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route rd.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/20 08:03:03 provision: skipping record apps/bac/tito/instances/rb.go.tito.io.json: read failed: read refused
2026/10/20 08:03:03 provision: minted instance route re.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appd.example (app "appd" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appf.example (app "appf" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.apph.example (app "apph" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appj.example (app "appj" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appa.example (app "appa" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appb.example (app "appb" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appc.example (app "appc" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appe.example (app "appe" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appg.example (app "appg" acct "bac")
2026/10/20 08:03:03 provision: minted instance route x.appi.example (app "appi" acct "bac")
2026/10/20 08:03:03 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 08:03:03 provision: minted instance route r0119.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0062.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0074.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0100.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0107.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0037.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0001.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0030.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0035.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0095.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0129.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0006.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0015.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0018.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0039.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0068.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0090.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0002.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0049.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0019.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0026.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0041.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0057.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0060.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0079.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0080.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0067.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0128.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0022.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0028.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0056.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0103.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0008.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0076.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0053.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0088.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0016.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0017.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0086.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0096.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0105.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0013.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0043.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0064.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0072.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0083.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0089.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0012.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0061.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0024.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0051.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0120.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0007.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0021.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0108.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0112.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0029.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0031.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0038.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0092.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0114.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0004.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0102.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0123.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0027.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0124.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0034.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0084.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0091.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0093.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0117.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0122.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0040.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0050.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0071.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0099.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0125.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0020.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0052.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0082.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0036.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0077.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0101.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0000.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0045.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0010.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0055.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0059.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0110.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0116.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0065.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0070.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0087.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0094.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0011.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0014.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0109.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0118.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0121.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0009.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0042.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0046.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0054.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0066.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0127.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0003.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0025.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0044.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0032.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0047.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0078.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0085.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0115.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0063.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0073.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0075.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0081.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0111.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0113.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0126.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0048.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0058.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0069.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0097.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0098.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0104.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0106.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0005.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0023.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:03 provision: minted instance route r0033.go.tito.io (app "tito" acct "bac")
--- FAIL: TestPlan14RootReadCensus (4.56s)
    plan14_root_reads_test.go:940: root read census: 102 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/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/b1.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/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/p9.box.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/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.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 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 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 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route console.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted service route svc.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route shared.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 08:03:14 provision: converged acme.go.tito.io channel edge -> canary/rehearsal
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: empty channel
2026/10/20 08:03:14 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: converged acme.go.tito.io environment "" -> "staging"
2026/10/20 08:03:14 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: converged acme.go.tito.io steering "" -> "latency"
2026/10/20 08:03:14 provision: converged acme.go.tito.io steering "latency" -> ""
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: converged acme.go.tito.io hibernate false -> true
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: converged acme.go.tito.io hibernate true -> false (replication "daily" cleared: only a hibernating route's rung is read)
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: converged acme.go.tito.io status-named false -> true
2026/10/20 08:03:14 provision: converged acme.go.tito.io status-named true -> false
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted service route ha.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 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 08:03:14 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 08:03:14 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 08:03:14 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 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 08:03:14 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 08:03:14 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 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: minted service route whole.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: skipping accounts/bac/account.json: malformed account manifest: invalid character 'o' in literal null (expecting 'u')
2026/10/20 08:03:14 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: manifest bac/tito: read failed: provision: manifest bac/tito: invalid character 'o' in literal null (expecting 'u')
2026/10/20 08:03:14 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 08:03:14 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 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 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 08:03:14 provision: not removing acme$evil.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 08:03:14 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 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 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 08:03:14 provision: not removing bad-service.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 08:03:14 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: skipping record apps/bac/tito/instances/no-channel.go.tito.io.json: empty channel
2026/10/20 08:03:14 provision: not removing no-channel.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 08:03:14 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:14 provision: skipping record apps/bac/tito/instances/acme.go.tito.io.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:14 provision: not removing acme.go.tito.io: its record exists but could not be read cleanly this pass
2026/10/20 08:03:14 provision: removed retired instance route ghost.go.tito.io (record gone)
2026/10/20 08:03:15 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 08:03:15 provision: minted instance route dup.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 08:03:15 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/20 08:03:15 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 08:03:15 provision: removed retired static route site.go.tito.io (app in the trash)
2026/10/20 08:03:15 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 08:03:15 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 08:03:15 provision: removed retired instance route acme.go.tito.io (app in the trash)
2026/10/20 08:03:15 provision: bac/tito is in the trash — not minting instance routes for it
2026/10/20 08:03:15 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 08:03:15 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 08:03:15 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 08:03:15 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 08:03:15 provision: converged acme.go.tito.io channel canary/rehearsal -> edge
2026/10/20 08:03:15 provision: converged acme.go.tito.io environment "staging" -> ""
2026/10/20 08:03:15 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 08:03:15 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 08:03:15 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 08:03:15 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 08:03:15 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 08:03:15 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 08:03:15 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 08:03:15 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 08:03:15 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 08:03:15 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 08:03:15 provision: dry-run: would converge adopt.go.tito.io channel stable -> edge
2026/10/20 08:03:15 provision: dry-run: would converge adopt.go.tito.io environment "" -> "staging"
2026/10/20 08:03:15 provision: dry-run: would converge owned.go.tito.io channel stable -> edge
2026/10/20 08:03:15 provision: dry-run: would converge owned.go.tito.io environment "" -> "staging"
2026/10/20 08:03:15 provision: dry-run: would converge owned.go.tito.io hibernate false -> true
2026/10/20 08:03:15 provision: dry-run: would converge owned.go.tito.io seed
2026/10/20 08:03:15 provision: dry-run: would mint instance route acme.go.tito.io (app "tito" acct "bac" channel "stable")
2026/10/20 08:03:15 provision: dry-run: would remove retired instance route gone.go.tito.io (record gone)
2026/10/20 08:03:15 provision: adopted existing route adopt.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 08:03:15 provision: converged adopt.go.tito.io channel stable -> edge
2026/10/20 08:03:15 provision: converged adopt.go.tito.io environment "" -> "staging"
2026/10/20 08:03:15 provision: converged owned.go.tito.io channel stable -> edge
2026/10/20 08:03:15 provision: converged owned.go.tito.io environment "" -> "staging"
2026/10/20 08:03:15 provision: converged owned.go.tito.io hibernate false -> true
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: removed retired instance route gone.go.tito.io (record gone)
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: adopted existing route story.carlosframework.com (app "story" acct "bad") — this record now owns its channel and environment
2026/10/20 08:03:15 provision: story.carlosframework.com exists but is not the route this record describes (kind "instance"/"static") — leaving it alone
2026/10/20 08:03:15 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted service route pub.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted service route pubs.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted service route named.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted service route priv.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route unit.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route exec.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted service route loop.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted static route pisite.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted static route site.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: removed retired static route site.go.tito.io (record gone)
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: converged acme.go.tito.io replicas "ie,uk" -> "uk"
2026/10/20 08:03:15 provision: converged acme.go.tito.io replicas "uk" -> ""
2026/10/20 08:03:15 provision: minted instance route acme-uk.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: converged acme-uk.go.tito.io replica mark true -> false
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 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 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: minted instance route router.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:15 provision: acme.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/20 08:03:15 provision: router.go.tito.io: not minting this pass: the box's layout intent could not be read: store down
2026/10/20 08:03:15 provision: adopted existing route acme.go.tito.io (app "tito" acct "bac") — this record now owns its channel and environment
2026/10/20 08:03:15 provision: converged acme.go.tito.io channel stable -> edge
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/20 08:03:15 provision: not removing acme.go.tito.io (record gone): participant of a running operation
2026/10/20 08:03:15 provision: removed retired instance route acme.go.tito.io (record gone)
2026/10/20 08:03:15 provision: minted instance route acme.go.tito.io held landing by mv_acme (app "tito" acct "bac")
2026/10/20 08:03:15 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 08:03:15 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/20 08:03:15 provision: acme.go.tito.io: held restoring by rb_other, not by mv_acme; leaving it
2026/10/20 08:03:15 provision: acme.go.tito.io: the row is not this pass's (app "other" acct ""); not holding it for mv_acme
2026/10/20 08:03:15 provision: acme.go.tito.io exists but is not the route this record describes (app "other"/"tito") — leaving it alone
2026/10/20 08:03:15 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 08:03:15 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 08:03:15 provision: held acme.go.tito.io landing by mv_acme (was ready)
2026/10/20 08:03:16 provision: minted instance route acme.example.com (app "shop" acct "bac")
2026/10/20 08:03:16 provision: minted instance route plain.example.com (app "shop" acct "bac")
2026/10/20 08:03:16 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:16 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 08:03:16 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:16 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 08:03:16 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:16 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 08:03:16 provision: skipping record apps/bac/shop/instances/garbled.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:16 provision: listing apps/bac/shop/instances/: list refused — its records are unseen this pass
2026/10/20 08:03:16 provision: a.shop.example.com: swapped for import sd_v75mp6oz5fiuprzuiufhvul3ie (the original route is journaled)
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_v75mp6oz5fiuprzuiufhvul3ie committed: its gate is cleared and its journal row dropped
2026/10/20 08:03:16 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 08:03:16 provision: a.shop.example.com: import sd_qnymthdzkunngatrkxdudwt4ue rolled back to its original route
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_qnymthdzkunngatrkxdudwt4ue: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_qnymthdzkunngatrkxdudwt4ue is cleaned up and its journal row retired
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_k6ld6v2n7ge7ndozrdcotsnlmi rolled back to its original route
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_k6ld6v2n7ge7ndozrdcotsnlmi: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_k6ld6v2n7ge7ndozrdcotsnlmi is cleaned up and its journal row retired
2026/10/20 08:03:16 provision: dry-run: would redo a.shop.example.com's swap record CAS for import sd_gs6a75zmmnpqrtrgcflqxkf4fi
2026/10/20 08:03:16 provision: dry-run: would clear a.shop.example.com's import gate
2026/10/20 08:03:16 provision: dry-run: would converge a.shop.example.com seed source
2026/10/20 08:03:16 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 08:03:16 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 08:03:16 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 08:03:16 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 08:03:16 provision: a.shop.example.com: import sd_6leshep2dwghewxu3tvsu4jvsu cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_mekto5wk6yuhqr445msgvvj6yi cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_3p4larxygl33b5hzru6bovnvvm is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_mmpar73rat4gwqk3snnj3rser4 is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_hccea3f5bbembukdmu7pzn6imq is journaled, but this box cannot act on imports; its row is left alone
2026/10/20 08:03:16 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 08:03:16 provision: b.shop.example.com: import sd_65h53ebgbhcpjxpwqds235ssam left alone this pass: the import journal could not be read
2026/10/20 08:03:16 provision: c.shop.example.com: import sd_h3ykcq5iifrzkv3w3yaaupmora left alone this pass: the import journal could not be read
2026/10/20 08:03:16 provision: a.shop.example.com: import sd_5gnvgkxkhbztlhdhl3r6qmcicq committed: its gate is cleared and its journal row dropped
2026/10/20 08:03:16 provision: a.shop.example.com: not converging import sd_durkvsui5kfeufgtmdhruoanvm: it is swapped but not committed, and the row on this box has no import gate
2026/10/20 08:03:16 provision: a.shop.example.com: not converging import sd_b4dl5zctk5swb5rprcoxwts4b4: it is swapped but not committed, and the row on this box has no import gate
2026/10/20 08:03:16 provision: a.shop.example.com: not converging import sd_ojsmb4paggelrtv5cy5ezy5qfi: it is placed but not committed, and the row on this box has no import gate
2026/10/20 08:03:16 provision: a.shop.example.com: not converging import sd_ovxvvdrs3273tomfy4jptb3meu: it is placed but not committed, and the row on this box has no import gate
2026/10/20 08:03:16 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 08:03:16 provision: converge seed source on a.shop.example.com: constraint failed: seed_source is read-only here (1811)
2026/10/20 08:03:16 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 08:03:17 provision: a.shop.example.com: import sd_gk32ls67o25wi5w7g23yvinhfe committed: its gate is cleared and its journal row dropped
2026/10/20 08:03:17 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 08:03:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:17 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 08:03:17 provision: acme.go.tito.io: not minting a seeded instance: this box does not mint nested (<nil>)
2026/10/20 08:03:17 provision: acme.go.tito.io: not minting a seeded instance: claim control is on for this box
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_kpfuwcc6slltpnrtmsavwaexhm: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_kpfuwcc6slltpnrtmsavwaexhm rolled back (no box had swapped it)
2026/10/20 08:03:17 provision: acme.go.tito.io: not minting a seeded instance: its record does not describe a hibernating instance
2026/10/20 08:03:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:17 provision: removed instance route acme.go.tito.io (its seed sd_i4jfooapiuqkszsu5cgzw2gbqu was aborted); the next pass rolls it back
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_i4jfooapiuqkszsu5cgzw2gbqu: this box cannot read seed markers, and places no seed; nothing local is removed
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_i4jfooapiuqkszsu5cgzw2gbqu rolled back (no box had swapped it)
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_gvefvf24553qiglvesq2lfzcga has a row this pass may not remove; leaving the seed aborted
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_d5vsjpnh34yamjqqhklao6sb6q rolled back (no box had swapped it)
2026/10/20 08:03:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:17 provision: removed instance route acme.go.tito.io (its seed sd_dhoxbi53ufknpejeglwyzpmxfq was aborted); the next pass rolls it back
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_dhoxbi53ufknpejeglwyzpmxfq has no route on this box: its local data is removed
2026/10/20 08:03:17 provision: acme.go.tito.io: aborted seed sd_dhoxbi53ufknpejeglwyzpmxfq rolled back (no box had swapped it)
2026/10/20 08:03:17 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_hte636h7xyud5vuxjlws6xlg74 (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_hte636h7xyud5vuxjlws6xlg74 rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_hte636h7xyud5vuxjlws6xlg74 is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_fsymgbcs77melbfstbmvqyy4nm (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_fsymgbcs77melbfstbmvqyy4nm rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_fsymgbcs77melbfstbmvqyy4nm is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_6a7pognbfnticwm74oya2rb2ra (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_6a7pognbfnticwm74oya2rb2ra rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_6a7pognbfnticwm74oya2rb2ra: the host's replica is left alone: its record no longer names this seed
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_6a7pognbfnticwm74oya2rb2ra is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_llzyibmp743esu2ytgtbfrrjxy (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_llzyibmp743esu2ytgtbfrrjxy rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_llzyibmp743esu2ytgtbfrrjxy rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_llzyibmp743esu2ytgtbfrrjxy is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_gulp3zul637qav2z4kxlk3e3je (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_gulp3zul637qav2z4kxlk3e3je rollback deferred: the host is not fenced and stopped yet (stop unproven)
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_ru6rmxcph5qtczuusfv3asvpou (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_ru6rmxcph5qtczuusfv3asvpou is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_7in4tzxrtvmq5zjkmy2d7tl5ye (the original route is journaled)
2026/10/20 08:03:17 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: malformed: provision: invalid maintenance projection or protected fields
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_7in4tzxrtvmq5zjkmy2d7tl5ye left alone this pass: its record could not be read
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_epoud4p2ka45l2npp7czopmxtq (the original route is journaled)
2026/10/20 08:03:17 provision: skipping record apps/bac/shop/instances/a.shop.example.com.json: read failed: connection reset
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_epoud4p2ka45l2npp7czopmxtq left alone this pass: its record could not be read
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_3wloccdo573yqxbskgabms2mfm (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_3wloccdo573yqxbskgabms2mfm: close the import gate: constraint failed: injected (1811)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_3wloccdo573yqxbskgabms2mfm rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_3wloccdo573yqxbskgabms2mfm is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_g4gxapzdg6tkiztafozbypue2m (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_g4gxapzdg6tkiztafozbypue2m: close the import gate: constraint failed: injected (1811)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_g4gxapzdg6tkiztafozbypue2m rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_g4gxapzdg6tkiztafozbypue2m is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_miob4wtkrnp7we67azjw4r42py (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_miob4wtkrnp7we67azjw4r42py rollback deferred: the host is not fenced and stopped yet (injected failure at fence)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_miob4wtkrnp7we67azjw4r42py rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_miob4wtkrnp7we67azjw4r42py is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_wvo74k6bpyxyd3go7ockbywhku (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_wvo74k6bpyxyd3go7ockbywhku rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_wvo74k6bpyxyd3go7ockbywhku is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_232qohhbnbi5xgsx7c5ztcx3ty (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_232qohhbnbi5xgsx7c5ztcx3ty: retire its instance key: injected failure at retire-key
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_232qohhbnbi5xgsx7c5ztcx3ty rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_232qohhbnbi5xgsx7c5ztcx3ty is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_irszmgsctzlsqnu6al6yabyumu (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_irszmgsctzlsqnu6al6yabyumu rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_irszmgsctzlsqnu6al6yabyumu is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_vbn5y2kmjt7rdvalufg2hf6c3e (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_vbn5y2kmjt7rdvalufg2hf6c3e: remove its local data: injected failure at remove-local
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_vbn5y2kmjt7rdvalufg2hf6c3e rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_vbn5y2kmjt7rdvalufg2hf6c3e is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_7apkdbu7vfna655djebxbltxei (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_7apkdbu7vfna655djebxbltxei rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_7apkdbu7vfna655djebxbltxei is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_i36yhum4haqsitinuhh5726jpy (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_i36yhum4haqsitinuhh5726jpy: remove its local data: injected failure at remove-local-done
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_i36yhum4haqsitinuhh5726jpy rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_i36yhum4haqsitinuhh5726jpy is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_5mfq7qfnd7i5abypdlwpigriry (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_5mfq7qfnd7i5abypdlwpigriry rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_5mfq7qfnd7i5abypdlwpigriry is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_k5zv5fawkazfgtttdpu4ypiwfm (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_k5zv5fawkazfgtttdpu4ypiwfm: restore the original route: constraint failed: injected (1811)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_k5zv5fawkazfgtttdpu4ypiwfm rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_k5zv5fawkazfgtttdpu4ypiwfm is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_kmq7ubgkk4haoypp2tk46zccqu (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_kmq7ubgkk4haoypp2tk46zccqu: restore the original route: constraint failed: injected (1811)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_kmq7ubgkk4haoypp2tk46zccqu rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_kmq7ubgkk4haoypp2tk46zccqu is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_4cs4trta27flzffox5luzuymdu (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_4cs4trta27flzffox5luzuymdu is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_g5cc65bny7vtsyjdwsrkdxg45m (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_g5cc65bny7vtsyjdwsrkdxg45m rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_g5cc65bny7vtsyjdwsrkdxg45m: delete its snapshot: injected failure at delete-snapshot
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_g5cc65bny7vtsyjdwsrkdxg45m is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_4ck6indiq3itwnlzmvtvy7lmqm (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_4ck6indiq3itwnlzmvtvy7lmqm rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_4ck6indiq3itwnlzmvtvy7lmqm is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_7e3f6xnb64tloqb5xyt4ejoo74 (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_7e3f6xnb64tloqb5xyt4ejoo74 rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_7e3f6xnb64tloqb5xyt4ejoo74: delete the host's replica: injected failure at delete-replica
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_7e3f6xnb64tloqb5xyt4ejoo74 is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_ithnbdjifxc6ubcrzfanlf6j7m (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_ithnbdjifxc6ubcrzfanlf6j7m rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_ithnbdjifxc6ubcrzfanlf6j7m is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_wloammuxp7vy3jduqwjxso7uxm (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_wloammuxp7vy3jduqwjxso7uxm rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_wloammuxp7vy3jduqwjxso7uxm: retire its journal row: constraint failed: injected (1811)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_wloammuxp7vy3jduqwjxso7uxm is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_fivgooxmfe4syz5bv2kevd3ib4 (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_fivgooxmfe4syz5bv2kevd3ib4 rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_fivgooxmfe4syz5bv2kevd3ib4: retire its journal row: constraint failed: injected (1811)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_fivgooxmfe4syz5bv2kevd3ib4 is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_pzjtwjmn7h4rvprqwpcbrqk6mm (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_pzjtwjmn7h4rvprqwpcbrqk6mm rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_pzjtwjmn7h4rvprqwpcbrqk6mm is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: mark import sd_pzjtwjmn7h4rvprqwpcbrqk6mm rolled back: injected failure at cas
2026/10/20 08:03:17 provision: a.shop.example.com: aborted seed sd_pzjtwjmn7h4rvprqwpcbrqk6mm rolled back (no box had swapped it)
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_sdkqttbw6qzyhmqvprudiq2oqe (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_sdkqttbw6qzyhmqvprudiq2oqe rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_sdkqttbw6qzyhmqvprudiq2oqe is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: aborted seed sd_sdkqttbw6qzyhmqvprudiq2oqe rolled back (no box had swapped it)
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_uwcf2mzsvggxe3wyyql2jvp744 (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_uwcf2mzsvggxe3wyyql2jvp744 rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_uwcf2mzsvggxe3wyyql2jvp744 rollback deferred: the host is not fenced and stopped yet (<nil>)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_uwcf2mzsvggxe3wyyql2jvp744 rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_uwcf2mzsvggxe3wyyql2jvp744 is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_72xxauxaorvrxmyzaitpocedj4 (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_72xxauxaorvrxmyzaitpocedj4 rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_72xxauxaorvrxmyzaitpocedj4 is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_mufdd5s4pa7epar23oj2njxv6e (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_mufdd5s4pa7epar23oj2njxv6e rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_mufdd5s4pa7epar23oj2njxv6e is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_3zgmo653zw7b76zfchagjdbhva (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_3zgmo653zw7b76zfchagjdbhva rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_3zgmo653zw7b76zfchagjdbhva is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 08:03:17 provision: a.shop.example.com: swapped for import sd_kkf3mve52hplsig2li6ahgxxli (the original route is journaled)
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_kkf3mve52hplsig2li6ahgxxli rolled back to its original route
2026/10/20 08:03:17 provision: a.shop.example.com: import sd_kkf3mve52hplsig2li6ahgxxli is cleaned up and its journal row retired
2026/10/20 08:03:17 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_4xzvwukamczsg4mv2dlbbrwvzi (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_4xzvwukamczsg4mv2dlbbrwvzi rolled back to its original route
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_4xzvwukamczsg4mv2dlbbrwvzi is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_a5iswdeukrz6gehjcdfpocqnpy (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_a5iswdeukrz6gehjcdfpocqnpy rolled back to its original route
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_a5iswdeukrz6gehjcdfpocqnpy is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_q7wormrjsigysd47ltkpn7ozxy (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_q7wormrjsigysd47ltkpn7ozxy rolled back to its original route
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_q7wormrjsigysd47ltkpn7ozxy is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: minted instance route a.shop.example.com (app "other" acct "bac")
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_rhz6ua5ya54akemxh3woyjfufq (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_rhz6ua5ya54akemxh3woyjfufq has no route on this box: its local data is removed and no route is put back
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_rhz6ua5ya54akemxh3woyjfufq is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_qty7fwi76wcbiv3k5c2vfmxci4 (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_kp33vgj6p2ibxq7sdioiqjqzyu (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_shwuv6izqzpgnei2woopjvptjm (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_shwuv6izqzpgnei2woopjvptjm cannot roll back on this box: the activator is not wired; it stays journaled and gated
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_sjzhw47wqw2n55ajpcf5h2ilma (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_sjzhw47wqw2n55ajpcf5h2ilma is not rolled back: the route changed under the fence, so nothing there is touched
2026/10/20 08:03:18 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 08:03:18 provision: a.shop.example.com: import ../not-a-seed is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_xmu2okk3bfsxxjimyqv4pzcfmm (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_njn23u7l5vpadrgetlt4niqa2m (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_f6kjuyso6dm4ybucqtnknl66uq (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_wy5dcgij2cwmbftwu7kozaf4yy (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_e7fiogslc4zob43wimgmtpvwli (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_e7fiogslc4zob43wimgmtpvwli rollback deferred: the host is not fenced and stopped yet (stop evidence unreadable)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_hu4v2wkzl54dtd4olxci5odws4 (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_hu4v2wkzl54dtd4olxci5odws4 has no route on this box: its local data is removed and no route is put back
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_hu4v2wkzl54dtd4olxci5odws4 is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_3a4uzy66lvs647f6uyp2v6524y (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_3a4uzy66lvs647f6uyp2v6524y: remove its local data: injected failure at remove-local
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_3a4uzy66lvs647f6uyp2v6524y is not rolled back: the route at the host is not the import's, so nothing there is touched
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_a35zvdycwolrtoj3l4az5znfpq (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_a35zvdycwolrtoj3l4az5znfpq: a route appeared at the host, so its local database is left and the rollback waits
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_g3ccbedvbf4wy2e6etry2cmhzi (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_g3ccbedvbf4wy2e6etry2cmhzi rollback deferred: no fence generation: the generation source answered 0
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_zmpbyp4h2ngzy2kuw24h6eqyem (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_zmpbyp4h2ngzy2kuw24h6eqyem rollback deferred: no fence generation: registry busy
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_nhnsblyuya4alsn4nswc5niq4u (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_lst4mtrmmcbhojzcwne6kncasq (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_loknuaqv54mzwltezzl2ukbqpa (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import deferred: the instance's env file could not be read: a symlink
2026/10/20 08:03:18 provision: a.shop.example.com: import deferred: this box cannot read the instance's env file
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_xkykriruhazbci22rhzkihot5m (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_xkykriruhazbci22rhzkihot5m rolled back to its original route
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_xkykriruhazbci22rhzkihot5m is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_hy4xal4hrzxw43hibthpzr7uxm (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_hy4xal4hrzxw43hibthpzr7uxm rolled back to its original route
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_hy4xal4hrzxw43hibthpzr7uxm is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_tyhzg7sjpappsyheutnejyxx5a (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_tyhzg7sjpappsyheutnejyxx5a rolled back to its original route
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_tyhzg7sjpappsyheutnejyxx5a is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_fsstxb6xjbnk3lttqy5sjgntki (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_fsstxb6xjbnk3lttqy5sjgntki: retire its instance key: the env file is a symlink
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_fsstxb6xjbnk3lttqy5sjgntki rolled back to its original route
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_fsstxb6xjbnk3lttqy5sjgntki is cleaned up and its journal row retired
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_fa7bammv4wuarxjgvxw27npg3a (the original route is journaled)
2026/10/20 08:03:18 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 08:03:18 provision: a.shop.example.com: swapped for import sd_7jnjvuuksgayejn5xabblr2h4e (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_enqvraeojan3d2gifsdoio7aoy refused: there is no route at a.shop.example.com to replace
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_cc7kd26qklu4c4l344yatkhryq refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_tobecstfk4sxktilvoqtfga3um 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 08:03:18 provision: a.shop.example.com: import sd_fmwg2nbej4s33nlqmpunckfewa refused: the route's address is 127.0.0.1:9, not 127.0.0.1:8401
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_hfphxocvzwztslo65oikuhwewm refused: the route belongs to app other
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_longp2seunvo7mlawgnznjco6m refused: the route is filed under another account
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_dmznsr7xim7zs7y2qdwijok4ee refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_r56e6ngbix6tk72lmxitbnq47a refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_bfm4dmvvqrvfvhktbji6rewscy refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_xfsvlvnmoea4k7mt6gvsnzo2hu refused: the route is filed under the operator account, and no assignment maps shop to this app
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_72fwhautysv6pllucuo2l2a4xq refused: the route is not an address route this import can take over (socket)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_owaim53eucvak6s64g7izavcwi refused: the route is not an address route this import can take over (no address)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_lr2qppzp3og74wamigtimgkrvm refused: the route is not an address route this import can take over (provisioned)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_qv4j2ncyayxm2zwfkfuxinki4q refused: the route is not an address route this import can take over (kind static)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_vbtvrgkdbrvq47iayikdtm4xbu refused: the route is not an address route this import can take over (backing)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_22bqphbgac4thsvrmxp5ud5beq refused: the route is not an address route this import can take over (tunnel)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_mabivcynn6sckfbsptisrfhxca refused: the route is not an address route this import can take over (caps)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_aef323fenmqqlwahnr6w2i5i34 refused: the route is not an address route this import can take over (platform)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_tl426tuhjtvuiloxfyu5gpgfkm refused: the route is not an address route this import can take over (canary)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_rbfkmpvihl2lkrpvz2e6cylge4 refused: the route is not an address route this import can take over (kind sidecar)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_22xxvhkf54b3ksrslkrqpcb2g4 refused: the route is not an address route this import can take over (region)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_n6r4c4oigb2peglezqqithizw4 refused: the route is not an address route this import can take over (fleet_box)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_lpkuet6tv7hxi4eggxsrs3dwiq refused: the route is not an address route this import can take over (hibernate)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_vqmp2psyvpbguxhoaratv6md7q refused: the route is not an address route this import can take over (claim_owner)
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_wkbqencuanj2nps2nvoroxyow4 refused: this box does not run instances nested
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_zeascsmuefnfcarbgdcwp25iky refused: this box does not run instances nested
2026/10/20 08:03:18 provision: a.shop.example.com: import sd_67eu3xgqmanqwakmdyopjzn67e refused: claim control is on for this box
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_eiemv7iangafj2h3igagw4nefu (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: swapped for import sd_b2b6bnc56soco2n5i333vv6l2e (the original route is journaled)
2026/10/20 08:03:18 provision: a.shop.example.com: import deferred: this box cannot read the legacy route assignments
2026/10/20 08:03:18 provision: a.shop.example.com: import deferred: the legacy route assignments could not be read: store down
2026/10/20 08:03:18 provision: a.shop.example.com: not swapping for import sd_nlyqgogtytl23gyekcozjhecdy: its verify hash is not a sha256
2026/10/20 08:03:18 provision: a.shop.example.com: not swapping for import sd_s2ntzymoepiydl4lckznkl52fi: its verify hash is not a sha256
2026/10/20 08:03:18 provision: a.shop.example.com: not swapping for import sd_kkl3ls3m6y2krz4l4nvh2a5koe: its verify hash is not a sha256
2026/10/20 08:03:19 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 08:03:19 provision: A.shop.example.com/..: not swapping for import sd_jjaa5luzjjoduc2sfkkd2mjc64: its host or seed id is malformed (seeds: not a host)
2026/10/20 08:03:19 provision: a.shop.example.com: not swapping for import sd_amqsi2p5gvyewzrq7nakj6jq6e: its record does not describe a nested, hibernating instance
2026/10/20 08:03:19 provision: a.shop.example.com: not swapping for import sd_ge3v6jqz6622cmoqdovcuhqqra: its record does not describe a nested, hibernating instance
2026/10/20 08:03:19 provision: a.shop.example.com: not swapping for import sd_deqq4oapv2o5zwg5t6bfgwxfve: its record does not describe a nested, hibernating instance
2026/10/20 08:03:19 provision: a.shop.example.com: not swapping for import sd_uazcs53d7rv66lkj422zu7y57u: its record does not describe a nested, hibernating instance
2026/10/20 08:03:19 provision: a.shop.example.com: import deferred: the box's layout intent could not be read: store down
2026/10/20 08:03:19 provision: a.shop.example.com: swapped for import sd_yqckcqnr4jlowlo7xex7ru3o3e (the original route is journaled)
2026/10/20 08:03:19 provision: a.shop.example.com: import deferred: the box's nested probe did not answer: ready probe timed out
2026/10/20 08:03:19 provision: a.shop.example.com: swapped for import sd_p3dkdubhyylyjcvp3jj7hxzy7i (the original route is journaled)
2026/10/20 08:03:19 provision: a.shop.example.com: swapped for import sd_2pzowndvodq4e3i3zbjrut4wp4 (the original route is journaled)
2026/10/20 08:03:19 provision: a.shop.example.com: import deferred: the route is held by operation op_1
2026/10/20 08:03:19 provision: dry-run: would consider swapping a.shop.example.com for import sd_y7fauonnuldv6hz67zhlivhzma
2026/10/20 08:03:19 provision: a.shop.example.com: import sd_ici7s4ycl2wd7g4wxwgbuwobue rolled back to its original route
2026/10/20 08:03:19 provision: a.shop.example.com: import sd_ici7s4ycl2wd7g4wxwgbuwobue: the host's replica is left alone: the record apps/bac/shop/instances/a.shop.example.com.json holds the host
2026/10/20 08:03:19 provision: a.shop.example.com: import sd_ici7s4ycl2wd7g4wxwgbuwobue is cleaned up and its journal row retired
2026/10/20 08:03:19 provision: a.shop.example.com: import sd_ppjdyf6gf2igjq2vf3ai4qdaby left alone: the import journal holds seed sd_or257b7eyglmrdsjtasqhqfjum at swapped
2026/10/20 08:03:19 provision: a.shop.example.com: not minting import sd_cxjxggswntypk55xtfboqhmtrm: it is swapped but not committed, and only its swap makes its row
2026/10/20 08:03:19 provision: a.shop.example.com: not minting import sd_xlpvxfsygxc5ezpzu7sypf3blq: it is placed but not committed, and only its swap makes its row
2026/10/20 08:03:19 provision: a.shop.example.com: swapped for import sd_eoayb572iipikewiepx5evcopm (the original route is journaled)
2026/10/20 08:03:19 provision: a.shop.example.com: not minting import sd_eoayb572iipikewiepx5evcopm: it is swapped but not committed, and only its swap makes its row
2026/10/20 08:03:19 provision: a.shop.example.com: not minting import sd_eoayb572iipikewiepx5evcopm: it is placed but not committed, and only its swap makes its row
2026/10/20 08:03:19 provision: minted instance route a.shop.example.com (app "shop" acct "bac")
2026/10/20 08:03:19 provision: removed retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/20 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 provision: converged sidecar bot.eleven.bac.sidecar.internal args ["sidecar","run"] -> ["worker","run"]
2026/10/20 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 provision: converged sidecar bot.eleven.bac.sidecar.internal ceilings 300/3600 -> 60/120
2026/10/20 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 provision: converged sidecar bot.eleven.bac.sidecar.internal channel stable -> canary/eleven
2026/10/20 08:03:19 provision: converged sidecar bot.eleven.bac.sidecar.internal environment "other" -> "relay"
2026/10/20 08:03:19 provision: converged sidecar bot.eleven.bac.sidecar.internal hibernate true -> false
2026/10/20 08:03:19 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: read failed: failStore: reads disabled under apps/bac/eleven/sidecars/
2026/10/20 08:03:19 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: malformed: invalid character 'n' looking for beginning of object key string
2026/10/20 08:03:19 provision: not removing sidecar bot.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/20 08:03:19 provision: skipping sidecar record apps/bac/eleven/sidecars/bot.json: empty channel
2026/10/20 08:03:19 provision: skipping sidecar record apps/bac/eleven/sidecars/held.json: empty channel
2026/10/20 08:03:19 provision: not removing sidecar held.eleven.bac.sidecar.internal: its record exists but could not be read cleanly this pass
2026/10/20 08:03:19 provision: removed retired sidecar route old.eleven.bac.sidecar.internal (record gone)
2026/10/20 08:03:19 provision: bac/eleven has sidecar records but no sidecars manifest — not minting
2026/10/20 08:03:19 provision: bac/eleven is in the trash — not minting sidecar routes for it
2026/10/20 08:03:19 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 08:03:19 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 08:03:19 provision: minted sidecar route hub.relay.bac.sidecar.internal (app "relay" acct "bac" args ["relay"])
2026/10/20 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 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 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 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 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 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 08:03:19 provision: removed retired sidecar route bot.eleven.bac.sidecar.internal (record gone)
2026/10/20 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 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 08:03:19 provision: skipping sidecar record apps/bac/relay/sidecars/hub.json: read failed: failStore: reads disabled under apps/bac/relay/sidecars/
2026/10/20 08:03:19 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 08:03:19 provision: minted sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" args ["sidecar","run"])
2026/10/20 08:03:19 provision: dry-run: would mint sidecar route bot.eleven.bac.sidecar.internal (app "eleven" acct "bac" channel "stable" args ["sidecar","run"])
2026/10/20 08:03:19 provision: dry-run: would remove retired sidecar route gone.eleven.bac.sidecar.internal (record gone)
2026/10/20 08:03:19 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 08:03:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:19 provision: converged acme.go.tito.io update settings "{\"updates\":\"manual\",\"channel\":\"stable\"}" -> ""
2026/10/20 08:03:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:19 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 08:03:19 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 08:03:19 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/20 08:03:19 provision: minted instance route acme.go.tito.io (app "tito" acct "bac")
2026/10/20 08:03:19 provision: manifest bac/tito: read failed: provision: manifest bac/tito: unexpected end of JSON input
2026/10/20 08:03:19 provision: acme.go.tito.io: not minted this pass: the app's update policy could not be read
2026/10/20 08:03:19 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	16.937s
ok  	github.com/carlosframework/platform/internal/publicrelease	0.007s
?   	github.com/carlosframework/platform/internal/regionname	[no test files]
ok  	github.com/carlosframework/platform/internal/registry	5.431s
ok  	github.com/carlosframework/platform/internal/relay	7.221s
ok  	github.com/carlosframework/platform/internal/release	23.160s
ok  	github.com/carlosframework/platform/internal/rollout	3.613s
ok  	github.com/carlosframework/platform/internal/rolloutwords	0.003s
ok  	github.com/carlosframework/platform/internal/rootaws	0.007s
ok  	github.com/carlosframework/platform/internal/rootparticipation	0.058s
ok  	github.com/carlosframework/platform/internal/rootstate	0.028s
ok  	github.com/carlosframework/platform/internal/runs	0.568s
ok  	github.com/carlosframework/platform/internal/s3compat	0.004s
ok  	github.com/carlosframework/platform/internal/safefile	0.004s
ok  	github.com/carlosframework/platform/internal/schedule	2.467s
ok  	github.com/carlosframework/platform/internal/seeds	0.011s
ok  	github.com/carlosframework/platform/internal/sim/hostlife	8.385s
ok  	github.com/carlosframework/platform/internal/sim/litestreamfacts	4.129s
ok  	github.com/carlosframework/platform/internal/status	0.058s
ok  	github.com/carlosframework/platform/internal/steering	0.007s
ok  	github.com/carlosframework/platform/internal/stopevidence	0.215s
ok  	github.com/carlosframework/platform/internal/svcrole	0.001s
ok  	github.com/carlosframework/platform/internal/telemetry	0.003s
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.002s
ok  	github.com/carlosframework/platform/internal/updatewords	0.004s
ok  	github.com/carlosframework/platform/internal/usage	0.004s
ok  	github.com/carlosframework/platform/internal/version	0.001s
ok  	github.com/carlosframework/platform/internal/vet	1.526s
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/patches/f1-rootaws-child-alert.patch b/harness/patches/f1-rootaws-child-alert.patch
new file mode 100644
index 000000000..b5092aad8
--- /dev/null
+++ b/harness/patches/f1-rootaws-child-alert.patch
@@ -0,0 +1,14 @@
+--- /home/paulca/.cache/tmp/claude-1001/winbuild2/src/internal/rootaws/environment.go 2026-10-20 08:39:13.000000000 +0100
++++ /home/paulca/.cache/tmp/claude-1001/winbuild2/srcf/internal/rootaws/environment.go 2026-10-20 08:47:30.636366933 +0100
+@@ -57,7 +57,10 @@
+ }
+ }
+ for _, key := range keys {
+- if _, set := os.LookupEnv(key); set {
++ // HARNESS F1 (not a reviewed fix): a root parent's own scrub leaves
++ // these two set to disabledSharedFile, and its root children inherit
++ // them; that is this package's setting, not an override.
++ if v, set := os.LookupEnv(key); set && !(v == disabledSharedFile && (key == "AWS_CONFIG_FILE" || key == "AWS_SHARED_CREDENTIALS_FILE")) {
+ changed = true
+ }
+ _ = os.Unsetenv(key)
diff --git a/harness/release/release-window.sh b/harness/release/release-window.sh
index c30e6b24a..71f1b5cba 100644
--- a/harness/release/release-window.sh
+++ b/harness/release/release-window.sh
@@ -6,14 +6,14 @@
# Same recipe as release-setup.sh, minus what step 7 already did once: the test sums key
# (reused from /run/harness/keys/sums.key), its public half on every box, and the release
# key in the fake Parameter Store.
-# SUMS="<carlos sha> <console sha>" CV=<console ship version> release-window.sh
+# [TAG=v0.28.6] [ART=<artefact prefix>] SUMS="<carlos sha> <console sha>" CV=<console ship version> release-window.sh
set -euo pipefail
-TAG=v0.28.6; V=${TAG#v}
+TAG=${TAG:-v0.28.6}; V=${TAG#v}; ART=${ART:-$TAG} # ART: the artefacts/<ART>/ prefix in the harness AWS bucket
R=/root/harness/release/$TAG; K=/run/harness/keys
test -s $K/sums.key
mkdir -p $R
-aws s3 cp --quiet s3://carlos-harness-640012953448/artefacts/$TAG/carlos-linux-arm64 $R/carlos-linux-arm64
-aws s3 cp --quiet s3://carlos-harness-640012953448/artefacts/$TAG/console-linux-arm64 $R/console-linux-arm64
+aws s3 cp --quiet s3://carlos-harness-640012953448/artefacts/$ART/carlos-linux-arm64 $R/carlos-linux-arm64
+aws s3 cp --quiet s3://carlos-harness-640012953448/artefacts/$ART/console-linux-arm64 $R/console-linux-arm64
set -- $SUMS
[ "$(sha256sum < $R/carlos-linux-arm64 | cut -d' ' -f1)" = "$1" ] && [ "$(sha256sum < $R/console-linux-arm64 | cut -d' ' -f1)" = "$2" ] || { echo "artefact sha256 mismatch"; exit 1; }
chmod 755 $R/carlos-linux-arm64 $R/console-linux-arm64
@@ -34,7 +34,7 @@ echo "verify sums: $(openssl pkeyutl -verify -pubin -inkey $P/p.pem -rawin -in $
echo "operator CLI: $(/usr/local/bin/carlos version)"; echo "harness info: $(CARLOS_HARNESS_INFO=1 /usr/local/bin/carlos | tr '\n' ' ')"
# 5.0a item 4 for the window release (see RUNLOG "Runbook corrections"): ship and promote the
# v0.28.6-stamped console to canary/console, as step7-operator.sh did for v0.28.5.
-runuser -l operator -c 'set -euo pipefail; cd ~/release-v0.28.6; CARLOS=/usr/local/bin/carlos; CONSOLE=~/release-v0.28.6/console-linux-arm64; CV=$(cat CV)
+runuser -l operator -c 'set -euo pipefail; cd ~/release-'$TAG'; CARLOS=/usr/local/bin/carlos; CONSOLE=~/release-'$TAG'/console-linux-arm64; CV=$(cat CV)
export AWS_PROFILE=harness AWS_REGION=eu-west-1 CARLOS_DEPLOYMENT_BUCKET=harness-deployment CARLOS_RELEASE_PUBKEY="$(cat ~/release.pub)"
echo "== 1a/1e"; "$CARLOS" channels --app console --account-id bab; "$CARLOS" channels digests --account-id bab
echo "== 2"; sha256sum "$CONSOLE"; grep -c "$(sha256sum "$CONSOLE" | cut -d" " -f1)" SHA256SUMS.txt || true
diff --git a/harness/scenarios/cohort1/blocks/g4-roll.sh b/harness/scenarios/cohort1/blocks/g4-roll.sh
index 3924e48a6..2d4aee10c 100755
--- a/harness/scenarios/cohort1/blocks/g4-roll.sh
+++ b/harness/scenarios/cohort1/blocks/g4-roll.sh
@@ -5,14 +5,14 @@
set -euo pipefail
. ~/cohort1/values.env
C=http://127.0.0.1:8090
-F=~/release-v0.28.6/carlos-linux-arm64
+F=~/release-${WTAG}/carlos-linux-arm64
carlos system status --console $C
date -u +%FT%TZ
-carlos system update --console $C --channel stable --version v0.28.6 --file $F --platform linux-arm64 --yes
+carlos system update --console $C --channel stable --version ${WTAG} --file $F --platform linux-arm64 --yes
date -u +%FT%TZ
for i in $(seq 1 40); do
s=$(carlos system status --console $C 2>/dev/null)
- echo "$s" | grep -q 'kathleen-juggling.*v0.28.6.*current' && echo "$s" | grep -q 'noor-marquetry.*v0.28.6.*current' && break
+ echo "$s" | grep -q "kathleen-juggling.*\(${WTAG} *current\|refused\)" && echo "$s" | grep -q "noor-marquetry.*${WTAG} *current" && break
sleep 15
done
date -u +%FT%TZ; carlos system status --console $C
diff --git a/harness/scenarios/cohort1/blocks/run-leo.sh b/harness/scenarios/cohort1/blocks/run-leo.sh
new file mode 100755
index 000000000..ae20fc677
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/run-leo.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+# run-leo.sh <WINDOW_ID> [--env] <block.box.sh>: run a window block in a fresh root shell on leo (host,
+# root; incus exec stands for the attended root session). With --env, w-env.box.sh goes first.
+set -uo pipefail
+WID=$1; shift
+D=/home/operator/cohort1/blocks
+if [ "$1" = --env ]; then shift; cat $D/w-env.box.sh "$D/$1"; else cat "$D/$1"; fi | sed "s/__WINDOW_ID__/$WID/g" | incus exec leo -- bash
+echo "[run-leo] $1 exit=$?"
diff --git a/harness/scenarios/cohort1/blocks/w-env.box.sh b/harness/scenarios/cohort1/blocks/w-env.box.sh
new file mode 100644
index 000000000..9e2aa76ab
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w-env.box.sh
@@ -0,0 +1,14 @@
+# The window's shell variables on leo (window package section 5: "set them again ... from WINDOW_ID and
+# 8.1's literal values, with set -eu, umask 077 and pub() first"). Prepended to every leo block after 8.1,
+# because each harness block is its own root shell (incus exec leo -- bash), not one long session.
+set -eu
+umask 077
+pub() ( umask 022; "$@" )
+WINDOW_ID=__WINDOW_ID__
+[[ $WINDOW_ID =~ ^[0-9]{8}T[0-9]{4}Z$ ]]
+WINDOW="/etc/carlos/claim-window-cohort1-$WINDOW_ID"
+GUARD=/etc/systemd/system/carlos-edge.service.d/90-host-floor.conf
+SEED=/run/systemd/system/carlos-edge.service.d/90-files-seed-activation.conf
+TRIGGERS=(carlos-adopt.timer carlos-adopt.path carlos-stage.path carlos-restart.path carlos-system-update.path)
+SERVICES=(carlos-adopt.service carlos-stage.service carlos-config-sync.service carlos-restart.service carlos-system-update.service carlos-system-recover.service)
+UNITS=("${TRIGGERS[@]}" "${SERVICES[@]}" carlos-edge.service)
diff --git a/harness/scenarios/cohort1/blocks/w-identity.sh b/harness/scenarios/cohort1/blocks/w-identity.sh
index 5c911a604..7f6a2942f 100755
--- a/harness/scenarios/cohort1/blocks/w-identity.sh
+++ b/harness/scenarios/cohort1/blocks/w-identity.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# Gate G3: publish-identity for the window release (runbook 6.1's second phase; the floor is
-# unchanged, so no sign-policy). HARNESS: tag v0.28.6, console ship version cc90d542 (shipped and
+# unchanged, so no sign-policy). HARNESS: tag ${WTAG}, console ship version cc90d542 (shipped and
# promoted to canary/console by release-window.sh, the 5.0a step the window package lacks), bucket.
set -euo pipefail
. ~/cohort1/values.env
@@ -8,19 +8,19 @@ cd ~/cohort1
RUN=$(cat run-id); X=s3://harness-deployment/claim-signer/$RUN
./ssm.sh eu-west-1 "$SIGNER" "
. /root/claim-trial/helpers.sh
-CV=cc90d542
+CV=${WCV:-cc90d542}
jq -n --rawfile sums SHA256SUMS.txt --rawfile sig SHA256SUMS.txt.sig --arg cv \"\$CV\" \\
- '{identity:{release_tag:\"v0.28.6\",moves_protocol:1,sha256sums:\$sums,sha256sums_sig:\$sig,
+ '{identity:{release_tag:\"${WTAG}\",moves_protocol:1,sha256sums:\$sums,sha256sums_sig:\$sig,
console:{account:\"bab\",app:\"console\",channel:\"canary/console\",version:\$cv}}}' > identity-phase.json
trap 'tail -20 publish-identity-w.log' EXIT
-phase_out publish-identity identity-phase.json /root/claim-trial/identity.v0.28.6.json publish-identity-w-result.json > publish-identity-w.log 2>&1
+phase_out publish-identity identity-phase.json /root/claim-trial/identity.${WTAG}.json publish-identity-w-result.json > publish-identity-w.log 2>&1
trap - EXIT
grep -E '\"writes\"|before_etag|\"key\"' publish-identity-w.log | head -8
echo \"publish-identity writes: \$(jq -c .writes publish-identity-w-result.json)\"
jq '{identity_key, release}' publish-identity-w-result.json
-aws s3 cp --quiet identity.v0.28.6.json $X/out/identity.v0.28.6.json; sha256sum identity.v0.28.6.json | cut -c1-16
+aws s3 cp --quiet identity.${WTAG}.json $X/out/identity.${WTAG}.json; sha256sum identity.${WTAG}.json | cut -c1-16
echo REV=\$REV
"
mkdir -p out
-aws s3 cp --quiet "$X/out/identity.v0.28.6.json" out/identity.v0.28.6.json
-aws s3 cp --quiet s3://harness-deployment/control/system/router/releases/v0.28.6.json - | cmp - out/identity.v0.28.6.json && echo "identity file = published object"
+aws s3 cp --quiet "$X/out/identity.${WTAG}.json" out/identity.${WTAG}.json
+aws s3 cp --quiet s3://harness-deployment/control/system/router/releases/${WTAG}.json - | cmp - out/identity.${WTAG}.json && echo "identity file = published object"
diff --git a/harness/scenarios/cohort1/blocks/w-sums.sh b/harness/scenarios/cohort1/blocks/w-sums.sh
new file mode 100755
index 000000000..a3d9792c2
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w-sums.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+# Session 6 carries a second release (run 2's fix-forward): the signer's working SHA256SUMS.txt/.sig
+# become WTAG's (the first release's are kept as .<old tag>), via the exchange, checked by sha256.
+set -euo pipefail
+. ~/cohort1/values.env
+cd ~/cohort1
+RUN=$(cat run-id); X=s3://harness-deployment/claim-signer/$RUN
+for f in SHA256SUMS.txt SHA256SUMS.txt.sig; do aws s3 cp --quiet ~/release-$WTAG/$f $X/$WTAG/$f; done
+H=$(cd ~/release-$WTAG && sha256sum SHA256SUMS.txt SHA256SUMS.txt.sig | awk '{print $1}' | paste -sd' ')
+./ssm.sh eu-west-1 "$SIGNER" "set -euo pipefail; cd /root/claim-trial; set -- $H
+for f in SHA256SUMS.txt SHA256SUMS.txt.sig; do [ -e \$f.prev-release ] || cp -p \$f \$f.prev-release; aws s3 cp --quiet $X/$WTAG/\$f \$f; chmod 0600 \$f; done
+printf '%s %s\n' \$1 SHA256SUMS.txt \$2 SHA256SUMS.txt.sig | sha256sum -c; grep -c carlos_${WTAG#v}_ SHA256SUMS.txt"
diff --git a/harness/scenarios/cohort1/blocks/w81.box.sh b/harness/scenarios/cohort1/blocks/w81.box.sh
new file mode 100644
index 000000000..d2880b636
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w81.box.sh
@@ -0,0 +1,57 @@
+# Runbook 8.1, verbatim (both blocks); WINDOW_ID is substituted at the go. Before it, the prose's
+# required states, read-only.
+systemctl show carlos-edge.service carlos-adopt.timer carlos-adopt.path carlos-stage.path carlos-restart.path carlos-system-update.path \
+ carlos-adopt.service carlos-stage.service carlos-config-sync.service carlos-restart.service carlos-system-update.service carlos-system-recover.service \
+ -p Id -p LoadState -p ActiveState | paste -sd' ' | sed 's/Id=/\nId=/g'
+echo
+set -eu
+umask 077
+# umask 077 is for this shell's own files ($WINDOW and the copies in it).
+# Every platform binary in 8.1 to 8.4 runs through pub, in a subshell with
+# umask 022, so a directory the binary means to be public is not made 0700
+# (#317; the window package's umask audit).
+pub() ( umask 022; "$@" )
+WINDOW_ID=__WINDOW_ID__ # set at go: the window package's value
+[[ $WINDOW_ID =~ ^[0-9]{8}T[0-9]{4}Z$ ]]
+WINDOW="/etc/carlos/claim-window-cohort1-$WINDOW_ID"
+GUARD=/etc/systemd/system/carlos-edge.service.d/90-host-floor.conf
+SEED=/run/systemd/system/carlos-edge.service.d/90-files-seed-activation.conf
+test -f "$GUARD"
+test ! -L "$GUARD"
+test ! -e "$SEED"
+test ! -L "$SEED"
+TRIGGERS=(carlos-adopt.timer carlos-adopt.path carlos-stage.path carlos-restart.path carlos-system-update.path)
+SERVICES=(carlos-adopt.service carlos-stage.service carlos-config-sync.service carlos-restart.service carlos-system-update.service carlos-system-recover.service)
+UNITS=("${TRIGGERS[@]}" "${SERVICES[@]}" carlos-edge.service)
+mkdir -m 0700 -- "$WINDOW"
+mkdir -m 0700 -- "$WINDOW/held"
+cp -a -- /etc/carlos/host.env "$WINDOW/host.env.before"
+stat -- "$GUARD" > "$WINDOW/edge-guard.stat"
+cp -a -- "$GUARD" "$WINDOW/edge-guard.before"
+for unit in "${UNITS[@]}"; do
+ path="/etc/systemd/system/$unit"
+ test -f "$path"
+ test ! -L "$path"
+ test "$(stat -c %u "$path")" = 0
+ stat -- "$path" > "$WINDOW/$unit.stat"
+ sha256sum -- "$path" > "$WINDOW/$unit.sha256"
+ cp -a -- "$path" "$WINDOW/$unit.before"
+ systemctl cat "$unit" > "$WINDOW/$unit.effective"
+ systemctl show "$unit" -p LoadState -p ActiveState -p UnitFileState > "$WINDOW/$unit.state"
+done
+systemctl list-units --all --plain 'carlos-instance@*' 'carlos-instance-gen@*'
+systemctl stop "${TRIGGERS[@]}"
+systemctl stop "${SERVICES[@]}"
+systemctl stop carlos-edge.service
+systemctl disable carlos-edge.service
+systemctl list-units --all --plain 'carlos-instance@*' 'carlos-instance-gen@*'
+pgrep -a -u carlos || test "$?" = 1
+echo "== 8.1 second block $(date -u +%T)"
+for unit in "${UNITS[@]}"; do
+ mv -T -- "/etc/systemd/system/$unit" "$WINDOW/held/$unit"
+ ln -s -- /dev/null "/etc/systemd/system/$unit"
+done
+systemctl daemon-reload
+systemctl show "${UNITS[@]}" -p Id -p LoadState -p ActiveState
+pub /opt/carlos/carlos system claims install-control --dry-run
+echo "8.1 DONE $(date -u +%T)"
diff --git a/harness/scenarios/cohort1/blocks/w81b.sh b/harness/scenarios/cohort1/blocks/w81b.sh
new file mode 100755
index 000000000..216ae1ac5
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w81b.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# 8.1b from the operator: (runbook ADDITION, claim owner 2026-10-20) quiesce the dev console's record
+# writes by stopping console.service on sophie, then the runbook's 8.1b block verbatim on the signer
+# (one SSM command sourcing helpers.sh). The signer key is re-fetched first if a snapshot restart
+# cleared /run (signing-host.md "Getting the key there", verbatim).
+# w81b.sh <WINDOW_ID>
+set -euo pipefail
+. ~/cohort1/values.env
+WID=$1
+echo "== quiesce: stop console.service on sophie $(date -u +%T.%3NZ)"
+~/cohort1/ssm.sh eu-west-1 "$SOPHIE" 'systemctl stop console.service; systemctl show console.service -p ActiveState -p SubState -p Result | paste -sd" "'
+echo "== signer key $(date -u +%T.%3NZ)"
+~/cohort1/ssm.sh eu-west-1 "$SIGNER" 'if [ ! -s /run/claim-signer/release.key ]; then install -d -m 0700 -o root -g root /run/claim-signer
+aws --region eu-west-1 ssm get-parameter --name /carlos/release-key --with-decryption \
+ --query Parameter.Value --output text | install -m 0600 -o root -g root /dev/stdin /run/claim-signer/release.key; echo re-fetched; fi
+stat -c "%U %a %h %s" /run/claim-signer/release.key'
+echo "== 8.1b $(date -u +%T.%3NZ)"
+~/cohort1/ssm.sh eu-west-1 "$SIGNER" ". /root/claim-trial/helpers.sh
+set -x
+WINDOW_ID=$WID # set at go: the window package's value
+BACKFILL_ID=\"cohort1-\${WINDOW_ID%%T*}\"
+refresh
+jq -n --arg b \"\$B\" --argjson rev \"\$REV\" --arg id \"\$BACKFILL_ID\" \\
+ '{phase:\"backfill-collect\",bucket:\$b,expected_revision:\$rev,backfill:{id:\$id}}' > plan.json
+\"\$CARLOS\" system claims run --plan /root/claim-trial/plan.json --signing-key \"\$KEY\" --public-key \"\$PUB\" --aws-region \"\$R\" --dry-run > backfill-collect-dry.json
+jq '{writes: [.writes[] | {key, before_etag}], backfill}' backfill-collect-dry.json
+\"\$CARLOS\" system claims run --plan /root/claim-trial/plan.json --signing-key \"\$KEY\" --public-key \"\$PUB\" --aws-region \"\$R\" > backfill-collect.json
+jq -e --arg id \"\$BACKFILL_ID\" '.backfill.id == \$id' backfill-collect.json
+jq -e '.backfill.phase == \"collecting\"' backfill-collect.json
+jq -e --argjson rev \"\$REV\" '.backfill.directory_revision == \$rev' backfill-collect.json
+jq -e '.backfill.hosts != null' backfill-collect.json
+jq -e '(.backfill.hosts | length) == 0' backfill-collect.json
+jq -e '(.writes | length) == 1' backfill-collect.json
+jq -e '.writes[0].key == \"control/hosts-backfill.json\"' backfill-collect.json
+jq -e '.writes[0].before_etag == \"\"' backfill-collect.json
+refresh
+echo REV=\$REV
+jq -c .backfill backfill-collect.json
+" 2>&1
+echo "8.1b END $(date -u +%T.%3NZ)"
diff --git a/harness/scenarios/cohort1/blocks/w82.box.sh b/harness/scenarios/cohort1/blocks/w82.box.sh
new file mode 100644
index 000000000..e8f8851b5
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w82.box.sh
@@ -0,0 +1,57 @@
+# Runbook 8.2 on leo (after w-env.box.sh). The host.env edit first: the runbook gives only its result,
+# not a command ("through the approved configuration procedure"), so this is the procedure used
+# (Runbook corrections, C3): append the two flags, then check the stated result line by line.
+echo "== host.env edit $(date -u +%T)"
+H=/etc/carlos/host.env
+cmp -- "$H" "$WINDOW/host.env.before"
+test "$(grep -c '^CARLOS_HOST_CLAIM=' "$H")" = 0
+test "$(grep -c '^CARLOS_HOST_CLAIM_ORIGINS=' "$H")" = 0
+printf 'CARLOS_HOST_CLAIM=1\nCARLOS_HOST_CLAIM_ORIGINS=1\n' >> "$H"
+test "$(grep -cx 'CARLOS_HOST_CLAIM=1' "$H")" = 1
+test "$(grep -cx 'CARLOS_HOST_CLAIM_ORIGINS=1' "$H")" = 1
+test "$(grep -c '^CARLOS_MOVES_PHASE1' "$H")" = 0
+test "$(grep -c '^CARLOS_REGION' "$H")" = 0
+test "$(grep -cx 'CARLOS_POOLS=cohort1' "$H")" = 1
+stat -c '%n %a %U:%G %s' "$H"; diff "$WINDOW/host.env.before" "$H" || true
+echo "== 8.2 block $(date -u +%T)"
+pub /opt/carlos/carlos system claims install-control --dry-run
+pub /opt/carlos/carlos system claims install-control
+systemctl cat carlos-instance-control.service
+(
+ umask 022
+ set -a
+ . /etc/carlos/host.env
+ set +a
+ /opt/carlos/carlos system journal-migrate --window "$WINDOW"
+)
+# Mode check after journal-migrate (window package, umask audit). Its census
+# step creates /opt/carlos/system/guard/moves and .../seeds as public
+# directories (rootstate.Open(dir, true, true): Mkdirat 0755, then it
+# refuses unless group and other have r-x, and it never chmods). The agent,
+# running as carlos, reads the floor projections there. Any mismatch is a
+# STOP: do not chmod by hand, do not rerun, hold.
+stat -c '%n %a %U:%G' /var/lib/carlos-claims /opt/carlos/system /opt/carlos/system/guard \
+ /opt/carlos/system/guard/moves /opt/carlos/system/guard/seeds
+test "$(stat -c '%a %U:%G' /var/lib/carlos-claims)" = '700 root:root'
+for d in /opt/carlos/system /opt/carlos/system/guard /opt/carlos/system/guard/moves /opt/carlos/system/guard/seeds; do
+ test "$(stat -c '%a %U:%G' "$d")" = '755 root:root'
+ sudo -u carlos test -r "$d"
+ sudo -u carlos test -x "$d"
+done
+sudo -u carlos test -x /opt/carlos/system/guard/carlos
+if [ -e /var/lib/carlos-swap-status ]; then
+ test "$(stat -c '%a %U:%G' /var/lib/carlos-swap-status)" = '755 root:root'
+ sudo -u carlos test -x /var/lib/carlos-swap-status
+fi
+# Root's exec census must exist before any restart (platform-1e, 2026-10-20):
+# without it, root's legacy restart fallback ignores the claim flag.
+# Missing is a STOP: hold, restart nothing.
+test -f /var/lib/carlos-claims/authority/exec/census.json
+test ! -L /var/lib/carlos-claims/authority/exec/census.json
+systemctl daemon-reload
+systemctl add-wants multi-user.target carlos-instance-control.service
+systemctl restart carlos-instance-control.service
+systemctl is-active carlos-instance-control.service
+journalctl -u carlos-instance-control.service --since '-5min' --no-pager
+ls -la /var/lib/carlos-claims/authority/migration/
+echo "8.2 DONE $(date -u +%T)"
diff --git a/harness/scenarios/cohort1/blocks/w82b.sh b/harness/scenarios/cohort1/blocks/w82b.sh
new file mode 100755
index 000000000..036296da1
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w82b.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# 8.2b from the operator: leo's census report read (8.2's DOCS-T1 check), then the runbook's 8.2b
+# block verbatim on the signer (box names: sophie-knitting -> ada-letterpress, leo-climbing ->
+# kathleen-juggling), then (runbook ADDITION) console.service started again on sophie.
+# w82b.sh <WINDOW_ID>
+set -euo pipefail
+. ~/cohort1/values.env
+WID=$1; BACKFILL_ID="cohort1-${WID%%T*}"
+mkdir -p ~/cohort1/tmp/cohort1
+echo "== 8.2 census report read $(date -u +%T.%3NZ)"
+aws --profile harness --region eu-west-1 s3 cp "s3://harness-deployment/control/host-census/$BACKFILL_ID/kathleen-juggling.json" ~/cohort1/tmp/cohort1/leo-census.json
+jq -e '(.report.installations | length) == 0' ~/cohort1/tmp/cohort1/leo-census.json
+aws --profile harness --region eu-west-1 s3api head-object --bucket harness-deployment --key "control/host-census/$BACKFILL_ID/kathleen-juggling.json" --query '[ETag,LastModified,ContentLength]' --output text
+echo "operator-side sha256 of the raw object: $(sha256sum < ~/cohort1/tmp/cohort1/leo-census.json | cut -d' ' -f1)"
+echo "operator-side sha256 of jq -c of it: $(jq -c . ~/cohort1/tmp/cohort1/leo-census.json | tr -d '\n' | sha256sum | cut -d' ' -f1)"
+aws --profile harness --region eu-west-1 s3 ls "s3://harness-deployment/control/host-census/$BACKFILL_ID/"
+echo "== 8.2b $(date -u +%T.%3NZ)"
+~/cohort1/ssm.sh eu-west-1 "$SIGNER" ". /root/claim-trial/helpers.sh
+WINDOW_ID=$WID # set at go: the window package's value
+BACKFILL_ID=\"cohort1-\${WINDOW_ID%%T*}\"
+refresh
+jq -n --arg b \"\$B\" --argjson rev \"\$REV\" --arg id \"\$BACKFILL_ID\" \\
+ '{phase:\"backfill-done\",bucket:\$b,expected_revision:\$rev,backfill:{id:\$id}}' > plan.json
+\"\$CARLOS\" system claims run --plan /root/claim-trial/plan.json --signing-key \"\$KEY\" --public-key \"\$PUB\" --aws-region \"\$R\" --dry-run > backfill-done-dry.json
+jq '{writes: [.writes[] | {key, before_etag}], backfill}' backfill-done-dry.json
+\"\$CARLOS\" system claims run --plan /root/claim-trial/plan.json --signing-key \"\$KEY\" --public-key \"\$PUB\" --aws-region \"\$R\" > backfill-done.json
+for t in '.backfill.phase == \"done\"' '(.backfill.hosts | length) == 0' '.backfill.unreported == [\"ada-letterpress\"]' '(.backfill.reports | keys) == [\"kathleen-juggling\"]' '(.writes | length) == 1' '.writes[0].key == \"control/hosts-backfill.json\"' '(.writes[0].before_etag | length) > 0'; do printf '%s -> ' \"\$t\"; jq -e \"\$t\" backfill-done.json || echo FALSE; done
+jq -e '.backfill.phase == \"done\"' backfill-done.json
+jq -e --arg id \"\$BACKFILL_ID\" '.backfill.id == \$id' backfill-done.json
+jq -e --argjson rev \"\$REV\" '.backfill.directory_revision == \$rev' backfill-done.json
+jq -e '(.backfill.hosts | length) == 0' backfill-done.json
+jq -e '.backfill.unreported == [\"ada-letterpress\"]' backfill-done.json
+jq -e '(.backfill.reports | keys) == [\"kathleen-juggling\"]' backfill-done.json
+jq -e '(.writes | length) == 1' backfill-done.json
+jq -e '.writes[0].key == \"control/hosts-backfill.json\"' backfill-done.json
+jq -e '(.writes[0].before_etag | length) > 0' backfill-done.json
+# Digest over the census object's raw bytes as stored. PENDING: confirmed in harness <run-id>.
+LEO_CENSUS_SHA=\$(aws --region \"\$R\" s3 cp \"s3://\$B/control/host-census/\$BACKFILL_ID/kathleen-juggling.json\" - | sha256sum | cut -d' ' -f1)
+test -n \"\$LEO_CENSUS_SHA\"
+echo \"LEO_CENSUS_SHA=\$LEO_CENSUS_SHA reports=\$(jq -c .backfill.reports backfill-done.json)\"
+jq -e --arg d \"\$LEO_CENSUS_SHA\" '.backfill.reports[\"kathleen-juggling\"] == \$d' backfill-done.json
+refresh
+echo REV=\$REV
+jq -c '{backfill, writes: [.writes[] | {key, before_etag}]}' backfill-done.json
+" 2>&1
+echo "== console start on sophie $(date -u +%T.%3NZ)"
+~/cohort1/ssm.sh eu-west-1 "$SOPHIE" 'systemctl start console.service; systemctl is-active console.service; 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 | tail -8'
+echo "8.2b END $(date -u +%T.%3NZ)"
diff --git a/harness/scenarios/cohort1/blocks/w84.box.sh b/harness/scenarios/cohort1/blocks/w84.box.sh
new file mode 100644
index 000000000..90c47efec
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w84.box.sh
@@ -0,0 +1,26 @@
+# Runbook 8.4 on leo (after w-env.box.sh): the three blocks, verbatim.
+echo "== 8.4 check $(date -u +%T)"
+test "$(readlink /etc/systemd/system/carlos-edge.service)" = /dev/null
+cmp -- "$WINDOW/held/carlos-edge.service" "$WINDOW/carlos-edge.service.before"
+test -f "$GUARD"
+test ! -L "$GUARD"
+cmp -- "$GUARD" "$WINDOW/edge-guard.before"
+test ! -e "$SEED"
+test ! -L "$SEED"
+systemctl show carlos-edge.service -p LoadState -p ActiveState
+pub /opt/carlos/carlos system claims install-control --dry-run
+echo "== 8.4 restore $(date -u +%T)"
+for unit in "${SERVICES[@]}" "${TRIGGERS[@]}"; do
+ cmp -- "$WINDOW/held/$unit" "$WINDOW/$unit.before"
+ test "$(readlink "/etc/systemd/system/$unit")" = /dev/null
+ rm -- "/etc/systemd/system/$unit"
+ mv -T -- "$WINDOW/held/$unit" "/etc/systemd/system/$unit"
+done
+systemctl daemon-reload
+systemctl show "${SERVICES[@]}" "${TRIGGERS[@]}" -p Id -p LoadState -p ActiveState
+echo "== 8.4 instance dirs $(date -u +%T)"
+ls -la /data/.instances /data/instances
+test "$(ls -A /data/.instances)" = _probe
+test "$(ls -A /data/instances)" = _probe
+systemctl show carlos-edge.service -p LoadState -p ActiveState
+echo "8.4 DONE $(date -u +%T)"
diff --git a/harness/scenarios/cohort1/blocks/w9.box.sh b/harness/scenarios/cohort1/blocks/w9.box.sh
new file mode 100644
index 000000000..688a675b6
--- /dev/null
+++ b/harness/scenarios/cohort1/blocks/w9.box.sh
@@ -0,0 +1,25 @@
+# Runbook step 9 on leo (after w-env.box.sh), verbatim, then its expected checks read on the box.
+echo "== 9 $(date -u +%T)"
+cmp -- "$WINDOW/held/carlos-edge.service" "$WINDOW/carlos-edge.service.before"
+test "$(readlink /etc/systemd/system/carlos-edge.service)" = /dev/null
+rm -- /etc/systemd/system/carlos-edge.service
+mv -T -- "$WINDOW/held/carlos-edge.service" /etc/systemd/system/carlos-edge.service
+systemctl daemon-reload
+systemctl cat carlos-edge.service
+systemctl show carlos-edge.service -p ExecStart -p Requires -p After
+if grep -qx 'UnitFileState=enabled' "$WINDOW/carlos-edge.service.state"; then
+ systemctl enable carlos-edge.service
+fi
+systemctl start carlos-edge.service
+systemctl is-active carlos-edge.service
+systemctl start "${TRIGGERS[@]}"
+systemctl show "${UNITS[@]}" -p Id -p LoadState -p ActiveState -p UnitFileState
+echo "== 9 checks $(date -u +%T)"
+sleep 20
+for unit in "${UNITS[@]}"; do
+ diff -- <(systemctl show "$unit" -p LoadState -p ActiveState -p UnitFileState) "$WINDOW/$unit.state" >/dev/null || echo "DIFFERS from baseline: $unit: $(systemctl show "$unit" -p LoadState -p ActiveState -p UnitFileState | paste -sd' ')"
+done
+journalctl -u carlos-edge.service -b --since "-2min" --no-pager | grep -c 'REFUSING CARLOS_SWAP=overlap (host-claims-on)' || true
+journalctl -u carlos-edge.service --since "-2min" --no-pager | grep -c 'signed roster has no home region' || true
+systemctl show carlos-edge.service -p MainPID -p ExecMainStartTimestamp; readlink /proc/$(systemctl show -p MainPID --value carlos-edge.service)/exe
+echo "9 DONE $(date -u +%T)"
diff --git a/harness/scenarios/cohort1/values.env b/harness/scenarios/cohort1/values.env
index 2c96b171d..a3d021917 100644
--- a/harness/scenarios/cohort1/values.env
+++ b/harness/scenarios/cohort1/values.env
@@ -11,7 +11,7 @@ PROFILE=harness # dev: kass
TAG=v0.28.5 # dev: v0.28.4
CV=1b635e61 # dev: f3bf1214 (the console's ship version)
# Window (Option B) values, 2026-10-20 morning harness run:
-WTAG=v0.28.6 # dev: v0.28.5 (the window release, claim-empty-cohort-done); harness v0.28.6 = cc90d542 + harness patch
-WCV=cc90d542 # dev: the v0.28.5 console's ship version
+WTAG=v0.28.7 # dev: v0.28.5. Run 2 after its G4 FAIL: harness fix-forward v0.28.7 = d940c09f + harness patch + F1 (patches/f1-rootaws-child-alert.patch)
+WCV=d940c09f-f1 # dev: the v0.28.5 console's ship version
DOMAIN=dev.harness.test # dev: dev.carlosframework.com
CONSOLE=http://127.0.0.1:8090 # dev: https://platform.dev.carlosframework.com