Volver a la wiki

Evaluación Understand-Anything vs Bibliotecario propio · NO adoptar, cherry-pick parcial

ADR 2026-05-22: Understand-Anything vs Bibliotecario — cherry-pick scope reducido

Contexto

El proyecto Understand-Anything propone 8 tipos de edges adicionales para enriquecer el grafo de conocimiento estático del Bibliotecario. La pregunta era: ¿importar el proyecto completo o hacer cherry-pick selectivo?

El análisis previo a esta decisión evaluó cada edge type propuesto frente a dos criterios:

  1. AST-friendly: detectable con parsing Python puro, sin dependencias externas.
  2. Valor inmediato: el Oráculo (bib_ask / bib_impact_query) puede usarlo en queries reales sobre el corpus de CreaRack Pro.

Decisión

Cherry-pick de 3 edge types (scope reducido) implementados directamente en scripts/bib_ast.py. No se incorpora Understand-Anything como dependencia ni submódulo.

Edge types incluidos

Edge typeMecanismo ASTJustificación
reads_from<Model>.objects.<READ>() en visit_CallDirecto, sin ambigüedad, alto valor para queries de impacto
writes_to<Model>.objects.<WRITE>() en visit_CallIdem, distingue lecturas de mutaciones
triggers@receiver(signal, sender=Model) en _visit_functionConecta signal handlers a sus modelos; útil para trazabilidad de efectos secundarios

Edge types descartados (en esta iteración)

Edge typeMotivo de descarte
subscribes / publishesRequieren parsers no-Python (Dockerfile, docker-compose, variables de entorno)
middlewareSensible a configuración runtime de Django; no inferible sólo del AST
deploysDominio de infraestructura, fuera del scope del AST Python
servesDepende de Django Channels o Huey — frameworks externos no siempre presentes

Los 5 tipos descartados quedan como candidatos para iteración futura si emergen necesidades concretas en queries del Oráculo.

Consecuencias

Positivas

Negativas / Limitaciones

Implementación

Alternativas consideradas

  1. Importar Understand-Anything completo — descartado por scope excesivo, dependencias externas y riesgo de romper el pipeline existente.
  2. No hacer nada — descartado: el grafo carecía de trazabilidad ORM, lo que limitaba la utilidad de bib_impact_query para cambios en modelos.
  3. Implementar los 8 edge types — descartado: los 5 no-AST requieren parsers adicionales que elevan la complejidad de mantenimiento desproporcionadamente.

Estado

Aceptada — implementada en s79, 2026-05-22 · commit 544548b.

Véase también

Subir