Skip to content

91 translation fidelity findings on main that the freshness gate passes as current #75

Description

@os-zhuang

Blocked-by: #68

(PM state, repo:objectos seat 2026-08-19: the #74 Blocked-by line above was exhausted — #74 merged — and is replaced by the live upstream. The measurements below were taken at a132376 and have moved; re-measured numbers and the re-priced scope are in the dispatch-review comment, residue listed in #135. Body otherwise unchanged from the filer.)

Surfaced by the output validator added in #74. Filed rather than fixed: the fix
is a translation pass, not a code PR. Every one of these files is a generated
artifact, AGENTS.md forbids hand-editing them, and
check-translation-ownership.mjs rejects a PR that mixes translations with
anything else.

What was measured

On a132376, node .github/scripts/check-translation-output.mjs --report
reports 91 findings across 84 files:

Rule Findings What it means
fence 73 a fenced code block differs from the English source
length 12 prose length outside ±40% of what that locale runs at
url 6 links to a page the English page never references

unsafe is 0 — the corpus is clean of markup that must never render.

Why this is not the stale backlog

83 of the 84 files are not stale. They carry a current source_sha, so
check-translations.mjs passes them and the worklist does not include them.
Provenance was never fidelity: these were derived from the current English and
edited during derivation.

Two representative findings:

  • content/docs/resources/support.de.mdx — the support-ticket template inside a
    code fence reports ObjectOS version: 10.2.0. English says 14.7.0. A German
    reader following this page files a ticket claiming a version that is four
    majors old.
  • content/docs/resources/license.{de,es,fr,ja,ko}.mdx — five locales added the
    same sentence linking to /docs/reference/security#data-residency. The
    English license page makes no such cross-reference. Five separate locale files
    agreeing on content the source does not have is one pass inventing it once.

The length extremes are truncation, not language: positions.de.mdx is 0.30x its
English source and is missing the entire closing migration table — a reader of
the German page never learns the legacy role vocabulary was renamed.

What closing this looks like

Re-derive the affected pages. The list is the check's own output:

node .github/scripts/check-translation-output.mjs --report

One decision for whoever runs it: bumping GUIDE_REV in
check-translations.mjs marks all 256 translations for retranslation and would
clear this debt as a side effect. #74 deliberately did not bump it — that PR
changed how the guide is enforced, not what to translate — but a pass large
enough to fix 84 files may be the moment to.

Until then the debt is reported, not blocking: #74 gates the locale files a PR
changes, so this shrinks as pages are re-derived instead of demanding a
flag-day cleanup.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions