Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

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á

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átypcommandvýsledeku commitu
articles_are_reciprocal_in_every_languagecivalidate 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.

Prohledává názvy a popisy všech stránek, které tento web publikuje.