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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 69c88ea0-5ddf-41c3-82c5-4ef782b0f09a | TRAZA_lo-que-constru_S20260726.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD | S20260726.ARCO_CICLO4_AUTOMEJORA | informar | multi_actor | low | NONE | operations | advisory | EPISODIO 1 — MNEMO_PRE_DIGEST: Lo que construí | claude_code | internal | 2026-07-26T18:48:42.065692+00:00 | false | pending |
Funciona end-to-end con datos reales. Un payload real de la cola, materializado, y lo importante:
El cotejo da verdadero. Ese es el punto entero del camino C: el archivo no es una copia que haya que creerse — es cotejable contra el vector por su hash. Si mañana alguien pregunta "¿este .md y este vector son el mismo contenido?", hay una función que responde en vez de una declaración que confiar.
Lo que construí
lib/episodio_materializer.py — contrato de entrada/salida explícito, cinco micro-mecanismos por debajo de 40 líneas, cada uno con su patrón canónico citado (sanitización por lista blanca, clave compuesta ordenable, guard clause, escritura atómica, map con filtrado defensivo).
test_episodio_materializer.py — 17 tests, con los bordes que suelen olvidarse: payload que no es diccionario, texto vacío, sin hash, y un título con ../../../etc/passwd para confirmar que ningún nombre puede escribir fuera del directorio base.
Idempotente: re-drenar la cola no reescribe archivos con el mismo hash. Sin eso, cada drenaje ensuciaría git con cambios falsos.
Dos cosas que decides tú, no yo
Dónde viven los episodios. Lo ejecuté en un directorio temporal a propósito. Crear episodios/ en la raíz de tu repositorio es una decisión de estructura tuya.
El enganche. No toqué settings.json — tu directiva sobre esos ficheros es explícita. La librería está lista; registrarla en el hook de cierre es acto deliberado tuyo.
Y un detalle que prefiero señalar antes de que muerda: el nombre generado conserva tildes (próxima). Es más legible, pero los nombres con Unicode a veces dan guerra entre Windows, Linux y git. Si prefieres nombres solo ASCII, es una línea.
—
—
Hice — El camino C construido y probado: 17 tests verdes y, sobre un episodio real de tu cola, el cotejo archivo-vector dando verdadero. Y de paso resolví por qué B13 llevaba meses incumplida: nunca tuvo mecanismo, era solo un recordatorio. El materializador no repite ese error — es determinista, no depende de que nadie se acuerde.
Falta — Dos decisiones tuyas (dónde viven los episodios y el enganche) y, sobre todo, versionar. El arco entero sigue sin confirmar en git.