Parte VI · IA, futuro y cierre
Qué falta
La propuesta está completa donde más cuesta estarlo: en lo conceptual. Lo que queda no es pensar el modelo, sino hacerlo real. Esta es la hoja de ruta.
Imagina que cierras este libro y decides que la idea merece existir de verdad. Clonas el repositorio, levantas el prototipo, cargas un dominio propio (tu spa, tu clínica, el sistema de tu empresa) y empiezas a registrar hechos. Funciona: los hechos entran como tripletas tipadas, el lexicon traduce tu vocabulario, las consultas responden. Y entonces, casi de inmediato, chocas con una pared. Quieres que el sistema dispare solo la regla «a la séptima sesión, la octava es gratis»; el prototipo guarda la regla como dato, pero no la ejecuta. Quieres preguntarle no qué era cierto, sino qué sabía el sistema en abril; la respuesta a medias te dice que esa versión del pasado no se conservó. Ninguna de esas paredes es teórica. Son, exactamente, lo que falta.
Este capítulo cambia de registro a propósito. No es una recapitulación ni una mirada inspiradora al horizonte; es un mapa de implementación. Hasta aquí el libro presentó la propuesta entera y la sometió a prueba: un prototipo en Python con sus pruebas en verde, ocho dominios industriales modelados que confirman que el catálogo se sostiene en territorios disímiles y (en el capítulo 28) el experimento reflexivo, donde el modelo bastó para describir su propia herramienta y se corrigió a sí mismo bajo carga. Lo que sigue es el inventario de la distancia que separa eso de una pieza de infraestructura que cualquiera pueda adoptar un martes por la tarde.
Lo organizo en seis frentes. De cada uno digo tres cosas: qué falta, qué tan urgente es y qué requiere para resolverlo. Donde el experimento reflexivo ya adelantó terreno lo señalo, porque eso mueve el punto de partida. Y cierro con la pieza que pesa más que todas las demás juntas, y que el autor no controla solo.
Frente 1 — El motor de inferencia
Apareció una y otra vez a lo largo del libro: el evaluador externo que recorre el grafo y dispara reglas. La regla «siete sesiones cumplidas, la octava gratis» del spa. La verificación «prescripción contra contraindicación» de la clínica. El cálculo del marcador a partir de cada gol del partido. La cláusula de rescisión que se activa en un contrato. Todas comparten la misma forma estructural: una condición declarativa sobre los hechos del grafo y un consecuente que se efectúa cuando la condición se cumple.
El experimento reflexivo dio el primer medio paso: demostró que la conducta puede vivir como dato y ejecutarse desde afuera (un evaluador genérico que despacha verbos leyéndolos del grafo). Lo que ese motor todavía no es es un evaluador de reglas declarativas. Sabe ejecutar verbos; no sabe resolver «si se cumplen estas condiciones sobre los hechos, deriva este hecho nuevo». Esa es la pieza ausente.
Hay al menos cuatro tecnologías candidatas para esa capa, cada una con su fortaleza y su flanco débil:
SHACL
Shapes Constraint Language (W3C, 2017), pensado para validar grafos RDF(8). Excelente para chequear consistencia («ningún paciente con dos diagnósticos contradictorios vigentes»); pobre para el razonamiento positivo.
Datalog
Lenguaje lógico deductivo. Sobresale en razonamiento composicional («si X causa Y e Y causa Z, entonces X causa Z»). Motores como Soufflé alcanzan rendimiento industrial.
Código de aplicación
Funciones en Python, Rust o Go que reciben el grafo y producen el efecto. Lo más flexible y lo menos auditable. Es, en esencia, la forma que tomó el evaluador de verbos del prototipo.
LLM con function calling
El propio modelo de lenguaje como evaluador, útil para reglas borrosas o ambiguas. Apropiado para lo pragmático; inapto para el cumplimiento estricto, por las razones que veremos enseguida.
Qué falta · urgencia · qué requiere
Qué falta: la capa de evaluación de reglas declarativas sobre los hechos del grafo.
Urgencia: alta. El prototipo ejecuta comportamiento, pero todavía no infiere: almacena la regla del spa, no la dispara. Para la mayoría de las aplicaciones útiles, eso es un bloqueador.
Qué requiere: una API de motor de inferencia que el
universo exponga —u.evaluate(regla), u.evaluate_all()— cuyos
resultados sean, otra vez, hechos atómicos firmados por el evaluador. El primer paso es
elegir un motor de referencia (SHACL para validación, Datalog para inferencia) y montarlo
sobre el evaluador genérico que ya existe. Estimación: tres a seis meses para una primera
versión usable.
El lugar de la IA en este frente
La cuarta opción de la lista (usar un modelo de lenguaje) merece una aclaración, porque la tentación es grande. ¿No podría una IA, incluso de pesos abiertos y autoalojada, hacer de motor de inferencia, con un buen prompt y un modelo bien definido? Hay que separar dos clases de regla. Para las borrosas (¿este reclamo es urgente?, ¿este texto implica consentimiento?) la respuesta es sí, y ahí el LLM es la herramienta correcta. Para las estrictas (las del spa, las del banco, las del contrato) la respuesta es no, por cuatro razones que ningún prompt arregla.
Por qué un LLM no es el motor de las reglas estrictas
- Es probabilístico, no determinista: la misma entrada puede dar respuestas distintas.
- No entrega una derivación auditable, y la tesis del modelo es justamente la auditabilidad: hechos firmados, bitemporales, rastreables.
- Es poco confiable en conteo y agregación exactos (contar goles, sumar costos, cerrar una transitividad).
- Es caro de escalar y de reproducir una decisión pasada idéntica.
La forma productiva de sumar IA, entonces, no es ponerla de runtime sino de autor. Que un LLM compile una regla escrita en lenguaje natural («a las siete sesiones, la octava es gratis») a una regla declarativa en Datalog o SHACL sobre los hechos del grafo, y que el motor determinista la ejecute. El modelo bien definido vuelve esa compilación casi directa, porque los roles ya están tipados y la regla mapea a patrones sobre hechos canónicos. Así se obtiene lo mejor de los dos mundos: la flexibilidad del lenguaje natural para escribir reglas y el rigor del motor para ejecutarlas. La IA entra dos veces —para convertir lenguaje en hechos (lo vimos en el capítulo 26) y para compilar reglas—, pero el corazón de la inferencia estricta queda determinista y demostrable.
En concreto, esa compilación se ve así. El modelo recibe la regla en español y el catálogo tipado, y emite una regla declarativa que el motor ejecutará por su cuenta:
SISTEMA. Compila la regla de negocio a Datalog sobre hechos WQuestions
(sujeto, rol, valor). No la ejecutes; solo compílala.
Catálogo: servicio_spa(S) con roles cliente, estatus_factual.
Regla: "A las siete sesiones finalizadas de un cliente, la octava es gratis."
sesion_ok(C, S) :- instancia_de(S, servicio_spa),
cliente(S, C), estatus_factual(S, finalizada).
octava_gratis(C) :- count{ S : sesion_ok(C, S) } >= 7.
El modelo de lenguaje escribió la regla; el motor determinista la ejecuta y firma cada hecho derivado. La IA nunca toca el dato en caliente. Y el hecho derivado entra al grafo con la misma forma que cualquier otro: una tripleta tipada, con su autor y su vigencia.
Frente 2 — Bitemporalidad completa
Hoy el modelo soporta tiempo de validez (valid time): cada hecho
lleva su rango [inicio, fin), y una consulta «en el momento T» recupera lo que
era cierto del mundo entonces. Esta es la mecánica de vigencia que el libro reifica con rangos
(la decisión D6, enunciada en el
capítulo 9). Lo que falta es el
tiempo de transacción (transaction time): cuándo el sistema afirmó
ese hecho.
La diferencia importa cuando alguien pregunta no «¿qué era cierto?» sino «¿qué sabíamos?». Toma un caso del banco. En mayo registramos que el plan mensual de un cliente venció el 31 de marzo; en abril el cliente aparece, demuestra que había renovado y retrocedemos el plan. La pregunta del auditor («¿qué estaba en el sistema entre el 1 de abril y la fecha de la corrección?») solo se responde si el sistema preservó esa versión transitoria, la que era falsa pero estuvo vigente como creencia del sistema durante semanas.
Qué falta · urgencia · qué requiere
Qué falta: cerrar el tiempo de transacción de punta a punta. La estructura del hecho ya reserva un campo para él, pero la persistencia aún no lo conserva en el viaje de ida y vuelta a disco. Queda como deuda concreta.
Urgencia: alta para dominios regulados (finanzas, salud,
derecho); baja para el resto. Cuando un dominio lo necesita, no es opcional. El destino es
un par de intervalos por hecho y consultas as-of duales:
query(valido_en=T1, registrado_en=T2).
Qué requiere: una refactorización compatible del módulo del hecho para llevar dos intervalos en lugar de uno, y de la capa de persistencia para preservarlos. Snodgrass(17) formalizó esto en los años noventa; las bases bitemporales modernas (Datomic, XTDB) lo implementan en producción. Estimación: un mes de implementación, más pruebas sobre un dominio regulado real.
Frente 3 — Persistencia industrial
El experimento reflexivo cambió el punto de partida de este frente: el prototipo
ya no vive solo en memoria. Su capa de persistencia guarda individuos y
hechos en SQLite y los recarga al arrancar. Bastan dos tablas: una de
individuos (id, eje, payload_json) y una de hechos
(sujeto, rol, valor, inicio, fin, …). Es la prueba de que el modelo persiste sin
esfuerzo: la geometría de las tripletas se aplana a tabla casi sin pérdida.
Lo que falta, entonces, no es «persistencia» (ya existe) sino
persistencia industrial y plural: una interfaz Storage
abstracta de la que SQLite sea la primera implementación, y otros respaldos con perfiles
distintos según el caso de uso.
| Respaldo | Perfil | Estado |
|---|---|---|
| SQLite | Sistemas chicos, monousuario. El piso para empezar a construir. | ✓ ya existe en el prototipo |
| Postgres + JSONB | Sistemas multiusuario medianos. Índices GIN sobre el payload, búsqueda de texto sobre etiquetas, particionado por tiempo de transacción para auditoría. | pendiente · prioritario |
| Kùzu / Neo4j | Sistemas que privilegian consultas de grafo (rutas, caminos transitivos). Modelo más natural; curva de adopción mayor. | pendiente |
| RDF / SPARQL | Sistemas que quieran interoperar con la web semántica. Mapeo trivial: cada hecho es una tripleta RDF; la vigencia (D6) se mapea con grafos nombrados. | pendiente |
Qué falta · urgencia · qué requiere
Urgencia: media. El piso (SQLite) ya permite construir; lo que falta habilita escala y casos exigentes, no la operación básica.
Qué requiere: extraer la interfaz Storage del SQLite
actual y escribir al menos un segundo respaldo (Postgres). El módulo del universo delega la
lectura y la escritura a esa interfaz, sin saber qué hay debajo. Estimación: dos a tres
meses para los dos respaldos primarios.
Frente 4 — Tooling
Una propuesta como WQuestions vive o muere por sus herramientas. Los conceptos pueden ser impecables; si la fricción operativa es alta, nadie la adopta. La regla es vieja y cruel: la mejor idea con mal tooling pierde frente a la idea mediocre con buen tooling. Aquí está la lista, ordenada por prioridad.
4.1 — Ingestor de lexicon. Hoy las entradas del lexicon se escriben a mano. Hace falta una herramienta que ingiera entradas desde recursos masivos ya construidos —FrameNet(14), VerbNet(15), PropBank— y produzca entradas válidas del lexicon WQuestions. Esto da, de un golpe, un piso de cobertura de miles de verbos sin trabajo manual.
4.2 — Parser de lenguaje natural a hechos. Hoy el análisis se hace vía LLM con function calling. Hace falta también un parser local y determinista para textos donde la latencia del modelo importa (sistemas de tiempo real) o donde la privacidad lo exige (datos médicos que no deben salir de la sala). Combinar análisis sintáctico con el lexicon es trabajo concreto, no investigación abierta.
4.3 — IDE / inspector. El experimento reflexivo entregó una
primera versión: un inspector que, junto a cada vista, muestra las
tripletas que la sostienen («lo que ves es el dato»). Falta el resto: explorar individuos y
vecinos a voluntad, consultar con patrones, seguir la cadena causado_por o
justificado_por de cualquier nodo, y (la pieza que el propio experimento
señaló como necesaria) vistas con nombre definidas como dato, para
re-concretar el grafo sin ahogar al modelador en la abstracción. La base existe; el salto
es de semanas, no de meses.
4.4 — Validador de migración. Cuando un sistema heredado quiere migrar a WQuestions, hay que verificar que su dialecto de dominio mapea bien al canónico. Una herramienta de validación detecta los cuellos: roles sin signatura, ejes ambiguos, vigencias inconsistentes. El paso «el dato registra su propia signatura», que la prueba reflexiva ya introdujo, facilita esta herramienta.
4.5 — Generador de servidor MCP. Dado un lexicon, generar automáticamente el servidor MCP correspondiente. Esto convierte cada dominio en un asistente conversacional sin escribir glue code. Trabajo de pocas semanas; impacto desproporcionado en la adopción, porque baja a casi cero el costo de probar la propuesta con datos propios.
Urgencia del tooling
Media en agregado, alta en el caso del ingestor de lexicon (4.1) y el generador MCP (4.5): son los dos que más reducen el costo de que alguien pruebe la propuesta. Y la barrera de entrada es, casi siempre, lo que decide si una idea se difunde o se queda en el libro que la enunció.
Frente 5 — Lexicon poblado en varios idiomas
El catálogo canónico del libro (la decisión D8, que hace invisible el catálogo y deja al lexicon como única interfaz) define 38 roles. El lexicon del prototipo registra una decena de verbos. Para un sistema productivo, el lexicon de un solo idioma necesita del orden de dos a cinco mil entradas: los verbos frecuentes del español, sus formas nominales, las locuciones idiomáticas que la gente usa sin pensar.
Lo que falta es trabajo lingüístico paciente. Por dominio o por familia semántica (transferencia, comunicación, movimiento, percepción, estados) hay que poblar el lexicon. FrameNet español, el corpus español de Universal Dependencies y AnCora son fuentes legítimas para mecanizar parcialmente la tarea, pero no para eliminar el juicio humano que cada entrada delicada exige.
Para la internacionalización, cada idioma necesita su propio lexicon, pero no su propio catálogo: la espina es común y solo cambia la piel que la traduce. Esto es, a la vez, una oportunidad y una carga. Oportunidad, porque un dominio modelado en español queda inmediatamente disponible en cualquier idioma que tenga su lexicon. Carga, porque cada idioma nuevo es un proyecto léxico sostenido, no un fin de semana.
Qué falta · urgencia · qué requiere
Urgencia: la cobertura del lexicon es la usabilidad. Sin verbos suficientes, el modelo se siente incompleto aunque sea correcto. Es esfuerzo sostenido, no proyecto puntual: el lexicon nunca está «terminado», solo más o menos completo.
Qué requiere: equipo lingüístico-computacional; idealmente, colaboración con universidades que ya producen recursos léxicos; y un modelo de gobernanza para aceptar contribuciones de terceros sin perder coherencia. Lo cual nos lleva, naturalmente, al sexto frente.
Frente 6 — Comunidad y gobernanza
Aquí entramos en la pieza que el autor no controla. WQuestions, para volverse útil más allá de un libro, necesita comunidad: gente modelando dominios, contribuyendo lexicon, reportando fricciones, escribiendo herramientas, adoptándolo en proyectos reales. Una arquitectura sin comunidad es una idea bonita en un PDF; una arquitectura con comunidad es infraestructura. La diferencia no la firma el autor, la firman los demás.
Qué falta, en concreto:
- Repositorio canónico abierto, con licencia permisiva. Una primera versión ya vive en un repositorio público mientras lees esto.
- Proceso de contribución: cómo proponer nuevas entradas al catálogo, nuevos dominios al lexicon, parches al motor. Necesita criterios escritos, no costumbres tácitas.
- Foro o canal de discusión para resolver las fricciones que surjan al modelar dominios nuevos. Cada conversación cualifica el catálogo (y el experimento reflexivo es evidencia de que las fricciones más valiosas aparecen cuando se somete el modelo a una carga real).
- Estandarización gradual: una vez que varios proyectos adopten el modelo, vale la pena llevar las partes más universales del catálogo a un proceso formal (IETF, W3C, ISO). Eso da estabilidad legal para el uso empresarial.
- Dialectos de dominio mantenidos por comunidades sectoriales (clínico, financiero, legal, manufactura), cada uno con su propia gobernanza dentro de la espina común.
Las arquitecturas duraderas no se imponen: se adoptan. Y se adoptan cuando alguien que no es su autor decide que vale la pena empujarlas.La pieza que el autor no controla
Qué falta · urgencia · qué requiere
Urgencia: el reloj corre. Si la comunidad no se forma en el momento en que los LLMs con MCP se popularizan, alguna otra propuesta (menos cuidadosa) ocupará el espacio. La ventana es de dos a cinco años.
Qué requiere: lo mismo que cualquier proyecto de código abierto serio: un autor o equipo fundador dispuesto a moderar, a criticar contribuciones, a sostener la coherencia y a decir que no cuando hace falta. Buena documentación. Casos de uso ejemplares. Adoptantes tempranos visibles.
La pila completa
Conviene ver los seis frentes juntos, como capas de una misma pila. Cada capa puede evolucionar por su cuenta (cambiar el respaldo de persistencia no obliga a tocar el lexicon, y mejorar el motor de reglas no altera la aplicación que ve el usuario). Esa independencia es, en sí misma, una propiedad de diseño: el modelo del medio es el contrato estable que sostiene todo lo demás.
Storage); encima, el núcleo de los
siete ejes (el contrato estable); encima, el motor de reglas y el lexicon; encima, el LLM
que traduce y compila vía MCP; arriba, la aplicación que ve la persona. La bitemporalidad
atraviesa el núcleo y la persistencia, porque el tiempo no es una capa: es una dimensión de
cada hecho.Y si los seis frentes se miden por su grado de madurez, el panorama es claro y no desalentador. Tres de ellos tienen un piso operable (persistencia, una primera versión de inspector, el medio paso del motor); tres están casi por construir (el lexicon a escala, la comunidad, el tooling completo). Nada está en cero; nada está cerca de cien.
Las fricciones documentadas que siguen abiertas
Además de los seis frentes mayores, el prototipo expuso un puñado de fricciones puntuales del
catálogo al chocar con los dominios de estrés. El experimento reflexivo
(capítulo 28) cerró varias (el
texto libre, el tipado de los campos definidos por datos, el display derivado de hechos) y
entregó el comodín V (cualquier eje de valor), que resuelve de raíz toda
la familia «esta signatura es demasiado estrecha». Lo que queda abierto es esto:
| Fricción | Origen | Parche propuesto |
|---|---|---|
paciente / partes: O→Q demasiado estrechos |
química, fútbol | Relajar a O→V: el comodín V ya existe; es una línea |
tema: O→O rechaza K (obra, medicamento) |
música, clínica | tema: O→V, o un tema_categorico: O→K |
| Patrones temporales finos; tiempo musical (compás, pulso) | clínica, música | Reificar como O con estructura |
| Reglas de derivación versionadas | contrato | Frente 1 (motor) + vigencia (D6) sobre las reglas |
| Vistas y proyecciones con nombre como dato | prueba reflexiva | El siguiente escalón de la re-concreción (Frente 4.3) |
Ninguna de estas fricciones bloquea el funcionamiento del modelo, y se repite un patrón: las
relajaciones del tipo «signatura demasiado estrecha» se resuelven con el comodín V
que el experimento ya introdujo, y varias otras quedan cubiertas por roles de dominio bajo la
política liberal del catálogo. Es la lista de mejoras concretas: se acumula a
medida que el modelo se prueba en territorios nuevos y se acorta a medida que se lo somete a
cargas exigentes. Una lista que crece y mengua a la vez es exactamente lo que cabe esperar de
una arquitectura viva.
El libro como semilla
Cerremos con la idea menos técnica del capítulo. Un libro no es una propuesta terminada: es una invitación a que alguien la termine. Las arquitecturas que duraron (Unix, TCP/IP, HTTP, SQL, RDF) empezaron como artículos, manifiestos, RFCs, libros: textos que articulaban una idea con la claridad suficiente para que otros pudieran apropiársela y empujarla adelante. Ninguna nació completa; todas nacieron legibles.
Lo que tienes en la mano al cerrar el libro
No es un producto. Es una base operable: suficiente para entender la propuesta, ejecutarla, criticarla y extenderla. El catálogo está bien diseñado pero incompleto; el lexicon está bosquejado; las herramientas son embrionarias; la comunidad está por construirse. Y aun así, la propuesta no solo funciona en ocho dominios distintos: funciona aplicada a sí misma.
Eso es lo que hace la diferencia entre una especulación y una semilla. El modelo bastó para describir su propio menú, sus formularios, sus esquemas y su conducta, y para corregirse cuando la carga reveló una signatura demasiado estrecha. La propuesta aguanta el peso que prometió aguantar. Desde aquí, la tarea no es demostrarla (ya está demostrada en lo esencial), sino perfeccionarla: poblar el lexicon, montar el motor, escribir las herramientas, formar la comunidad. Trabajo, no misterio.
El catálogo está incompleto, el lexicon bosquejado, las herramientas embrionarias. Pero la propuesta funciona aplicada a sí misma. Lo que falta es construirla, no descubrirla.El estado del proyecto
Queda una sola página antes del cierre, y es la que responde la pregunta que ha estado latiendo bajo todo el libro: si esto es tanto trabajo, ¿por qué vale la pena? Por qué importan, a fin de cuentas, las preguntas.