0fe04bb6d5
gates / gates (push) Successful in 28s
The 2026-09-20 English drill ended one screen short: the claim page was English and its answers were Hungarian, so a household who mistyped the code from their e-mail could not tell a typo from a dead code. Fourteen call sites carrying nine messages now go through s.msg; the backup page's two protection warnings — which are promises about whether the customer's files are safe — follow the same route. Hungarian is byte-identical, proved structurally by the go-parity gate against the frozen base capture and red-proofed on a single added full stop. data["Title"] was DEAD (claim.html is standalone; .Title is layout.html's) and is deleted rather than translated — a translated dead field is a permanent false signal about where the page's title comes from. Six existing copy-contract tests were kept, not weakened: each now resolves its key through the real bundle, so it still convicts on a reworded Hungarian sentence. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
3.9 KiB
3.9 KiB
REPORT — controller v0.259.0: the claim page and the backup warnings in the reader's language
R-596 (P1), R-598. Base f6909492cc6e → v0.259.0. MinAgent 0.131.0 unchanged.
Claims in the task that turned out wrong
- "Sixteen Hungarian literals reach that page." Fifteen literal sites reach it, carrying ten
distinct messages (four are repeats). Of the fifteen, one is dead:
data["Title"]is read only bylayout.html, andclaim.htmlis standalone with its own bundle-backed<title>. So fourteen live sites, nine messages were converted and the dead one was deleted. - "
backup_handlers.go(12 Hungarian literals)." Nine are code; the other three are Hungarian inside COMMENTS ("Mentés most","Rendszermentés", a label quoted in a struct doc). The offer file's ten is right. - "the recovery code (10 words — find its caller)" in the hub. The hub does not mint it.
felhom-agent does, in
internal/escrow, from the EFF large wordlist — so the recovery code has always been English, ten words, ≈129 bits. R-597's recovery-code leg needed no work and this repo does not own that secret. No row was added for it: inventing a second definition here is how two sources of truth start. - "the mail says 'three words'." No claim mail states a count; they say
Setup code: %s. The only count wording in the product is the bind page's passphrase hint/placeholder ("five words" / „öt szó"). The English pair is now count-free; the Hungarian is untouched. - §16's phone-safe filter ("no two words differing by one letter within the first six") was measured before adoption: it removes 5270 of 7772 words, 12.92 → 11.29 bits/word. Not adopted — see the hub REPORT for the three reasons and what replaced it.
- Line numbers in the task were accurate. "29 633 words" is right to the line (29 634 lines,
29 609 after dedup). "
customer.languagereaches the anonymous claim page" is TRUE and is now pinned by a test rather than assumed. - "the box checks a hash and needs no change" (for R-597) is TRUE — verified and pinned by
TestClaimAcceptsAnEnglishWordCode.
What shipped
internal/web/claim.go— 14 sites →s.msg(r, "claim.msg.*"); the deadTitledeleted with the reason recorded in place.internal/web/backup_target_offer.go— three copy constants → bundle keys;degradedMessageForreturns the KEY (decision language-free, in one place);backupTargetView(ctx, lang).internal/web/backup_handlers.go—buildTierViews/backupTargetLabel/loadGuestBackuptake the reader's language, thebuildDataPathCardsshape.- 23 new keys in both bundles; all 23 listed in
scripts/i18n_go_keys.json.
Evidence
| Check | Result |
|---|---|
go build ./... && go vet ./... && go test ./... |
green |
controller_gates.py --fast (17 gates) |
all OK |
scripts/i18n_go_parity.py |
OK — 718 keys, byte-for-byte against the frozen base |
scripts/i18n_missing_gate.py |
English missing 0 (ceiling 0); Hungarian formal 18 (ceiling 18) |
scripts/test_gate_decoys.py |
23/23 |
Red-proofs, both seen failing:
- One added full stop on
claim.msg.bad_codeinhu.json→ go-parity named both sides. - The wrong-code Hungarian literal restored in
claim.go→ the English test convicted twice (the English sentence absent AND the Hungarian sentence present on the English page).
Two things the tests caught that review did not
- An apostrophe never renders.
"The system backup's drive…"is escaped to'byhtml/templateand nostrings.Containson the page ever matched it. Reworded; all 23 English values are now free of' " < > &. - "please" is not this product's voice. The i18n gate convicted two of my English sentences for pleading. Rewritten to plain second person.
Open
Nothing from this release. The live proof and the floor are in the felhom.eu report.