2026-09-07 — Validación de traducciones ZH/EN→ES antes de cachear (surtido)
Contexto: titulares chinos e ingleses se traducen (DeepL + LLM local) y cachean en reporte/traducciones.json; el LLM fosilizaba alucinaciones (ej: “MiniMax video IA” → “miniMax: video y IA”). Se cerró el hueco con validación, no con fine-tuning.
## Reglas (_traduccion_valida en traducciones.py)
1. Marcas con mayúscula interna van verbatim (MiniMax, QbitAI, GPT-6).
Acrónimos puros excluidos: AI→IA es traducción legítima.
2. Toda cifra del original sobrevive (normalizando separadores y ceros:
01=1). URLs ignoradas — está bien que el traductor las tire.
3. Longitud proporcional con equivalencia CJK: 1 hanzi ≈ 2.5 latinas
(el chino se expande al español; sin esto se rechazan titulares buenos).
## Dónde aplica
- Los 3 caminos de escritura: traducir, traducir_muchas (el lote era la
fuga mayor: cacheaba sin validar), _llm_traduce.
- Lectura autocurativa: entrada vieja inválida se re-traduce, no se sirve.
- `traducciones.py --auditar` escanea el caché (111→110 entradas, 0 sospechosas tras purgar 1 trunca).
## Trade-off consciente
Regla de cifras estricta: si el LLM escribe "octavos" en vez de "16",
no se cachea y se reintenta por vista. Preferible a fosilizar errores.
Si un título en chino "parpadea", esa es la causa.
## Skills (2026-09-07): no instalar nada
- lovstudio-translation-review: 97 installs, bajo umbral, no aplica.
- fine-tuning-expert (3.6K): fine-tuning genérico, no ZH→ES.
- Veredicto: fine-tunear para esto es exceso; el eslabón débil era el
caché sin validar, ya cerrado. DeepL sigue siendo la vía primaria ZH→ES.