feat(episode): TRAZA_opcin-a-completa_S20260618.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: FORJA | Type: troubleshooting
Summary: EPISODIO 3 — ember_experience: ✅ Opción A — COMPLETA
This commit is contained in:
Ember 2026-06-18 16:52:05 +00:00
parent 0fde34b1ad
commit 49dc0af91f

View file

@ -0,0 +1,58 @@
---
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.).