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