I3092 — A translation-memory edit says which pages each changed key reaches, and refuses one that reaches none
Have the i18n pass write target/site-i18n/reach.json, every segment key of the English pages with the pages it occurs on, and give scripts/site-translate a `reach` command that lists, for every memory entry changed against a revision, the pages its key reaches and refuses (exit 10) one that reaches none; `import` refuses an entry whose key reaches no page.
HOTOVO vlna 0 · p2 · profil implementation · běží samostatně
Součást public-proof — Návštěvník vidí, jak se produkt sám dokazuje, a může ověřit každé jeho tvrzení.
Cíl
Have the i18n pass write target/site-i18n/reach.json, every segment key of the English pages with the pages it occurs on, and give scripts/site-translate a `reach` command that lists, for every memory entry changed against a revision, the pages its key reaches and refuses (exit 10) one that reaches none; `import` refuses an entry whose key reaches no page.
Proč
On 2026-10-20 a hand edit put the Czech for the site bar's toggle on the key of the plain sentence 'How it works' instead of the toggle's 'How it works<t1/>'. The memory took it, the bar stayed English, and only a peer reading the live page saw it. A key that no page carries is a translation nobody will ever read, and nothing said so.
Aktuální stav
The pass lists only what the memory does not know (missing.json); an entry whose key no page carries is kept silently, and site-translate import admits any key with a matching English.
Cílový stav
reach.json is written beside missing.json; `site-translate reach` names, for each changed key, its pages or that it reaches none, and fails on the latter; import refuses an unreachable key.
Rozsah
- scripts/lib/site-i18n.mjs
- scripts/site-translate
- test/cases/3590_the_site_is_derived_in_every_language.sh
- .ai/repo/project/issues/I3092.yaml
Mimo rozsah
- Garbage-collecting unreachable entries already in the memory (they are listed, not removed)
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- reach.json lists every segment key of the English pages with its page count
- A changed memory entry whose key no page carries is named and refused; one whose key a page carries is listed with its pages
- import refuses an entry whose key reaches no page
Validace
- env -u MAJORDOMUS_SHARE bash test/run.sh 3590_the_site_is_derived_in_every_language
Požadované důkazy
- unreached_key_is_refused
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| unreached_key_is_refused | ci | bash test/run.sh 3590_the_site_is_derived_in_every_language | passed in train 3a validate 39712017896 (76c57859663, landed on master 2026-10-22) | 76c5785 |
Časová osa
- zahájeno
- 2026-10-21T01:47:57Z
- ověřeno
- 2026-10-21T01:51:20Z
- dokončeno
- 2026-10-22T04:42:16Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3092.yaml. Read it back with majordomus plan show I3092.