Status: Target conceptual · No implementación Fecha: 2026-05-22 Síntesis de: v3-conceptual-claude/ + v3-conceptual-codex/
V3 no es una reescritura de V2 con mejores nombres. Es un cambio de frontera.
El principio rector es separar con violencia conceptual tres mundos que en V2 aparecen mezclados:
V3 acepta que Holded no es sólo una API: es el primer ERP real con conceptos, límites, peculiaridades, permisos, pantallas, comentarios, documentos, contactos, tags, asientos, facturas y comportamientos observables. Pretender que eso puede desaparecer detrás de un esperanto universal en el primer diseño llevó a una abstracción prematura: mucho vocabulario general, poca verdad operacional.
La alternativa V3 es más humilde y más fuerte: diseñar el sistema alrededor de un primer ERP real, pero impedir que sus cicatrices contaminen el Motor semántico. El Motor decide qué hacer. El integrador de Holded decide cómo expresarlo en Holded. El executor ejecuta. El SoR persiste. T3 calcifica patrones en el nivel correcto. T4 trae de vuelta señales estructuradas desde la realidad.
V3 queda gobernado por cinco reglas que deben sobrevivir a cualquier fase de implementación:
Eliminar account_lines o declararlo sombra explícita. Intelia no mantiene una contabilidad paralela autoritativa. Puede conservar proyecciones, snapshots, índices, caches y trazas de decisión — pero no una segunda fuente de verdad contable. Si existe representación interna de líneas, debe estar marcada como no autoritativa, derivada, versionada y reconciliable contra el SoR.
Separar Facts por owner. Los hechos no son una bolsa común. V3 distingue cinco propietarios: extracted (OCR + LLM extractor), memory (histórico y preferencias del cliente), erp_snapshot (estado observado en Holded, no copiado como verdad), human_context (instrucciones, aprobaciones y correcciones previas) y runtime (fecha, equipo, periodo, moneda, feature flags). Cada hecho tiene propietario, frescura, procedencia y nivel de autoridad.
El Plan Store del integrador vive dentro del integrador. Las reglas calcificadas de traducción Holded son conocimiento operativo de cómo se hace algo en Holded, no semántica global. Sacarlas fuera del integrador recrearía el esperanto por la puerta de atrás.
Las guías Holded no razonan semánticamente. Una guía Holded dice cómo usar Holded, no qué decisión contable tomar. Puede explicar qué endpoint, qué campo, qué orden de operaciones, qué comentario insertar y qué workaround aplicar. No decide si un gasto es deducible, si corresponde 623 o 629, o si el IVA es soportado.
Las reglas calcificadas se tipan por nivel. Una regla semántica vive en el Motor. Una regla de traducción vive en el integrador. Una regla de UX vive en S1. Una regla de señal vive en T4/TX. Mezclar niveles produce velocidad inicial y deuda estructural inmediata.
Estas reglas son más importantes que cualquier servicio concreto. Si una implementación futura las rompe para ganar velocidad, probablemente vuelve a V2.
V3 se organiza en seis capas funcionales más una transversal. No todas tienen que ser servicios separados desde el día uno, pero sí deben tener contratos separados.
Núcleo de decisión contable de Intelia. Consume hechos con procedencia clara, contexto de cliente, memoria operativa, histórico de decisiones, políticas contables y snapshots del ERP. Produce un Internal Plan: una intención contable semántica, no ejecutable directamente contra Holded.
El Motor no sabe qué endpoint de Holded se llama. No sabe qué campo concreto acepta decimales o qué objeto debe crearse antes de otro. Sí sabe que una factura de proveedor debe reconocerse como gasto, que requiere una cuenta contable, tratamiento fiscal, posible proyecto/coste, contrapartida, fecha de devengo, y que ciertas anomalías bloquean automatización.
La decisión del Motor se apoya en tres roles LLM:
Además, M1 incluye validación determinística previa y posterior: los LLMs no sustituyen invariantes (sumas, moneda, fechas, coherencia fiscal, compatibilidad con snapshots, límites de confianza, duplicados, restricciones de política).
El mundo Holded. Recibe un Internal Plan y produce un ExecutionPlan Holded declarativo. Esta traducción no se implementa como una fase agnóstica de providers universales: la hace un agente LLM especializado en Holded con:
El agente genera, no ejecuta. La ejecución pertenece a un executor determinístico y aburrido. Este executor solo interpreta un ExecutionPlan ya validado, invoca operaciones permitidas, registra resultados, hace idempotencia y devuelve outcome.
I1 contiene también validación final: antes de escribir, revisa que el plan sea compatible con el estado actual del ERP; después de escribir, verifica que el SoR quedó como se esperaba o que existe una desviación trazable.
T3 convierte repetición aprobada en velocidad. Cuando el sistema produce el mismo plan, o uno suficientemente equivalente, para inputs similares, y el contable aprueba durante un periodo de sombra, T3 promueve el patrón a regla calcificada.
La calcificación no es una cache. Es una promoción gobernada. Requiere:
Una regla atraviesa cinco estados de lifecycle:
candidate → shadow → active → quarantined → retired
Una vez active, la regla permite responder instantáneamente sin coste LLM para esa parte del pipeline. Pero nunca borra trazabilidad: cada aplicación de regla conserva versión, motivo, matching y posibilidad de invalidación.
T4 observa el SoR después de que Intelia escribe o propone. Su objetivo es aprender de la realidad operacional:
T4 no interpreta todo como verdad automática. Captura delta, lo atribuye, lo clasifica, lo contrasta con el plan original y produce señales estructuradas (Learning Signals). Algunas señales invalidan una regla calcificada. Otras recalibran histórico de proveedor. Otras son ruido o edición no semántica.
Sin T4, Intelia vuelve a depender de dashboards propios para saber si acertó. Con T4, Holded se convierte en interfaz de trabajo de alta confianza y fuente de feedback.
La UX V3 tiene dos superficies:
La transición no es binaria por cliente. Puede variar por proveedor, tipo de documento, regla, periodo, importe, confianza, antigüedad y estabilidad. Un cliente puede tener 90% auto-contabilizado en alquileres y 0% en gastos raros de importación.
TX es la capa transversal de orquestación, señales e historia operacional. Temporal no es el cerebro contable; es el mecanismo para ejecutar procesos durables, idempotentes, observables y recuperables.
TX coordina ingestión, ejecución de M1, generación y validación de ExecutionPlan, revisión humana cuando aplica, escritura en Holded, reverse sync, calcificación, reintentos, compensaciones y timeouts.
La señalización es first-class: cada decisión, validación, intervención humana, edición externa y aplicación de regla produce eventos consultables. V3 aprende porque conserva estructura, no porque guarde logs sueltos.
Detalle completo en tx-signals-temporal.md
V3 evita contratos gigantes. Usa pocos artefactos conceptuales, cada uno con propietario claro.
No es un modelo monolítico de "documento enriquecido". Es un paquete con secciones por owner:
| Owner | Contenido |
|---|---|
extracted |
Datos extraídos del documento y pipeline OCR/LLM |
memory |
Conocimiento persistido del cliente, proveedor, histórico y preferencias |
erp_snapshot |
Estado observado en Holded, no copiado como verdad propia |
human_context |
Instrucciones explícitas, aprobaciones, comentarios y correcciones previas |
runtime |
Fecha, equipo, periodo, entorno, moneda, feature flags y límites operativos |
Cada hecho debe poder decir: quién lo originó, cuándo, con qué confianza, desde qué documento o snapshot, y si es autoritativo, inferido o auxiliar.
Intención contable semántica, auditable y no ejecutable directamente. Incluye:
No incluye endpoints, IDs de operación Holded, secuencia exacta de API calls, workaround de contacto, payload final ni nombres de campos propios del ERP.
Declarativo pero específico de Holded. Describe qué operaciones se deben hacer en Holded y bajo qué precondiciones.
Debe incluir:
No es una lista libre de comandos inventados por el agente. Debe ajustarse a una gramática pequeña y versionada que el executor determinístico entienda.
El Outcome cierra el ciclo de escritura. Contiene:
El Outcome es más importante que la respuesta de la API. Es la base para auditoría, aprendizaje e idempotencia.
Toda corrección humana o edición externa se convierte en señal estructurada cuando es posible:
La Learning Signal no aplica cambios por sí sola. Los aplican componentes propietarios: Motor, Plan Store, T3, configuración de cliente o guía operativa.
Internal PlanExecutionPlan Holded + score de confianzaExecution OutcomeLearning SignalDetalle importante: la aprobación humana puede ocurrir antes de escribir en Holded o después, dentro de Holded. V3 no fuerza una única superficie de control.
| Fase | Volumen auto-Holded | UX dominante | Coste LLM/doc |
|---|---|---|---|
| Mes 0 (onboarding) | Dashboard Intelia (revisa todo) | Alto · 100% por agente | |
| Mes 1-3 | Mezcla | Medio · agente en ~50% | |
| Mes 6 | Holded principal · Intelia ocasional | Bajo · agente en ~25% | |
| Mes 12+ | Casi todo Holded | Marginal · agente solo en edge cases |
Madurez no es un booleano de cliente. Es una matriz por isla (proveedor, tipo doc, importe, periodo). Un cliente puede tener 90% auto en alquileres y 0% en gastos raros de importación al mismo tiempo.
V3 modela madurez como una matriz, no como un estado global. Un cliente puede tener 90% auto en alquileres y 0% en gastos raros de importación al mismo tiempo.
En un cliente nuevo, casi todo pasa por Pending Plans. El sistema debe maximizar explicación y captura de correcciones:
El objetivo no es eficiencia inmediata. Es generar dataset del cliente y detectar diferencias de práctica contable.
Empiezan a calcificarse patrones: proveedor recurrente, gasto simple, factura con estructura estable, misma cuenta y tratamiento fiscal, mismo flujo Holded, ausencia de ediciones.
La automatización se activa por isla, con shadow mode y comparación contra agente. Pending Plans se reduce para zonas estables, pero sigue siendo la interfaz de excepciones.
Cuando una isla alcanza estabilidad, Intelia puede escribir directamente en Holded. El contable trabaja en Holded y T4 observa:
La UX de Intelia se vuelve más de auditoría, cola de excepciones y explicación que de operación diaria.
Clientes maduros deberían tener 80-95% de documentos recurrentes auto-contabilizados, pero no por magia generalista. Lo logran por acumulación de reglas por cliente, proveedor, sector y tipo de documento.
El cross-bootstrap permite que un cliente nuevo de un sector arranque con reglas candidatas de otros clientes. Pero esas reglas no entran como verdad. Entran como:
El Plan Generator de Holded se implementa conceptualmente como un agente único con tres roles internos, no como tres agentes independientes desde el principio:
Separarlo físicamente en sub-agentes demasiado pronto aumentaría latencia y superficie de coordinación. Mantener roles internos permite prompts y evaluaciones diferenciadas sin multiplicar infraestructura. Si en producción aparecen errores sistemáticos de tool mapping o crítica débil, entonces sí merece extraerlos.
El executor debe permanecer completamente fuera del agente. Si el agente puede escribir, se rompe la frontera más valiosa de V3.
T3 es un sistema asíncrono gobernado por Temporal. El lookup de reglas activas sí es sincrónico y barato, pero la promoción, shadow comparison, invalidación, análisis de drift y revisión ops viven en workflows durables:
T3 no debería ser una tabla rules con un contador. Eso produciría calcificación prematura. V3 necesita lifecycle explícito: candidate → shadow → active → quarantined → retired.
T4 trata Holded como una fuente de feedback imperfecta, no como conversación. Una edición en Holded puede significar:
Por eso T4 no debe auto-aplicar todo. Debe producir señales clasificadas con confianza. Las señales de alto impacto deben entrar en cola de revisión ops antes de modificar reglas activas.
Los comentarios de Holded son especialmente peligrosos: tienen mucha semántica y poca estructura. Se interpretan con LLM, pero la salida debe quedar tipada y revisable.
confidence_calcifiedaccount_linesLa renuncia más importante: V3 no intenta demostrar desde el primer día que Intelia sirve para cualquier ERP. Intenta demostrar que Intelia puede decidir mejor que un humano promedio, operar con seguridad en un ERP real y aprender de correcciones. Si eso se logra, el segundo ERP se abstrae desde evidencia, no desde imaginación.
V3 acepta acoplamiento explícito a Holded en I1. Eso reduce elegancia arquitectónica pero aumenta capacidad de entrega. El riesgo es que Holded contamine el Motor. La mitigación es contrato Internal Plan estricto y revisión de las 5 reglas de oro en cada PR relevante.
El LLM decide y genera planes. No ejecuta. Esto asume que el coste y variabilidad del LLM son aceptables antes de calcificar. T3 reduce coste con el tiempo. El executor determinístico reduce riesgo de acciones irreversibles.
La calcificación gobernada será más lenta que auto-learning. Es intencional. En contabilidad, una regla equivocada aplicada mil veces no es una mejora de producto; es deuda operativa y riesgo de confianza.
Usar Holded como superficie principal evita obligar al contable a duplicar trabajo en Intelia. Pero también reduce control visual sobre la experiencia. T4 y trazabilidad estructural (link + tag + comment) son el precio para que esta decisión sea viable.
Esto protege niveles, pero puede duplicar mecánicas de reglas entre Motor (M1.RuleStore) e integrador (I1.PlanStore). La mitigación es T3 común como framework de ciclo de vida, con stores propietarios por nivel.
| Surface | Latencia | Control del contable | Señal para T3 |
|---|---|---|---|
| Holded auto (alta confianza) | Inmediato | Pasivo (reacciona si ve algo raro) | Inactividad N días o edición |
| Dashboard Intelia (baja confianza) | Espera al contable | Activo (aprueba o edita explícito) | Aprobación explícita |
Auto es mejor UX a largo plazo; dashboard es mejor señal de aprendizaje. No hay versión perfecta — hay calibración constante del umbral de confianza.
Si el Internal Plan empieza a incluir primitivas ejecutables genéricas, V3 recrea el target V2. Mitigación: el Internal Plan debe describir intención y constraints, no operaciones. Cualquier campo que parezca POST_X o ENSURE_Y debe justificarse o moverse al integrador.
El agente Holded puede sentirse tentado a corregir cuentas o tratamiento fiscal porque ve datos del ERP. Mitigación: guías Holded sin semántica, prompts con frontera explícita, validación que detecte cambios semánticos no autorizados, y tests de contrato.
Un proveedor puede parecer estable hasta que cambia el concepto. Mitigación: scopes estrechos, periodo de sombra, invalidación por T4, explicación de matching y umbrales conservadores al principio.
Si todo cambio en Holded se interpreta como aprendizaje, ops se satura. Mitigación: clasificación por severidad, ventanas de observación, deduplicación, sampling y colas separadas de "acción requerida" vs "telemetría".
Si algunas acciones se revisan en Intelia y otras en Holded sin trazabilidad clara, el contable pierde confianza. Mitigación: cada objeto escrito en Holded debe tener enlace/tag a Intelia, y Pending Plans debe mostrar qué pasó después.
Temporal debe orquestar, no decidir. Mitigación: workflows finos en persistencia de estado operacional, actividades con servicios de dominio, señales tipadas y prohibición de lógica contable sustantiva en workflows.
V3 debe medirse con métricas que reflejen la frontera:
La métrica central no es "auto-contabilización bruta". Es auto-contabilización estable sin corrección posterior relevante.
Aunque este documento es conceptual, la arquitectura sugiere un orden:
erp_executor.py.El peligro sería empezar por la automatización final. La base real es la trazabilidad. Sin trazabilidad, no hay aprendizaje fiable.
El Motor decide. El integrador traduce. El executor ejecuta. El SoR persiste. T3 calcifica patrones por nivel. T4 devuelve señales estructuradas desde la realidad. S1 mueve al humano entre Intelia y Holded según confianza. TX hace que todo esto sea durable, observable e idempotente.
| Empieza por... | Si tu objetivo es... |
|---|---|
m1-motor.md |
Entender qué decide Intelia y cómo se separa de la integración |
i1-integrator-holded.md |
Entender cómo se gestiona la cicatriz Holded sin contaminar el SoA |
t3-calcification.md |
Entender el loop de aprendizaje y por qué es componente de primera clase |
t4-reverse-sync.md |
Entender cómo el SoA aprende del criterio del contable |
s1-ux-hybrid.md |
Entender el bootstrap híbrido (dashboard → Holded auto) |
tx-signals-temporal.md |
Entender la plumería durable y observable |
Síntesis de las versiones paralelas de Claude (../v3-conceptual-claude/) y Codex (../v3-conceptual-codex/). Documentos individuales preservados para auditoría.