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.