Skill: NONE | Type: reflection Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: B — La identidad de instancia ya no es un permiso
2.8 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| c2d3b47d-17af-4bea-8069-1ab8ed0221b4 | TRAZA_b-la-identidad-de-instancia-ya-no-es-un_S20260803.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD | S20260803.PIPELINE_FIXES | informar | multi_actor | low | NONE | operations | reflection | EPISODIO 1 — MNEMO_PRE_DIGEST: B — La identidad de instancia ya no es un permiso al portado | claude_code | internal | 2026-08-03T22:29:50.387197+00:00 | false | pending |
Ambos cerrados y respaldados. B primero porque sangraba; A después porque no se movía de sitio.
B — La identidad de instancia ya no es un permiso al portador
Encontré la causa raíz, y explica los tres síntomas de los últimos dos días con un solo mecanismo:
Prioridad de get_instance_tag() |
Problema medido |
|---|---|
P2 instance_<ppid>.tag |
Inútil: el PPID cambia en cada invocación (12572 → 31332 → 18420). No hay ni un archivo así en disco |
P2.5 latest_active.tag |
Un archivo global sin dueño. La última instancia que fija su tag define la identidad de todas. Y hace touch() al leerlo: su ventana de 6 h se auto-renueva y nunca caduca |
Como P2 nunca sobrevive, toda instancia caía en P2.5 y adoptaba el tag ajeno. Eso explica el commit ce8792d5 firmado con mi tag, que yo apareciera como PIPELINE_FIXES, y que el guard D5 me bloqueara sobre mi propio archivo.
El arreglo no fabrica identidad: usa la que ya existía. El harness expone CLAUDE_CODE_SESSION_ID —estable toda la sesión, único por ventana, el mismo UUID de mi scratchpad— y session_state.py lo mencionaba cero veces.
Suite completa: 3.154 verdes, 0 fallos (los 2 rojos de antes también cerraron).
Y algo que debo decirte: escribí dos tests que se contradecían y no lo vi hasta ejecutarlos. Uno exigía que una hermana no heredara mi tag; el otro que sin registro se cayera al global. Lo resolví a favor de la seguridad, con la razón del incidente: la ventana que nunca fijó su tag es justo la que terminó firmando commits ajenos. Queda escrito en el test para que nadie lo reabra.
A — Auditoría de premisas de la Fase 3
| Veredicto | Acciones |
|---|---|
| 🔴 Refutada, ya implementada | SA-3-2 — session-start.py:154 ya mide con tiktoken (2.753 tokens); el 300 es solo fallback |
| 🔴 Conteo caducado | SA-3-9 (dice 3 gates, hay 2) · SA-3-10 (su oráculo «6→4» no aplica) |
| 🟡 No verificable | SA-3-11 — BUG-SA-004 no tiene dónde leerse; esa ausencia es el hallazgo |
| 🟢 Confirmadas | SA-3-1 · SA-3-3 · SA-3-4 (peor: 29,8 d) · SA-3-5 (4.746 filas, fresco) · SA-3-6 |