Localisation slice 5 CLOSED: the catalog speaks English and the floor is at 0.257.0
gates / gates (push) Successful in 27s

Part C shipped the same day the pilot was read: fifty apps in three pushes, 1 031 of
1 032 strings. The English Apps list shows ZERO Hungarian app descriptions across all
53 apps — the only Hungarian left on it is the "Naprakész" badge (R-589) and the
language picker naming itself, which is correct.

The Hungarian Apps list is identical to the pre-slice capture once the per-session
CSRF token AND Docker's own "Up N hours" container string are normalised. Both
normalisations are stated in the evidence rather than applied quietly — the second
one moved because two hours of wall clock passed between captures, not because any
copy changed.

Fleet floor raised to 0.257.0 with the declared MinAgent 0.131.0, above the vouched
golden so the declaration carries it. demo-felhom went 0.255.0 -> 0.257.0 by itself
in under 12 seconds and THEN rendered the English tagline: the floor delivered the
feature, not a version string.

Rows: R-593 (papra describes a session-signing key as "the app's subdomain" — the one
string left untranslated) and R-594 (the catalog gate can convict a retrieval promise
but has no way to REGISTER a true one, which the shared vocabulary's design calls
for). R-560 closed. 281 -> 287 rows.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-20 16:40:59 +02:00
parent f538a03bd5
commit 8e9401c6bf
34 changed files with 22968 additions and 52 deletions
+42 -1
View File
@@ -259,7 +259,7 @@ on another, and both matter to the gate:
|---|---|---|
| copy strings | 835 | **1 032** (incl. 13 placeholders the table omitted, and every ASCII label) |
| with a Hungarian letter | 832 | **832** ✔ |
| ASCII-ONLY Hungarian | „Igen", „Nem", „Nincs" — three | **~120**, and those three do not occur at all |
| ASCII-ONLY Hungarian | „Igen", „Nem", „Nincs" — three | **~120**. Those three do not occur; the three ASCII-only OPTION labels are „Magyar", „Angol", „Magyar + Angol" — language names, not yes/no words |
The ASCII-only count is the one that decides an instrument: „Aldomain" (53×), „A szerver domain neve"
(53×), „Jelentkezz be: …" (5×), „Magyar", „Angol", „Titkos kulcs", „Oszd meg a linket". **An
@@ -674,6 +674,47 @@ R-592 (three defects inside the new gate, each found by its own decoy).
**Evidence:** `documentation/audits/i18n-slice5-2026-09-20/`.
**PART C SHIPPED THE SAME DAY.** The operator read the pilot's English and said go, so the other
fifty followed its voice in three pushes — 17, 17 and 16 apps; 319, 317 and 306 strings. **1 031 of
the catalog's 1 032 customer-facing strings now carry an English twin.**
**[DESIGN, decided by CC] The blocks are GENERATED from a flat `{path: english}` map, not
hand-written.** Fifty nested blocks whose keys must match the Hungarian side exactly is fifty
chances to mistype an `env_var` — and **a mistyped key is INERT on the box, not an error**, so the
translator never learns. The generator builds from the same flat paths the freeze uses, which are
derived from the Hungarian file itself, so a key that does not exist on the Hungarian side cannot be
written at all. The review then happens on the map, where one line is one string, instead of on
YAML indentation.
**[FACT] The one string left untranslated, on purpose.** papra's
`deploy_fields[AUTH_SECRET].description` reads „Az alkalmazás aldomainje" — the sentence that belongs
on `SUBDOMAIN`, sitting on a session-signing key (R-593). §1 forbids changing the Hungarian in a
localisation release, and translating a wrong sentence faithfully would ship the error in a second
language. So it falls back. **That is why `EN_MISSING_CEILING`'s floor is 1 rather than 0, and it is
written into the ceiling's own comment** so a later session does not "reach zero" by editing
Hungarian.
**[FACT] Measured on the English Apps list, all 53 apps: ZERO Hungarian app descriptions.** The only
Hungarian left on that page is the „Naprakész" badge (R-589, ten occurrences) and the language
picker naming itself. The Hungarian Apps list is identical to the pre-slice capture once the
per-session CSRF token and Docker's own „Up N hours" string are normalised.
**[FACT] The gate convicted two of the translator's own sentences and was HALF right.** Vaultwarden's
invite step ended „…can open an account", and the English retrieval-promise pattern reads `can …
open` as the claim that sealed backups can be opened. Opening an ACCOUNT is not that claim, so the
conviction was a false positive — and the wording was also the weaker wording, so it became „can
sign up". **But the gate has no way to REGISTER a true occurrence**, which the shared vocabulary's
own design calls for; R-594.
**[FACT] The fleet floor was raised to 0.257.0** the same session (operator asked), `min_agent`
0.131.0 declared — above the vouched golden 0.246.0, so the declaration is what carries it (R-472).
Hub: `managed floor SERVED for demo-felhom: floor 0.257.0, agent requirement "0.131.0" from declared
(golden 0.246.0)`. **demo-felhom went 0.255.0 → 0.257.0 by itself in under 12 seconds**, healthy,
its own log reading `settle-gate: GO — at/above floor 0.257.0`, and it then rendered the English
tagline — the floor delivered function, not just a version string. Peti's box and tester-1 are DOWN
and take it unattended when they return; untested on this version.
## 11. Operator decisions
These are rulings, not proposals. Anything specced against a different assumption is wrong.