### 1. remove addLanguageData from executeTemplate
1
=== RUN   TestLanguageSwitch_EndToEnd
    i18n_wiring_test.go:205: ?lang=en must render English and show the switch
    i18n_wiring_test.go:221: saved English: launcher lacks "<title>Launcher — Felhom.eu</title>"
    i18n_wiring_test.go:221: saved English: launcher lacks "action=\"/settings/language\""
--- FAIL: TestLanguageSwitch_EndToEnd (0.12s)
FAIL
### 2. quote in a JS-context English value
1
=== RUN   TestI18nJSContextValuesAreSafe
    i18n_wiring_test.go:103: templates/launcher.html <script>: en "launcher.masolva" contains '\'', which breaks its context
--- FAIL: TestI18nJSContextValuesAreSafe (0.04s)
FAIL
### 3. English banner drops {{.RecoveryAbandonDate}}
=== RUN   TestBundleParametersMatchAcrossLanguages
    i18n_test.go:154: en "layout.a_korabbi_tavoli_menteseidet_nap": template fields ".RecoveryAbandonDays", Hungarian has ".RecoveryAbandonDate,.RecoveryAbandonDays"
--- FAIL: TestBundleParametersMatchAcrossLanguages (0.00s)
FAIL
### 4. hu.json state word differs from the funcmap
=== RUN   TestLocaleFuncsHungarianBundleMatchesFuncMap
    i18n_wiring_test.go:136: state "running": hu.json "Futás", funcmap "Fut"
--- FAIL: TestLocaleFuncsHungarianBundleMatchesFuncMap (0.03s)
FAIL
### old gates (HEAD) against bundle decoys
emoji gate OK — no emoji in web/setup templates
rc=0
  layout.html:140 unregistered retrieval claim (visszaszerezheted):
  layout.html:140 unregistered retrieval claim (visszaszerezhetok):
RETRIEVAL-PROMISE GATE FAILED: 2 unregistered, 3 stale, across 37 template(s).
### new gates
launcher.html:61  😀  GRINNING FACE
EMOJI GATE FAILED: 1 emoji found
  launcher.html:61 unregistered retrieval claim (visszaállítható):
RETRIEVAL-PROMISE GATE FAILED: 1 unregistered, 0 stale, across 37 template(s).
Five instances of this claim have surfaced one at a time. If the new text is a genuine
