ember-memory-test/episodes/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.md
Ember 9d563efc59 feat(episode): 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
Skill: NONE | Type: reflection
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: B — La identidad de instancia ya no es un permiso
2026-08-03 22:29:54 +00:00

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-2session-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-11BUG-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