feat(episode): EXPLORA_correccin-importante-me-equivoqu-en-dos_S20260808.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: advisory Summary: EPISODIO 1 — SENTINEL: Corrección importante: me equivoqué en dos cosas
This commit is contained in:
parent
e5be0424db
commit
49197bb082
1 changed files with 47 additions and 0 deletions
|
|
@ -0,0 +1,47 @@
|
||||||
|
---
|
||||||
|
episode_id: "06742505-3051-4014-8441-a12aba4401c5"
|
||||||
|
puente_flat: "EXPLORA_correccin-importante-me-equivoqu-en-dos_S20260808.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||||
|
session_code: "S20260808.AUDITOR_MEMORIA_LLM"
|
||||||
|
acto_dialogico: "informar"
|
||||||
|
actor_flujo: "multi_actor"
|
||||||
|
criticidad_aegis: "low"
|
||||||
|
skill_dominante: "NONE"
|
||||||
|
fase_proyecto: "operations"
|
||||||
|
tipo_semantico: "advisory"
|
||||||
|
summary_one_line: "EPISODIO 1 — SENTINEL: Corrección importante: me equivoqué en dos cosas"
|
||||||
|
source_type: "claude_code"
|
||||||
|
trust_boundary: "internal"
|
||||||
|
created_at: "2026-08-09T20:58:30.599471+00:00"
|
||||||
|
relectura_tagged: false
|
||||||
|
forgejo_commit_sha: "pending"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Corrección importante: me equivoqué en dos cosas
|
||||||
|
|
||||||
|
Los dos agentes volvieron y ambos encontraron fallos reales. Uno de ellos es mío.
|
||||||
|
|
||||||
|
## 1. Mi parche abrió dos agujeros de seguridad
|
||||||
|
|
||||||
|
El auditor devolvió **BLOCKED**. Lo verifiqué yo mismo antes de aceptarlo, y tenía razón:
|
||||||
|
|
||||||
|
| Lo que rompí | Consecuencia |
|
||||||
|
|---|---|
|
||||||
|
| Anclar `SECRET_KEY` solo a `_`/`-` | `authToken`, `clientSecret`, `userPassword`, `service.api_key` dejaron de detectarse. **El detector viejo sí los cazaba** — regresión neta |
|
||||||
|
| `TOKEN_METRIC` con `search()` | `input_tokens_secret` con una API key real devolvía `[]`. La excepción "cerrada" no lo estaba |
|
||||||
|
|
||||||
|
Arreglé un falso positivo y creé **falsos negativos**, que en un control de seguridad es mucho peor. Ya está corregido de raíz (`normalize_key` + `is_token_metric` con lista cerrada por segmentos), verificado **25/25**, y respaldado en `8b7c56c2`.
|
||||||
|
|
||||||
|
La lección concreta: mi test original solo cubría los casos que se me ocurrieron. Ahora cubre 19 claves más y el bypass compuesto, así que la regresión no puede volver en silencio.
|
||||||
|
|
||||||
|
## 2. Te dije que sus muros eran reales. Era verdad a medias
|
||||||
|
|
||||||
|
El segundo agente construyó **9 sondas con control positivo 4/4** (prueba de que su arnés funciona) y **las 9 atravesaron el validador**:
|
||||||
|
|
||||||
|
- Un claim `supported` apoyado en una fuente con `retrieval_status: failed_404_never_retrieved` → **pasa**. Es la regla nº1 del skill, y no tiene mecanismo
|
||||||
|
- Informe `conclusive` con los 15 gates no compensables en `fail` → **pasa**. Los valores de esa columna nunca se leen
|
||||||
|
- Informe afirmando *"SOTA, 97.3% recall, p<0.001, recomendación universal"* sin nada en el ledger → **pasa**. La prosa del informe **no se parsea jamás**
|
||||||
|
- Revisión humana `approved` con `reviewer: n.a.` → **pasa**
|
||||||
|
|
||||||
|
Y el más incómodo: **`--refresh-hashes`, el comando documentado del propio README, re-sella una edición posterior al congelado sin dejar rastro** ni subir versión. El mecanismo más fuerte del paquete se neutraliza con su propia instrucción de uso.
|
||||||
|
|
||||||
|
La caracterización honesta es: **validador estructural fuerte, validador semántico ausente**. Lo que sí muerde — existencia de los 13 artefactos, enums, integridad referencial, exigencia de pasaje literal, recomputación real de SHA-256 — es genuinamente bueno. Lo que la doctrina llama *gate* en sentido epistémico lo autodeclara el autor y el código solo comprueba que la autodeclaración esté bien formada.
|
||||||
Loading…
Reference in a new issue