feat(episode): EXPLORA_episodio-1_S20260513.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — EMBER: Episodio 1
This commit is contained in:
Ember 2026-05-13 17:31:11 +00:00
parent 6979276009
commit 7e0007b934

View file

@ -0,0 +1,60 @@
---
episode_id: "73a1114b-d409-4079-8427-f3d0ba4c66d5"
puente_flat: "EXPLORA_episodio-1_S20260513.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260413"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — EMBER: Episodio 1"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-05-13T17:31:06.974475+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
PREGUNTA USUARIO: ember te dejo esta desicion de como continuar a ti lo importante es que tengas forma de hacer backups previos antes de empezar con algo que sea destructivo para que tengas forma de hacer rooll back
RESPUESTA EMBER: ## 🎯 Decisión Ember: **Tarea 2 H4 — manual_ingest.py bypass script**
**Razón** (basada en evidencia EXODUS + análisis riesgo/valor con GAUGE GREEN ~892K):
| Criterio | Justificación |
|----------|---------------|
| **Blast radius** | LOCAL (file nuevo, no toca código existente) — score 1/8 |
| **Reversibilidad** | TRIVIAL (`rm` archivo nuevo, nada que revertir en servidor MEMORIA) — score 1/10 |
| **LEY ZERO impact** | NINGUNO (no destructivo, no toca containers servidor MEMORIA, no edita D3) — score 0/10 |
| **Velocidad** | HORAS, ~50K tokens — score 3/8 |
| **Valor inmediato** | Recomendado EXODUS sec. 5 H4 + bypass demostrado empírico R32-R38 funcional (Qdrant +1, Neo4j +1) |
| **Independencia Bug #15** | Vive paralelo al bug Stop hook PPID → desbloquea ingest sin esperar sprint dedicado decisión H1/H2/H3 |
Tarea 1 P0 Bug #15 fix permanente requiere panel CONCILIO (D-ARCH detectado clasificación H2 vs H3 con blast radius alto sobre Stop hook flow). Postergable a sprint dedicado próximo con decisión panel formal — ZD-2 postponement justificado.
## 🛡️ Plan de backups + rollback ANTES de cualquier acción destructiva
```yaml
ROLLBACK_PLAN_MANUAL_INGEST_BYPASS:
archivos_nuevos_a_crear:
- .claude/hooks/lib/manual_ingest.py # FILE NUEVO, NO overwrite
- tests/test_manual_ingest.py # FILE NUEVO, NO overwrite
archivos_existentes_modificados: [] # CERO — fabricación pura
rollback_comando_trivial:
- "rm .claude/hooks/lib/manual_ingest.py tests/test_manual_ingest.py"
rollback_claim:
- "release_claim() via session_state.py"
rollback_commit_pre_push:
- "git reset --soft HEAD~1" # antes push triple-remoto
rollback_commit_post_push:
- "git revert <SHA> + push triple-remoto" # NO --force NUNCA
backup_strategy_atomic_guard:
- "hook PostToolUse Write atomic-guard.py crea .bak.YYYYMMDD_HHMMSS automático"
- "Edits requieren passport gate previo (rules/MAP.md + docs/MAP.md leídos)"
servidor_MEMORIA_riesgo:
NONE # script NO ejecuta nada en servidor MEMORIA hasta test final empírico
ssh_destructive_operations: [] # CERO esta sesión, solo SCP a inbox (input directory, idempotente)
```
**Garantía empírica:** atomic-guard.py + git history + triple-remoto privado + ausencia de Edits a archivos existentes = rollback **TRIVIAL** en cualquier momento sin pérdida.