Files
felhom.eu/documentation/audits/DRILL-fresh-install-0242-2026-09-14.md
T
admin 38848ffbeb
gates / gates (push) Successful in 21s
drill: a stranger's first hour on 0.242.0 — 1 intervention, not ready for a volunteer
Golden 0.242.0 baked, round-trip verified and vouched (cadence rule, R-468).
Fresh box from the public ISO on demo-hp: landed on the vouched set, two apps
deployed and used, backup, remove, byte-identical restore, power cut and code
typo all PASS. Stopped for a volunteer by R-493 (no instructions) and R-494
(the setup mail's dashboard link has no DNS; intervention I1). R-493..R-500
filed. Capability map: first-hour row added (PARTIAL), journey row scoped.
Stopgap Hungarian volunteer guide written. Hub teardown layer pending.

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

8.0 KiB

DRILL — a stranger's first hour on 0.242.0 (2026-09-14)

Interventions a volunteer could not have made: 1 (I1 — reaching the dashboard at all). Ready for a volunteer: NO — because no instruction tells a stranger where the installer is or what to type, and the link in the setup-code e-mail does not open for a new customer; either stops them before their first app.

Evidence: evidence-drill-fresh-install-0242-2026-09-14/ — journal.md (every observable, in order), screens/ (installer and console, codes redacted), box-logs-phase1/, A1-power-cut.txt, step10-remove-observe.txt. Golden: ../tests/golden-0.242.0-2026-09-14/.


1. What held, in one table

# step result time
0.1 golden 0.242.0 baked, round-trip verified, vouched PASS bake ≈6 min
0.2 customer-facing instructions exist FAIL — none exist (R-493) —
1 download the installer PASS — but only with the exact file name; the site has no index (R-493) 32 s, sha matches
2 install PASS with four unanswered questions, one of which refuses its own default (R-495) ≈12 min at the keyboard, 3 m 24 s copying
3 first screen, pairing, claim box registered in 86 s; console sends a stranger to the Proxmox admin page and misnames the passphrase (R-496); passphrase is delivered by nothing (R-497); the dashboard has no address (R-494, I1); claim itself < 1 s power-on → claimed 27 m 37 s
4 "ready", version PASS — landed on controller 0.242.0 + agent 0.130.0, the vouched set; no self-update needed power-on → controller 4 m 14 s
5 deploy BookStack + PrivateBin PASS — 68 s and 21 s; pages honest about where data goes; first steps say literal wiki.DOMAIN (R-498)
6 use both through their front doors PASS — BookStack login, password change, book, Hungarian page, 256 KiB attachment; PrivateBin encrypted paste, decrypted round trip
7 read the backups pages mostly honest; one page says „already in the PBS backup, nothing to do" on a box with no PBS (R-499); „Következő mentés — 0 órája" reads backwards
8 backup now PASS — dates move to the true time on both pages 21 s
9 version labels / Update „Naprakész" true (installed == catalog); no newer version offered — skipped
10 remove with „delete my data too" PASS — volume, backup folder and restore points gone, front door 404; response names each removal 6 s stop + <1 s remove
11 restore the other app DATA PASS — deleted page and attachment back, sha256 identical, Hungarian intact 32 s to healthy
12 status pages a week later dashboard shows the backup in UTC, backup pages in local time (R-500)
A1 power cut PASS — same versions, data intact, no alarm; one re-login ≈2 min to dashboard
A2 typo in the code PASS — typo refused, right code accepted after it; 5 failures lock 15 min with an honest Hungarian message; lockout mail goes to the operator only

2. The intervention

I1 — the dashboard has no reachable address (R-494, P1). The setup-code mail says https://felhom.drill0242.felhom.eu. That name has no DNS record; the hub never creates the Cloudflare tunnel or record (the token is a pasted, optional field); the box's own split-horizon resolver learns the name 3 m 46 s after the controller starts, but only a device that uses the box as its DNS server benefits, and nothing says so. The walk reached the dashboard at the guest's LAN address with the name forced. Filed before it was performed. It was performed once and covered every later dashboard and app request.

The stop rule (four) was not reached.

3. Harness substitutions — not interventions, and why

These are things this harness could not do and a volunteer could, so they are not counted. They are listed because each one hides a part of the path from this walk.

what consequence for the claim
H1 No mailbox. Both customer mails go only to the registered address; the hub keeps hashes; the Resend key is send-only. The self-bind page was not exercised — the operator's bind fallback was used. The setup code was minted box-side twice (--print-reset-code, generations 3 and 4) via the vaulted break-glass. The mailed code and the self-bind link are unproven by this walk.
H2 qm sendkey sends US scancodes; the layout was switched from Hungarian to U.S. English Hungarian keyboard entry of the password and e-mail not exercised
H3 auto-reboot unticked, ISO detached by qm set the "stick still in" reboot not exercised
H4 Terminal UI entry chosen over the graphical default graphical installer not exercised this run

Harness slips, recorded: the first box-side code (generation 2) was captured with a pattern that does not match accented letters and was shredded unseen; the first template pick for the bake was arm64; two BookStack calls used wrong routes (405); one removal was called on a running app, which the screens never offer (409 — withdrawn as a finding); the A1 poll misread an expired session for 8 min; the monitoring banner and the restore-finish message were first read from server HTML and are script- rendered — both readings were corrected in the journal.

4. Findings

row rank one line
R-493 P1 No customer-facing install instructions; the ISO site has no index. Blocks inviting anyone. Stopgap: runbooks/VOLUNTEER-first-hour.md
R-494 P1 A new customer's dashboard has no address unless the operator hand-makes a tunnel — the setup mail's link is dead (I1)
R-495 P2 The installer asks four unanswered questions and refuses its own default hostname
R-496 P2 The console first tells a stranger, in English, to open the Proxmox admin page; calls the passphrase „a jelszavadat"
R-497 P2 Nothing delivers the Tulajdonosi jelmondat, yet the mail says it was received at setup
R-499 P2 „Already in the full system backup (PBS) — nothing to do" on a box with no PBS
R-498 P3 52 of 53 app pages say a literal wiki.DOMAIN
R-500 P3 Dashboard shows the backup time in UTC, backup pages in local time

Observations, not filed: the deploy poll has no degraded branch (16 s of stale step text); „0 °C" beside „Nincs adat" for a virtual disk; the removal dialog mentions „éjszakai restic pillanatképek" on a box with no restic; the drive „attach" list offers the guest's own system volume; the launcher menu shows an English „Debug"; the lockout e-mail reaches the operator only; R-214 still reproduces (pairing banner and stale code on the console after bind).

5. Scope and what this walk does NOT claim

  • Not the recovery-after-rebuild journey. The capability map's journey row (walk 5) is about a rebuilt box recovering off-site data. This drill walked the first hour; it neither re-proves nor contradicts that row, and the map is annotated to say so.
  • DR tier off, off-site off. The customer was created with the DR tier unticked (it provisions an ep0 namespace; the brief fenced ep0). The off-site and escrow screens were therefore not walked.
  • ep0 was touched anyway, by the product: enrolment registers a WireGuard peer on ep0 for every box (wg registered … ip=10.77.0.5/32 … sync=ok). The teardown removes it through the host delete.
  • No browser. Every screen was driven through the endpoint the page calls; script-rendered state (restore-finish banner, host-metrics card) was not observed.

6. Teardown — three layers

See REPORT-drill-fresh-install-0242.md §Teardown for the measured before/after of each layer and the disposition of customer drill0242.

Untouched, and checked: demo-hp guests 9201 and 9202 (running throughout), local-lvm, the demo-felhom box, DooPlex's services (only the bake VM, which is the accepted bake exception, reverted to virgin), ep0 beyond the product's own peer registration, and Peti's box.