Puente extracción → nodos second-brain (chatgpt + design_chats + twitter)

Fecha: 2026-09-22. Estado: primera pasada hecha y verificada (9 nodos adoptados). Origen: ~/nef/second-brain-twitter/reports/extraccion-*.md.

Qué se construyó

  • Script puente: ~/nef/second-brain-twitter/scripts/reports_to_enrich.py
    • Extrae los bloques del apartado 3.2 Nodos candidatos de cada report.
    • Parsea frontmatter tolerante (cita valores con : que el LLM dejó crudos y rompían YAML — el bug real de 11 bloques en data-004/data-006).
    • Normaliza al contrato del nodo: kind válido, status, level 0–5, slug kebab-case, edges validados (un to inexistente se elimina y pasa a open_questions), dedupe por slug (conserva el cuerpo más largo).
    • Escribe borradores _enrich/<slug>.md + <slug>.meta.json (staging, no toca content/nodes/). --dry para inspeccionar; --report <ruta> persiste el reporte.
  • Reporte de inventario: reports/puente-nodos-2026-09-22.md.

Resultado de la pasada

  • 89 reports escaneados · 105 bloques leídos · 104 slugs únicos · 0 errores.
  • 13 nodos marcados needs_review (kind inválido normalizado o edges descartados).
  • Reparto temático: solo 9 son AI/ML (por tags); los otros 95 son infra/personal (SDF hosting, dominios, turismo, lavadora…) → quedan en _enrich/.
  • Todos los bloques salieron huérfanos (edges: []): el prompt de extracción no recibió la lista de slugs existentes. Por eso hubo un pase de enlace manual.

Nodos adoptados (9) → content/nodes/

status: unseen, level: 0 (capturas nuevas; promover con npm run node:log).

slugedges (curados contra el grafo)
arquitectura-de-agencias-modularmulti-agent-systems (generalizes), ai-agents (requires)
arquitectura-hibrida-nosql-agentes-iavector-db, nosql-database (requires), rag (applies)
claude-fable-autonomia-en-desarrolloai-app-builders (applies), ai-coding-assistants (requires)
groq-gpt-oss-series-limits-latency-profilelarge-language-models (requires), model-deployment (applies)
hybrid-local-cloud-orchestration-strategymodel-selection (applies), model-deployment (requires)
infraestructura-de-datos-para-agentesweb-scraping (requires), model-context-protocol (applies)
llm-social-monitor-architecturelarge-language-models, web-scraping (requires), embeddings (applies)
principio-de-er-first-para-vibre-codingdatabase-schema-design (requires), data-modeling (applies)
tunneler-y-red-meshmodel-deployment (applies)

3 kind corregidos a concept (venían de compuestos model|architecture, model, algorithm): arquitectura-hibrida-nosql-agentes-ia, hybrid-local-cloud-orchestration-strategy, llm-social-monitor-architecture.

Verificación: npm run build → 390 nodos (381+9), 0 edges colgantes.

Pendientes que arrastra

  • 95 borradores en ~/nef/second-brain/_enrich/ (mode: extraccion-bridge), sin adoptar. Decidir: rutear a content/journal/ (capa privada), descartar, o adoptar un subconjunto con enlace manual.
  • claude-conv sigue en 0/111 reports (no había nada de claude-conv para el puente; solo design_chats de Claude aportó 1 nodo).
  • Los 9 adoptados tienen cuerpo corto (varios sin Mecanismo/Límite); npm run enrich -- --doctrine puede expandirlos.

⚠ Concurrencia detectada (2026-09-22 ~23:57)

Hay otra sesión de opencode (ses_f4318aa48ffe…) corriendo en loop npm run enrich --doctrine --limit 12 sobre second-brain, con sleep 240 entre lotes, y auto-commitea (queue-enrich: progreso …, log en /tmp/enrich-batch.log). Efecto: su git add -A barrió los 104 drafts de _enrich/ a sus commits (p. ej. 62639f5). Los 9 nodos adoptados seguían untracked al cierre; el siguiente ciclo de esa cola los commiteará también.

No se tocó ese proceso. Antes de seguir: decidir si esa cola debe pausarse para no mezclar commits automáticos con la adopción manual.

Reanudar

cd ~/nef/second-brain-twitter
python3 scripts/reports_to_enrich.py --dry          # ver qué saldría
python3 scripts/reports_to_enrich.py                 # escribir _enrich/