Files
felhom.eu/documentation/audits/i18n-slice6-2026-09-20/drill/journal.md
T
admin 91f047dfc0
gates / gates (push) Successful in 29s
Localisation slice 6: the guide in English, and a stranger's first hour (R-561)
Part 0 shipped as controller v0.258.0 (its own commit). Part A is the guide's
English twin. Part B is the walk: a box installed from scratch that day, used by an
English speaker following only the English guide and the screens.

VERDICT: not yet ready for an English-speaking tester, because the claim page — the
one screen between them and their box — is English chrome with Hungarian messages
(R-596, P1). Everything else held: the download page, the bilingual console, all
three customer mails, the bind page and its refusal, the dashboard's first language
from customer.language alone, both app pages, the whole catalog, the language switch
both ways — every one of them with zero Hungarian lines.

One intervention (I1 = R-494, filed 2026-09-14); the stop rule was not reached. The
walk exercised what 2026-09-14 could not: the graphical installer, the auto-reboot,
and the mailed link and self-bind page end to end — that walk's H1 is closed, because
this session had a mailbox.

R-214 CLOSED as a side effect and seen rather than reasoned about: the console's last
paint is now the bilingual "the box is linked" banner.

R-516 does NOT close, and the item-by-item note says why: more than half its twelve
items are about what a HUNGARIAN household reads, and an English walk cannot see
them. It now waits on a Hungarian walk with a second drive.

Rows opened: R-596 (P1, the claim page), R-597 (the setup code is three Hungarian
words), R-598 (the Backup page's protection warnings), R-599 (a drill's teardown is
blocked 30 minutes by report staleness and the 409 does not say so).

Golden 0.258.0 baked, published, vouched, with its record. The waiver was NOT retired
and the record says why in one line.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-20 19:26:16 +02:00

12 KiB
Raw Blame History

DRILL — an English speaker's first hour on 0.258.0 (2026-09-20)

Every observable, in order. Times are UTC. "Language met" is the column the 2026-09-14 walk did not have. Classification: (F) Felhom-owned → a row · (A) the app's own UI → not ours · (K) known and deferred → its row number.

Phase 0 — what the operator does before the volunteer starts

observable language met
0.1 Golden 0.258.0 baked, published (…/felhom-golden/0.258.0/golden.tar.zst → 200), vouched (Artifact manifest set: agent=0.132.0 golden=0.258.0 min_agent="0.131.0"). One run, no aborted attempts. Record: documentation/tests/golden-0.258.0-2026-09-20/ n/a
0.2 Customer drill-en-0920 created through the hub's own page with language=en; dr_tier and off-site OFF (ep0 is fenced for this task, as on 2026-09-14) —
0.3 The hub auto-minted and sent the bind mail on creation, with no button pressed: self-bind link auto-minted for drill-en-0920 on customer creation —
0.4 The stranger's first Felhom text is the bind mail, and it is ENGLISH: subject "[Felhom] Link your Felhom box to your account", body "Dear Customer, Your Felhom box is ready and waiting to be linked…", including the 5-word owner-passphrase explanation and the 7-day/5-attempt limits English ✓

The operator steps the guide silently depends on, all still true: create the customer (with the language), hand over the owner passphrase out of band, create the Cloudflare tunnel (not done here — R-494, the known intervention).

Step 1 — download the installer

observable language met
1 https://felhom.eu/en/download → HTTP 200, 7 565 B, 0.12 s. Names felhom-installer-1.29.0-pve9.2-1.iso, 1 705 324 544 B, sha256 dceacae5…e94829, and gives the check command for Linux/macOS and PowerShell English — 0 Hungarian lines on the page ✓
1b The ISO the drill VM boots hashes to exactly the published checksum, and its size matches the page to the byte. So this walk installs what a volunteer downloads, not a look-alike —

Step 2 — install (the GRAPHICAL installer, which the 2026-09-14 walk did NOT exercise)

