harness: Run 11b (G10 on 27303f54, v0.28.17): TTL to 20:00Z; restore, task 9 PASS, plain roll PASS, task 9 again PASS, router cache present before 8.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 files changed,
+780
−0
harness/RESOURCES.md+1 −0harness/RUNLOG.md+75 −0harness/evidence/run11/r16-roll.log+216 −0harness/evidence/run11/roll2.log+145 −0harness/evidence/run11b/roll.log+216 −0harness/scenarios/cohort1/blocks/b4-pair2.sh+25 −0harness/scenarios/cohort1/blocks/g10-r16.host.sh+10 −0harness/scenarios/cohort1/blocks/g10-reroll.host.sh+5 −0harness/scenarios/cohort1/blocks/g10-wait-cache.host.sh+16 −0harness/scenarios/cohort1/blocks/g10-watch.host.sh+51 −0harness/scenarios/cohort1/blocks/g10b-b4.host.sh+20 −0
CI cancelled — superseded by a newer push — run details
CI log
=== gate === cd launchctx && go vet ./... && go test ./... -count=1 ok amadan.net/carlos/platform.git/launchctx 0.012s ? amadan.net/carlos/platform.git/launchctx/controlname [no test files] ? amadan.net/carlos/platform.git/launchctx/wireid [no test files] go vet ./... gofmt -l .: clean go test ./... -count=1 -timeout 30m amadan: job cancelled — a newer push superseded it
diff --git a/harness/RESOURCES.md b/harness/RESOURCES.md| index b74046e43..3d9c1758d 100644 |
| --- a/harness/RESOURCES.md |
| +++ b/harness/RESOURCES.md |
| @@ -18,3 +18,4 @@ Appended as each is created. Teardown commands: harness/TEARDOWN.md. |
| | 2026-10-20T09:5xZ | TTL extended | i-06a1ec144aa5226fb, sg-0b9cf4c2a508b7cec, vol-035c92e5b506cc3db, bucket carlos-harness-640012953448, role and instance profile carlos-harness | ttl and expires tags 2026-10-20T12:40Z -> 2026-10-20T18:40Z; on the host `shutdown -c; shutdown -h 18:40` (shutdown --show: 18:40:00 UTC); coordinator's request | |
| | 2026-10-20T16:02Z | TTL extended | i-06a1ec144aa5226fb, sg-0b9cf4c2a508b7cec, vol-035c92e5b506cc3db, bucket carlos-harness-640012953448, role and instance profile carlos-harness | ttl and expires tags 2026-10-20T18:40Z -> 2026-10-20T23:40Z; on the host `shutdown -c; shutdown -h 23:40` (shutdown --show: 23:40:00 UTC); Run 9 (v0.28.5 roll) and the offline-move rehearsal | |
| | 2026-10-20T20:54Z | TTL extended | i-06a1ec144aa5226fb, sg-0b9cf4c2a508b7cec, vol-035c92e5b506cc3db, bucket carlos-harness-640012953448, role and instance profile carlos-harness | ttl and expires tags 2026-10-20T23:40Z -> 2026-10-21T12:00Z; on the host `shutdown -c; shutdown -h +<minutes to 12:00Z>` (shutdown --show: Wed 2026-10-21 11:59:33 UTC); Run 10 (v0.28.6 candidate rehearsal, overnight) | |
| +| 2026-10-21T08:01Z | TTL extended | i-06a1ec144aa5226fb, sg-0b9cf4c2a508b7cec, vol-035c92e5b506cc3db, bucket carlos-harness-640012953448, role and instance profile carlos-harness | ttl and expires tags 2026-10-21T12:00Z -> 2026-10-21T20:00Z; on the host `shutdown -c; shutdown -h 20:00` (shutdown --show: Wed 2026-10-21 20:00:00 UTC); Run 11b (G10 on 27303f54); `df -h /` 8.4G free (86%) | |
diff --git a/harness/RUNLOG.md b/harness/RUNLOG.md| index b48bdb595..e7dfb17b1 100644 |
| --- a/harness/RUNLOG.md |
| +++ b/harness/RUNLOG.md |
| @@ -2464,3 +2464,78 @@ only `requested.json`. |
| **Resume, no hand fix:** restore `post-b5-run8b`, roll v0.28.15 again by the same plain update (identity and canary |
| console are recreated in that lineage), wait for leo's own agent to drop the cache (its hourly observe), check |
| `/data/system/router` = `requested.json` only, then a new WINDOW_ID. |
| + |
| +### The resume, and the switch to the owner's fix 27303f54 |
| + |
| +- The resume on 64a98473 was started (`blocks/g10-reroll.host.sh`, `evidence/run11/roll2.log`): restore |
| + `post-b5-run8b`, the same plain roll again, PASS a second time (session for identity `7792ad3b...`; promote 23:30:23Z, |
| + rev 15 -> 16, activation `8732823b...`; dennis 23:32:44-23:33:02Z, leo 23:33:10-23:33:29Z, both `v0.28.15 current`, |
| + rev 17 `[]`). The hour wait (`blocks/g10-wait-cache.host.sh`) was never run. |
| +- **Coordinator, 23:4xZ:** platform-1c fixed the stop in code, **27303f54** = 64a98473 + `claimBoxDataCensus` classifying |
| + `<data>/system/router` as a census tree (`internal/host/claimcensus.go:92-99`, census ruled). Switch to it: restore, |
| + build, plain roll, task 9, the window with NO hour wait; before 8.1, `ls /data/system/router` on leo (informational: |
| + `requested.json` plus at most one version cache). |
| +- Build: `$TMPDIR/g10src2` @ 27303f54 + the same harness patch (`b2f1ad8f...`), stamp **v0.28.16** (first free, newer |
| + than v0.28.15), CV `27303f54`: carlos `762c3e2b5ef594ed248b36bb42c934cd98f60e22e5a08fdd80228fd30789034d`, console |
| + `2e37a4a0b1e32c489548f895ffc746350ccb2f6f1e898b50214ed3a6d482db4b`, `artefacts/v0.28.16-27303f54/`. Tests ok: the four |
| + default packages, the two `-tags harness` packages, and the fix's `TestMigrationCensusKeepsRouterCache` (PASS). |
| + `TestPlan14RootReadCensus` fails on this tree with 7 discrepancies, every one from the harness patch's files |
| + (`s3compat/harness.go`, `hostfence/writer.go`, `publicrelease`): expected for the harness deviation, not the fix. |
| + |
| +# Run 11b: G10 on 27303f54 (2026-10-21 morning) |
| + |
| +Brief (coordinator, for the claim owner platform-1c): resume G10 on the owner's FINAL tip, `claim-empty-cohort-done` |
| +@ **27303f54** (= 64a98473 + the census class for `<data>/system/router`; census ruled; Astra approved; CI green). |
| +The branch tip has since moved to b20882e7, which changes only docs and a Plan 14 test fixture |
| +(`census-proposal-claim-step8-readiness.md`, `plan14_root_reads_test.go`, its `.tsv`), so 27303f54's runtime code is |
| +the branch's. Runbook `claim-dev-cohort1-runbook` @ **337fedcf** (adds the informational `ls -la /data/system/router` |
| +before 8.1). Order: restore `post-b5-run8b`, task 9, the plain roll, `ls`, a NEW window (8.1 to 8.2b, 8.4, step 9), |
| +B4 and G10 with no hour wait, acceptance, a second create, then wake the first. Harness only. |
| + |
| +The previous session (Run 11's resume, above) had already built 27303f54 as v0.28.16 and run restore, task 9, the roll |
| +and the `ls` (`evidence/run11/r16-roll.log`, PASS at 23:52Z: leo and dennis `v0.28.16 current`, rev 17 `[]`, |
| +`/data/system/router` = `requested.json` + `v0.28.16/`), then stopped before 8.1. This run starts again from the |
| +restore, on a fresh build, as briefed. |
| + |
| +## Setup (08:01-08:04Z) |
| + |
| +- TTL: every harness resource's `ttl`/`expires` 2026-10-21T12:00Z -> **20:00Z**; host `shutdown -h 20:00` |
| + (RESOURCES.md). `df -h /`: 48G of 59G used, 8.4G free. |
| +- Build: `git worktree add --detach $TMPDIR/g10b 27303f54` + the harness patch (`git diff 6b905c11^ 6b905c11 -- |
| + internal`, sha256 `b2f1ad8f...`, the same seven files), `-tags harness`, `GOFLAGS=-buildvcs=false`, `CGO_ENABLED=0`, |
| + linux/arm64, `-s -w -X .../internal/version.Build=v0.28.17`, for `.` and `./cmd/console`. Tests ok: `./internal/s3compat |
| + ./internal/publicrelease ./internal/rootaws ./internal/hostfloor`; `-tags harness ./internal/s3compat |
| + ./internal/publicrelease`; `-run TestMigrationCensusKeepsRouterCache ./internal/host` (ok). |
| + |
| +| stamp | plays | carlos sha256 | console sha256 | bucket prefix | |
| +|---|---|---|---|---| |
| +| **v0.28.17** | the fix release (27303f54) | `a79ed7263e3e92d3b7d25d856a46616dc39d2581bc5cdfedda510e5e43c0cdaa` | `ac3d2a5263f4e63842937648d988e659c8f075943124a40b6923fb33347e9713` | `artefacts/v0.28.17-27303f54/` | |
| + |
| + Why v0.28.17: v0.28.16 is the previous session's build of the same commit (used once, from the same restore); the |
| + next stamp used nowhere is v0.28.17. CV `27303f54`. |
| +- Note: outside the DOCS-T1 sandbox `$TMPDIR` is a different directory (`~/.cache/tmp`, not |
| + `~/.cache/tmp/claude-1001`), so a sandbox-off `cd $TMPDIR/...` fails into the session cwd. A first build went that |
| + way (from the wrong tree); its binaries were deleted unused. The build above used absolute paths. The default |
| + `GOCACHE` is read-only inside the sandbox: builds and tests ran with the sandbox off. |
| + |
| +## Steps 1 to 4: restore, task 9, the plain roll, task 9 again, `ls`: PASS (08:04-08:15Z) |
| + |
| +`blocks/g10-r16.host.sh v0.28.17 v0.28.17-27303f54 a79ed726... ac3d2a52... 27303f54` (`evidence/run11b/roll.log`). |
| +- Restore `post-b5-run8b` 08:04:25Z (leo = the ext4 leo, as in Run 11); every container `failed=[]`. |
| +- **Task 9 pre-roll check: PASS** (08:04:49Z): every leo line `0`, `leo: all empty` (no `/var/lib/carlos-claims`, no |
| + restarts dir, leo `carlos v0.28.12`); bucket `host-claim-files 0`, `evidence-objects-for-leo 0`, |
| + `serving-evidence-objects-for-leo 0`, `roster-holds 0`, `roster-activations 0`, `bucket and roster: all empty` |
| + (roster rev 15, no backfill plan). |
| +- **The roll: PASS, plain `system update`, no box step.** C2 first: sums signed and verified, operator CLI |
| + `carlos v0.28.17`, console `27303f54` shipped and promoted to `canary/console` (08:05:0xZ). Signing session |
| + 08:05:05Z, `publish-identity` v0.28.17 CV `27303f54`: one create-only write of |
| + `control/system/router/releases/v0.28.17.json` (`before_etag ""`, `305d705c...`; router `a79ed726...`, console |
| + `ac3d2a52...`); REV 15. Promote stable 08:05:51Z, rc 0, rev 15 -> 16 (activation `3485fc89...`). dennis |
| + 08:07:51-08:08:1xZ, leo 08:09:02-08:09:22Z root apply. After: leo and dennis `carlos v0.28.17` / `.prev v0.28.12`, |
| + path active, edge exe `a79ed726...` NRestarts 0; leo identities `v0.28.5 .7 .8 .12 .17`; `system status` leo and dennis |
| + `v0.28.17 current`, sophie `canary v0.28.5 current`; roster rev **17** `activations []` `holds []` (08:10:12Z); |
| + leo's report 08:15:27Z: v0.28.17, `a79ed726`, `activation_complete true`. Sophie's console untouched: pid 398 exe |
| + `b2b431f3...` (the v0.28.4 stand-in, D10). |
| +- **Task 9 again after the roll: PASS** (08:15:38Z), every line `0` on leo and in the bucket, rev 17. |
| +- **`ls -la /data/system/router` on leo** (08:15:50Z, informational): `requested.json` (133 B, 08:09:02Z) and the |
| + version cache `v0.28.17/` (08:09:02Z). Exactly the shape the runbook expects; Run 11's G7 refused this tree. |
diff --git a/harness/evidence/run11/r16-roll.log b/harness/evidence/run11/r16-roll.log| new file mode 100644 |
| index 000000000..08e879ea3 |
| --- /dev/null |
| +++ b/harness/evidence/run11/r16-roll.log |
| @@ -0,0 +1,216 @@ |
| +== restore post-b5-run8b 23:42:12 |
| +sophie-console volume restored to post-b5-run8b |
| +leo: running failed=[] snapshots=post-b5-run8b,post-8.1-run8,g10-stuck-run8,post-window,g7-fail-r11 |
| +sophie: running failed=[] snapshots=base,boot,pre62,s7,pre-window,pre-window-seeded,post-b5,post-b5-465c3a08,post-b5-465c3a08-c8,post-b5-clean,post-b5-run8,post-b5-run8b,post-8.1-run8,g10-stuck-run8,item6-plain-update-fail,post-window,pre-0285,post-0285,post-candidate,post-move-r10,g7-fail-r11 |
| +sophie-console volume snapshots: s7,pre-window,pre-window-seeded,post-b5,post-b5-465c3a08,post-b5-465c3a08-c8,post-b5-clean,post-b5-run8,post-b5-run8b,post-8.1-run8,g10-stuck-run8,item6-plain-update-fail,post-window,pre-0285,post-0285,post-candidate,post-move-r10,g7-fail-r11 |
| +######## task 9 pre-roll check 23:42:34 |
| +== block 1 on leo 23:42:34.919Z |
| +launches 0 |
| +stop_inventory 0 |
| +journal_inventory_versions 0 |
| +journal_requests 0 |
| +authority/fences 0 |
| +authority/serving-parks 0 |
| +retire/serving 0 |
| +retire/cold 0 |
| +retire/retired 0 |
| +retire 0 |
| +unit-bindings 0 |
| +unit-materializations 0 |
| +restarts 0 |
| +migration-items 0 |
| +leo: all empty |
| +(context: ls: cannot access '/var/lib/carlos-claims': No such file or directory; ls: cannot access '/var/lib/carlos-release/private/restarts': No such file or directory; carlos carlos v0.28.12) |
| +[block 1 exit=0] |
| +== block 2 bucket 23:42:35.035Z |
| +host-claim-files 0 # information only; the lines below decide |
| +evidence-objects-for-leo 0 |
| +serving-evidence-objects-for-leo 0 |
| +staged |
| + |
| +staged |
| + |
| +roster-holds 0 |
| +roster-activations 0 |
| +bucket and roster: all empty |
| +(context: roster rev 15; control/hosts-backfill.json absent) |
| +[block 2 exit=0] |
| +######## roll 23:42:46 |
| +== signing session (C2 order) 23:42:46.582Z |
| +== release-window v0.28.16 (23:42:46.585Z) |
| +== release v0.28.16 |
| +762c3e2b5ef594ed248b36bb42c934cd98f60e22e5a08fdd80228fd30789034d carlos-linux-arm64 |
| +c6f37682aa4d0ea56344031eeb3975e3b13420e262972872a0643b01594d6b6f carlos_0.28.16_amd64.deb |
| +2bec2182519eae25e3a347a9c11f8ce7344edf5bc2e5ec039c0cfe1f9895e642 carlos_0.28.16_arm64.deb |
| +22b09ca35fc72b6726a354109a4e6885d5fb48f84d3a51effc5655e4c615bc3d SHA256SUMS.txt |
| +5de09440c7867867e8cff62cf65c67a4d8b8235e13f1ac4bf497c8309e4ce4b4 SHA256SUMS.txt.sig |
| +2e37a4a0b1e32c489548f895ffc746350ccb2f6f1e898b50214ed3a6d482db4b console-linux-arm64 |
| +verify sums: Signature Verified Successfully |
| +operator CLI: carlos v0.28.16 |
| +harness info: harness build: yes endpoint: http://203.0.113.10:9000 sums key: mAnSlX23... sha256:85f6f13cb78c |
| +== 1a/1e |
| +CHANNEL VERSION PROMOTED TAG DIGESTS |
| +canary/console e2c006d2 2026-10-20T12:16:52Z yes |
| +pointer digests: on for bab since 2026-10-20T01:12:47Z |
| +every channel's pointer carries digests: CARLOS_REQUIRE_POINTER_DIGEST can be turned on |
| +== 2 |
| +2e37a4a0b1e32c489548f895ffc746350ccb2f6f1e898b50214ed3a6d482db4b /home/operator/release-v0.28.16/console-linux-arm64 |
| +0 |
| +== 4 |
| +shipped console 27303f54 (1 artifacts) |
| +promoted console 27303f54 -> canary/console |
| +CHANNEL VERSION PROMOTED TAG DIGESTS |
| +canary/console 27303f54 2026-10-20T23:42:50Z yes |
| +== session open (23:42:50.595Z) |
| +run-id cohort1-20261020T234250Z |
| +2026-10-20 23:42:51 267 SHA256SUMS.txt |
| +2026-10-20 23:42:52 89 SHA256SUMS.txt.sig |
| +2026-10-20 23:42:53 49873058 carlos-linux-arm64 |
| +2026-10-20 23:42:57 203 console.json |
| +2026-10-20 23:42:54 37 floor.json |
| +2026-10-20 23:42:55 244 leo.json |
| +2026-10-20 23:42:55 191 regions.json |
| +2026-10-20 23:42:51 45 release.pub |
| +2026-10-20 23:42:58 1795 signer-helpers.sh |
| +2026-10-20 23:42:56 240 sophie.json |
| +Success /usr/local/bin/carlos: OK |
| +carlos v0.28.16 |
| +jq-1.7 |
| +/usr/bin/jq |
| +SHA256SUMS.txt: OK |
| +SHA256SUMS.txt.sig: OK |
| +helpers.sh: OK |
| +release.pub: OK |
| +swap devices: 0 |
| +/run: tmpfs |
| +session-start 2026-10-20T23:43:09Z |
| +root 600 1 45 |
| + 2026/10/20 23:43:01 ALERT: root AWS file, profile, endpoint and trust-store environment overrides ignored |
| + |
| +== publish-identity v0.28.16, console 27303f54 (23:43:12.793Z) |
| +Success "writes": [ |
| + "key": "control/system/router/releases/v0.28.16.json", |
| + "before_etag": "", |
| + "key": "bootstrap/console/v0.28.16/carlos-linux-arm64", |
| + "key": "bootstrap/router/v0.28.16/carlos-linux-arm64", |
| + "key": "bootstrap/console/v0.28.16/carlos-linux-arm64", |
| + "key": "bootstrap/router/v0.28.16/carlos-linux-arm64", |
| +publish-identity writes: [{"key":"control/system/router/releases/v0.28.16.json","before_etag":"","sha256":"67d98dbeed2785c3fa2ec8d91097bb114c36fe9dcdb8f24e208a8be584c9c482","payload":{"schema":1,"component":"router","channel":"stable","current":{"console_artifacts":{"linux-arm64":{"key":"bootstrap/console/v0.28.16/carlos-linux-arm64","sha256":"2e37a4a0b1e32c489548f895ffc746350ccb2f6f1e898b50214ed3a6d482db4b"}},"release_tag":"v0.28.16","moves_protocol":1,"version":"v0.28.16","artifacts":{"linux-arm64":{"key":"bootstrap/router/v0.28.16/carlos-linux-arm64","sha256":"762c3e2b5ef594ed248b36bb42c934cd98f60e22e5a08fdd80228fd30789034d"}},"source":"release:v0.28.16","released_at":"0001-01-01T00:00:00Z"},"spread":"0s","promoted_at":"2026-10-20T23:43:14Z"}}] |
| +{ |
| + "identity_key": "control/system/router/releases/v0.28.16.json", |
| + "release": { |
| + "console_artifacts": { |
| + "linux-arm64": { |
| + "key": "bootstrap/console/v0.28.16/carlos-linux-arm64", |
| + "sha256": "2e37a4a0b1e32c489548f895ffc746350ccb2f6f1e898b50214ed3a6d482db4b" |
| + } |
| + }, |
| + "release_tag": "v0.28.16", |
| + "moves_protocol": 1, |
| + "version": "v0.28.16", |
| + "artifacts": { |
| + "linux-arm64": { |
| + "key": "bootstrap/router/v0.28.16/carlos-linux-arm64", |
| + "sha256": "762c3e2b5ef594ed248b36bb42c934cd98f60e22e5a08fdd80228fd30789034d" |
| + } |
| + }, |
| + "source": "release:v0.28.16", |
| + "released_at": "0001-01-01T00:00:00Z" |
| + } |
| +} |
| +67d98dbeed2785c3 |
| +REV=15 |
| + |
| +identity file = published object |
| +identity router 762c3e2b5ef594ed248b36bb42c934cd98f60e22e5a08fdd80228fd30789034d console 2e37a4a0b1e32c489548f895ffc746350ccb2f6f1e898b50214ed3a6d482db4b |
| +== done (23:43:21.036Z) |
| +REV after identity: {"rev":15,"activations":[],"holds":[]} |
| +box reports fresh at 23:43:35 |
| +roster before: {"rev":15,"activations":[],"holds":[]} |
| +canary v0.28.5 promoted 2026-10-20T01:22:57Z spread 5m0s file |
| +stable v0.28.12 promoted 2026-10-20T12:22:46Z spread 5m0s file |
| + |
| +ada-letterpress linux-arm64 canary v0.28.5 current |
| +kathleen-juggling linux-arm64 stable v0.28.12 current |
| +noor-marquetry linux-arm64 stable v0.28.12 current |
| +-- leo before |
| + carlos carlos v0.28.12 / prev carlos v0.28.8; path active |
| + identities: v0.28.12.json v0.28.5.json v0.28.7.json v0.28.8.json |
| + edge pid 231 exe sha 28923e4117924b4b NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:42:31 UTC ActiveState=active |
| +-- dennis before |
| + carlos carlos v0.28.12 / prev carlos v0.28.8; path active |
| + |
| + edge pid 218 exe sha 28923e4117924b4b NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:42:31 UTC ActiveState=active |
| +== promote stable v0.28.16 (23:43:36.342Z), plain system update, no step on any box |
| +promote v0.28.16 to router/stable — 2 box(es) will roll over 5m: |
| + kathleen-juggling (linux-arm64, running v0.28.12) |
| + noor-marquetry (linux-arm64, running v0.28.12) |
| +warning: v0.28.16 has not been on canary; promoting straight to stable |
| + using uploaded v0.28.16 for linux-arm64 |
| + mirrored bootstrap/router/v0.28.16/carlos-linux-arm64 |
| + pointed router/stable at v0.28.16 (spread 5m0s) |
| + serial bumped: boxes on stable start their spread |
| +promoted boxes on stable roll themselves; watch with: carlos system status --channel stable |
| +rc=0 roster: {"rev":16,"activations":["8435ca876b3aa877661e893107c8d4f1"],"holds":[]} |
| +== status 23:47:26.445Z |
| +canary v0.28.5 promoted 2026-10-20T01:22:57Z spread 5m0s file |
| +stable v0.28.16 promoted 2026-10-20T23:43:36Z spread 5m0s file |
| + |
| +ada-letterpress linux-arm64 canary v0.28.5 current |
| +kathleen-juggling linux-arm64 stable v0.28.16 current |
| +noor-marquetry linux-arm64 stable v0.28.16 current |
| +-- leo after |
| + carlos carlos v0.28.16 / prev carlos v0.28.12; path active |
| + identities: v0.28.12.json v0.28.16.json v0.28.5.json v0.28.7.json v0.28.8.json |
| + edge pid 568 exe sha 762c3e2b5ef594ed NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:46:12 UTC ActiveState=active |
| + journal: 2026-10-20T23:46:09.904388+00:00 leo systemd[1]: Starting carlos-system-update.service - carlos platform self-update (root apply)... |
| + journal: 2026-10-20T23:46:29.457564+00:00 leo systemd[1]: Finished carlos-system-update.service - carlos platform self-update (root apply). |
| +-- dennis after |
| + carlos carlos v0.28.16 / prev carlos v0.28.12; path active |
| + |
| + edge pid 504 exe sha 762c3e2b5ef594ed NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:44:34 UTC ActiveState=active |
| + journal: 2026-10-20T23:44:31.479989+00:00 dennis systemd[1]: Starting carlos-system-update.service - carlos platform self-update (root apply)... |
| + journal: 2026-10-20T23:44:51.140168+00:00 dennis systemd[1]: Finished carlos-system-update.service - carlos platform self-update (root apply). |
| +23:47:57 roster {"rev":17,"activations":[],"holds":[]} |
| +roster end: {"rev":17,"activations":[],"holds":[]} |
| +{"generated_at":"2026-10-20T23:52:15.835439414Z","release":"v0.28.16","binary":"762c3e2b5ef594ed","activation_complete":true,"host_claim_enabled":null} |
| +sophie console pid 349 exe sha b2b431f3b2fb4600; router carlos v0.28.5 |
| +######## task 9 again after the roll 23:52:18 |
| +== block 1 on leo 23:52:18.218Z |
| +launches 0 |
| +stop_inventory 0 |
| +journal_inventory_versions 0 |
| +journal_requests 0 |
| +authority/fences 0 |
| +authority/serving-parks 0 |
| +retire/serving 0 |
| +retire/cold 0 |
| +retire/retired 0 |
| +retire 0 |
| +unit-bindings 0 |
| +unit-materializations 0 |
| +restarts 0 |
| +migration-items 0 |
| +leo: all empty |
| +(context: ls: cannot access '/var/lib/carlos-claims': No such file or directory; ls: cannot access '/var/lib/carlos-release/private/restarts': No such file or directory; carlos carlos v0.28.16) |
| +[block 1 exit=0] |
| +== block 2 bucket 23:52:18.365Z |
| +host-claim-files 0 # information only; the lines below decide |
| +evidence-objects-for-leo 0 |
| +serving-evidence-objects-for-leo 0 |
| +staged |
| + |
| +staged |
| + |
| +roster-holds 0 |
| +roster-activations 0 |
| +bucket and roster: all empty |
| +(context: roster rev 17; control/hosts-backfill.json absent) |
| +[block 2 exit=0] |
| +######## ls /data/system/router on leo 23:52:29 |
| +total 16 |
| +drwxr-xr-x 3 carlos carlos 4096 2026-10-20 23:46:09.883461064 +0000 . |
| +drwxr-xr-x 3 carlos carlos 4096 2026-10-20 01:24:53.462821206 +0000 .. |
| +-rw-r--r-- 1 carlos carlos 132 2026-10-20 23:46:09.875461230 +0000 requested.json |
| +drwxr-xr-x 2 carlos carlos 4096 2026-10-20 23:46:09.875461230 +0000 v0.28.16 |
| +[hssm] i-06a1ec144aa5226fb 9b7e81e2-19f7-4166-9ff2-fcc6e3eb175f Success exit=0 |
diff --git a/harness/evidence/run11/roll2.log b/harness/evidence/run11/roll2.log| new file mode 100644 |
| index 000000000..d56202d49 |
| --- /dev/null |
| +++ b/harness/evidence/run11/roll2.log |
| @@ -0,0 +1,145 @@ |
| +== restore post-b5-run8b 23:29:36 |
| +sophie-console volume restored to post-b5-run8b |
| +leo: running failed=[] snapshots=post-b5-run8b,post-8.1-run8,g10-stuck-run8,post-window,g7-fail-r11 |
| +sophie: running failed=[] snapshots=base,boot,pre62,s7,pre-window,pre-window-seeded,post-b5,post-b5-465c3a08,post-b5-465c3a08-c8,post-b5-clean,post-b5-run8,post-b5-run8b,post-8.1-run8,g10-stuck-run8,item6-plain-update-fail,post-window,pre-0285,post-0285,post-candidate,post-move-r10,g7-fail-r11 |
| +sophie-console volume snapshots: s7,pre-window,pre-window-seeded,post-b5,post-b5-465c3a08,post-b5-465c3a08-c8,post-b5-clean,post-b5-run8,post-b5-run8b,post-8.1-run8,g10-stuck-run8,item6-plain-update-fail,post-window,pre-0285,post-0285,post-candidate,post-move-r10,g7-fail-r11 |
| +== signing session (C2 order) 23:29:54.610Z |
| +== release-window v0.28.15 (23:29:54.614Z) |
| +== release v0.28.15 |
| +3cdbf32b3d49a670aa66666f30c73e247e23652d5cc41d7d099ce8ec7f1cc51e carlos-linux-arm64 |
| +f9cdffad5c10a7f352646147a4937860c08f4b017e5594f3ed4e4cb37aa42d54 carlos_0.28.15_amd64.deb |
| +85c7dcbc65565d6825674128af05b86d830b5f5ba94439796b822ce02bde181a carlos_0.28.15_arm64.deb |
| +4a20a04d21b8d44a226abe3174ea4b659fae26cc28bf2c69b1723f4a50d056e6 SHA256SUMS.txt |
| +967cf0889002cfdc9294137cd683a3991b9fc2e5db1d326e56bc99546a108b34 SHA256SUMS.txt.sig |
| +8b6c9b7b4932697c1ec8309d3aa8713a29894b015a75e23c94a9ce1001bc6032 console-linux-arm64 |
| +verify sums: Signature Verified Successfully |
| +operator CLI: carlos v0.28.15 |
| +harness info: harness build: yes endpoint: http://203.0.113.10:9000 sums key: mAnSlX23... sha256:85f6f13cb78c |
| +== 1a/1e |
| +CHANNEL VERSION PROMOTED TAG DIGESTS |
| +canary/console e2c006d2 2026-10-20T12:16:52Z yes |
| +pointer digests: on for bab since 2026-10-20T01:12:47Z |
| +every channel's pointer carries digests: CARLOS_REQUIRE_POINTER_DIGEST can be turned on |
| +== 2 |
| +8b6c9b7b4932697c1ec8309d3aa8713a29894b015a75e23c94a9ce1001bc6032 /home/operator/release-v0.28.15/console-linux-arm64 |
| +0 |
| +== 4 |
| +shipped console 64a98473 (1 artifacts) |
| +promoted console 64a98473 -> canary/console |
| +CHANNEL VERSION PROMOTED TAG DIGESTS |
| +canary/console 64a98473 2026-10-20T23:29:58Z yes |
| +== session open (23:29:58.897Z) |
| +run-id cohort1-20261020T232958Z |
| +2026-10-20 23:30:00 267 SHA256SUMS.txt |
| +2026-10-20 23:30:01 89 SHA256SUMS.txt.sig |
| +2026-10-20 23:30:02 49873058 carlos-linux-arm64 |
| +2026-10-20 23:30:06 203 console.json |
| +2026-10-20 23:30:03 37 floor.json |
| +2026-10-20 23:30:04 244 leo.json |
| +2026-10-20 23:30:04 191 regions.json |
| +2026-10-20 23:29:59 45 release.pub |
| +2026-10-20 23:30:07 1795 signer-helpers.sh |
| +2026-10-20 23:30:05 240 sophie.json |
| +Success /usr/local/bin/carlos: OK |
| +carlos v0.28.15 |
| +jq-1.7 |
| +/usr/bin/jq |
| +SHA256SUMS.txt: OK |
| +SHA256SUMS.txt.sig: OK |
| +helpers.sh: OK |
| +release.pub: OK |
| +swap devices: 0 |
| +/run: tmpfs |
| +session-start 2026-10-20T23:30:18Z |
| +root 600 1 45 |
| + 2026/10/20 23:30:10 ALERT: root AWS file, profile, endpoint and trust-store environment overrides ignored |
| + |
| +== publish-identity v0.28.15, console 64a98473 (23:30:21.625Z) |
| +Success "writes": [ |
| + "key": "control/system/router/releases/v0.28.15.json", |
| + "before_etag": "", |
| + "key": "bootstrap/console/v0.28.15/carlos-linux-arm64", |
| + "key": "bootstrap/router/v0.28.15/carlos-linux-arm64", |
| + "key": "bootstrap/console/v0.28.15/carlos-linux-arm64", |
| + "key": "bootstrap/router/v0.28.15/carlos-linux-arm64", |
| +publish-identity writes: [{"key":"control/system/router/releases/v0.28.15.json","before_etag":"","sha256":"7792ad3b588d6897c61e8388a9439892f74b268202b6242c79772c99f8a1117a","payload":{"schema":1,"component":"router","channel":"stable","current":{"console_artifacts":{"linux-arm64":{"key":"bootstrap/console/v0.28.15/carlos-linux-arm64","sha256":"8b6c9b7b4932697c1ec8309d3aa8713a29894b015a75e23c94a9ce1001bc6032"}},"release_tag":"v0.28.15","moves_protocol":1,"version":"v0.28.15","artifacts":{"linux-arm64":{"key":"bootstrap/router/v0.28.15/carlos-linux-arm64","sha256":"3cdbf32b3d49a670aa66666f30c73e247e23652d5cc41d7d099ce8ec7f1cc51e"}},"source":"release:v0.28.15","released_at":"0001-01-01T00:00:00Z"},"spread":"0s","promoted_at":"2026-10-20T23:30:23Z"}}] |
| +{ |
| + "identity_key": "control/system/router/releases/v0.28.15.json", |
| + "release": { |
| + "console_artifacts": { |
| + "linux-arm64": { |
| + "key": "bootstrap/console/v0.28.15/carlos-linux-arm64", |
| + "sha256": "8b6c9b7b4932697c1ec8309d3aa8713a29894b015a75e23c94a9ce1001bc6032" |
| + } |
| + }, |
| + "release_tag": "v0.28.15", |
| + "moves_protocol": 1, |
| + "version": "v0.28.15", |
| + "artifacts": { |
| + "linux-arm64": { |
| + "key": "bootstrap/router/v0.28.15/carlos-linux-arm64", |
| + "sha256": "3cdbf32b3d49a670aa66666f30c73e247e23652d5cc41d7d099ce8ec7f1cc51e" |
| + } |
| + }, |
| + "source": "release:v0.28.15", |
| + "released_at": "0001-01-01T00:00:00Z" |
| + } |
| +} |
| +7792ad3b588d6897 |
| +REV=15 |
| + |
| +identity file = published object |
| +identity router 3cdbf32b3d49a670aa66666f30c73e247e23652d5cc41d7d099ce8ec7f1cc51e console 8b6c9b7b4932697c1ec8309d3aa8713a29894b015a75e23c94a9ce1001bc6032 |
| +== done (23:30:29.909Z) |
| +REV after identity: {"rev":15,"activations":[],"holds":[]} |
| +box reports fresh at 23:30:56 |
| +roster before: {"rev":15,"activations":[],"holds":[]} |
| +canary v0.28.5 promoted 2026-10-20T01:22:57Z spread 5m0s file |
| +stable v0.28.12 promoted 2026-10-20T12:22:46Z spread 5m0s file |
| + |
| +ada-letterpress linux-arm64 canary v0.28.5 current |
| +kathleen-juggling linux-arm64 stable v0.28.12 current |
| +noor-marquetry linux-arm64 stable v0.28.12 current |
| +-- leo before |
| + carlos carlos v0.28.12 / prev carlos v0.28.8; path active |
| + identities: v0.28.12.json v0.28.5.json v0.28.7.json v0.28.8.json |
| + edge pid 232 exe sha 28923e4117924b4b NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:29:50 UTC ActiveState=active |
| +-- dennis before |
| + carlos carlos v0.28.12 / prev carlos v0.28.8; path active |
| + |
| + edge pid 218 exe sha 28923e4117924b4b NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:29:50 UTC ActiveState=active |
| +== promote stable v0.28.15 (23:30:57.384Z), plain system update, no step on any box |
| +promote v0.28.15 to router/stable — 2 box(es) will roll over 5m: |
| + kathleen-juggling (linux-arm64, running v0.28.12) |
| + noor-marquetry (linux-arm64, running v0.28.12) |
| +warning: v0.28.15 has not been on canary; promoting straight to stable |
| + using uploaded v0.28.15 for linux-arm64 |
| + mirrored bootstrap/router/v0.28.15/carlos-linux-arm64 |
| + pointed router/stable at v0.28.15 (spread 5m0s) |
| + serial bumped: boxes on stable start their spread |
| +promoted boxes on stable roll themselves; watch with: carlos system status --channel stable |
| +rc=0 roster: {"rev":16,"activations":["8732823b8f6920a74417833e57736a3d"],"holds":[]} |
| +== status 23:34:16.962Z |
| +canary v0.28.5 promoted 2026-10-20T01:22:57Z spread 5m0s file |
| +stable v0.28.15 promoted 2026-10-20T23:30:57Z spread 5m0s file |
| + |
| +ada-letterpress linux-arm64 canary v0.28.5 current |
| +kathleen-juggling linux-arm64 stable v0.28.15 current |
| +noor-marquetry linux-arm64 stable v0.28.15 current |
| +-- leo after |
| + carlos carlos v0.28.15 / prev carlos v0.28.12; path active |
| + identities: v0.28.12.json v0.28.15.json v0.28.5.json v0.28.7.json v0.28.8.json |
| + edge pid 549 exe sha 3cdbf32b3d49a670 NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:33:12 UTC ActiveState=active |
| + journal: 2026-10-20T23:33:10.128006+00:00 leo systemd[1]: Starting carlos-system-update.service - carlos platform self-update (root apply)... |
| + journal: 2026-10-20T23:33:29.543791+00:00 leo systemd[1]: Finished carlos-system-update.service - carlos platform self-update (root apply). |
| +-- dennis after |
| + carlos carlos v0.28.15 / prev carlos v0.28.12; path active |
| + |
| + edge pid 500 exe sha 3cdbf32b3d49a670 NRestarts=0 ExecMainStartTimestamp=Tue 2026-10-20 23:32:45 UTC ActiveState=active |
| + journal: 2026-10-20T23:32:44.696067+00:00 dennis systemd[1]: Starting carlos-system-update.service - carlos platform self-update (root apply)... |
| + journal: 2026-10-20T23:33:02.785394+00:00 dennis systemd[1]: Finished carlos-system-update.service - carlos platform self-update (root apply). |
| +23:35:03 roster {"rev":17,"activations":[],"holds":[]} |
| +roster end: {"rev":17,"activations":[],"holds":[]} |
| +{"generated_at":"2026-10-20T23:39:58.358967055Z","release":"v0.28.15","binary":"3cdbf32b3d49a670","activation_complete":true,"host_claim_enabled":null} |
| +sophie console pid 317 exe sha b2b431f3b2fb4600; router carlos v0.28.5 |
| +[hssm] i-06a1ec144aa5226fb 78283619-f609-491d-990b-741013bb7ff3 Success exit=0 |
diff --git a/harness/evidence/run11b/roll.log b/harness/evidence/run11b/roll.log| new file mode 100644 |
| index 000000000..323b932ae |
| --- /dev/null |
| +++ b/harness/evidence/run11b/roll.log |
| @@ -0,0 +1,216 @@ |
| +== restore post-b5-run8b 08:04:25 |
| +sophie-console volume restored to post-b5-run8b |
| +leo: running failed=[] snapshots=post-b5-run8b,post-8.1-run8,g10-stuck-run8,post-window,g7-fail-r11 |
| +sophie: running failed=[] snapshots=base,boot,pre62,s7,pre-window,pre-window-seeded,post-b5,post-b5-465c3a08,post-b5-465c3a08-c8,post-b5-clean,post-b5-run8,post-b5-run8b,post-8.1-run8,g10-stuck-run8,item6-plain-update-fail,post-window,pre-0285,post-0285,post-candidate,post-move-r10,g7-fail-r11 |
| +sophie-console volume snapshots: s7,pre-window,pre-window-seeded,post-b5,post-b5-465c3a08,post-b5-465c3a08-c8,post-b5-clean,post-b5-run8,post-b5-run8b,post-8.1-run8,g10-stuck-run8,item6-plain-update-fail,post-window,pre-0285,post-0285,post-candidate,post-move-r10,g7-fail-r11 |
| +######## task 9 pre-roll check 08:04:49 |
| +== block 1 on leo 08:04:49.097Z |
| +launches 0 |
| +stop_inventory 0 |
| +journal_inventory_versions 0 |
| +journal_requests 0 |
| +authority/fences 0 |
| +authority/serving-parks 0 |
| +retire/serving 0 |
| +retire/cold 0 |
| +retire/retired 0 |
| +retire 0 |
| +unit-bindings 0 |
| +unit-materializations 0 |
| +restarts 0 |
| +migration-items 0 |
| +leo: all empty |
| +(context: ls: cannot access '/var/lib/carlos-claims': No such file or directory; ls: cannot access '/var/lib/carlos-release/private/restarts': No such file or directory; carlos carlos v0.28.12) |
| +[block 1 exit=0] |
| +== block 2 bucket 08:04:49.212Z |
| +host-claim-files 0 # information only; the lines below decide |
| +evidence-objects-for-leo 0 |
| +serving-evidence-objects-for-leo 0 |
| +staged |
| + |
| +staged |
| + |
| +roster-holds 0 |
| +roster-activations 0 |
| +bucket and roster: all empty |
| +(context: roster rev 15; control/hosts-backfill.json absent) |
| +[block 2 exit=0] |
| +######## roll 08:05:00 |
| +== signing session (C2 order) 08:05:00.986Z |
| +== release-window v0.28.17 (08:05:00.989Z) |
| +== release v0.28.17 |
| +a79ed7263e3e92d3b7d25d856a46616dc39d2581bc5cdfedda510e5e43c0cdaa carlos-linux-arm64 |
| +8501a79b585b2280b71df1b2fb8d3e74cb4d8bdfb18ca0e980d4f8a8053133eb carlos_0.28.17_amd64.deb |
| +7f217031c6f76114d507b7005ce078a3d4a485118cc29c4928ac71816dce0feb carlos_0.28.17_arm64.deb |
| +f67347bf4c69ef0df43fe9499b72f99071420a52d0d699ec551afdeb36709f87 SHA256SUMS.txt |
| +4a737dc1152abcdfed0321547e2d03eae3066c86139fe25d5a585a10c4f3dc0c SHA256SUMS.txt.sig |
| +ac3d2a5263f4e63842937648d988e659c8f075943124a40b6923fb33347e9713 console-linux-arm64 |
| +verify sums: Signature Verified Successfully |
| +operator CLI: carlos v0.28.17 |
| +harness info: harness build: yes endpoint: http://203.0.113.10:9000 sums key: mAnSlX23... sha256:85f6f13cb78c |
| +== 1a/1e |
| +CHANNEL VERSION PROMOTED TAG DIGESTS |
| +canary/console e2c006d2 2026-10-20T12:16:52Z yes |
| +pointer digests: on for bab since 2026-10-20T01:12:47Z |
| +every channel's pointer carries digests: CARLOS_REQUIRE_POINTER_DIGEST can be turned on |
| +== 2 |
| +ac3d2a5263f4e63842937648d988e659c8f075943124a40b6923fb33347e9713 /home/operator/release-v0.28.17/console-linux-arm64 |
| +0 |
| +== 4 |
| +shipped console 27303f54 (1 artifacts) |
| +promoted console 27303f54 -> canary/console |
| +CHANNEL VERSION PROMOTED TAG DIGESTS |
| +canary/console 27303f54 2026-10-21T08:05:05Z yes |
| +== session open (08:05:05.256Z) |
| +run-id cohort1-20261021T080505Z |
| +2026-10-21 08:05:06 267 SHA256SUMS.txt |
| +2026-10-21 08:05:07 89 SHA256SUMS.txt.sig |
| +2026-10-21 08:05:08 49873058 carlos-linux-arm64 |
| +2026-10-21 08:05:12 203 console.json |
| +2026-10-21 08:05:09 37 floor.json |
| +2026-10-21 08:05:10 244 leo.json |
| +2026-10-21 08:05:09 191 regions.json |
| +2026-10-21 08:05:05 45 release.pub |
| +2026-10-21 08:05:13 1795 signer-helpers.sh |
| +2026-10-21 08:05:11 240 sophie.json |
| +Success /usr/local/bin/carlos: OK |
| +carlos v0.28.17 |
| +jq-1.7 |
| +/usr/bin/jq |
| +SHA256SUMS.txt: OK |
| +SHA256SUMS.txt.sig: OK |
| +helpers.sh: OK |
| +release.pub: OK |
| +swap devices: 0 |
| +/run: tmpfs |
| +session-start 2026-10-21T08:05:24Z |
| +root 600 1 45 |
| + 2026/10/21 08:05:16 ALERT: root AWS file, profile, endpoint and trust-store environment overrides ignored |
| + |
| +== publish-identity v0.28.17, console 27303f54 (08:05:27.826Z) |
| +Success "writes": [ |
| + "key": "control/system/router/releases/v0.28.17.json", |
| + "before_etag": "", |
| + "key": "bootstrap/console/v0.28.17/carlos-linux-arm64", |
| + "key": "bootstrap/router/v0.28.17/carlos-linux-arm64", |
| + "key": "bootstrap/console/v0.28.17/carlos-linux-arm64", |
| + "key": "bootstrap/router/v0.28.17/carlos-linux-arm64", |
| +publish-identity writes: [{"key":"control/system/router/releases/v0.28.17.json","before_etag":"","sha256":"305d705c4341b6ef93c67fc2b5e7e9001aa6c8a9707560f12d8f5b2157a5ecb6","payload":{"schema":1,"component":"router","channel":"stable","current":{"console_artifacts":{"linux-arm64":{"key":"bootstrap/console/v0.28.17/carlos-linux-arm64","sha256":"ac3d2a5263f4e63842937648d988e659c8f075943124a40b6923fb33347e9713"}},"release_tag":"v0.28.17","moves_protocol":1,"version":"v0.28.17","artifacts":{"linux-arm64":{"key":"bootstrap/router/v0.28.17/carlos-linux-arm64","sha256":"a79ed7263e3e92d3b7d25d856a46616dc39d2581bc5cdfedda510e5e43c0cdaa"}},"source":"release:v0.28.17","released_at":"0001-01-01T00:00:00Z"},"spread":"0s","promoted_at":"2026-10-21T08:05:29Z"}}] |
| +{ |
| + "identity_key": "control/system/router/releases/v0.28.17.json", |
| + "release": { |
| + "console_artifacts": { |
| + "linux-arm64": { |
| + "key": "bootstrap/console/v0.28.17/carlos-linux-arm64", |
| + "sha256": "ac3d2a5263f4e63842937648d988e659c8f075943124a40b6923fb33347e9713" |
| + } |
| + }, |
| + "release_tag": "v0.28.17", |
| + "moves_protocol": 1, |
| + "version": "v0.28.17", |
| + "artifacts": { |
| + "linux-arm64": { |
| + "key": "bootstrap/router/v0.28.17/carlos-linux-arm64", |
| + "sha256": "a79ed7263e3e92d3b7d25d856a46616dc39d2581bc5cdfedda510e5e43c0cdaa" |
| + } |
| + }, |
| + "source": "release:v0.28.17", |
| + "released_at": "0001-01-01T00:00:00Z" |
| + } |
| +} |
| +305d705c4341b6ef |
| +REV=15 |
| + |
| +identity file = published object |
| +identity router a79ed7263e3e92d3b7d25d856a46616dc39d2581bc5cdfedda510e5e43c0cdaa console ac3d2a5263f4e63842937648d988e659c8f075943124a40b6923fb33347e9713 |
| +== done (08:05:36.164Z) |
| +REV after identity: {"rev":15,"activations":[],"holds":[]} |
| +box reports fresh at 08:05:50 |
| +roster before: {"rev":15,"activations":[],"holds":[]} |
| +canary v0.28.5 promoted 2026-10-20T01:22:57Z spread 5m0s file |
| +stable v0.28.12 promoted 2026-10-20T12:22:46Z spread 5m0s file |
| + |
| +ada-letterpress linux-arm64 canary v0.28.5 current |
| +kathleen-juggling linux-arm64 stable v0.28.12 current |
| +noor-marquetry linux-arm64 stable v0.28.12 current |
| +-- leo before |
| + carlos carlos v0.28.12 / prev carlos v0.28.8; path active |
| + identities: v0.28.12.json v0.28.5.json v0.28.7.json v0.28.8.json |
| + edge pid 286 exe sha 28923e4117924b4b NRestarts=0 ExecMainStartTimestamp=Wed 2026-10-21 08:04:43 UTC ActiveState=active |
| +-- dennis before |
| + carlos carlos v0.28.12 / prev carlos v0.28.8; path active |
| + |
| + edge pid 239 exe sha 28923e4117924b4b NRestarts=0 ExecMainStartTimestamp=Wed 2026-10-21 08:04:44 UTC ActiveState=active |
| +== promote stable v0.28.17 (08:05:51.400Z), plain system update, no step on any box |
| +promote v0.28.17 to router/stable — 2 box(es) will roll over 5m: |
| + kathleen-juggling (linux-arm64, running v0.28.12) |
| + noor-marquetry (linux-arm64, running v0.28.12) |
| +warning: v0.28.17 has not been on canary; promoting straight to stable |
| + using uploaded v0.28.17 for linux-arm64 |
| + mirrored bootstrap/router/v0.28.17/carlos-linux-arm64 |
| + pointed router/stable at v0.28.17 (spread 5m0s) |
| + serial bumped: boxes on stable start their spread |
| +promoted boxes on stable roll themselves; watch with: carlos system status --channel stable |
| +rc=0 roster: {"rev":16,"activations":["3485fc896974a0d5fc485d1cf573e2a3"],"holds":[]} |
| +== status 08:10:11.999Z |
| +canary v0.28.5 promoted 2026-10-20T01:22:57Z spread 5m0s file |
| +stable v0.28.17 promoted 2026-10-21T08:05:51Z spread 5m0s file |
| + |
| +ada-letterpress linux-arm64 canary v0.28.5 current |
| +kathleen-juggling linux-arm64 stable v0.28.17 current |
| +noor-marquetry linux-arm64 stable v0.28.17 current |
| +-- leo after |
| + carlos carlos v0.28.17 / prev carlos v0.28.12; path active |
| + identities: v0.28.12.json v0.28.17.json v0.28.5.json v0.28.7.json v0.28.8.json |
| + edge pid 631 exe sha a79ed7263e3e92d3 NRestarts=0 ExecMainStartTimestamp=Wed 2026-10-21 08:09:05 UTC ActiveState=active |
| + journal: 2026-10-21T08:09:02.944013+00:00 leo systemd[1]: Starting carlos-system-update.service - carlos platform self-update (root apply)... |
| + journal: 2026-10-21T08:09:22.324882+00:00 leo systemd[1]: Finished carlos-system-update.service - carlos platform self-update (root apply). |
| +-- dennis after |
| + carlos carlos v0.28.17 / prev carlos v0.28.12; path active |
| + |
| + edge pid 558 exe sha a79ed7263e3e92d3 NRestarts=0 ExecMainStartTimestamp=Wed 2026-10-21 08:07:52 UTC ActiveState=active |
| + journal: 2026-10-21T08:07:51.044065+00:00 dennis systemd[1]: Starting carlos-system-update.service - carlos platform self-update (root apply)... |
| + journal: 2026-10-21T08:08:09.153046+00:00 dennis systemd[1]: Finished carlos-system-update.service - carlos platform self-update (root apply). |
| +08:10:12 roster {"rev":17,"activations":[],"holds":[]} |
| +roster end: {"rev":17,"activations":[],"holds":[]} |
| +{"generated_at":"2026-10-21T08:15:27.576007184Z","release":"v0.28.17","binary":"a79ed7263e3e92d3","activation_complete":true,"host_claim_enabled":null} |
| +sophie console pid 398 exe sha b2b431f3b2fb4600; router carlos v0.28.5 |
| +######## task 9 again after the roll 08:15:38 |
| +== block 1 on leo 08:15:38.506Z |
| +launches 0 |
| +stop_inventory 0 |
| +journal_inventory_versions 0 |
| +journal_requests 0 |
| +authority/fences 0 |
| +authority/serving-parks 0 |
| +retire/serving 0 |
| +retire/cold 0 |
| +retire/retired 0 |
| +retire 0 |
| +unit-bindings 0 |
| +unit-materializations 0 |
| +restarts 0 |
| +migration-items 0 |
| +leo: all empty |
| +(context: ls: cannot access '/var/lib/carlos-claims': No such file or directory; ls: cannot access '/var/lib/carlos-release/private/restarts': No such file or directory; carlos carlos v0.28.17) |
| +[block 1 exit=0] |
| +== block 2 bucket 08:15:38.628Z |
| +host-claim-files 0 # information only; the lines below decide |
| +evidence-objects-for-leo 0 |
| +serving-evidence-objects-for-leo 0 |
| +staged |
| + |
| +staged |
| + |
| +roster-holds 0 |
| +roster-activations 0 |
| +bucket and roster: all empty |
| +(context: roster rev 17; control/hosts-backfill.json absent) |
| +[block 2 exit=0] |
| +######## ls /data/system/router on leo 08:15:50 |
| +total 16 |
| +drwxr-xr-x 3 carlos carlos 4096 2026-10-21 08:09:02.921399042 +0000 . |
| +drwxr-xr-x 3 carlos carlos 4096 2026-10-20 01:24:53.462821206 +0000 .. |
| +-rw-r--r-- 1 carlos carlos 133 2026-10-21 08:09:02.917399130 +0000 requested.json |
| +drwxr-xr-x 2 carlos carlos 4096 2026-10-21 08:09:02.917399130 +0000 v0.28.17 |
| +[hssm] i-06a1ec144aa5226fb a35d0bdb-3d07-4c2b-b261-3fdf063d9b97 Success exit=0 |
diff --git a/harness/scenarios/cohort1/blocks/b4-pair2.sh b/harness/scenarios/cohort1/blocks/b4-pair2.sh| new file mode 100644 |
| index 000000000..b1d81b094 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/b4-pair2.sh |
| @@ -0,0 +1,25 @@ |
| +# B4 step 4 again for the SECOND create (Run 11b): b4-pair.sh with H2 (default claimtrial3.dev.harness.test), app claimtrial2. |
| +# report key status/boxes/ada-letterpress.json, profile harness. |
| +set -euo pipefail |
| +. ~/cohort1/box-helpers.sh |
| +export AWS_PROFILE=harness |
| +cd ~/cohort1/out |
| +DEV=http://127.0.0.1:8090 |
| +H2=${H2:-claimtrial3.dev.harness.test} |
| +CR='cd /root/claim-trial && /opt/carlos/carlos system claims console-report --bucket harness-deployment --aws-region eu-west-1 --expect-revision "$(cat rev)" --console-id "$(cat console-id)" --public-key "$(cat release.pub)"' |
| +lm() { date -u -d "$(aws --region eu-west-1 s3api head-object --bucket harness-deployment --key status/boxes/ada-letterpress.json --query LastModified --output text)" +%s; } |
| +date -u +%FT%TZ |
| +box_inspect "$SOPHIE" |
| +ssm_run "$SOPHIE" "$CR --dry-run" |
| +LAST=$(lm) |
| +AGE=$(( $(date -u +%s) - LAST )) |
| +echo "sophie's report written $(date -u -d "@$LAST" +%FT%TZ), ${AGE}s ago" |
| +if [ "$AGE" -ge 210 ]; then |
| + echo "next tick within 90s: waiting for it" |
| + until [ "$(lm)" != "$LAST" ]; do sleep 5; done |
| +fi |
| +date -u +%FT%T.%3NZ |
| +ssm_run "$SOPHIE" "$CR" |
| +date -u +%FT%T.%3NZ |
| +carlos instances create --app claimtrial2 --account bab --host $H2 --console $DEV --no-prompt |
| +date -u +%FT%T.%3NZ |
diff --git a/harness/scenarios/cohort1/blocks/g10-r16.host.sh b/harness/scenarios/cohort1/blocks/g10-r16.host.sh| new file mode 100644 |
| index 000000000..15409c82d |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/g10-r16.host.sh |
| @@ -0,0 +1,10 @@ |
| +#!/bin/bash |
| +# Run 11 on 27303f54 (= harness v0.28.16): restore post-b5-run8b, task 9 pre-roll check, the plain roll, task 9 again, |
| +# then (coordinator) `ls /data/system/router` on leo before 8.1, informational. |
| +# g10-r16.host.sh <TAG> <ART> <carlos sha> <console sha> <CV> |
| +set -uo pipefail |
| +echo "== restore post-b5-run8b $(date -u +%T)"; bash /root/harness/snapshot.sh restore post-b5-run8b 2>&1 | grep -E '^leo|^sophie|volume|WARN' |
| +echo "######## task 9 pre-roll check $(date -u +%T)"; bash /home/operator/cohort1/blocks/g10-preroll.host.sh |
| +echo "######## roll $(date -u +%T)"; bash /home/operator/cohort1/blocks/g10-roll.host.sh "$@" |
| +echo "######## task 9 again after the roll $(date -u +%T)"; bash /home/operator/cohort1/blocks/g10-preroll.host.sh |
| +echo "######## ls /data/system/router on leo $(date -u +%T)"; incus exec leo -- ls -la --time-style=full-iso /data/system/router |
diff --git a/harness/scenarios/cohort1/blocks/g10-reroll.host.sh b/harness/scenarios/cohort1/blocks/g10-reroll.host.sh| new file mode 100644 |
| index 000000000..3d6d8a943 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/g10-reroll.host.sh |
| @@ -0,0 +1,5 @@ |
| +#!/bin/bash |
| +# Run 11: back to post-b5-run8b and the same plain roll of v0.28.15 (after G7's refusal on the lingering cache). |
| +set -uo pipefail |
| +echo "== restore post-b5-run8b $(date -u +%T)"; bash /root/harness/snapshot.sh restore post-b5-run8b 2>&1 | grep -E '^leo|^sophie|volume|WARN' |
| +bash /home/operator/cohort1/blocks/g10-roll.host.sh "$@" |
diff --git a/harness/scenarios/cohort1/blocks/g10-wait-cache.host.sh b/harness/scenarios/cohort1/blocks/g10-wait-cache.host.sh| new file mode 100644 |
| index 000000000..5d5b2e326 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/g10-wait-cache.host.sh |
| @@ -0,0 +1,16 @@ |
| +#!/bin/bash |
| +# Run 11: wait (read-only) until leo's own agent has dropped its router cache, so /data/system/router holds only |
| +# requested.json, then snapshot post-g4-r11. No hand change on leo. g10-wait-cache.host.sh [max minutes] |
| +set -uo pipefail |
| +MAX=${1:-80} |
| +ls_r() { incus exec leo -- find /data/system/router -mindepth 1 -printf '%y %u %m %s %TT %P\n' | sort -k6; } |
| +echo "$(date -u +%T) start:"; ls_r |
| +for i in $(seq 1 $((MAX*4))); do |
| + [ "$(incus exec leo -- find /data/system/router -mindepth 1 ! -name requested.json | wc -l)" = 0 ] && break |
| + sleep 15 |
| +done |
| +echo "$(date -u +%T) end:"; ls_r |
| +incus exec leo -- journalctl -u carlos-edge.service --since -90min --no-pager -o short-iso | grep -iE 'system (update|pointer)|cache' | tail -5 |
| +[ "$(incus exec leo -- find /data/system/router -mindepth 1 ! -name requested.json | wc -l)" = 0 ] || { echo "STILL CACHED"; exit 1; } |
| +echo "== snapshot post-g4-r11 $(date -u +%T)"; bash /root/harness/snapshot.sh create post-g4-r11 2>&1 | grep -E '^leo|^sophie|volume' |
| +df -h / | tail -1 |
diff --git a/harness/scenarios/cohort1/blocks/g10-watch.host.sh b/harness/scenarios/cohort1/blocks/g10-watch.host.sh| new file mode 100644 |
| index 000000000..cd4bc444e |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/g10-watch.host.sh |
| @@ -0,0 +1,51 @@ |
| +#!/bin/bash |
| +# Run 11 G10: watch a claim-mode create from the 202 to serving (read-only), then dump the evidence. |
| +# g10-watch.host.sh <host> <since, e.g. "2026-10-21 00:30:00"> [max minutes, default 12] |
| +set -uo pipefail |
| +H=$1 SINCE=$2 MAX=${3:-12} |
| +O=/root/harness/evidence-r11/$H; mkdir -p $O |
| +op() { runuser -l operator -c "$*"; } |
| +claim() { op "aws s3 cp --quiet s3://harness-deployment/control/hosts/$H.json -" 2>/dev/null; } |
| +route() { incus exec leo -- python3 -c " |
| +import sqlite3,sys |
| +c=sqlite3.connect('file:/data/registry.db?mode=ro',uri=True) |
| +print([r for r in c.execute('select host,app,pool,hibernate from routes where host=?',(sys.argv[1],))])" "$H"; } |
| +last="" |
| +for i in $(seq 1 $((MAX*4))); do |
| + c=$(claim); et=$(op "aws s3api head-object --bucket harness-deployment --key control/hosts/$H.json --query '[ETag,LastModified]' --output text" 2>/dev/null) |
| + line="$(echo "$c" | jq -c '{kind: (.op.kind // null), op: ((.op.id // "")[0:8]), ack: ((.op.journal.exec_ack // {}) | to_entries | map({box: .key, exp: (.value.expires // .value.lease_expires // null), le: ((.value.lease_etag // "")[0:8])})), serving: (.serving // .holder.serving // null | tostring | .[0:80])}' 2>/dev/null) etag=$et" |
| + [ "$line" != "$last" ] && echo "$(date -u +%T) $line route=$(route)" |
| + last=$line |
| + k=$(echo "$c" | jq -r '.op.kind // "none"' 2>/dev/null) |
| + if [ "$k" != creating ] && [ -n "$(route | grep "$H")" ]; then echo "$(date -u +%T) DONE: op.kind=$k, route present"; break; fi |
| + sleep 15 |
| +done |
| +echo "== claim now"; claim | tee $O/claim.json | jq -c 'del(.op.intent.record)' | cut -c1-1500 |
| +echo "== bucket objects under control/hosts/$H/"; op "aws s3 ls --recursive s3://harness-deployment/control/hosts/$H/" | tee $O/hosts-ls.txt | grep -v '/exec/' | head -40 |
| +echo "== leo journal since $SINCE: authority/typed/claim lines" |
| +incus exec leo -- journalctl -u carlos-edge.service -u carlos-instance-control.service --since "$SINCE" --no-pager -o short-iso > $O/leo-journal.txt |
| +grep -cE 'selected authority changed' $O/leo-journal.txt | sed 's/^/selected-authority-changed count: /' |
| +grep -cE 'ErrTypedInventory|typed (retirement )?inventory' $O/leo-journal.txt | sed 's/^/typed-inventory count: /' |
| +grep -iE "$H|claim|authority|binding|install|provision" $O/leo-journal.txt | tail -25 |
| +echo "== leo journals.db" |
| +incus exec leo -- python3 -c " |
| +import sqlite3,json,re |
| +c=sqlite3.connect('file:/var/lib/carlos-claims/journals.db?mode=ro',uri=True) |
| +for t in ['launches','stop_inventory','journal_inventory_versions','journal_requests']: |
| + try: print(t, c.execute('select count(*) from %s'%t).fetchone()[0]) |
| + except Exception as e: print(t,'ERR',e) |
| +for h,inc,st,b in c.execute('select host,incarnation,stamp,body from stop_inventory order by stamp'): |
| + s=b.decode() if isinstance(b,bytes) else b |
| + try: d=json.loads(s) |
| + except Exception: d={} |
| + keys={k:v for k,v in d.items() if re.search('revision|binding|actor|box|enroll',k,re.I)} |
| + print('stop_inventory',h,inc[:12],st,json.dumps(keys)[:600]) |
| +for r in c.execute('select host,incarnation,stamp,revision from journal_inventory_versions order by stamp'): print('inventory_version',r[0],r[1][:12],r[2],r[3]) |
| +" 2>&1 | tee $O/journals-db.txt |
| +echo "== leo root state for $H" |
| +incus exec leo -- bash -c "ls -la /var/lib/carlos-claims/authority/fences/ 2>&1; for f in /var/lib/carlos-claims/authority/fences/*.json; do [ -f \"\$f\" ] && python3 -c 'import json,sys,re; d=json.load(open(sys.argv[1])); print(sys.argv[1], json.dumps(d)[:900])' \"\$f\"; done" 2>&1 | tee $O/fences.txt | cut -c1-1000 |
| +echo "== sophie console recovery lines since $SINCE" |
| +incus exec sophie -- journalctl -u console.service --since "$SINCE" --no-pager -o short-iso > $O/sophie-console.txt |
| +grep -iE "recover|claim|$H|contract" $O/sophie-console.txt | tail -20 |
| +echo "== roster"; op 'carlos system claims inspect --bucket harness-deployment --aws-region eu-west-1 --public-key "$(cat ~/release.pub)" 2>/dev/null | jq -c "{rev: .roster.revision, holds: (.roster.holds // {}), activations: (.roster.activations // {} | keys)}"' |
| +echo "WATCH END $(date -u +%T)" |
diff --git a/harness/scenarios/cohort1/blocks/g10b-b4.host.sh b/harness/scenarios/cohort1/blocks/g10b-b4.host.sh| new file mode 100644 |
| index 000000000..d0b9476b6 |
| --- /dev/null |
| +++ b/harness/scenarios/cohort1/blocks/g10b-b4.host.sh |
| @@ -0,0 +1,20 @@ |
| +#!/bin/bash |
| +# Run 11b: block B4 then G10 (host root). B4 1-3 (b4.sh, operator), the timed pair (b4-pair.sh, operator), then |
| +# /root/harness/g10-watch.host.sh on the create (14 minutes: the ack and the console's 5-minute recovery). |
| +# g10b-b4.host.sh [pair-only] |
| +set -uo pipefail |
| +H=claimtrial2.dev.harness.test |
| +if [ "${1:-}" != pair-only ]; then |
| + echo "######## B4 1-3 $(date -u +%T.%3NZ)" |
| + runuser -l operator -c 'bash ~/cohort1/blocks/b4.sh' 2>&1 | grep -v '^help| ' |
| + echo "[b4.sh exit=${PIPESTATUS[0]}]" |
| +fi |
| +SINCE=$(date -u '+%F %T') |
| +echo "######## B4 4 the timed pair, attempt 1 $(date -u +%T.%3NZ)" |
| +runuser -l operator -c 'bash ~/cohort1/blocks/b4-pair.sh' 2>&1 | grep -v '^help| ' | tee /root/harness/b4-attempt1-r11b.log |
| +echo "[b4-pair exit=${PIPESTATUS[0]}]" |
| +echo "######## G10 watch $(date -u +%T.%3NZ)" |
| +bash /root/harness/g10-watch.host.sh $H "$SINCE" 14 |
| +echo "######## B4 5 $(date -u +%T.%3NZ)" |
| +runuser -l operator -c 'bash ~/cohort1/blocks/b4-after.sh' 2>&1 | grep -v '^help| ' |
| +echo "G10B END $(date -u +%T.%3NZ)" |