--- episode_id: "091bc95a-d968-4349-b615-f4bf6300b657" puente_flat: "EXPLORA_episodio-2_S20260513.R2_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: "TESSERA" fase_proyecto: "operations" tipo_semantico: "troubleshooting" summary_one_line: "EPISODIO 2 — EMBER: Episodio 2" source_type: "claude_code" trust_boundary: "internal" created_at: "2026-05-13T17:31:06.720825+00:00" relectura_tagged: false forgejo_commit_sha: "pending" --- ## 📐 Plan ejecución 6 fases (RELOJERO + ZD-3 secuencia continua) | Fase | Acción | Tokens | Gate parada | |------|--------|--------|-------------| | **0 PRE-FLIGHT** | set_instance_tag MANUAL_INGEST_BYPASS + claim_and_declare + git baseline + verify HANDOFF state | ~5K | abortar si claim falla o git status sucio inesperado | | **1 ARQUITECTURA** | Read `push_to_server.py` + `tessera_pipeline.py` + `payload_to_tessera_md` para identificar API existente reutilizable | ~10K | ninguno | | **2 CONTRACT + SCHEMA** | Pydantic models (TranscriptTurn + EpisodeTessera + IngestResult) + CONTRACT YAML manual_ingest.py declarado upfront | ~5K | ninguno | | **3 FABRICACIÓN** | Write `.claude/hooks/lib/manual_ingest.py` (~250 líneas, descomposición ≤40 líneas/función: read_transcript / extract_pairs / build_tessera / scp_to_inbox / trigger_crisol / verify_stores) | ~15K | AST_OK obligatorio | | **4 TESTS** | Write `tests/test_manual_ingest.py` con Hypothesis property-based + pytest unitario + smoke dry-run flag | ~10K | tests verdes obligatorio | | **5 TEST EMPÍRICO** | dry-run local sin SCP → 1 episode real con SCP + crisol_run + qdrant_count + neo4j_query verify +1 ambos | ~5K | si stores no +1, rollback | | **6 COMMIT + PUSH** | Commit canónico + push forgejo + origin + sriyantra (BLINDADA-29) | ~2K | si push falla, retry NO --force | **Tag elegido:** `MANUAL_INGEST_BYPASS` (20 chars, 3 nouns searchable MANUAL+INGEST+BYPASS, ideal range boot panel). ## 🚀 Ejecutando Fase 0 PRE-FLIGHT (parallel) Este episodio fue ingerido via manual_ingest.py bypass cliente-side workaround Bug #15 PPID-instance-tag pipeline broken desde S20260510. Reutiliza tessera_pipeline lower-level API con build_qdrant_payload + payload_to_tessera_md compatible CRISOL v4.0 F0 24 checks del servidor MEMORIA CX53 Hetzner. El pipeline destino realiza triple-write atomico PostgreSQL ember_episode + Qdrant ember_experience + Neo4j Episode nodos con outbox workers Forgejo + Nextcloud + wiki-MEMORIA Karpathy vista materializada bidireccional. Sprint S20260513.MANUAL_INGEST_BYPASS fabrica este script reusable como cron diario hasta sprint dedicado H2 medium fix load_state inteligente o H3 deep refactor stop-enricher flow permanente que arregle root cause confusion PPID get_instance_tag session_state.py L77-102. La verificacion empirica multi-store post-ingestion confirma integridad BLC SHA256 chain hash encadenado + invariants OII I1-I15 BLINDADA-25 + procedencia PR-1 a PR-7 trazable.