feat(episode): TRAZA_veredicto-no-es-corrupcin-ni-prdida-es_S20260618.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 2 — BLINDADAS: Veredicto: NO es corrupción ni pérdida — es diseño, y ya
This commit is contained in:
Ember 2026-06-18 18:10:49 +00:00
parent 31b397ed22
commit 20c72bddd3

View file

@ -0,0 +1,32 @@
---
episode_id: "5fd689dd-9e98-4b7f-a554-5be407d8bb75"
puente_flat: "TRAZA_veredicto-no-es-corrupcin-ni-prdida-es_S20260618.R2_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: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 2 — BLINDADAS: Veredicto: NO es corrupción ni pérdida — es diseño, y ya se "
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-18T18:10:35.330098+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
`mnemo-keeper` entregó el diagnóstico forense completo. Te relato lo esencial:
## Veredicto: NO es corrupción ni pérdida — es diseño, y ya se auto-resolvió
| Hallazgo | Detalle |
|---|---|
| **Estado actual** | El manifiesto **ya no existe** — el ciclo cerró solo (`no_pending` a las 18:01). Cola actual = 1. |
| **Nada se perdió** | 62/67 confirmados landed por el sha-gate + 2 que yo verifiqué en Qdrant + **todo archivado** en `pending_cleared_*.jsonl` (write-ahead) + IDs content-addressed = upsert idempotente. |
| **Causa raíz** | **Diseño, NO TOCTOU:** el auto-clear exige que la cola ENTERA esté landed a la vez. Una sesión activa genera episodios nuevos más rápido de lo que el sha-gate los confirma → `cleared=0` perpetuo → la falsa alarma "N pendientes" crece. Cuando dejan de entrar episodios, converge. |
| **¿Redundante?** | **NO — es el buffer de fallback** (cuando SCP falla/servidor caído, ej. la caída de red). `push_to_server.py v2.0` → SCP → crisol detached → PG/Qdrant ES la vía canónica (218 `detached_ok`). |
## Dos hallazgos secundarios valiosos
1. 🐛 **Mismatch de hash:** el clear usa `blc_hash`, el land-check usa `content_sha256`**dos espacios distintos** → por eso el clear selectivo no matchea bien lo "landed en PG". 2. 📄 **AVISO DLC-4 stale y engañoso** en `memory_loop.py:19-88`: declara el manifiesto "legacy huérfano sin poller", pero la realidad fresh lo contradice (SÍ tiene poller, ES la vía real). **Esto puede inducir a una instancia futura a ignorar/borrar el buffer de fallback** — riesgo real. ## Remediación propuesta (mnemo-keeper, NO ejecutada — tu decisión)
- 🟢 **A** *(durable)* — Fix de raíz: clear **incremental por `content_sha256`** en `push_to_server.py:163-171` + unificar el hash en `memory_loop.py`, con tests (sesión coding RELOJERO). - 🟡 **B** — Solo cosmético: que el manifiesto no liste los ya-landed → mata la falsa alarma sin tocar la lógica.