slice 4: bilingual console + the English download page is live (R-559)
The image is BUILT but NOT PUBLISHED, and that is deliberate: publishing to iso.felhom.eu is public and irreversible, and the runbook needs a proof install on BOTH menu entries plus a reboot against the uploaded bytes. That is supervised, so I stopped there. felhom-installer-1.29.0-pve9.2-1.iso, sha256 c67ceaa3…fb02, with every mechanically checkable criterion passing (G1, G2, G5, G6, G7, G9, G16 — including both payload files byte-identical to repo HEAD). The download pages still name 1.28.0, the image that IS published. Pointing them at a file that is not there would hand every reader a 404. A new site gate refuses the two pages naming different installer files or checksums, so whoever publishes 1.29.0 cannot update one and forget the other. Measured rather than read: the pairing banner is 24 rows on a 25-row console. One row of margin — so the height is now pinned, because two more lines push the HUNGARIAN code at row 5 off the top, and a banner whose code has scrolled away is furniture. R-587: two root-password files from July sit in the directory the public ISO is published from. Both 404 on the bucket (against a 200 control), so nothing leaked — but the only thing keeping them off is an --include pattern they miss by an accident of naming. A pattern that protects by coincidence is not a control. R-588: release records live in two different places, which made me wrongly conclude 1.28.0's gate had never been run. It had. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# Slice 4 — bilingual console, English download page (R-559). 2026-09-18
|
||||
|
||||
**Source shipped. The ISO is BUILT but NOT PUBLISHED — that step is the operator's (§Stop, below).**
|
||||
|
||||
## The claim in the task that mattered most, and it was wrong
|
||||
|
||||
> *"the GRUB menu has one entry"* — the **release** image has **two** (`grub-release.cfg.tmpl`:
|
||||
> graphical and text mode). The single-entry template is the appliance image. Both were updated.
|
||||
|
||||
Others: **25** Hungarian printf/echo lines, not 27. **A test DOES compare the banner text** — and a
|
||||
second one `cmp`s `/etc/issue` against the `postinst`'s copy byte for byte. The console seam already
|
||||
existed (`FELHOM_CONSOLE_DEV`). The publish runbook is `documentation/runbooks/iso-release-gate.md`
|
||||
(correctly not in the ISO README). **VM 321/322** were not reachable to confirm — no VM was created
|
||||
(see Stop). **ISO 1.28.0's gate WAS recorded**, under `documentation/audits/evidence-backup-
|
||||
promise-2026-09-16/phaseD-iso-gate.txt` rather than a `documentation/tests/iso-release-*` directory;
|
||||
I briefly concluded it had not been, which is why R-588 is about where records live.
|
||||
|
||||
## Two defects found before any feature work
|
||||
|
||||
**R-586 — the harness had been RED for two days and nobody saw.** Running
|
||||
`scripts/iso/test/bootstrap-modes.sh` unchanged at the base commit failed two R-496 checks. The
|
||||
script paints with `> "$CONSOLE_DEV"`: on a console that is a device and truncation is a no-op, but
|
||||
the harness pointed it at a plain FILE, so each banner erased the one before it. ISO 1.28.0's new
|
||||
bound banner (commit `c033b3b`, 2026-09-16) paints straight after the pairing banner and wiped it
|
||||
before the check read it — and that commit did not touch the harness. **The harness is in no gate and
|
||||
no CI run.** Fixed with a FIFO; production code untouched.
|
||||
|
||||
**The release gate would have stopped this task.** `iso-release-gate.md` **G16** read *"every
|
||||
Felhom-authored string on the volunteer's path is **Hungarian** — PASS = no English sentence"*. That
|
||||
encodes the 2026-07-31 scope. **Operator ruling 1b of 2026-09-17 supersedes it** ("the console banner
|
||||
and the download page ARE in scope"). G16 was **rewritten, not waived**: Hungarian FIRST, pinned by a
|
||||
golden, each secret named once per language. What it protects is now stronger.
|
||||
|
||||
## What is proven, and how
|
||||
|
||||
| Claim | How |
|
||||
|---|---|
|
||||
| The Hungarian is unchanged | **Goldens** captured from the script at `183727db9c44` before one English line existed; the harness asserts each banner's first N lines are exactly the golden. Red-proofed by one changed byte. |
|
||||
| The English is English | No Hungarian letter in the English block, with the Hungarian block as the **positive control**. Red-proofed by planting an `ó`. |
|
||||
| It fits the screen | Every line ≤ 80 columns (characters, not bytes), **and** the whole paint ≤ 25 rows. Red-proofed both ways. |
|
||||
| `/etc/issue` still agrees with `postinst` | The existing `cmp` check, still green — both files were changed identically. |
|
||||
| The payload in the ISO is the repo's | `cmp` of both files extracted from the built `.deb` against repo HEAD: **IDENTICAL**. |
|
||||
|
||||
**The pairing banner is 24 rows on a 25-row console.** One row of margin. That is the measurement the
|
||||
plan asked for, and it is why the height check exists: two more English lines make it 26 and the
|
||||
**Hungarian** pairing code — which sits at row 5 — scrolls off the top. A banner whose code has
|
||||
scrolled away is furniture.
|
||||
|
||||
## The built image (not published)
|
||||
|
||||
```
|
||||
felhom-installer-1.29.0-pve9.2-1.iso
|
||||
sha256 c67ceaa3793b38639d0f24c9c9704270d04e50b74f1ea88b1129fdd1dec6fb02
|
||||
size 1 705 324 544 bytes
|
||||
menu 2 entries: 'Felhom telepítés / Install Felhom'
|
||||
'Felhom telepítés (szöveges mód) / Install Felhom (text mode)'
|
||||
timeout 15, timeout_style=menu, default=0, banned entries 0
|
||||
```
|
||||
|
||||
Gate criteria run mechanically against the built file: **G1** no `answer.toml` (0 hits) · **G2** no
|
||||
`.rootpw.txt` emitted · **G5** no credential-shaped literal in the payload (`Bearer` is
|
||||
`Bearer $token`, a variable) · **G6** two entries, timeout 15, underscore spelling, 0 banned ·
|
||||
**G7** package present at 1.29.0 · **G9** both payload files byte-identical to repo HEAD · **G16**
|
||||
`jelszavad` 0, `Tulajdonosi jelmondat` 1, `Owner passphrase` 1, harness green.
|
||||
|
||||
## STOP — what is left, and why it is not mine
|
||||
|
||||
**The image is not published.** `iso.felhom.eu` is public and irreversible, and the runbook requires,
|
||||
against the exact uploaded bytes: **G11** a published checksum and a verified round trip, **G15** the
|
||||
console after a first boot **and one reboot**, **G14** a person choosing the disk, and a **proof
|
||||
install on BOTH menu entries** (the `felhom-build-deploy` skill is explicit that reasoning from one
|
||||
entry to the other was tried in Spike 4 and found insufficient in 1.26.0).
|
||||
|
||||
No VM was created and none destroyed; demo-hp guest 9201 was not touched at all this task.
|
||||
|
||||
**Therefore the download pages still name 1.28.0** — the image that is actually published. Pointing
|
||||
them at an unpublished file would hand every reader a 404. A new site gate refuses the two pages
|
||||
naming different files or hashes, so whoever publishes 1.29.0 cannot update one page and forget the
|
||||
other.
|
||||
|
||||
## The English download page IS live
|
||||
|
||||
```
|
||||
https://felhom.eu/en/download 200 <html lang="en">
|
||||
https://felhom.eu/letoltes 200 links to it, hreflang both ways
|
||||
both name felhom-installer-1.28.0-pve9.2-1.iso, sha a4cd9b6ddcb5… (verified live)
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
================================================
|
||||
Felhom — a doboz össze van kötve. ✔
|
||||
|
||||
A beállítás magától folytatódik, ez néhány percig tart.
|
||||
A vezérlőpult címét az e-mailben kapott levél tartalmazza.
|
||||
|
||||
Ezen a gépen nincs több teendőd.
|
||||
|
||||
Felhom — the box is linked.
|
||||
|
||||
Setup carries on by itself; this takes a few minutes.
|
||||
Your dashboard address is in the e-mail you received.
|
||||
|
||||
There is nothing left to do on this machine.
|
||||
================================================
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
Felhom otthoni szerver
|
||||
|
||||
Ezen a gépen most nincs dolgod, és bejelentkezni sem kell.
|
||||
A beállításhoz kövesd a Felhomtól kapott útmutatót.
|
||||
|
||||
Felhom home server
|
||||
|
||||
There is nothing to do on this machine, and no need to log in.
|
||||
Follow the guide you received from Felhom.
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
Felhom bare-metal ISO build manifest (R-21 slice A+B+C)
|
||||
built : 2026-09-18T17:42:21+02:00
|
||||
iso-version-tag : v1.29.0
|
||||
pve-version : 9.2-1
|
||||
source-iso : proxmox-ve_9.2-1.iso
|
||||
source-iso-sha256 : 4e88fe416df9b527624a175f24c9aa07c714d3332afb1ee3dbf3879573ef2c6c
|
||||
assistant-version : proxmox-installer-common v9.2.7
|
||||
profile : none (a release image bakes no disk selection)
|
||||
fqdn : (none — interactive install)
|
||||
mode : release (PUBLIC image — NO answer.toml, NO baked credential, interactive disk selection)
|
||||
loader : shim (stock MS-signed chain; Secure Boot OK on compliant firmware)
|
||||
grub-mkimage : unknown
|
||||
boot-menu : FELHOM release menu — TWO INTERACTIVE entries ('Felhom telepítés' graphical = default, 'Felhom telepítés (szöveges mód)' = Terminal UI), timeout 15s
|
||||
menu-entries : 2 (graphical default + Terminal UI; timeout 15s)
|
||||
menu-removed : debug variants, Rescue Boot, memtest86+, UEFI Firmware Settings
|
||||
automated-entry : NOT PRESENT — no auto-installer-mode.toml, so the stock grub.cfg does
|
||||
not emit it. Disk selection is INTERACTIVE by construction.
|
||||
host-install-url : https://felhom.eu/scripts/felhom-host-install.sh (default)
|
||||
secret-bearing : no (PUBLIC image — carries NO credential of any kind)
|
||||
root-password : NONE — not baked. The installer prompts the person installing (release gate G2).
|
||||
answer-file : NONE — no answer.toml, no auto-installer-mode.toml (release gate G1)
|
||||
felhom-package : felhom-bootstrap_1.29.0_all.deb sha256=af4100a698239de5124e7e48cfe74d66a04b7c8e2d71621adf1aa77ed636ff38
|
||||
repo-commit : eb1ae370951f204f6ed27782006246e6a45ea2aa
|
||||
output : felhom-installer-1.29.0-pve9.2-1.iso
|
||||
output-sha256 : c67ceaa3793b38639d0f24c9c9704270d04e50b74f1ea88b1129fdd1dec6fb02
|
||||
output-size-bytes : 1705324544
|
||||
+1
@@ -0,0 +1 @@
|
||||
c67ceaa3793b38639d0f24c9c9704270d04e50b74f1ea88b1129fdd1dec6fb02 felhom-installer-1.29.0-pve9.2-1.iso
|
||||
@@ -0,0 +1,21 @@
|
||||
================================================
|
||||
Felhom — a doboz készen áll, és a párosításra vár.
|
||||
|
||||
Párosító kód: TST-CDE
|
||||
|
||||
Nyisd meg az e-mailben kapott linket, és add meg
|
||||
ezt a kódot és a Tulajdonosi jelmondatodat
|
||||
(az 5 szót a Felhom üzemeltetőjétől kaptad).
|
||||
|
||||
Ez a képernyő magától frissül — nincs teendő a
|
||||
doboznál, és nyugodtan itt hagyhatod bekapcsolva.
|
||||
|
||||
Pairing code: TST-CDE
|
||||
|
||||
Open the link from your e-mail and enter this code
|
||||
together with your Owner passphrase (the 5 words you
|
||||
received from your Felhom operator).
|
||||
|
||||
This screen refreshes itself. There is nothing to do
|
||||
at the box; you can leave it switched on.
|
||||
================================================
|
||||
Reference in New Issue
Block a user