Files
felhom.eu/documentation/tests/golden-0.232.0-2026-09-01/README.md
T
admin 63eff21a5c
gates / gates (push) Successful in 17s
golden 0.232.0 baked, vouched, floor raised — and it carries TWO releases
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.
2026-09-01 10:50:54 +02:00

4.5 KiB

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…]).