From 9dd2a8f9bd9d70e2115a937641d0ccc4e384364c Mon Sep 17 00:00:00 2001 From: Juan Date: Mon, 11 May 2026 14:39:26 +0200 Subject: [PATCH] docs(plan): registra el walkthrough manual del dashboard y los 3 fixes derivados Co-Authored-By: Claude Opus 4.7 --- docs/superpowers/plans/2026-05-09-agentforge.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/superpowers/plans/2026-05-09-agentforge.md b/docs/superpowers/plans/2026-05-09-agentforge.md index 4dd4868..fca37ef 100644 --- a/docs/superpowers/plans/2026-05-09-agentforge.md +++ b/docs/superpowers/plans/2026-05-09-agentforge.md @@ -5572,6 +5572,7 @@ git commit -m "feat(dashboard): página Politicas con detalle de validadores y v > **Nota de implementación (desviación del plan):** > - **Task 36:** ambos Dockerfiles pasan `docker build --check` sin warnings (se usó como lint previo). > - **Task 37 (smoke):** `docker compose build` falló la primera vez en `RUN python -m spacy download en_core_web_sm` del core — `guardrails-ai<0.6` arrastra `typer 0.12.x`, incompatible con el `click 8.3.x` que resolvió pip (`TypeError: Secondary flag is not valid for non-boolean flag`). Se mantuvo el `spacy download` del plan y se fijó `click>=8.1,<8.2` en `core/requirements.txt` (commit `fix(deps): fija click<8.2 …`); el rebuild funcionó. Smoke OK: `docker compose up -d` → `agentforge-core` *healthy* con `GET /health → 200 {"status":"ok"}`, `agentforge-dashboard` con `/_stcore/health → ok`, sin errores en logs; `docker compose down` limpio. +> - **Walkthrough manual del dashboard (Task 38, ejecutado contra el stack):** al recorrer los flujos de `docs/manual_qa.md` vía la API del core aparecieron tres bugs (que los tests no veían porque el venv local no tiene Presidio y usa la rama de regex): (1) `detect_pii` instanciaba `AnalyzerEngine()` sin config → Presidio cargaba su modelo por defecto `en_core_web_lg`, que no está en la imagen → fail-closed bloqueaba todo → fix `fix(guardrails): Presidio usa en_core_web_sm cacheado …` (singleton + `NlpEngineProvider`); (2) el recognizer de `PERSON` de `en_core_web_sm` daba falsos positivos sobre los textos de los escenarios → `01_sip`/`02_mos` salían `blocked_by_guardrail` → fix `fix(policies): detect_pii/pii_leakage solo con recognizers de patrón fiables` (se quitan `PERSON`/`PHONE_NUMBER`); (3) `GET /executions` solo leía el JSONL (sin las ejecuciones `awaiting_approval`) → la página de Aprobaciones nunca veía pendientes → fix `fix(api): /executions incluye también las ejecuciones HITL pendientes` (+ test). Tras los fixes, el walkthrough pasa 26/26: las 5 páginas sirven 200, los 3 escenarios del demo funcionan (MOS→completed, SIP→awaiting→approve→completed / reject→failed), bloqueo PII (NIF/email) OK, historial/violaciones/políticas OK, y el estado sobrevive a `down`+`up`. ### Task 36: Dockerfiles para core y dashboard