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
+16 -10
View File
@@ -4,14 +4,15 @@
**app-catalog-felhom.eu** (freeze + gate + pilot), **felhom.eu** (this file, the architecture
document, the register, STATUS, the audit). Hub, agent, ISO and website untouched.
## What the operator has to do
## Where it ended
**Read the English of the three pilot apps** — quoted in full in `app-catalog-felhom.eu/REPORT.md` —
and say "go", or say what to change. Fifty more apps follow whatever is said. Ten minutes now against
a day of rework later. This is the §16 default of the plan and it was taken: Part C is not started.
The operator read the pilot and said go, so **Part C shipped the same day**: the other fifty apps in
three pushes. **1 031 of the catalog's 1 032 customer-facing strings are English**, and the one that
is not is a Hungarian defect deliberately left to fall back (R-593). **The fleet floor was then
raised to 0.257.0**, as the operator asked, and the second demo box took it by itself in under twelve
seconds and rendered English.
**And, separately: raise the fleet floor to 0.257.0.** Until it moves, only demo-hp can read an
English app block at all. Nothing breaks if it waits.
**Nothing is waiting on the operator from this work.**
## What was proven, and how it was seen
@@ -21,7 +22,9 @@ session — the same handlers and templates a browser drives, with only the draw
| claim | evidence |
|---|---|
| The English app pages show English catalog text | demo-hp on 0.257.0: privatebin, paperless-ngx, romm app pages, the Apps list, two deploy pages |
| The English app pages show English catalog text | demo-hp on 0.257.0: twelve apps opened individually across the pushes |
| **The English Apps list has NO Hungarian app text left** | all 53 apps on one page: the only Hungarian is the „Naprakész" badge (R-589) and the language picker naming itself |
| The floor delivered the FEATURE, not a version string | demo-felhom self-updated 0.255.0 → 0.257.0 in under 12 s, then rendered the English tagline |
| **The Hungarian did not move** | the same seven pages in Hungarian, before and after the catalog push: byte-identical apart from the per-session CSRF token — equal byte counts and equal hashes once normalised |
| **An old controller ignores the block** | demo-felhom on **0.255.0**: with the block synced (confirmed positively — the sync named the three apps and the block is in both the cache and the stack copy), pages hash identically before and after, and **no** parse warning in a **93-line** log window that contains the sync's own lines |
| The gate can convict | 33 decoy cases in the catalog repo, every one seen to convict or to pass as intended |
@@ -52,6 +55,7 @@ The Apps list also shows fifty Hungarian descriptions: those are the apps nobody
| "the sync is 15 min with no pin" | ✔ correct; a manual trigger exists (`POST /api/sync`, the dashboard's "Sablonok frissítése") and was used |
| "`yaml.Unmarshal` is non-strict" | ✔ correct, and stronger than stated: this repo constructs **no** `yaml.Decoder` at all, so there is no `KnownFields` anywhere that could be turned on |
| the line numbers (`metadata.go` L15/L123/L158/L316) | ✔ all correct |
| "„Igen", „Nem", „Nincs" are the ASCII-only option labels" | the three ASCII-only option labels are **„Magyar", „Angol", „Magyar + Angol"** — language names, not yes/no words. „Igen" and „Nem" DO open vaultwarden's two option labels, but both of those carry accents later in the string and were already counted |
## Rows
@@ -59,11 +63,13 @@ The Apps list also shows fifty Hungarian descriptions: those are the apps nobody
backup promise is Hungarian on an English page), R-591 (`Stack.Copy()` deep-copies five `Meta` fields
and not the new `I18n` map — safe today, which is why it is a row and not a fix), R-592 (three
defects inside the new catalog gate, **closed the same session**, each found by its own decoy rather
than by reading it).
than by reading it), R-593 (papra describes a session-signing key as „the app's subdomain" — the one
string left untranslated), R-594 (the catalog gate can CONVICT a retrieval promise but has no way to
REGISTER a true one, which the shared vocabulary's own design calls for).
**Updated:** R-560 — Parts A and B done, Part C waiting on the operator's read.
**Closed:** R-560.
Register: 281 → 285 rows.
Register: 281 → 287 rows.
## Documents changed here