<!-- source: openspec/changes/establish-translation-quality-track/design.md -->

# establish-translation-quality-track — design

## 1. Why a track, not a one-off

A single RU pass at one point in time fixes the catalogue as of that day, but the underlying defect — *AI-drafted copy ships without native review* — keeps producing new defects every time copy lands. The corpus has shipped RU strings without review on at least three occasions this quarter (fix-marketing-metadata, harden-cookie-compliance-followup Hebrew chrome which was then pulled, the ongoing RU surface remediation).

The track frames this as a **standing process**, not an event. The structure has to outlive the first reviewer.

## 2. Three deliverables

### 2.1 Review protocol (the rule)

A short, ratified rule lives at `openspec/_methodology/translation-review-protocol.md` (new file, lands in this change's `apply` phase). The rule, in one sentence:

> No RU or RO copy lands in `packages/i18n/messages/{ru,ro}/*.json` or in any RU/RO `_methodology/` document without a native-reviewer sign-off entry in the same change folder.

Operational shape:

- The sign-off lives at `openspec/changes/<slug>/research/<reviewer-id>-signoff.md` (or in the frontmatter of the touched catalogue file — `Q-TQT-1` defers the exact location to the first reviewer).
- The sign-off names: reviewer, date, scope of review (which files / which keys), and "approved" or "approved with notes" + notes inline.
- If the catalogue change is `AI-drafted starting point + reviewer sign-off`, fine. If the catalogue change is `AI-drafted only`, the change cannot merge.
- The CI lint to enforce this is `Q-TQT-3`, deferred — for now it's a code-review convention, not a build gate.

### 2.2 Suspect-string inventory (the triage)

A research catalogue at `research/suspect-strings-2026-05-25.md` (new file, in this change folder). It lists the named suspect-string classes with one cited example each:

| Class | Locale | Example | Cited at |
|---|---|---|---|
| False friend | RO | "echipe curate" (curat = clean, not curated) | `packages/i18n/messages/ro/web.json:11` |
| English bleed | RO | Full English sentence in a RO catalogue value | `packages/i18n/messages/ro/common.json:136` |
| Latin/Cyrillic code-switch (likely accidental) | RU | "Для founder'ов" | `packages/i18n/messages/ru/web.json:7` |
| Latin/Cyrillic code-switch (likely intentional, product name) | RU | "Mirror + Canvas + outputs" | `packages/i18n/messages/ru/web.json:93` |
| Placeholder masquerading as canonical | RU | `# Manifesto` skeleton | `openspec/_methodology/manifesto.ru.md:9-12` |
| English loan in RU with native equivalent | RU | "engagement'а" → "вовлечения" / "договорённости" | `packages/i18n/messages/ru/web.json:472` |
| Untranslated meta-term | RU | "discovery", "интейк" | various |

The inventory is **not exhaustive**. It is the reviewer's starting punch list. The reviewer's pass produces an exhaustive list; this file is the seed.

### 2.3 Per-locale reviewer onboarding (the recruitment surface)

Two short docs, modelled on `openspec/_methodology/specialist-network.md § Per-discipline brief`:

- `openspec/_methodology/translation-reviewer-brief-ru.md` (new)
- `openspec/_methodology/translation-reviewer-brief-ro.md` (new)

Each brief describes:
- **What you'd review** — catalogue files + methodology docs + (in RU's case) the canonical manifesto
- **What we want** — fluent native + comfortable with technical product copy + comfortable with editorial register, not marketing fluff
- **What you'd get** — Studio external-collaborator role per `redesign-canvas-permission-model`, NDA addendum, named in the studio's network
- **How to apply** — points at the standard specialist intake (hello@rapoport.studio, brief + sample)
- **Standing rate / engagement shape** — referenced from `rapoport-studio-engagement.md`, not redefined here

## 3. What this change does NOT do

- Does **not** translate anything. Every actual rewrite is a separate change folder per locale per reviewer.
- Does **not** unblock RAP-179 (canonical Russian manifesto). That waits on Pavel.
- Does **not** re-introduce Hebrew. RAP-893 pulled Hebrew chrome same-day. Hebrew comes back when a native reviewer is in the network and a separate change ratifies it.
- Does **not** wire CI enforcement (code-switch lint) — `Q-TQT-3` deferred.

## 4. Why now

The 2026-05-22 corpus audit (Content & Localization panel scored 5.25 mean) and the 2026-05-25 delta (§D unchanged) make this the slowest-moving open finding. The other audit follow-ups (model identifiers, DPA reconciliation, Branch-3 cutover) all closed inside a week because they were engineering-owned. This one needs structure, then a human. Building the structure now means the human can land in one pass when they arrive.

## 5. Follow-ups (planned, not in scope here)

- `translate-ru-surface-<reviewer>-pass-1` — first RU reviewer's pass against `packages/i18n/messages/ru/*.json`
- `translate-ro-surface-<reviewer>-pass-1` — first RO reviewer's pass
- `add-code-switch-lint` — `Q-TQT-3` (CI enforcement, allowlist for product names)
- `revive-hebrew-locale` — gated on Hebrew native reviewer + Pavel sign-off
