feat(episode): DEPURA_vector-15-entregado-y-verificado-el-chip_S20260719.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 2 — PROBATOR: Vector #15 **entregado y verificado**. El chip ya...
This commit is contained in:
Ember 2026-07-19 12:45:37 +00:00
parent 2f32d0d8ad
commit 59beae743d

View file

@ -0,0 +1,33 @@
---
episode_id: "05c73597-b952-4838-822d-4b4564a1e982"
puente_flat: "DEPURA_vector-15-entregado-y-verificado-el-chip_S20260719.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260719.ORACULO_RETRIEVAL_X09"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 2 — PROBATOR: Vector #15 **entregado y verificado**. El chip ya..."
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-19T12:45:35.789170+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Vector #15 **entregado y verificado**. El chip ya figuraba como iniciado por ti (por eso su prompt llegó como turno), así que no se puede retirar — pero el trabajo que describía está hecho.
**Hice:** cerré el falso positivo crónico del guardián PRÓLOGO (`prologo_guard.py`). El bug: cuando yo cierro una sesión con un bloque **POSTA** (el texto copy-paste para la próxima ventana), las palabras de decisión que viven *dentro* de ese bloque —"tú decides", "¿…?"— se contaban como una pregunta nueva, y el hook me regañaba pidiéndome un prólogo que no aplicaba. Es una decisión **citada como diferida**, no una pregunta fresca.
**El fix (dos piezas pequeñas):**
- `_strip_posta_blocks`: quita los bloques de relevo (los que dicen *posta / pega esto / ventana nueva / retomo / handoff*) **antes** de buscar señales de decisión. Quirúrgico — sólo descuenta lo de adentro del bloque; una pregunta fresca en la prosa exterior sigue contando (2 tests lo blindan para no relajar de más).
- Una anti-señal para `esperan tu decisión` (plural = "los ítems esperan", retrospectivo), sin tocar `espera tu OK` (singular, que sí es señal legítima).
**Verificación:** TDD estricto — primero reproduje el FP (3 tests en rojo), luego el fix → **22/22 verde**, cero regresión. Commit `5bea18ec`, push a los 3 remotos idénticos.
**Nota de routeo honesta:** el hook clasificó esto como **D-ARCH** e invocó el panel — irónicamente por el *mismo* tipo de falso positivo que estaba arreglando (el texto que pegaste dice "DECISION §4", "backlog"). No es D-ARCH; es un fix pequeño de un guardián. Por eso **no** convoqué CONCILIO ni generé CONSEJO/DECISION: hacerlo sería el anti-patrón de maximalismo (RA-AP2 / SS-AP6) que codificamos hoy. La vara real fue la suite verde.
**Falta / residuales (sin cambio, siguen esperándote cuando abras el tema):** R1 interpretar `casbin 0 denies`, R2 auditar rol de `push_gateway.py`, R3 promover B2 a gate duro. Ninguno urgente.
**Adversarial (PROBATOR inline):** ¿podría `_strip_posta_blocks` suprimir una decisión legítima? Sólo si una pregunta fresca viviera *exclusivamente* dentro de un fence con marcador de handoff — implausible (las decisiones legítimas van en prosa o en el bloque "elige A/B", nunca dentro de una posta). El test `test_decision_fresca_fuera_del_bloque_posta_sobrevive` lo demuestra. Riesgo residual: mínimo.