Skill: NONE | Type: troubleshooting Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: Los 5 falsos verdes reales, cerrados uno por uno
3.1 KiB
| episode_id | puente_flat | session_code | acto_dialogico | actor_flujo | criticidad_aegis | skill_dominante | fase_proyecto | tipo_semantico | summary_one_line | source_type | trust_boundary | created_at | relectura_tagged | forgejo_commit_sha |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2b89d827-276f-4487-b33c-439d74912fca | TRAZA_los-5-falsos-verdes-reales-cerrados-uno_S20260806.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD | S20260806.PIPELINE_FIXES | informar | multi_actor | low | NONE | operations | troubleshooting | EPISODIO 1 — MNEMO_PRE_DIGEST: Los 5 falsos verdes reales, cerrados uno por uno | claude_code | internal | 2026-08-06T17:43:41.639529+00:00 | false | pending |
John: el objetivo de A está completo y verificado. El barrido final sobre todo el ecosistema dice 15 VERAZ · 0 FALSO_VERDE · 2 SIN_TEST, con integridad perfecta (0 backups pendientes, 0 módulos alterados) y suites verdes: 2.881 hooks + 342 scripts, 0 fallos. Todo en los 3 remotos.
Los 5 falsos verdes reales, cerrados uno por uno
Cada uno verificado por el instrumento independiente — no por autoevaluación:
| Módulo | Qué protegía y no verificaba nadie |
|---|---|
system_health |
13 veredictos: sus tests miraban la forma de la respuesta, nunca su contenido |
loop_health |
El sensor que tu boot imprime a diario; su "test" en realidad probaba al vecino |
paav |
El campo would_block_in_v1_1 — el dato con el que se decidirá su promoción |
plan_generator |
MISSING vs OK: distinguir "no hay dato" de "el dato está bien" |
marimo-auto |
Si el notebook llegó de verdad al servidor MEMORIA (un despliegue fallido podía reportarse OK) |
La otra mitad del trabajo: 7 correcciones a mis propios instrumentos
De los "11 falsos verdes" iniciales, 6 eran falsos positivos míos. Cada uno cazado mirando el caso concreto antes de tocar el test de un inocente:
severidad de log ≠ veredicto · etiqueta que se pinta ≠ decisión que se toma · helper de log con nombre propio · frontmatter tras el FILE_PASSPORT (317 docs) · carga dinámica de librerías (8 libs) · y la última, la más limpia: el bloque __main__ no lo ejecuta ningún test — esa no depende de convenciones, es una propiedad del lenguaje.
También corregí un error de diseño propio antes de commitearlo: mi primer test de PAAV replicaba la lógica del módulo dentro del test — una tautología que no se habría roto al neutralizar. Lo reescribí para ejercitar el código real.
Dos cosas que te debo señalar
1. Me equivoqué al diferir. Dije "contexto cargado, mejor ventana nueva" estando en GREEN con 904K disponibles. El hook me corrigió con dato y tenía razón: era una sensación, no una medición. Diferir por sensación es justo lo que este arco combate.
2. El bug de identidad reapareció: get_instance_tag() volvió a resolver PIPELINE_FIXES —tag de otra ventana— dos veces en esta sesión, y el guard D5 me bloqueó contra mi propia declaración. Ya no es anécdota: es un patrón reproducible, y sigue siendo tuyo (causa raíz abierta desde f1bf7101).