I3436 — Every article reads in every language the site declares, and its counterparts are reciprocal
scripts/site-check refuses, naming the file, an article whose counterpart is not a page under site/content-src, is in the article's own language or in another language than alternate_lang names, or does not name the article back, and an article site/data/nav.toml lists with no counterpart in a language the site declares; the languages are config.toml's default_language and the lang values the pages declare, and the check runs alone as --articles over a fixture.
HOTOVO vlna 0 · p2 · profil implementation · bezpečné souběžně
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
scripts/site-check refuses, naming the file, an article whose counterpart is not a page under site/content-src, is in the article's own language or in another language than alternate_lang names, or does not name the article back, and an article site/data/nav.toml lists with no counterpart in a language the site declares; the languages are config.toml's default_language and the lang values the pages declare, and the check runs alone as --articles over a fixture.
Proč
The owner asked on 2026-10-19 that the site's articles be interlinked in every language and that this be enforced. The milestone is public-proof because it owns what the public site tells a visitor and holds scripts/site-check and site/ in its scope; a published article that names a translation which does not name it back, or that has none, is the site saying less than it claims.
Aktuální stav
site/templates/base.html:35-37 emits rel=alternate links from [extra] alternate and alternate_lang, and scripts/ci/link-check:5 resolves every <link> as an internal link, so only a counterpart that is not built is a finding. Nothing refuses a one-way alternate, a counterpart in the same language, or an article without one: on master site/content-src/everything-followed.md:6 (lang en) and site/content-src/teze.md:6 (lang cs) declare no counterpart while site/data/nav.toml:90 and :92 list them, and scripts/site-check:1597 ends the run without a language check.
Cílový stav
Check 21 of scripts/site-check, article_counterparts, reads the front matter of every *.md under site/content-src and refuses each of the four faults and every listed article missing a counterpart, printing one OK line for a clean tree; scripts/site-check --articles DIR NAV CONFIG runs it alone; case 3502 holds it on fixtures and on the real tree.
Rozsah
- scripts/site-check
- test/cases/3502_every_article_reads_in_every_language.sh
- .ai/repo/project/issues/I3436.yaml
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I3437READY An article names every language version in one translations table, and every member names the same group
- I3438READY A translation records the digest of its source, and site-check refuses one its source has moved past
Kritéria přijetí
- A reciprocal pair and a page that declares no lang pass with one OK articles line
- A one-way alternate, a dangling target, an alternate_lang that is not the target's lang and a counterpart in the article's own language each fail with exit 10 and name the file
- An article the navigation lists with no counterpart fails naming the missing language, and a site that declares one language owes none
- The languages are derived from config.toml and the pages, not written in the check
- The real site/content-src passes
Validace
- env -u MAJORDOMUS_SHARE -u MAJORDOMUS_HTTP_HOST -u MJ_ROOT bash test/run.sh 3502_every_article_reads_in_every_language
Požadované důkazy
- articles_are_reciprocal_in_every_language
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| articles_are_reciprocal_in_every_language | ci | validate run 39438896504 at master 9a5a9b77520: suite shards 1-4 (jobs 118683336189 118683338077 118683336157 118683336457) run every case, incl. 3502_every_article_reads_in_every_language (4624a38dfe7) | success (the run's only red job is pages, which runs no test) | a81b1e3 |
Časová osa
- zahájeno
- 2026-10-20T16:16:25Z
- ověřeno
- —
- dokončeno
- 2026-10-20T16:30:35Z
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/I3436.yaml. Read it back with majordomus plan show I3436.