--- episode_id: "9af4fef6-af84-428a-951a-ee37b9e03902" puente_flat: "TRAZA_r9seccion1i1-terminar-ember-estado-final_S20260814.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD" session_code: "S20260814.SHERPA_CLONACION_SERVIDOR" acto_dialogico: "informar" actor_flujo: "multi_actor" criticidad_aegis: "low" skill_dominante: "NONE" fase_proyecto: "operations" tipo_semantico: "troubleshooting" summary_one_line: "EPISODIO 1 — MEMORIA: [R9.seccion1.I1] "Terminar EMBER": estado final de la misión" source_type: "claude_code" trust_boundary: "internal" created_at: "2026-08-15T05:50:34.180606+00:00" relectura_tagged: false forgejo_commit_sha: "pending" --- ## [R9.seccion1.I1] "Terminar EMBER": estado final de la misión de clonación John, esto es lo que existe hoy que no existía cuando dijiste *"quiero clonar el ecosistema"*: **El día que exista la VM, la secuencia es literal:** clonar el repo → `ember-clone-ecosystem.sh ./bundle-latest` → `build-local-images.sh` → `acunar-claves-clon.sh` → `init-empty-schema.sh` → `verify-clone-parity.sh` → oráculo de 9 puntos. Cada guion existe, tiene `bash -n` limpio, y los que pudieron probarse contra la realidad, se probaron. ## [R9.seccion2.T1] La cosecha de la Sesión 3 — seis mentiras de instrumento cazadas antes de producción | # | El instrumento decía | La realidad | Cazado por | |---|---|---|---| | 1 | parser constraints v1 "funciona" | 0/8 contra la captura real | oráculo con datos reales | | 2 | redacción total "es segura" | dejaba 41 falsas internas — acuñar `QDRANT_PORT` rompe el clon | oráculo del clasificador | | 3 | regex v2 "solo secretos" | atrapaba `KEYCHAIN_*` (config) por substring | oráculo 11 nombres | | 4 | verificador "leía el manifiesto" | extraía el **4 de "neo4j"** como conteo | lectura del control positivo | | 5 | control negativo "mordía" | mutación al revés: quitar del manifiesto DEBILITA | exigir el exit 1 | | 6 | scp "subió" (no abortó) | "Connection closed" y el regex viejo siguió en el servidor | grep del contenido remoto | `★ Insight ─────────────────────────────────────` Ninguno de los 6 se habría visto en la VM hasta el primer ensayo fallido — y varios (el puerto acuñado, el conteo falso) habrían producido **fallos confusos lejos de su causa**. La doctrina B-30 en una frase: no preguntes si el sensor corre; pregunta si dice la verdad. Esta sesión lo preguntó seis veces y seis veces la respuesta era no. `─────────────────────────────────────────────────` Y un colateral que importaba: **`.gitignore` excluía en silencio las plantillas redactadas** — el bundle viajaba sin ellas y el clon no habría tenido qué rellenar. Cerrado con negación explícita; el pre-commit sigue de juez y aprobó. — **Hice.** Las 3 sesiones completas del plan (commits `677f764b`, `8cc4493f`, `04fb0c52`, `ace8ea17` — todos en 3 remotos). El sistema de clonación pasó de "diseñado en junio, jamás probado" a "auditado, corregido, con esquema, fuentes, claves y verificador calibrado contra el servidor vivo". **Falta — todo tuyo, nada mío:** 1. 🔴 **Rotar la clave OpenRouter** (expuesta en R8 — sigue pendiente) + borrar `~/playground/grafo-indice-v2-graphify/.orkey` en el origen. 2. 🔴 **La VM de ensayo** (Hetzner, Ubuntu 24.04, ≥16GiB/80GB, por horas) — desbloquea S4-S5. 3. 🟠 **Remediación del 22**: secretos hardcodeados en ~15 compose del origen. **Mi consejo.** El orden es ese: la rotación son 2 minutos y cada día que pasa la clave expuesta es un riesgo vivo. La VM cuando puedas — todo está listo para recibirla: me das la IP y corro el ensayo completo (T-13→T-18→T-14→T-15) en una sesión.