feat(docs): gate the top 10 non-English root-doc locales; germinate French - #80391
feat(docs): gate the top 10 non-English root-doc locales; germinate French#80391andrexibiza wants to merge 16 commits into
Conversation
Adds French versions of the core documentation following the existing locale-suffix convention (README.es.md, CONTRIBUTING.es.md, SECURITY.es.md): - README.fr.md - CONTRIBUTING.fr.md - SECURITY.fr.md Translated from the current English sources by a native French speaker. Technical identifiers (commands, paths, env vars, provider/model names, URLs, code blocks) are kept verbatim. The English LICENSE remains the authoritative legal version. Closes NousResearch#60535 Signed-off-by: iacker <iacker@users.noreply.github.com>
Address hermes-sweeper review on NousResearch#63660: - SECURITY.fr.md: point security-policy cross-reference to CONTRIBUTING.fr.md (matching SECURITY.es.md localization convention) - README.md: add README.fr.md language badge so the French translation is discoverable from the primary entry point Signed-off-by: Billard <82095453+iacker@users.noreply.github.com>
The localized-docs drift class, enforced: - scripts/docs_germination.py: the canonical pipeline (extract -> template -> assemble -> check). The parity gate verifies, per locale file against its English source: byte-identical code-fence sequence (code is never translated), verbatim backtick technical identifiers (root-doc names allowed as locale twins), link-target parity under the locale rewrite rule, resolvable internal fragments, heading-level structure parity, locale README back-link, and English-hub discoverability for germinated locales. Manifest carries the top-10 global languages (Ethnologue order) with status and provenance. - tests/conformance/test_docs_i18n_germination.py: behavior contracts (extractor correctness incl. GFM fence-closing rules and unbalanced backtick pairing) plus the gate itself: germinated locales must pass every class; manual/legacy locales (es, zh-CN, ur-pk) report all drift as warnings — debt visible in CI, roadmap to re-germinate. - docs/developer-guide/docs-i18n-germination-spec.md: the portable standard + measured debt report. French (README.fr.md, CONTRIBUTING.fr.md, SECURITY.fr.md) is the first germinated locale; the gate caught real drift in the seed translation (stale backend count, missing commands, stale conftest symbol, drifted security-surface paragraph). Signed-off-by: Andrex Ibiza, MBA <84248988+andrexibiza@users.noreply.github.com>
The cherry-picked French seed (iacker, NousResearch#63660) drifted from the English sources; the germination gate caught each edge and this commit closes the class: - README.fr.md: add missing 'hermes config get' fence line; 'Seven terminal backends' (Vercel Sandbox) — French said six. - CONTRIBUTING.fr.md: restore byte-identical CI comment inside the run_tests.sh fence; fix stale tests/conftest.py::_enforce_test_timeout reference to the real hook tests/conftest.py::pytest_configure; fix two dangling #compétence-ou-outil fragments (github-slugger strips the trailing hyphen). - SECURITY.fr.md: restore the gateway-platform-adapters security-surface paragraph with the plugins/platforms/<name>/ and gateway/platform_registry.py technical identifiers. Translation prose remains iacker's; authorship preserved on the seed commits. The parity gate now passes French with zero errors. Signed-off-by: Andrex Ibiza, MBA <84248988+andrexibiza@users.noreply.github.com>
…unner Completes the pipeline's AUTOMATIC half: the germinate action renders the prose-placeholder template, pipes it to a configured LLM command (stdin->stdout, e.g. 'hermes chat -Q -q'), writes the locale file, and runs the parity gate on the LLM output — the gate is the arbiter, not the model. A translator that drops a technical edge fails the gate and is not shipped. Template hardening discovered by the action's own tests: - HTML badge lines are preserved regardless of leading whitespace. - README templates auto-inject the English language badge (the back-link convention every locale README follows; backlink_parity enforces it). - LLM prompt carries the template with prose markers, hard rules, and DOCUMENT START/END delimiters. Tests: mocked-LLM contracts (no network): write+gate, drift rejection, loud failure on LLM error. Signed-off-by: Andrex Ibiza, MBA <84248988+andrexibiza@users.noreply.github.com>
Signed-off-by: Andrex Ibiza, MBA <84248988+andrexibiza@users.noreply.github.com>
…ent localization Blind semantic review of the French translations (28 findings, zero meaning-changing technical errors) — all applied: - False friend: "éventuellement" -> "en option" (MemoryProvider post_setup). - Calques removed: harnais -> infrastructure de l'agent; plomberie -> infrastructure de configuration; exercez -> testez; amorçage phrasing; "un amont" -> "un service en amont"; "n'opère pas" -> "n'a pas de programme"; sandboxe -> n'isole que le shell. - Meaning shift: "exfiltration opportuniste" -> "exfiltration accidentelle" (casual != opportunistic). - Anglicisms: managé -> géré; template de PR -> gabarit de PR; gating -> verrouillage; Assets TTS -> Ressources TTS; sites d'appel -> points d'appel; "official" -> « officielle ». - Terminology standardized: allowlist -> « liste d'autorisation » everywhere (3 renderings collapsed to 1); "core" -> « cœur ». - Residual English: reload/start-chatting comments, skill-example comments, branch-type table, version-window comments, tree-structure comments, project-tree comments — all translated. - Recurring calque: "résoudre des approbations" -> « statuer sur les approbations » (3 sites). Gate refinement enabling this: fence comments are now LOCALIZABLE prose — comment-normalized body hashes (commands must match exactly, comments may be translated, comment code spans like `env -i` still required). This is the principled line: code never translated, comments are docs. chore: map contributor email iacker (credit ledger for NousResearch#63660 seed). Signed-off-by: Andrex Ibiza, MBA <84248988+andrexibiza@users.noreply.github.com>
|
The long-document production skill and the canonical publication are now proposed in #80551. This contribution is interlocked with the graph-gated engineering family:
The repository contribution includes the skill under skills/research/, the guide under website/docs/guides/, the guide sidebar and llms.txt generator registration, the compiled 68-page PDF, LaTeX source, BibTeX, and a checked-in bidirectional interlock manifest. Attribution is a core value: the contribution preserves Axl Ibiza, MBA’s authorship of the doctrine and publication, plus contributor, reviewer, agent, and source-project provenance. PR: #80551 |
|
This was generated by AI during triage. Summary: Problems:
Solution: Checked against |
Indonesian lane update — #92192 is now in the required full-trio shapeFollowing the authoritative decisions recorded in #80392, I have updated the existing Indonesian implementation PR #92192 in place (no duplicate PR):
The old divergent branch state was preserved in a backup ref, then #92192 was rebuilt from current upstream history and synchronized with Current repository state for #92192:
This makes #80391 the remaining authoritative dependency for the Indonesian lane. Per #80392, please carry the agreed corrections here before the gate is used for #92192:
Once an updated gate head is available, I can validate/fix the Indonesian trio against that exact gate before merge. |
Indonesian root-doc lane synchronized to current mainThe Indonesian implementation authority #92192 has now been synchronized to current upstream Current #92192 head:
A collision review over the 232 upstream commits since the previous synchronization found no changes to canonical #80391 remains the procedural blocker for #92192 because this gate is still open and currently not mergeable. Once the gate is synchronized/fixed and authoritative, #92192 can be validated against that exact gate head before maintainer merge. |
CI repair pushed —
|
Exact-head CI closeout —
|
What
Ships the cross-language root-document germination pipeline, with French as the first fully gated locale and one versioned authority for the remaining target set.
Versioned target-locale contract
The canonical target set is the top 10 non-English documentation locales from Ethnologue 200, 29th Edition (2026) using All Users (L1+L2). English is the canonical source graph, not a translation target:
zh-CN,hi,es,ar,fr,bn,pt,id,ur-pk,ruThat distinction keeps both Indonesian and Russian in scope: Russian is 11th in the worldwide table but tenth after canonical English is excluded.
scripts/docs_germination.pynow owns the contract throughTARGET_LOCALE_CONTRACT,TARGET_LOCALES, andMANIFEST. The conformance suite iterates the canonical tuple directly; it does not maintain a second hardcoded subset.The manifest also records the existing implementation authorities so this pipeline consolidates work instead of spawning duplicate lanes:
For every new locale, the contract is the complete
README/CONTRIBUTING/SECURITYtrio, gate-first, with no manual waiver.manualremains grandfathered debt only for the three translations that predate the pipeline:zh-CN,es, andur-pk.The machinery
scripts/docs_germination.py— canonicalextract→template→germinate→checkpipeline and target-locale manifest.tests/conformance/test_docs_i18n_germination.py— CI gate for code-fence sequence, backtick technical identifiers, locale-rewritten link targets, resolvable fragments, heading structure, English backlink, and hub discoverability.docs/developer-guide/docs-i18n-germination-spec.md— portable standard, versioned source contract, runbook, authority map, and measured legacy-debt report.French
README.fr.md,CONTRIBUTING.fr.md, andSECURITY.fr.mdare seeded from @iacker's native translation in #63660, with authorship preserved, then refreshed against currentmainthrough the same gate.The gate has already closed concrete drift in the seed, including missing CLI commands, stale terminal-backend counts, stale test-hook references, malformed fragments, and missing security-model identifiers. This refresh also carries the current
hermes --versioncontract, current Node/workspace installation wording, and current platform-marker guidance.Legacy debt is measured, not hidden
The existing
es,zh-CN, andur-pktranslations run the same checks at warning severity so their drift remains visible in every gate result. New locales cannot use that escape hatch.Verification
The branch is merged with current
main; exact-head CI is the merge authority.Links
Closes #60535
Part of #80392
Part of #78647