feat(episode): TRAZA_b-completado-pero-no-era-lo-que-creamos_S20260714.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: TESSERA | Type: troubleshooting
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: B: completado — pero no era lo que creíamos
This commit is contained in:
Ember 2026-07-14 20:33:32 +00:00
parent fa412ac604
commit 9096db8c45

View file

@ -0,0 +1,40 @@
---
episode_id: "a82e1c6e-3ff6-4473-923c-0d6e65e739ae"
puente_flat: "TRAZA_b-completado-pero-no-era-lo-que-creamos_S20260714.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260714.NEO4J_REVIVE_WRITEPATH"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "TESSERA"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: B: completado — pero no era lo que creíamos"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-14T20:33:29.199578+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
**Los 3 remotos exit=0.** `a331dd11` asegurado.
—
## B: completado — pero no era lo que creíamos
John, esto terminó siendo **mucho mejor que arreglar un fósil**. Terminó siendo **cazarme a mí mismo**.
| Lo que iba a hacer | Lo que realmente pasó |
|---|---|
| "Revivir el grafo Neo4j congelado" | **Neo4j nunca estuvo congelado.** Crece +31 nodos en 2 días, en lockstep con PostgreSQL |
| "Fix del guard `qdrant_id` en `crisol_run.py:977`" | **Ese guard nunca fue el problema.** El log dice `Neo4j BATCH OK: +50 nodos` |
| "Backfill de ~197 episodios perdidos" | **Casi destruyo datos** metiendo 200 nodos a un grafo sano |
**Los bugs REALES (y dos son míos):**
1. **Servidor:** el `MERGE` del crisol nunca sellaba `updated_at` → solo 184/842 nodos lo tenían → `max()` clavado en jun-19 **para siempre**, sobre un grafo perfecto.
2. **Mío (shipeado en `14a0fd6c`):** mi probe medía **exactamente esa propiedad inexistente** → `graph FROZEN` **falso, en cada boot**.
3. **Mío:** el cross-store era simétrico → gritaba DRIFT porque Neo4j tiene *más* que PostgreSQL… cuando ese exceso es **por diseño**.
**El anti-patrón, invertido.** Llevo una semana cazando *"sistema roto que se reporta sano"*. Y construí su espejo: **"sistema sano que se reporta roto"**. Lo único que evitó el daño fue tu protocolo — *"a veces el bug es expectativa incorrecta; verifica"* — y **mirar el log de producción en vez de creerle a mi propio código**.
**Todo arreglado y verificado:** sello `updated_at` en crisol (backup + `py_compile` + `EXPLAIN`) · backfill aditivo de 636 nodos (cobertura **22% → 97%**, `max` jun-19 → **jul-12**) · probe consciente de cobertura · cross-store direccional · **TEST_POST: 2 falsas alarmas → 0**, cuadrando exacto con el oráculo externo. Y el registro corregido (DLC-2): doc canónico + AVISO en los 2 docs mentirosos + **mi memoria persistente reescrita**.