Skill: NONE | Type: troubleshooting Summary: EPISODIO 1 — MEMORIA: Qué estaba roto de verdad
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.