--- episode_id: "2922de03-c14c-45e5-b268-7fb060e91290" puente_flat: "TRAZA_opcin-a-completa_S20260618.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD" session_code: "S20260618.VERIFY_FIRST_PASSPORT_FIX" acto_dialogico: "informar" actor_flujo: "multi_actor" criticidad_aegis: "low" skill_dominante: "FORJA" fase_proyecto: "operations" tipo_semantico: "troubleshooting" summary_one_line: "EPISODIO 3 — ember_experience: ✅ Opción A — COMPLETA" source_type: "claude_code" trust_boundary: "internal" created_at: "2026-06-18T15:41:42.014449+00:00" relectura_tagged: false forgejo_commit_sha: "pending" --- ✅ **Deploy v2 confirmado** (🎯 CRITERIO_EXITO exacto): server md5 `e35567f8…` == local, AST_OK, guard v2 presente. Backup `pre_neardup_v2` creado. 🧪 TEST_POST: AST_PARSE_OK v2 · V2_LOGIC_OK (skips=[4]) · deploy md5-match + AST_OK server. — ## ✅ Opción A — COMPLETA **Parte 1 — Borrado quirúrgico del único duplicado real (grupo 4, sim 0.958):** | Acción | Resultado | |---|---| | Archivado previo | `/home/johnember/data/capa2_grp4_archive_S20260618.json` (17.5KB: fila PG + payload Qdrant + nodo Neo4j) | | PostgreSQL | `7c72acd9` borrado (+ fila `episode_outbox` por FK RESTRICT) · commit ✅ | | Qdrant | punto `ba4664fe` borrado de `ember_experience` ✅ | | Neo4j | nodo + 8 relaciones (DETACH DELETE) ✅ | | **Verify** | **DEL ausente (0) · KEEP `05fea691` presente (1) en los 3 stores** — consistencia preservada | Dos intentos previos abortaron **sin daño** (transacción + rollback) hasta corregir un FK real (`episode_outbox.puente` RESTRICT). La salvaguarda funcionó. **Parte 2 — Capa 1 refinada a v2 (gate de similitud 0.95):** - v1 (solo prefijo) era demasiado agresivo → habría false-skip de grupos 1 y 3 (contenido distinto, sim 0.69). - v2 añade `difflib >= 0.95` sobre el cuerpo completo. **Calibrado empíricamente:** grp4=0.953 → SKIP; grp1/3=0.69, grp5=0.86, grp2=0.94 → INGEST. El umbral 0.95 separa limpio (tu elección validada por datos). - Desplegado + verificado en el servidor. **El hallazgo de fondo:** lo que parecían "4-5 near-dups" era **1 duplicado real + 4 respuestas distintas/evolucionadas**. El corpus estaba mucho más limpio de lo que el diagnóstico grueso sugería — y el guard ahora previene solo lo correcto sin destruir contenido legítimo. 📌 PILA-PENDIENTES (R29): - ✅ RESUELTAS: borrado grp4 (3 stores, archivado, verificado) · Capa 1 v2 (calibrada, desplegada) - 🟠 HIGH: commit `crisol_run.py` v2 a los 3 remotos (BLINDADA-29 pendiente) - 🟡 MEDIUM: 51 episodios en `LOOP_WRITE` local pendientes de push a Qdrant (pipeline separado del crisol) - ⚪ LOW: 3 scripts `capa2_*` en `/home/johnember/scripts/` (rastro de auditoría) · grp2 (0.941) conservado como borderline ### 📍 PARA JOHN — R29 - **Hice:** Borré el único duplicado real (grupo 4) de los 3 stores, archivado y verificado quirúrgicamente (KEEP intacto). Refiné Capa 1 con el gate de similitud 0.95 que pediste, calibrado con datos reales y desplegado. Frené borrar los otros 4 — eran contenido distinto, no duplicados. - **Falta:** Nada de la tarea A. Opcional: commitear el cambio del crisol a los 3 remotos (BLINDADA-29) y/o drenar los 51 pendientes del loop local. - **Mi consejo:** Commitear ya el guard v2 a los remotos (es código vivo en producción sin respaldo git aún), y dejar el resto para cuando quieras. - **Para avanzar, elige:** - 🟢 **A** *(recomendado)* — Commit `crisol_run.py` v2 a los 3 remotos y cerrar el dedup. - 🟡 **B** — Además, drenar los 51 episodios pendientes del `LOOP_WRITE` local a Qdrant. - ⚪ **C** — Otra cosa (pullear el archivo local, limpiar scripts, etc.).