Descripción ejecutiva
Cuarto y último PR del hardening del Bibliotecario-Ingest: introducción del enrichment agent wiki_enrich_related, que automáticamente propone y aplica backlinks (related[]) para páginas wiki con ese campo vacío. Cierra la trilogía de automatismos: Ingest (creación) → Lint (validación) → Enrich (enriquecimiento de grafo).
Variante cron-sin-Queues: similar al lint nocturno, sin dependencia en CF Queues ni Batch API — paginación secuencial desde OPS.
Contexto
En Supercontexto, la wiki es el corazón del grafo de conocimiento. Pero muchas pages nuevas se crean sin backlinks iniciales (related: []), lo que:
- Las deja aisladas en Obsidian (no se navegan)
- Reduce la utilidad del grafo para devs
- Requiere trabajo manual para conectarlas retroactivamente
El Bibliotecario-Ingest ya crea pages (PR1), el Lint ya las valida (PR2/PR3). El paso siguiente es enriquecerlas automáticamente.
Solución
Flujo de PR4
- Definición del tool MCP
wiki_enrich_relatedenfunctions/api/mcp/handlers/wiki.ts(~160 LOC) - Registro en tools catalog
functions/api/mcp/tools.ts(description + input schema) - Seguridad por defecto:
dry_run=true— aunque se mergee, no escribe NADA hasta explícitamente validado - Primer dry-run: Edu revisa las sugerencias, confirma calidad
- Activación gradual: habilitar
dry_run=falseen OPS, monitorear, iterar
Algoritmo del enrichment
Para cada página status:active con related vacío:
-
Búsqueda de candidatos:
- Si tiene tags: busca otras pages con tags compartidas
- Si no: busca por mismo
type(entity, concept, feature, etc.) - Límite: 25 candidatos
-
LLM (Haiku):
- Prompt: titulo página + lista candidatos
- Respuesta: 2-4 backlinks genuinamente relacionados (JSON)
- Grounding: valida que los slugs existan en candidatos (no inventa)
-
Escritura:
- Reemplaza SOLO la línea
related:en el front-matter (quirúrgico) - Actualiza sección `
- Reemplaza SOLO la línea
Véase también
- [[entity—biblioteca—tool—wiki-enrich-related]]
- [[feature—supercontext—bibliotecario-lint-fase-5]]
- [[concept—workspace—supercontexto-02-bibliotecario]]
- [[decision—20260422—lint-two-tier]]
- [[feature—supercontext—reconcile-d1-repo]]