ember-memory-test/episodes/TRAZA_qu-estaba-roto-de-verdad_S20260902.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md
Ember bf12615c05 feat(episode): TRAZA_qu-estaba-roto-de-verdad_S20260902.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — MEMORIA: Qué estaba roto de verdad
2026-09-06 20:23:07 +00:00

2.9 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
3c20643a-9814-4f18-a3c7-b406bad1d3ab TRAZA_qu-estaba-roto-de-verdad_S20260902.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD S20260902.SID80EF6E909F98 informar multi_actor low NONE operations troubleshooting EPISODIO 1 — MEMORIA: Qué estaba roto de verdad claude_code internal 2026-09-06T20:23:05.516460+00:00 false pending

Portón arreglado, y con él cae el último pendiente que quedaba abierto.

Qué estaba roto de verdad

Tres meses diciendo «el hook dispara pero no inyecta», sin causa. Lo cerré con tres mediciones, cada una descartando una hipótesis:

# Medición Qué descarta
1 El hook sí dispara — su propio registro lo prueba Que no se ejecutara
2 El sha256 del fichero de secretos coincide con el que el servidor espera (8b66117cc5ff12d6…) Que la frase estuviera caducada
3 El transcripto registra los argumentos enviados: llegaron 11 caracteres, no 88 Todo lo demás

El arnés descarta la sustitución de argumentos para herramientas MCP. Lo probé con updatedInput en la ruta anidada y en la raíz: ninguna se aplica. El hook hacía bien su parte.

La medición 2 merece un apunte: comparar huellas permite verificar un secreto sin conocerlo, y descartó la hipótesis más cara sin gastar ninguno de los tres intentos. Sin ella habría quemado el cupo probando a ciegas.

Y el vicio de fondo, otra vez el mismo: el registro del hook decía INJECTED, que era una afirmación sobre su propia intención, no sobre el efecto. Ahora anota recibido_len=11 | emitido_len=88 — cifras contrastables contra el transcripto.

La vía que sí funciona

ember-memory habla HTTP, no por tubería local: es un proceso de larga vida al que se le puede hablar directamente, sin pasar por el arnés. Como el candado vive en la memoria de ese proceso, abrirlo ahí lo abre también para mi cliente.

La frase va fichero → proceso local → red. Nunca entra en mi contexto ni en ningún registro. Y conserva la frontera que buscaba tu diseño: sin el fichero de secretos local, el script no abre nada.

Quedaba un intento, así que el modo por defecto solo comprueba (ember_auth_status no consume intentos). Esa cautela cazó un fallo mío antes del último cartucho: las notificaciones del protocolo responden con cuerpo vacío y mi lector exigía JSON siempre.

Verificado, no declarado: unlocked: True, 11h 59m, intentos fallidos a 0 — y confirmado además desde mi propio cliente, que es lo que realmente importaba.

Con el portón abierto escribí por fin las dos memorias curadas en Qdrant (6dacd336… y 37a9e0bf…, ambas con trust_tier: verified). Eso cierra M-001.