feat(episode): TRAZA_opcin-x-un-solo-escriba-por_S20260618.R10_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: chronicle Summary: EPISODIO 10 — MNEMO Pipeline: **▸ Opción X — "un solo escriba por...
This commit is contained in:
parent
5db86b177e
commit
1451180cc7
1 changed files with 29 additions and 0 deletions
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
episode_id: "571798d7-6cb6-4d5c-9714-be38a17c05ab"
|
||||
puente_flat: "TRAZA_opcin-x-un-solo-escriba-por_S20260618.R10_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: "chronicle"
|
||||
summary_one_line: "EPISODIO 10 — MNEMO Pipeline: **▸ Opción X — "un solo escriba por..."
|
||||
source_type: "claude_code"
|
||||
trust_boundary: "internal"
|
||||
created_at: "2026-06-19T01:07:08.776089+00:00"
|
||||
relectura_tagged: false
|
||||
forgejo_commit_sha: "pending"
|
||||
---
|
||||
|
||||
**▸ Opción X — "un solo escriba por libro + el mayordomo dice la verdad"**
|
||||
- **QUÉ:** que crisol marque en el libro mayor sus propios stores (qdrant_state + neo4j_state) y quitar el worker Neo4j del dispatcher (`--only nextcloud forgejo`).
|
||||
- **POR QUÉ:** cierra las 2 deudas que dejó Opción Y — (1) el **doble-write Neo4j** (los nodos gemelos / el drift 160-vs-148), y (2) la **honestidad del libro mayor** (hoy qdrant_state/neo4j_state quedan en `pending` para siempre, aunque crisol sí los escribió). Es completar tu arquitectura *single-writer* al 100%.
|
||||
- **CÓMO FUNCIONA:** tres micro-gestos. (1) crisol, tras F5, hace un `UPDATE episode_sync_status SET qdrant_state, neo4j_state` según el éxito real por episodio (`ep['qdrant_status']=='OK'`). (2) El dispatcher pasa a `--only nextcloud forgejo` → el neo4j_worker deja de correr. (3) Un backfill único corrige los episodios viejos, **condicionado a `qdrant_status=='OK'`**.
|
||||
- **QUÉ ESPERAR:** Neo4j con un solo nodo por episodio (drift cerrado), y el libro mayor atestiguando los 5 stores de verdad. **Riesgo:** toca crisol (load-bearing) → se hace con la misma cadena orquestada `FORENSE→RELOJERO` + smoke, como hoy.
|
||||
|
||||
**▸ Capa C2 — "el sereno que vigila el reloj (y aprende)"**
|
||||
- **QUÉ:** un watchdog que cada ~15 min revisa el libro mayor; si un episodio lleva **>2h** sin completar, alerta + registra telemetría, con auto-restart acotado y, si no cede, te avisa y activa `mnemo-keeper`.
|
||||
- **POR QUÉ:** hoy **nadie vigila** — el pipeline puede atascarse días sin que nadie lo note (me pasó: creí 6 días muerto algo que estaba vivo). Tu visión: *garantizar* que en ≤2h todo episodio esté en los 5 stores, y que el sistema **aprenda su propia dinámica** para eventualmente auto-repararse.
|
||||
- **CÓMO FUNCIONA:** cinco piezas. (1) Un timer cada 15 min pregunta "¿hay filas no-completed con >2h?". (2) Si sí, auto-restart del dispatcher (≤N intentos) + re-drive idempotente. (3) **Circuit-breaker:** si tras N intentos no cede → PARA (no entra en bucle) + alerta + activa `mnemo-keeper`. (4) `mnemo-keeper` documenta + escribe telemetría JSONL → cada 1-2 semanas una retrospectiva busca patrones → CONCILIO cuando el patrón es claro → el fix raíz se codifica como **nueva auto-remediación**. (5) **Reconciliación:** comparar el libro mayor vs el conteo real de cada store (porque el libro puede decir "✓" y el dato haberse perdido — un REINICIO lo probó).
|
||||
- **QUÉ ESPERAR:** cero atascos silenciosos, SLO de 2h *medido y alertado*, y un pipeline que **gana autonomía a medida que lo entendemos**. Necesita tus 2 decisiones: ¿el SLO es 2h? ¿Forgejo+Nextcloud son respaldo (SLO laxo) o primera-clase (SLO estricto)?
|
||||
Loading…
Reference in a new issue