The verification passes
Translation quality isn’t asserted here — it’s checked, four different ways. Findings from every pass land in the same Review queue.
1 · The checks — offline, deterministic, free
Section titled “1 · The checks — offline, deterministic, free”Every written string is checked the moment it’s written (and again every time you
save an edit): placeholders intact, plural halves present and distinct, glossary
respected, punctuation edges, numbers, brackets, doubled words, whitespace. No
engine, no network, no randomness — the same input always flags the same way.
check on the command line runs exactly these and exits non-zero on
failures, so it works as a CI gate.
2 · The probe — does the engine agree with itself?
Section titled “2 · The probe — does the engine agree with itself?”A probe re-translates a sample of keys with the same engine and compares. Keys
where the two passes disagree get the advisory disagreement flag and rank the
key as worth human eyes. Two honesty rules: the probe refuses to run at
temperature 0 (two identical passes prove nothing), and “every key agreed” is
reported as a warning, not a clean bill — agreement is weak evidence, not proof.
Today the probe runs from the CLI (translate --probe); a run started from the
app doesn’t probe.
3 · The confirmation pass — pre-ticking the obvious
Section titled “3 · The confirmation pass — pre-ticking the obvious”Some strings are legitimately identical in two languages (“OK”). The confirmation
pass asks the engine, string by string, ONLY about targets byte-identical to
their source: “is this genuinely the same in this language?” Confirmed ones
arrive in Review pre-ticked for one-click bulk accept. It never writes an
acceptance itself — measured ~7.5% false-clear on short strings is exactly why
the final click stays yours. It runs after CLI translate runs AND after
app-started runs (since 2026-08-04): a finished run’s byte-identical proposals
get the second opinion while the job shows “confirming”, and Cancel still works
between keys.
4 · Terminology — consistency with yourself
Section titled “4 · Terminology — consistency with yourself”Your own catalogue is mined for dominant term translations; a key that renders a
term differently from the rest of your app gets the advisory terminology flag.
Escalation — a bigger engine for the stubborn keys
Section titled “Escalation — a bigger engine for the stubborn keys”When the everyday model keeps failing specific keys, escalate: re-translate
only the flagged keys with a stronger preset (a bigger local model, or an online
provider). Everything the cheap engine got right stays untouched. Today this is
CLI-only: escalate <config> <preset-id> — create the stronger preset on the AI
Settings page first.