## TL;DR
Diff localized pages against the translation catalog to find source-language leakage. Gate publishing on a completeness threshold per locale, and mark untranslated strings visibly (or hide the page) rather than shipping source text silently.

## The exact error
```text
localized docs show untranslated source strings
```

## Steps
1. **Find the leakage**
   Sample localized pages and compare their strings against the translation catalog; flag source-language text.
   Success check: You know which pages and strings leaked.
2. **Fix the catalog sync**
   Ensure the agent's localization step runs after the catalog is complete, not against a stale or partial catalog.
   Success check: The pipeline uses the current complete catalog.
3. **Gate on completeness**
   Require a per-locale completeness threshold before publishing; below it, keep the previous localized build.
   Success check: Incomplete locales do not ship silently.
4. **Mark fallbacks visibly**
   Where fallback to source text is acceptable, mark it clearly so readers know it is untranslated.
   Success check: Readers can distinguish translated from fallback content.

## When to use
- Use when localized docs contain untranslated source strings.
- Use when an agent runs the docs localization pipeline.

## When not to use
- Not for poor translation quality (different problem).
- Not for missing locales entirely (coverage problem).

## Why it happens
Localization pipelines often fall back to the source string when a translation is missing, which is reasonable for UI but wrong for published docs: readers get a page that claims to be in their language but is not. Agents running the pipeline do not notice the fallback.

## Edge cases
The completeness gate is the fix that scales: it turns silent leakage into a visible pipeline decision. Translation management systems expose completeness per locale, so the gate can read it directly.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_6IX3uqrckNXbXwxs8m6ksg
