| RF-01 |
Detectar setup i18n |
init detecta lib (i18next/next-intl/vue-i18n/svelte-i18n), pasta, formato e locale-fonte |
cwd, package.json, pasta locales |
localeci.config.json + glossário seed |
Escolhe locale mais completo; extensão→formato |
Must |
— |
| RF-02 |
Traduzir faltantes/mudadas |
translate compara fonte×lock×alvo e traduz missing/stale |
config, arquivos, lock |
arquivos alvo + lock atualizados |
String em lock não vai ao LLM; human imutável |
Must |
RF-01 |
| RF-03 |
Validação determinística |
5 validadores antes do judge |
source, target, locale, glossário |
ok + issues |
Falha ⇒ score 0, não escreve |
Must |
RF-02 |
| RF-04 |
Score de qualidade |
LLM-judge (0–5×4) → 0–100; opcional back-translation |
source, target, contexto |
score, decisão |
flag/fail/skip por threshold |
Must |
RF-03 |
| RF-05 |
Translation Memory |
Lockfile hash sha256(srcLocale|key|src|tgt) |
— |
localeci.lock.json |
Ordenado, diffs limpos; human protegido |
Must |
RF-02 |
| RF-06 |
Glossário |
Termos never-translate/mapeados no prompt e validados |
glossário JSON |
issues |
Prompt não garante ⇒ validar |
Should |
RF-03 |
| RF-07 |
Contexto |
Namespace, vizinhos, comentários + scan de código (AST/grep) |
arquivos de código |
ContextBundle |
AST se TS disponível; fallback grep |
Should |
RF-02 |
| RF-08 |
ICU por-braço |
Plural/select traduzidos por braço com categorias CLDR do alvo |
string ICU |
ICU recomposto |
pl exige few; ja só other |
Must |
RF-03 |
| RF-09 |
check (CI) |
Valida sem traduzir; exit≠0 em missing/broken/low/store-limit |
config, arquivos, lock |
relatório + exit code |
strict opcional; --json |
Must |
RF-03 |
| RF-10 |
status |
Cobertura por locale |
config, arquivos |
tabela |
— |
Should |
RF-09 |
| RF-11 |
Roteamento de modelos |
Classificador determinístico tier cheap/top |
key, texto, locale |
tier |
>80c, ICU, HTML, marketing, low-resource ⇒ top |
Should |
RF-02 |
| RF-12 |
Back-translation --paranoid |
Traduz de volta; similaridade (embeddings/tokens) modula score |
target |
score ajustado |
Peso 0.35; embeddings se provider suporta |
Could |
RF-04 |
| RF-13 |
Aprendizado humano |
Edição humana no PR ⇒ re-lock human + few-shot |
fonte, alvo, lock |
lock + exemplos |
Detecta target≠lock com fonte igual |
Should |
RF-05 |
| RF-14 |
Formatos |
JSON/i18next/next-intl, YAML, PO, iOS .strings, Android XML, Fluent, Markdown, texto |
arquivo |
FlatEntry[] |
Regra de ouro do diff |
Must |
— |
| RF-15 |
GitHub Action |
Traduz no PR, commita [skip-localeci], upsert 1 comentário |
evento PR, inputs |
commit + comment + outputs |
Fork ⇒ read-only check |
Must |
RF-02 |
| RF-16 |
Emissão de API key |
Cloud emite lcx_live_…, hash argon2/scrypt, mostrada 1x |
sessão, orgId |
secret (1x) + prefix |
admin+; auditado |
Must |
RF-19 |
| RF-17 |
Proxy metered |
/translate chama provider com chaves da plataforma, mede uso, aplica limites |
batch, Bearer key |
tradução + uso |
Zero-retention; cota de plano |
Must |
RF-16 |
| RF-18 |
Planos & billing |
Free/Pro/Team/Scale via Stripe |
webhook |
plano do org |
planForPriceId fonte única |
Should |
RF-17 |
| RF-19 |
Auth & Org |
GitHub OAuth; org por usuário; RBAC (owner/admin/member) |
OAuth |
sessão + org |
Deny-by-default |
Must |
— |
| RF-20 |
Revisão colaborativa |
approve/edit/reject validado; alimenta TM |
ação, sessão |
decisão + TM |
Edit quebrado ⇒ 422 |
Should |
RF-19 |
| RF-21 |
Preview visual UI |
Detecta overflow por elemento |
strings, locale |
verdicts |
Scale tier |
Could |
RF-17 |
| RF-22 |
Playground |
Traduz 1 string ao vivo com pipeline |
source, locales |
tradução+score |
Público, rate-limit + budget cap |
Should |
RF-04 |
| RF-23 |
TM semântica |
pgvector kNN sugere aprovadas como few-shot |
vetor, locale |
matches |
minScore 0.6 |
Could |
RF-13 |
| RF-24 |
Fine-tuning |
dataset exporta JSONL; roteia locale→modelo FT |
lock |
JSONL + readiness |
Gate 50M strings |
Could |
RF-05 |
| RF-25 |
Fila persistente |
Enfileira sob carga; workers com retry/backoff |
job |
resultado |
FOR UPDATE SKIP LOCKED |
Could |
RF-17 |
| RF-26 |
LGPD (DSAR/erasure/audit/retention) |
Export, exclusão, audit hash-chained, retenção |
sessão |
bundle/plan |
Audit retido; transfere ownership |
Must |
RF-19 |
| RF-27 |
MFA (TOTP) |
Enroll/verify RFC 6238 |
sessão, código |
secret/enabled |
Habilita só após verificar |
Should |
RF-19 |