Pendientes — social-silo: chunks Claude/ChatGPT y análisis

Fecha: 2026-09-27 Repo: ~/nef/social-silo Estado: extracción ChatGPT completa; extracción Claude EN CURSO.

Pipeline (real, verificado)

exports/{claude,chatgpt} → *_export_split.py → /tmp/*-conv/*.md (chunks)
  → scripts/extract_exports.py  (Ollama qwen3.5:9b, num_ctx 32768, MAX_BYTES 60000)
  → reports/extraccion-*.md
  → scripts/reports_to_enrich.py → ~/nef/second-brain/_enrich/
  → (revisión manual) → ~/nef/second-brain/content/nodes/

Prompt de extracción: ~/nef/decisions/[CREDENCIAL].md

Readiness de chunks (2026-09-27)

FuenteConversacionesTamañoChunksReportesEstado
ChatGPT1074.27 MB72extraccion-chatgpt-conv-001..072✅ extraído (sin huecos)
Claude1756.58 MB111extraccion-claude-conv-*❌ 0 → extracción en curso

Nota: /tmp/chatgpt-conv y /tmp/claude-conv se purgan con el sistema. Regenerar con los splitter scripts (idempotentes) antes de re-extraer.

Pendientes

  1. Claude, extraer 111 chunks — en curso: PID 33808, log /tmp/claude-ext.log. Salida esperada: reports/extraccion-claude-conv-001..111.md. Idempotente: emit() salta reportes existentes >200B, reanudable.
  2. Puente reports → _enrich con los reports de Claude: python3 scripts/reports_to_enrich.py (escanea reports/extraccion-*.md).
  3. Revisar 13 nodos ⚠ (needs_review: true en _enrich/*.meta.json).
  4. Promover _enrich/ → content/nodes/ — staging, hoy nada se ha movido. Actual: 260 en _enrich/, 390 en content/nodes/.
  5. Sanitizar: python3 scripts/sanitize.py reports/extraccion-*.md.
  6. Git: 100 cambios sin commitear (reports/extraccion-*, exports/ untracked). exports/ pesa ~600 MB (zips + json) → confirmar .gitignore.

Comandos

# regenerar chunks (si /tmp se purgó)
python3 scripts/claude_export_split.py exports/claude/conversations.json /tmp/claude-conv
python3 scripts/chatgpt_export_split.py exports/chatgpt /tmp/chatgpt-conv
 
# extracción (reanudable)
python3 scripts/extract_exports.py ~/nef/decisions/[CREDENCIAL].md /tmp/claude-conv
 
# puente a staging + saneo
python3 scripts/reports_to_enrich.py
python3 scripts/sanitize.py reports/extraccion-*.md

Monitoreo

tail -f /tmp/claude-ext.log        # progreso
kill 33808                          # detener (reanudable)
ls reports/extraccion-claude-conv-*.md | wc -l

Política de cruces (instrucción 2026-09-27)

Van a existir cruces entre fuentes. No cerrar nodos/edges cuando lleguen desde Claude (quedan 2 cuentas extra fuera del silo). Reglas:

  • El bridge fusiona por slug (report más largo gana, lista de reports se acumula).
  • Edges cuyo destino aún no existe se conservan como open_questions (nunca se borran).
  • Nada se promueve a content/nodes/ hasta cerrar todas las fuentes.

Análisis materializado (2026-09-27)

Staging separado para no clobber _enrich/ (había 3 colisiones con nodos no-bridge):

  • reports/_bridge-2026-09-27/ — 106 nodos (chatgpt=83, data=20, claude=2, design=1).
  • reports/puente-nodos-2026-09-27.md — tabla del bridge.
  • reports/cruces-2026-09-27.md — cruces y abiertos:
    • 1 cruce real: observatorio-de-la-web-independiente (conv-012 + conv-014).
    • duplicados probables: observatorio-de-la-web-independiente == observatorio-web-independiente (J=1.0) y sitio-qd-je-observatorio-de-la-web-independiente (J=0.5) → unificar sin cerrar.
    • 13 nodos ⚠ (kind inválido → fallback): revisión manual.
    • 9 slugs ya existen en content/nodes/ (colisión) y 104 coinciden con _enrich/.
  • El LLM emite edges: []: el grafo sale sin aristas. Los cruces reales vendrán de Claude + las 2 cuentas; hoy no hay edges que perder.
  • reports/edges-propuestos-2026-09-27.md + reports/_bridge-2026-09-27/_edges-propuestos.json — 636 aristas “related” propuestas (nomic-embed-text, sim ≥ 0.62; 🔵 ≥ 0.82) y 3 pares same-as por slug (trío observatorio-*). Nada escrito a edges:.

Unificación promovida (2026-09-27)

Se unificó el trío observatorio-* (dos conceptos duplicados + su implementación):

  • content/nodes/observatorio-de-la-web-independiente.md — concept, consolida conv-011/012/013/014; aliases: [observatorio-web-independiente].
  • content/nodes/sitio-qd-je-observatorio-de-la-web-independiente.md — experiment, implements → observatorio-de-la-web-independiente (primer edge real del lote).
  • Build ✅ npm run build: 392 nodos, sin dangling ni rels inválidas.

Bridge alias-aware: scripts/reports_to_enrich.py lee aliases: de content/nodes/ y colapsa el slug entrante al canónico (106 → 105 slugs en la re-corrida). Así, cuando lleguen nodos de Claude y de las 2 cuentas extra, los duplicados fusionan en el canónico en vez de crear nodos paralelos.

Traído al second-brain (2026-09-27)

Objetivo declarado: unificar el silo (social-silo/experiments → second-brain → nodo.ws) en un solo knowledge-factory.

  • 16 experiments del staging → content/nodes/ (validando aristas; ninguna quedó dangling). Todo el conjunto kind: experiment que faltaba.
  • 7 nodos del frente dataviz (la capa DVS entra al grafo): vega-lite, vega-altair, geopandas, matplotlib-journey, bostock (person), the-pudding, the-economist-graphic-detail (concept). Con doctrina (Mecanismo/Límite/Ejercicio) y 3 aristas requires (vega-altair→vega-lite, geopandas→pandas, matplotlib-journey→matplotlib).
  • Build ✅ npm run build: 415 nodos, sin dangling.
  • Nota: content/resources/ sigue local-only; en el jardín los nodos ganan en colisión de título (garden.mjs). Esto extiende el AGENTS.md (que solo declaraba al frente dataviz d3/observable/flourish/matplotlib como nodos) — pendiente actualizar AGENTS si la unificación sigue.

Plan de fusión (dicho por Nef)

social-silo/experiments → second-brain (este) → publicar en nodo.ws. Al terminar la extracción de Claude y sumar las 2 cuentas extra, re-correr el bridge+cruces y promover lo que corresponda.