63eff21a5c
gates / gates (push) Successful in 17s
GOLDEN_SHA256 5f8a53ed5b19a6cb2006298ce6239f6fca2b990cc3ef6eada89f602801ca91b8, 657 494 489 B. 0.231.0 was never baked, so the fleet went 0.230.0 -> 0.232.0. THE CHECK THE 0.230.0 BAKE SKIPPED, AND THIS ONE DID NOT: the bake script's fingerprint was compared ACROSS THE HOP - 7b0fb5cf...73b6a1 on DooPlex and inside the VM. The previous bake recorded only the DooPlex-side hash and said so; this one is a measurement. Three independent readers agreed before anything was vouched: the bake's own print, the round trip of the published bytes (HTTP 200, 657494489 B, same sha, hashed from what was downloaded), and the hub's Day-0 dropdown reading Gitea on a different code path. The delivered artifact names its own controller - ./etc/felhom-controller-image reads felhom-controller:0.232.0 - with 19382 entries under var/lib/felhom/docker/. Both pre-gates were shown able to see something before their zeroes were believed, and the manifest was RE-READ after vouching rather than trusted from the 303 flash. DELIVERY WAS ACTUALLY EXERCISED. Both boxes had been hand-deployed during validation, so the floor had nothing to move. Rather than report delivery untested, demo-felhom was rolled back to 0.231.0 and the chain run for real - it moved itself in ~20s: 10:47:16 controller-swap: image file written, restarting bootstrap target=...0.232.0 10:47:26 controller-swap: new controller healthy target=...0.232.0 And this is the first bake golden_currency_gate.py actually gates: it now reads the GOLDEN_SHA256 line out of the bake log rather than matching a directory name (R-410, shipped hours earlier the same day). All 13 felhom.eu gates are green, golden-currency included, for the first time since v0.230.0 was released.
101 lines
4.5 KiB
Markdown
101 lines
4.5 KiB
Markdown
# Golden bake 0.232.0 — 2026-09-01
|
|
|
|
Baked, published, round-trip verified, **vouched**, and the fleet floor raised.
|
|
**This bake carries TWO releases: 0.231.0 was never baked**, so the fleet went 0.230.0 → 0.232.0.
|
|
|
|
| | |
|
|
|---|---|
|
|
| `GOLDEN_SHA256` | `5f8a53ed5b19a6cb2006298ce6239f6fca2b990cc3ef6eada89f602801ca91b8` |
|
|
| size | **657 494 489 B** |
|
|
| baked controller | `gitea.dooplex.hu/admin/felhom-controller:0.232.0` |
|
|
| `MinAgent` | **0.129.0** — read from the controller CHANGELOG header, not assumed |
|
|
| script | `build-golden.sh v3.0.0`, sha `7b0fb5cf…73b6a1` |
|
|
| template | `debian-13-standard_13.6-1_amd64.tar.zst`, after `pveam update` |
|
|
| archive volid | `local:backup/vzdump-lxc-9100-2026_09_01-10_43_08.tar.zst` |
|
|
|
|
## The check the 0.230.0 bake skipped, and this one did not
|
|
|
|
**The bake script's fingerprint was compared ACROSS THE HOP:**
|
|
|
|
```
|
|
DooPlex : 7b0fb5cf082fa3301a45578d1624e375d205b4e538d602e7d198a015e573b6a1
|
|
in the VM : 7b0fb5cf082fa3301a45578d1624e375d205b4e538d602e7d198a015e573b6a1
|
|
```
|
|
|
|
The 0.230.0 bake recorded only the DooPlex-side hash and said so plainly. This one is a measurement.
|
|
|
|
## Acceptance markers — counted on the COMMITTED log
|
|
|
|
```
|
|
docker OK (overlay2 : 1
|
|
including mount point rootfs : 1 (line 310)
|
|
including mount point mp0 : 1 (line 311) <- no mp1 since v3.0.0 (R-165/R-233)
|
|
upload OK (HTTP 201) : 1
|
|
--- must be ZERO ---
|
|
excluding : 0
|
|
FATAL : 0
|
|
```
|
|
|
|
## Three independent readers agreed before anything was vouched
|
|
|
|
1. **The bake** printed `GOLDEN_SHA256=5f8a53ed…91b8`.
|
|
2. **The round trip** — the published bytes downloaded back: `HTTP 200`, **657 494 489 B**, sha
|
|
`5f8a53ed…91b8`. Hashed from the **downloaded** bytes, never the local file.
|
|
3. **The hub's Day-0 dropdown**, a different code path reading Gitea: `data-sha="5f8a53ed5b19a6cb…"`.
|
|
|
|
**And the delivered artifact names the controller it will start**, read out of the downloaded archive:
|
|
|
|
```
|
|
$ tar --zstd -xOf golden.tar.zst ./etc/felhom-controller-image
|
|
gitea.dooplex.hu/admin/felhom-controller:0.232.0
|
|
```
|
|
|
|
with **19 382** entries under `var/lib/felhom/docker/` — the image store is IN the archive.
|
|
|
|
## Pre-gates, each proven able to see something first
|
|
|
|
| gate | result | the control that makes it believable |
|
|
|---|---|---|
|
|
| 404 pre-gate | `HTTP 404` for 0.232.0 before the bake | the controller image manifest returns `HTTP 200` on the same host |
|
|
| token-leak grep on the committed log | **0** | the token appended to a throwaway copy greps **1**; the copy was `shred -u`'d |
|
|
| token off every command line | unit properties grep **0** | same seeded control returns **1** |
|
|
|
|
## The vouch — three fields, and only one moved
|
|
|
|
| field | before | after | why |
|
|
|---|---|---|---|
|
|
| `golden_version` | 0.230.0 | **0.232.0** | the new bake |
|
|
| `agent_version` | 0.130.0 | 0.130.0 | unchanged — already ≥ MinAgent |
|
|
| `min_agent` | 0.129.0 | 0.129.0 | unchanged — v0.232.0's header says `MinAgent: 0.129.0` |
|
|
|
|
`min_agent` (0.129.0) ≤ `agent_version` (0.130.0), so **not** the R-216 shape.
|
|
`POST /configuration/artifacts` → `303 flash=artifacts_set`; **the flash was not treated as proof** —
|
|
the page was re-read (`golden_version` selected 0.232.0, sha `5f8a53ed…`) and the R-120 refusal banner
|
|
confirmed **absent**.
|
|
|
|
## The floor, and the box moving itself
|
|
|
|
`min_controller_version` **0.230.0 → 0.232.0**, re-read from the page afterwards.
|
|
|
|
**Both boxes had been hand-deployed during validation, so the floor had nothing to move.** Rather than
|
|
claim delivery untested, `demo-felhom` was rolled back to 0.231.0 and the chain exercised for real. It
|
|
moved itself in **~20 s**, in its own words:
|
|
|
|
```
|
|
10:47:16 controller-swap: image file written, restarting bootstrap target=…felhom-controller:0.232.0
|
|
10:47:26 controller-swap: new controller healthy target=…felhom-controller:0.232.0
|
|
```
|
|
|
|
## Teardown
|
|
|
|
`pct destroy 9100 --purge`, `shred -u` of the token, runner, script and log **after** the log was
|
|
copied out (`ls | grep` in the VM's `/root` → 0), `poweroff`, qemu confirmed exited with
|
|
`ps -eo comm` (**not** `pgrep -f`, which self-matches), and `qemu-img snapshot -a virgin`. The disk
|
|
carries the single `virgin` snapshot.
|
|
|
|
## And this is the first bake the gate actually gates
|
|
|
|
`golden_currency_gate.py` now reads `GOLDEN_SHA256=` out of this directory's `bake.log` rather than
|
|
matching the directory's name (R-410, shipped earlier the same day). Its verdict:
|
|
`newest golden baked : 0.232.0 (… [sha 5f8a53ed5b19…])`.
|