Files
felhom.eu/documentation/audits/i18n-slice2-2026-09-18/B/live
admin 08e9ddbd5c
gates / gates (push) Successful in 25s
docs: localisation slice 2 release B (controller v0.253.0) — R-557 progress, R-575, R-576
All 179 Hungarian error messages carry a key; zero remain. 10-localisation.md gains §10.2: the
four properties util.MsgError had to have at once and the failure each one prevents, and the
plural rule as a BUNDLE rule rather than a per-call-site flag, with the answerable sentence and
what the other option would have cost.

Two instrument defects recorded rather than tidied away, because both shapes recur:

R-576 — the parity gate has a measured blind spot. The bulk converter dropped the continuation
of multi-line concatenations, damaging 7 producers, and the gate stayed GREEN: every surviving
fragment WAS a byte-equal base-commit literal, so its question ("is this text real?") was
answered yes while the CALL had lost half its sentence. Two behaviour tests caught it. The
general form: a structural gate over the TEXT cannot see a defect in the CALL.

And the script counting what was left was case-sensitive, so it said "0 remain" while five did —
R-565's shape inside the measurement. Every "no Hungarian left" claim in this slice is now made
case-insensitively and with both controls.

R-575 — the soft memory-overcommit warning has no error to carry a key and no language where it
is built, so it renders Hungarian on an English page. Named in the code, not hidden.

Live evidence includes a mistake I made and corrected: a probe of the deploy refusal INSTALLED
vaultwarden on demo-hp (the endpoint accepts before it validates), the same mistake the previous
session recorded. Removed through the product's own path with its data; verified gone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-18 11:51:06 +02:00
..

Live validation — controller v0.253.0 on demo-hp guest 9201 (2026-09-18, release B)

Method: endpoint-level, stated as such. No browser on DooPlex. Session from a real POST /login; X-CSRF-Token from the page meta for API calls; the password passed as a file and deleted from host and guest afterwards.

0. A mistake I made, first — an app was installed on the demo box and removed

My first release-B probe posted /api/stacks/vaultwarden/deploy with empty values, expecting the required-field refusal. The deploy API answers 202 and validates ASYNCHRONOUSLY, and vaultwarden has no required field — so it installed. That is the same mistake the 2026-09-17 session recorded in STATUS.md, repeated. It is not a trap in the product; it is a trap in the probe, and the lesson is narrower than "pick a different app": the deploy endpoint cannot be probed for a refusal at all, because it accepts before it validates.

Removed through the product's own path — stop, then POST /remove with remove_hdd_data and remove_backups — and verified gone: no container, no /opt/felhom/stacks/vaultwarden, zero vaultwarden volumes. The 23 standing containers are all up. The removal answered hdd_note: „Az alkalmazás nem tárolt saját adatot külső meghajtón…", so nothing was on a drive.

The probe was rewritten to use only endpoints whose validator runs BEFORE any mutation (probeB2.sh, probeB3.sh).

1. An error made deep in a package, rendered on the page in each language

POST /sharing/shares with a bad name. The message is produced in internal/settings/smb.go, three layers below the handler, and the redirect is FOLLOWED so what is read is what the page shows.

refusal hu en
name has a slash „a megosztás neve nem tartalmazhat perjelet vagy pontot" "the share name cannot hold a slash or a dot"
name empty „a megosztás neve nem lehet üres" "the share name cannot be empty"
name longer than 15 „a megosztás neve legfeljebb 15 karakter lehet" "the share name can be at most 15 characters"
name starts with _ „a megosztás neve nem kezdődhet aláhúzással — ezek a nevek a rendszernek vannak fenntartva" "the share name cannot start with an underscore — those names are reserved for the system"

Every Hungarian line is the literal that stood in smb.go before the conversion, byte for byte.

2. The compatibility case, still true after B

/sharing?flash=Be%C3%A1ll%C3%ADt%C3%A1s+mentve. — a URL an older controller minted — renders „Beállítás mentve." in both languages. Shown verbatim, never as a key, never dropped.

3. What stays English on purpose, confirmed live

POST /api/stacks/felhom-controller/remove → 403 stack "felhom-controller" is protected and cannot be removed. Internal English, identical in both languages: R-569, not this slice. Recorded here so it is not read as a gap release B left.

An agent-side refusal (/api/disks/format on a device that is not whitelisted) comes back as agentapi: format: HTTP 400: storage: refusing to operate on non-whitelisted block device — the AGENT's sentence, relayed verbatim in both languages. That is the rule working: text this controller did not write is text it does not translate.

4. State left behind

Controller 0.253.0; saved language hu (every English probe used the ?lang=en override, which is not persisted); 23 standing containers up, unchanged; vaultwarden installed by mistake and fully removed; no drive touched, no floor raised, no golden baked.