# Golden 0.203.0 — bake evidence (2026-08-06) Baked per `runbooks/RUNBOOK-manual-build.md` §4.0–§4.1, in the drill VM on DooPlex (`/mnt/5_hdd/felhom.eu/drill/drill.qcow2`, internal snapshot `virgin`) — the sanctioned bake exception in `runbooks/target-selection.md`. Task 4 Part 3. **Baked, published and verified. NOT vouched** — the hub's Day-0 artifacts were read but not written, and that is deliberate: Part 3 ends at a STOP. ## The artifact | | | |---|---| | version | **0.203.0** | | sha256 | `3039c6ffa7a5a8b2d959daddb2895c58b44de70f8d4f4a7e12ad4b1c0d61dc88` | | size | 658,292,861 bytes (uncompressed 2,008,145,920) | | controller baked in | `gitea.dooplex.hu/admin/felhom-controller:0.203.0` | | MinAgent (from the controller CHANGELOG header) | **0.127.0** | | published at | `…/api/packages/admin/generic/felhom-golden/0.203.0/golden.tar.zst` | ## Preconditions, checked rather than assumed - Disk headroom `df -h /mnt/5_hdd /` → 24% and 50%. (Abort threshold is 90%.) - `ps -eo comm | grep -c qemu-system-x86` → **0**. Not `pgrep -f`, which self-matches and reports a false "still running". - `qemu-img snapshot -a virgin` **succeeded**, which independently re-proves nothing held the qcow2. - Template **listed, not assumed**: `pveam available` → `debian-13-standard_13.6-1_amd64.tar.zst` (unchanged since 2026-07-31), and `pveam download` printed `checksum verified`. - CT 9100 absent on `virgin` before the run. - Token verified against the Gitea API **before** starting, so a credential problem could not surface mid-bake. - 404 pre-gate on the **real** publish URL → 404. (The URL the runbook gave was wrong — R-233.) - Controller image `0.203.0` manifest → 200, so the tag being baked demonstrably exists. ## Acceptance markers The runbook's marker list was **broken** — see R-233; two of three strings could never match. These are the real ones, from `bake.log` in this directory: | marker | count | required | |---|---|---| | `docker OK (overlay2` | 1 | ≥1 | | `including mount point` | 2 — `rootfs ('/')` and `mp0 ('/var/lib/felhom')` | rootfs + mp0 | | `upload OK (HTTP 201)` | 1 | ≥1 | | `excluding` | 0 | 0 | | `FATAL` | 0 | 0 | | `ERROR:` / `WARN:` | 0 / 0 | 0 | | unit result | `Result=success`, `ExecMainStatus=0` | success / 0 | There is no `mp1`: `build-golden.sh` v3.0.0 (R-165) collapsed the two data volumes into one. ## The published bytes were verified by round trip, not trusted The bake **prints** a hash; that is the baker marking its own homework. The hash below was recomputed on DooPlex from an independent download, and the content was then read out of that download: 1. `curl` the package → HTTP 200, 658,292,861 bytes. 2. `sha256sum` → `3039c6ff…dc88` — **matches** the baked value, byte count matches. 3. `zstd -t` → decompresses clean to 2,008,145,920 bytes: a real archive, not an error page. 4. `tar -xO ./etc/felhom-controller-image` **out of the published archive** → `gitea.dooplex.hu/admin/felhom-controller:0.203.0`. 5. 19,358 entries under `var/lib/felhom/docker` — the baked images are on the data volume. Step 4 is the one that matters: `GOLDEN_VERSION` is *derived from the tag argument*, so the label could be right while the content was stale. It is not — the archive says so itself. A third independent witness: the hub's own Day-0 dropdown now lists `0.203.0` with `data-sha="3039c6ff…dc88"`. ## Secret hygiene - Token copied **file → file** (`scp`), never through a shell on either side. - Invocation moved into an in-VM runner script that reads the token itself. The runbook's `--setenv=GITEA_TOKEN=$GT` form put the value on a command line and into the transient unit's properties. Verified: `systemctl show golden-bake -p Environment -p ExecStart | grep -c -F ` → **0**. - Token-leak grep by **literal value** on the saved log → **0**. A broad `[a-f0-9]{40}` pattern is wrong here: it false-hits image shas. - **Positive control on that grep**, because an absence proves nothing until the instrument is shown to work: token appended to a throwaway copy → **1 hit**; copy `shred -u`'d; the real log's `0` is therefore a measurement. Re-run against the committed copy in this directory → **0**. ## Teardown `pct destroy 9100 --purge` (both logical volumes removed, `pct list` empty) · `shred -u` of the token, `build-golden.sh`, the runner and `bake.log` **after** copying the log out · `poweroff` · qemu observed gone in ~15 s via `ps -eo comm` · `qemu-img snapshot -a virgin`. The drill VM is back at its baseline and DooPlex is unchanged apart from this evidence directory. ## What is NOT done here Vouching. The hub still serves golden **0.201.0** and agent **0.125.0**, with `min_agent` 0.125.0. See the session report for what changes on vouch and why it is a three-field change.