<!-- source: openspec/changes/establish-translation-quality-track/research/suspect-strings-2026-05-25.md -->

---
title: Suspect strings — seed inventory for native translation reviewer
status: research
owner: pavel
audience: [pavel, native-reviewer-ru, native-reviewer-ro]
date: 2026-05-25
tldr: Eight named classes of suspect strings in packages/i18n/messages/{ru,ro}/*.json + openspec/_methodology/manifesto.{ru,ro}.md, with one example each cited at file:line. Starting punch list for the first native reviewer; not exhaustive — the reviewer's pass produces the exhaustive list.
---

# Suspect strings — seed inventory

> Seed catalogue produced by the audit pass behind `establish-translation-quality-track`. Each class lists one concrete example at `file:line` against the repo at commit-on-PR. The reviewer expands each class to its complete set during their pass.

---

## Class 1 — RO false friend

The Romanian adjective `curat` means *clean*, not *curated*. The studio's i18n catalogue uses it as if it meant *curated*, producing English-sounding RO that natives read as bizarre.

**Example:**
- `packages/i18n/messages/ro/web.json:11` — *"Echipe curate pentru platforme digitale"* (intended: *curated teams for digital platforms*; reads as: *clean teams for digital platforms*)

**Likely fix posture:** `echipe curate` → `echipe selectate` or `echipe atent alese` (alternatives the reviewer should choose between).

## Class 2 — RO English bleed (entire English sentences inside RO catalogues)

A RO catalogue file contains literal English text as if it were RO.

**Example:**
- `packages/i18n/messages/ro/common.json:136` — `"blurb": "Full platform built end-to-end. A curated team hand-picked for your brief, every change designed before it ships, every PR yours to merge. Your repository, your architecture, your deliverable from day one."`

This is the most embarrassing class — a native RO speaker reading the marketing site hits the language switch and finds English. Fix: full RO rewrite of the value.

## Class 3 — RU Latin/Cyrillic code-switch (likely accidental)

The Russian catalogue contains Latin loanwords with Cyrillic case endings (apostrophe-attached). Some have legitimate native Russian equivalents.

**Example:**
- `packages/i18n/messages/ru/web.json:7` — *"Для founder'ов, отгружающих AI-native платформы"* (consistent pattern across 131 lines in `ru/web.json` alone)

**Likely fix posture:** `founder'ов` → `основателей` (or keep `founder` un-declined as a proper-noun reference, per § Class 4 disambiguation).

## Class 4 — RU Latin/Cyrillic code-switch (likely intentional, product name)

Some Latin tokens in the RU catalogue are studio product names that **must** stay in Latin / source case: `Mirror`, `Canvas`, `Discovery`, `Forge`, `Muse`, `OpenSpec`, `Studio`. Per `D-TQT-3`, these are not translated and not transliterated.

**Example:**
- `packages/i18n/messages/ru/web.json:93` — *"Mirror + Canvas + outputs"* (correct; do not translate)

The reviewer's pass distinguishes Class 3 (accidental) from Class 4 (intentional) and applies the right disposition per token.

## Class 5 — Placeholder masquerading as canonical

The canonical Russian manifesto is a structural skeleton, not a written manifesto. EN and RO are authored against the skeleton (corrected in PR #1784); a future RU canonical body (RAP-179, operator-blocked) will require refreshing EN and RO.

**Example:**
- `openspec/_methodology/manifesto.ru.md:9-12` — placeholder body explicitly named as such

**Reviewer's role:** out of scope for this change. The canonical RU manifesto is Pavel-voice authorship.

## Class 6 — English loan with native Russian equivalent

A subset of Class 3. Listed separately because the reviewer's call is *replace* vs *keep declined* vs *keep undeclined*.

**Example:**
- `packages/i18n/messages/ru/web.json:472` — *"четырёхнедельный engagement: превращаем то, что построено..."*

`engagement` has Russian equivalents (`вовлечение`, `проект`, `сессия`, `договорённость`, `формат работы`). The studio uses `engagement` as a near-product term. The reviewer decides per occurrence whether the term carries enough product-specific meaning to stay English (Class 4 disposition) or should translate to a native equivalent (Class 3 disposition).

## Class 7 — Untranslated meta-term

Some workflow-meta terms appear untranslated in Cyrillic transliteration that natives find awkward.

**Examples:**
- *"интейк"* (transliteration of *intake*) where Russian *приём заявок* or *входящая форма* would be natural
- *"дискавери"* / *"discovery"* — sometimes Cyrillic, sometimes Latin, sometimes mixed

The reviewer applies a per-term decision and a glossary that future translation passes follow.

## Class 8 — Inconsistent casing of product names

Within RU, the same product name appears in different casings (`mirror`, `Mirror`, `MIRROR`). EN catalogues are also inconsistent in places. The reviewer flags inconsistencies; the canonical casing for each product name is set in `openspec/current/agents-overview.md` and `_root/glossary.md`.

**Example:** sample of casing variance to inventory during the pass.

---

## Quantification (for context, not for action)

- `packages/i18n/messages/ru/web.json` — **131 lines** with Latin↔Cyrillic switches
- `packages/i18n/messages/ru/{common,intake,primer}.json` — 18 lines combined
- `packages/i18n/messages/ro/common.json` — 16 lines with English-shaped four-word phrases (rough grep; needs native sweep to discriminate)
- Catalogue size: RU 104KB, RO 80KB, EN 74KB

The reviewer is not expected to read every line of every catalogue — just to land a triage pass that lists every actual defect in their pass.

---

## What this inventory is NOT

- Not exhaustive — the reviewer's pass produces the exhaustive list
- Not a prescription — the reviewer's call (replace / keep / translate / transliterate) is theirs
- Not a deadline — the track lives in `establish-translation-quality-track`; this file is one of three deliverables, not the whole work
