I3074 — Every article ends with the articles related to it, in its reader's language, and each answers it back
An article names the articles related to it in [extra] related, as the routes its [extra.translations] uses, and site/templates/page.html ends it with a Related section that draws each one from the page itself through get_page: its title, its description and its language, tagged where that is not the article's own. Check 21 of scripts/site-check reads the list with the reader it already has for the counterparts, and refuses, naming the file: a related route that is no page or no article, the article itself or one of its own counterparts, an entry listed twice, a page in another language where the related article has a counterpart in the article's own, a related article that names neither the article nor any of its counterparts back, two counterparts that relate different articles, and, once the site relates any article, an article the navigation lists that names none. The eight articles of site/content-src each name the other three groups in their own language. Case 3389 holds each refusal on fixtures, the real tree, and the built section of every article.
DONE wave 2 · p2 · implementation profile · parallel safe
Part of public-proof — A visitor sees the product prove itself, and can check every claim it makes.
Objective
An article names the articles related to it in [extra] related, as the routes its [extra.translations] uses, and site/templates/page.html ends it with a Related section that draws each one from the page itself through get_page: its title, its description and its language, tagged where that is not the article's own. Check 21 of scripts/site-check reads the list with the reader it already has for the counterparts, and refuses, naming the file: a related route that is no page or no article, the article itself or one of its own counterparts, an entry listed twice, a page in another language where the related article has a counterpart in the article's own, a related article that names neither the article nor any of its counterparts back, two counterparts that relate different articles, and, once the site relates any article, an article the navigation lists that names none. The eight articles of site/content-src each name the other three groups in their own language. Case 3389 holds each refusal on fixtures, the real tree, and the built section of every article.
Why
The owner asked on 2026-10-19 that the site's articles be developed and interlinked in every language, and enforced. e7's I3436-I3438 make every article read in every language and hold its counterparts to each other; an article still led nowhere but to its own translation, so a reader who finished the essay on the bet on a layer was not shown the documentation it argues for, the stream that measures it or the plan it becomes. The withdrawn first attempt of this issue is preserved at refs/rescue/docs/the-articles-are-linked-in-every-language/20261019T0400Z.
Current state
site/templates/page.html ends an article with its body. No article names a related one, and nothing in scripts/site-check or the suite reads such a list.
Desired state
Every article the navigation lists ends with a Related section naming the other groups of articles, each in the reader's language, and every group relates the same articles in each of its languages. Check 21 refuses a list that breaks any of those, on the real tree in the site job and on fixtures in case 3389.
Scope
- .ai/repo/project/issues/I3074.yaml
- scripts/site-check
- site/templates/page.html
- site/content-src/teze.md
- site/content-src/the-bet-on-a-layer.md
- site/content-src/proof-carrying-documentation.md
- site/content-src/dokumentace-kterou-lze-odmitnout.md
- site/content-src/everything-followed.md
- site/content-src/vsechno-v-jednom-proudu.md
- site/content-src/a-pasted-brief-becomes-a-plan.md
- site/content-src/vlozene-zadani-se-stava-planem.md
- test/cases/3389_related_articles_answer_each_other_in_every_language.sh
Out of scope
- A link to an article's own counterpart under its title, and a language switch for the whole site: that is the multilingual site's (feature/site-multilingual)
- Translating the heading of the section, which is the site's English chrome like the breadcrumb
Dependencies
- I3436DONE Every article reads in every language the site declares, and its counterparts are reciprocal
- I3437DONE An article names every language version in one translations table, and every member names the same group
What waits on this
Acceptance criteria
- Each of the eight articles is built with a Related section linking the three other groups' articles in its own language, each with the related page's own title and lang
- Check 21 refuses, naming the file, each fault the objective lists, and passes the real site/content-src with one OK articles line counting the related links
- A translation's source_digest does not move when its source's related list changes, because the digest covers the body alone
Validation
- majordomus plan validate
- env -u MAJORDOMUS_SHARE -u MAJORDOMUS_HTTP_HOST -u MJ_ROOT bash test/run.sh 3389_related_articles_answer_each_other_in_every_language
- env -u MAJORDOMUS_SHARE -u MAJORDOMUS_HTTP_HOST -u MJ_ROOT bash test/run.sh 3502_every_article_reads_in_every_language
Evidence required
- related_articles_answer_each_other
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| related_articles_answer_each_other | ci | validate run 39712017896 at 76c57859663 (PR #1789, the tree master holds since train 3a landed): suite-shard (4) job 119605435710 runs 3389_related_articles_answer_each_other_in_every_language; the site job runs scripts/site-check, check 21 included | 3389 ok (10s); shard 4: 153 passed, 0 failed, 1 skipped; every job of the run passed | 76c5785 |
Timeline
- started
- 2026-10-22T04:37:05Z
- verified
- 2026-10-22T04:37:37Z
- completed
- 2026-10-22T04:42:19Z
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3074.yaml. Read it back with majordomus plan show I3074.