Files
forja/core
JuanandClaude Opus 4.7 eac2ed02a4 fix(guardrails): Presidio usa en_core_web_sm cacheado (en_core_web_lg no está en la imagen)
`detect_pii` instanciaba `AnalyzerEngine()` sin configuración, así que Presidio
intentaba cargar su modelo por defecto `en_core_web_lg` (~560 MB), que no está en
la imagen Docker — `core/Dockerfile` instala `en_core_web_sm`. Resultado: el
validador fallaba con `[E050] Can't find model 'en_core_web_lg'` y, al ser la
política fail-closed, *toda* invocación quedaba `blocked_by_guardrail`. Además se
reinstanciaba el engine en cada llamada (caro; probablemente la causa del crash del
proceso al segundo invoke). Ahora:
  - `_presidio_analyzer()`: singleton perezoso con `NlpEngineProvider` → `en_core_web_sm`.
  - si Presidio no está instalado o el modelo no carga, se hace fallback a la
    detección por regex (antes solo se hacía fallback ante ImportError).
Detectado ejecutando el smoke de docker-compose (el venv local no tiene Presidio,
así que los tests usan la rama de regex y no lo veían).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 14:38:52 +02:00
..