observable language met
2.0 VM 9301 on demo-hp, 8 GB / 4 cores / 120 GB on nvme-scratch (/mnt/hdd_1), ISO 1.29.0 as ide2, --boot order=scsi0;ide2 set in a SEPARATE qm set after the disk existed —
2.1 Boot: the graphical entry is the default and fired on its own after the menu timeout English (Proxmox's own)
2.2 EULA screen → I agree English (Proxmox's own)
2.3 Target harddisk: /dev/sda (120.00GiB, QEMU HARDDISK), listed with size and type as the guide says English
2.4 Location: prefilled Hungary / Europe/Budapest / Hungarian keyboard English screen, Hungarian DEFAULTS
2.5 Keyboard layout changed to U.S. English — see F1 —
2.6 Password screen: password twice, e-mail prefilled mail@example.invalid → replaced with drill-en@felhom.eu, exactly as the guide says English
2.7 Network: hostname prefilled pve.example.invalid (refused by the installer), changed to felhom.drill-en-0920.felhom.eu; DHCP gave 192.168.0.155/24, gw 192.168.0.1, DNS 192.168.0.250 — left alone as the guide says English
2.8 Summary: ext4 · /dev/sda · Hungary · Europe/Budapest · Keymap en-us · drill-en@felhom.eu · hostname felhom · 192.168.0.155/24. "Automatically reboot after successful installation" is TICKED by default — see F2 English
2.9 Install started 16:41:48Z —

Keyboard note, for honesty: qm sendkey speaks US scancodes, so the layout had to be U.S. English for this harness to type at all. On 2026-09-14 that was recorded as a harness substitution (H2). This time it is not one — it is what an English-speaking volunteer would genuinely choose, and the fact that the guide told them to do the opposite is finding F1.

Step 3 — the first screen (the console)

observable language met
3.1 Install started 16:41:48Z; the appliance registered itself at the hub 16:44:33Z (appliance registered: new unclaimed box); the console showed the pairing banner by 16:52:53Z — about 11 minutes from pressing Install —
3.2 /etc/issue, top of screen: "There is nothing to do on this machine, and no need to log in. Follow the guide you received from Felhom." English ✓
3.3 The pairing banner is bilingual, Hungarian block then English block, inside one frame. Pairing code P3G-JGW, printed once in each language. The English half reads: "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." bilingual, English readable ✓
3.4 The install auto-rebooted (the Summary's default) — the guide's "Installation finished — reboot now?" prompt never appeared. See F2 —

Step 4 — connecting the box (the self-bind page) — and A2, the typo

This is what 2026-09-14 could NOT do (its H1: no mailbox, so the operator's bind fallback was used and the mailed link and self-bind page were unproven). This walk did the real customer path.

observable language met
4.1 The link from the e-mail opens hub.felhom.eu/bind/<token> → HTTP 200. The page: "Link your Felhom box", "Pairing code — It appears on the box's monitor, after the install", "Owner passphrase — The five-word phrase you received during setup. It proves the account is yours.", "For safety the link locks after 5 failed attempts." English — 0 Hungarian lines ✓
A2 Typo first: P3G-JGX instead of P3G-JGW → refused with "Those details are not right. Check the pairing code and the owner passphrase, then try again." It does not say WHICH was wrong, which is right. Hub log: self-bind attempt 1/5 failed English — 0 Hungarian lines ✓
4.2 Correct code + passphrase at 16:54:42Z → "Linked successfully. The box carries on installing within about a minute. You can close this page — the setup finishes in the background." Hub log: self-bind SUCCESS: appliance 34 bound to customer drill-en-0920 by customer self-service English — 0 Hungarian lines ✓

Harness slip, recorded: while looking for the owner passphrase I printed it to stdout in a probe, against the project's own rule (never print a one-time secret; file→file). It belongs to this throwaway drill customer and is invalidated by the teardown that deletes the customer; every later use read it from a 0600 file. Recorded because a tidy-up nobody is told about teaches the next session nothing.

Step 5 — the setup code, and the claim

observable language met
5.1 The setup-code mail arrived 31 seconds after the bind (16:55:13Z). Body fully English: "Your Felhom server is up. To use the dashboard for the first time, enter the setup code below, then choose your own password", the 72-hour/one-use limits, the dashboard address, and the "Request a new code" fallback English ✓
5.2 The setup code itself is three HUNGARIAN words with five accented characters — see F4. 20 characters, 3 words, 5 of them outside ASCII HUNGARIAN inside an English mail ✗
5.3 The dashboard address in the mail does not resolve — getent hosts felhom.drill-en-0920.felhom.eu finds nothing, because no Cloudflare tunnel was created. This is R-494, filed long before this walk, and it is intervention I1 —
5.4 The install-time root password no longer works on the box (Permission denied) — exactly what the guide promises ("you do not need to remember it") — PASS
5.5 The claim page itself: "Set up the server", "Enter the setup code you got by e-mail…", "New password (at least 12 characters)", "Set up and sign in", "Did not get the code? Ask for a new one" English chrome ✓
5.6 …but its MESSAGES are Hungarian. A short password answered „A jelszónak legalább 12 karakter hosszúnak kell lennie"; a wrong code answered „Hibás vagy lejárt kód" — the message the guide quotes in English. See F3 HUNGARIAN ✗
5.7 The correct code claimed the dashboard: 302 → /. Power-on to a claimed dashboard: ≈23 minutes, including two deliberate typo tests —

Step 4 (continued) — the dashboard's first language

observable language met
4.3 Nobody touched a language switch. The dashboard came up in English, from customer.language alone: titles "Apps — Felhom.eu", "Backup — Felhom.eu", "Settings — Felhom.eu" English ✓
4.4 Apps page: 0 Hungarian lines in 409. Settings: 0 in 87. Launcher: 0 in 39 ✓
4.5 Backup page: 4 Hungarian strings in 73 lines — see F5 ✗

Steps 5–6 — the two apps the guide names

observable language met
6.1 BookStack and PrivateBin installed from the Apps page with the default subdomains, exactly as the guide says. The API answered in English: "The install has started – the card shows how it is going" ✓
6.2 Both healthy: PrivateBin ~40 s, BookStack ~50 s after the request —
6.3 /apps/bookstack: 0 Hungarian lines. /apps/privatebin: 0 Hungarian lines — the whole catalog block (description, tagline, use cases, first steps, deploy labels) in English on a box that was installed from scratch today ✓
6.4 The update badge read "Up to date" and the backup age "0 hours ago — within the backup window" — R-589 and the time helpers, both fixed in 0.258.0 this morning, both proven on a fresh box ✓

Step 13 — the language switch

observable language met
13.1 The globe switched the household to Hungarian: the Backup page title became „Biztonsági mentés — Felhom.eu" ✓ both ways
13.2 A VISITOR's switch on the sign-in page (POST /lang) returned 303 and set only the display cookie felhom_lang=en; the household's own setting was untouched ✓
13.3 Switching the household back made the title "Backup — Felhom.eu" again ✓

Step 14 — the mailbox

Every customer mail this walk produced was in English. Four mails in the hour:

to subject language
the customer [Felhom] Link your Felhom box to your account English ✓
the customer [Felhom] Your Felhom server is up — setup code English ✓ (the code inside is Hungarian — F4)
the customer [Felhom] Your dashboard is now password protected English ✓
the operator [Felhom] ⚠️ drill-en-0920: backup_tier_skipped operator-tier, English body

The box's own log carries the observable R-558 built for exactly this question: Event pushed: controller_started (info) **[+household(en)]** — Controller elindult (0.258.0) — the operator's copy is Hungarian, and a separate English household sentence was attached.

R-214 — CLOSED by this walk, and it was OPEN before it

The 2026-09-14 drill recorded "R-214 still reproduces": the console kept showing the pairing code and „a doboz … a párosításra vár" long after a successful bind. It no longer does. The console's LAST paint is the bound banner, bilingual, in one frame:

Felhom — a doboz össze van kötve. ✓ / A beállítás magától folytatódik… / 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.

That is R-535 (slice 4, ISO 1.28.0) working on a real install, seen rather than reasoned about.