f6909492cc
gates / gates (push) Successful in 27s
The release fixed four Go-side leftovers. The walk that judged it on a box installed from scratch that day found two more of the SAME SHAPE — a composed sentence handed to a renderer as page data — on the claim page (R-596, P1) and the Backup page (R-598). That shape now has three instances on file with R-573, which is worth naming as a class rather than fixing one at a time. Verdict recorded: not yet ready for an English-speaking tester. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
84 lines
5.7 KiB
Markdown
84 lines
5.7 KiB
Markdown
# REPORT — v0.258.0: the last four Hungarian things, and the walk that judged them (R-561 slice 6)
|
|
|
|
2026-09-20 · `main` at the v0.258.0 commit · image `gitea.dooplex.hu/admin/felhom-controller:0.258.0`
|
|
· live on demo-hp guest 9201 and on the drill box built from scratch the same day. MinAgent 0.131.0,
|
|
unchanged. Hungarian byte-identical.
|
|
|
|
Architecture read first and named: `felhom.eu/documentation/architecture/10-localisation.md` §1 (the
|
|
Hungarian must not move), §4 (fallback), §5 (voice per language), §10.6b (this slice).
|
|
|
|
## What shipped
|
|
|
|
Four rows, all of them Go-side — which is why neither the template parity fixtures nor
|
|
`TestI18nEnglishPages` could see them, and why **slice 5's LIVE proof is what found them**.
|
|
|
|
| row | what | how |
|
|
|---|---|---|
|
|
| **R-589** | the update badge („Naprakész" + its tooltip) and the abandoned-lifecycle badge | bundle-backed forms in `localeFuncs`, reusing `compareInstalledToTemplate` and `EffectiveLifecycle` so **the decision cannot drift between languages — only the words do**; the badge's `Class` is asserted equal across languages for the same stack |
|
|
| **R-590** | the data-folder card's backup sentence — **a promise about the customer's files** | `consequenceFor` takes its lookup as a parameter; the test asserts the CONSEQUENCE in both languages, and that the two languages do not produce the same string |
|
|
| **R-573** | the agent-channel and endpoint-drift banners | keyed by the checker's own CLASSIFICATION, with the composed sentence kept as a **fail-open** fallback: an unmapped reason renders it verbatim rather than a blank banner or a raw key |
|
|
| **R-572** | **not what the row said** | the row claimed a template renders „vasárnap" on an English page. Measured: **no template and no Go file called `pruneLabel` or `nextPruneLabel`.** Dead func-map entries returning Hungarian — **deleted**, not translated |
|
|
|
|
`lifecycleBadge` was not in any row. It is the same builder one function from `updateBadge`, and
|
|
leaving a known identical defect there would have been a choice.
|
|
|
|
## Why deleting was the right direction for R-572, and how that was proven
|
|
|
|
Translating dead code would have added machinery with no reader and a test pinning a fiction.
|
|
Deletion is the **fail-loud** direction: `html/template` refuses to parse a template naming an
|
|
undefined function, and `loadTemplates` parses every template once per language at startup. Proven
|
|
rather than asserted — a template naming the removed function makes the parity test panic with
|
|
`function "pruneLabel" not defined`. `fmtDuration`, named in the same row, produces no Hungarian at
|
|
all ("< 1s", "5s", "2m 3s") and was left alone.
|
|
|
|
## Red-proofs — five, each seen to fail and then revert
|
|
|
|
| what was broken | what convicted |
|
|
|---|---|
|
|
| the `updateBadge` override removed from `localeFuncs` | English read „Naprakész" |
|
|
| `MessageKey` dropped from `SetAgentChannelAlert` | English read the Hungarian sentence |
|
|
| the folder sentence hard-coded back to Hungarian | the English arm convicted on three assertions |
|
|
| one Hungarian byte changed in a badge key | `TestLocaleFuncsHungarianBundleMatchesFuncMap` named both sides |
|
|
| a template naming a deleted helper | startup panic in the parity test |
|
|
|
|
**The fourth says something about the gate, not the code.** `i18n_go_parity.py` did NOT convict that
|
|
changed byte, because `localeFuncs` keys sit under `_preexisting` and are deliberately not measured
|
|
against the base capture. The citation to the test is what carries them — so the test had to be made
|
|
real, and it was extended to compare `hu.json` against the frozen funcmap forms word for word.
|
|
|
|
## Proven live, twice
|
|
|
|
- **demo-hp (0.258.0):** the English app page shows "Up to date" with an English tooltip while the
|
|
Hungarian page still says „Naprakész"; the folder sentence is English on one and unchanged on the
|
|
other; the free-space line reads "47.9 GB free" / „47.9 GB szabad". After the fixes, a scan of the
|
|
English app pages and the Apps list finds **zero** Felhom-authored Hungarian — the only hit is the
|
|
language picker naming itself „Magyar", which is correct.
|
|
- **A box installed from scratch that day**, walked by an English speaker: the update badge and the
|
|
time helpers were English there too, on hardware that had never run an older controller.
|
|
|
|
## What the walk then found, which this release does not fix
|
|
|
|
The walk is `felhom.eu/documentation/audits/DRILL-first-hour-en-0258-2026-09-20.md`. Its verdict is
|
|
**not yet ready for an English-speaking tester**, and the blocker is in this repo:
|
|
|
|
- **R-596 (P1)** — `internal/web/claim.go` carries **sixteen** raw Hungarian literals, every one a
|
|
message the claim page shows. The page's chrome is English; its answers are not. Same shape as
|
|
R-573, one screen earlier in the journey, on the one screen between a household and their box.
|
|
- **R-598** — `backup_handlers.go` (12) and `backup_target_offer.go` (10): the Backup page's two
|
|
protection warnings and its two target names.
|
|
|
|
Both are the *composed-sentence-into-page-data* shape. That shape now has three instances on file
|
|
(R-573, R-596, R-598) and is worth naming as a class the next converter looks for.
|
|
|
|
## Needs the operator
|
|
|
|
**Raise the fleet floor to 0.258.0.** Nothing breaks if it waits — the four fixes simply do not reach
|
|
the other boxes. The drill box already ran 0.258.0, because the golden baked today is 0.258.0 and a
|
|
golden above the floor is served normally (`managed floor SERVED … floor 0.257.0 … golden 0.258.0`).
|
|
|
|
## Teardown
|
|
|
|
Nothing installed or removed on demo-hp; guest 9201 restarted onto the new image, which is the
|
|
deploy. The drill VM and its hub customer are torn down in three layers — see the drill document.
|
|
Every staged credential was shredded from both hosts and both guests.
|