Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Pre-alpha Breaking changes are expected. Verify Agencia Estatal de Administración Tributaria (AEAT) deadlines before filing. Updates Latest download Report an issue
CADRUMO docs
Getting started CLI reference How it works
ES
  • English
  • Español
  • Català
  • Magyar
Cadrumo documentation - local Spanish tax preparation
  • Primeros pasos
  • Obtén Cadrumo
  • Instalar Cadrumo
  • Guía rápida
  • Conecta un agente (MCP)
  • Primera presentación trimestral
  • El año del IRPF
  • El año del IVA

Tu perfil

  • Configurar un perfil
  • Autenticarse con la AEAT
  • Mantener los datos censales
  • Qué modelos te corresponden
  • Proteger el acceso a los datos

Tu calendario

  • Calendario de presentaciones
  • Notificaciones de la AEAT
  • Preparación para presentar

Tu ledger

  • Trabajar con transacciones
  • Clasificar transacciones
  • Clasificar con un LLM
  • Adjuntar facturas y recibos
  • Gestionar facturas de la actividad
  • Corregir errores
  • Deducciones de IVA en prorrata

Tus presentaciones

  • El flujo de trabajo de presentación
  • Modelo 036 (censo)
  • Modelo 100 (Renta)
  • Modelo 130 (pago fraccionado del IRPF)
  • Modelo 303 (IVA)
  • Modelo 349 (intracomunitario)
  • Modelo 390 (resumen anual de IVA)
  • Entradas del cálculo
  • Revisión con Google Sheets
  • Verificar una presentación
  • Presentar en la AEAT
  • Conciliar una presentación

Ayuda

  • Resolución de problemas
  • Publicar la autoridad de ejecución
  • Aviso legal

Referencia

  • CLI reference
  • Referencia de Cadrumo
    • Identidad y nomenclatura
    • Importación, exportación y evidencia
    • Comandos y configuración
    • Sistema de archivos, estado y seguridad
    • Registro, fuentes legales y API de Python
    • Environment overrides
  • Glossary
  • Casilla reference
  • Legal reference

Cómo funciona

  • Visión general

Proyecto

  • Actualizaciones y descargas
  • Arquitectura
  • Guía de redacción
Back to top
View this page
Edit this page
Home/Referencia de Cadrumo/Registro, fuentes legales y API de Python

Registro, fuentes legales y API de Python¶

La Agencia Estatal de Administración Tributaria (AEAT) es la titular de la estructura oficial de los modelos. API significa interfaz de programación de aplicaciones.

Consulta del registro y de las fuentes legales¶

El registro de cálculo de Cadrumo conserva la estructura de la AEAT que representa: los identificadores de modelo, los periodos, las secciones, las casillas, las fórmulas, los bindings, las clasificaciones y las referencias de origen mantienen el nombre de la autoridad. Una revisión de cálculo resuelta registra la revisión del registro que usó, para que una revisión posterior pueda identificar el conjunto exacto de reglas.

Campo de referencia

Significado

Revisión del registro

Revisión exacta de reglas incluida que se usó para el cálculo

Fórmula o binding

Ruta determinista desde los valores de origen hasta una casilla

legal_refs

Disposiciones legales que fundamentan una regla o un hallazgo

source_refs

Manual oficial o material de origen que respalda la implementación

Procedencia de la evidencia

Registro local, documento, observación o revisión presentada anterior que aportó un valor

Publicación de la autoridad de ejecución¶

La autoridad de ejecución es la publicación con resumen verificado del registro validado de la AEAT, destinada a los cálculos instalados y a las exportaciones de declaraciones. Es contenido generado con dos archivos: authority.current.json es un descriptor canónico pequeño, y su miembro database nombra la carga útil exacta authority-<database_sha256>.sqlite3 que hay junto a él. El descriptor y la base de datos se admiten juntos; la base de datos se abre en modo solo lectura y no se hidrata en un único grafo de modelo para todo el proceso.

El par se resuelve desde un directorio, y cuál sea ese directorio depende de cómo se haya instalado Cadrumo. Una distribución instalada lo lleva en cadrumo/_data/registry/authority/ y lo resuelve ahí sin configuración. Una copia de trabajo publica la suya en .authority/ en la raíz del repositorio, que está excluido del control de versiones, y la nombra con la variable de entorno CADRUMO_AUTHORITY_ROOT. Cuando esa variable está definida, es la respuesta completa: la resolución lee el directorio indicado y no recurre a la ubicación empaquetada, de modo que una copia de trabajo no puede responder en silencio con bytes empaquetados que creía haber reemplazado. Un directorio que no contiene descriptor es una negativa que nombra el comando de publicación, no una autoridad vacía. Consulta Publicar una autoridad de ejecución validada.

Término

Significado

Candidato validado

Las entradas del registro y de las evidencias de origen aceptadas por el compilador de desarrollo.

Recibo de fuentes

Contenido del registro y de las evidencias de origen relativo a la raíz, incluidas las evidencias complementarias mantenidas manualmente.

Recibo del compilador

Código relevante de Cadrumo y del compilador, manifiestos de dependencias, versión mayor/menor de Python y versiones de Pydantic.

Recibo de componentes

Los recibos de fuentes y de compilador vinculados a una única generación de autoridad completa y nueva.

Resumen de identidad

La combinación direccionada por contenido de esos recibos, registrada para poder detectar un artefacto obsoleto.

Descriptor de autoridad

El selector reemplazado atómicamente que contiene el nombre base de la base de datos, el número de bytes, el SHA-256 físico y la generación lógica.

Base de datos de autoridad

La publicación SQLite direccionada por contenido que contiene los componentes tipados, las filas de dependencias y el manifiesto completo.

El formato del descriptor es cadrumo-authority-descriptor-v1; sus miembros exactos son format, database, database_size, database_sha256 y logical_generation. El formato de la base de datos es cadrumo-authority-sqlite-v1. Su manifiesto vincula la generación lógica y el directorio completo de componentes. El resumen físico de la base de datos es a la vez la comprobación de admisión del descriptor y el nombre de archivo direccionado por contenido, de modo que una carga útil modificada o en colisión se rechaza antes de que empiece el trabajo del entorno de ejecución.

El comando de publicación de desarrollo es python -m dev.registry.pipeline publish-authority. Escribe en la raíz de autoridad configurada y se niega en lugar de elegir una ubicación cuando no hay ninguna configurada; su opción --destination selecciona en su lugar un directorio de autoridad aislado. Los valores personalizados de --registry-root o --source-root deben acompañarse de un --profile-schema explícito. El paquete del producto que lleva los comandos no tiene ningún comando que compile o repare esta publicación.

El recibo de fuentes pliega la ruta relativa a la raíz y el resumen de contenido de cada archivo de registro y de evidencia de origen. Los archivos de registro convierten CRLF en LF; la evidencia de origen es exacta byte a byte. El recibo del compilador también cambia con el código fuente relevante, pyproject.toml, uv.lock, la versión mayor/menor de Python o las versiones instaladas de pydantic y pydantic-core. Una copia nueva del repositorio en el mismo entorno declarado es estable, sin prometer identidad entre entornos de compilación incompatibles.

Cada carga útil de componente es una proyección canónica compacta de un valor de autoridad tipado. Los campos obligatorios siempre se escriben; un campo solo se omite cuando su valor tipado coincide con el valor predeterminado declarado por su esquema. La rehidratación estricta restaura esos valores predeterminados. Los discriminadores y las grafías de las uniones definidas por la autoría permanecen en la representación transmitida, por lo que la compactación nunca adivina qué variante tipada debe construir. Los decimales y las fechas son cadenas JSON cuando el esquema tipa un campo como decimal o fecha. Un valor de hecho gobernado puede ser texto, un entero, un decimal, un booleano o una fecha, y JSON no puede distinguirlos solo por su valor. Por tanto, todo valor de hecho no textual se escribe como un objeto con una etiqueta que identifica su tipo:

Valor del hecho

Se escribe como

Decimal

{"$decimal": "0.40"}

Fecha

{"$date": "2025-01-01"}

Entero

{"$int": 5}

Booleano

{"$bool": true}

Texto

La cadena JSON sin etiqueta, por ejemplo "0.40"

El entorno de ejecución descodifica la carga útil conforme al mismo esquema estricto que utiliza el compilador de desarrollo. Rechaza una etiqueta desconocida, un valor etiquetado malformado o no canónico y un valor de hecho no textual sin etiqueta; nunca infiere un tipo a partir de la forma de una cadena.

El compilador, y no el entorno de ejecución del producto, expande las diferencias de autoría en revisiones canónicas completas. La base de datos también lleva catálogos tipados del entorno de ejecución para la normativa del IVA, las reglas del lugar de realización, los alias de países, los territorios postales españoles, las exclusiones territoriales, las bandas de recargo y los ámbitos de apoderamiento. Son registros congelados del esquema, no bytes TOML incrustados ni un contenedor JSON sin tipo. Una escritura o lectura rechaza una autoridad cuando cualquier catálogo obligatorio del entorno de ejecución está vacío.

Los tipos de Modelo y del dominio fiscal validan la sintaxis estable de los identificadores sin cargar el árbol de autoría. La autoridad compilada es la fuente de pertenencia y valida esos identificadores frente a sus vocabularios publicados. La misma autoridad proyecta el sobre temporal de soporte compartido —floor, horizon y el hard_ceiling opcional— que se utiliza para admitir coordenadas compatibles.

La vía IndexedRegistryAuthority.operation() no compila fuentes, no carga el árbol de autoría sin procesar, no ofrece una ruta de reparación, ni un backend JSON de carga total para el entorno de ejecución, ni una vía alternativa JSON. Un descriptor o una base de datos que falten producen un error de disponibilidad. Un descriptor malformado, un miembro inesperado de la base de datos, un manifiesto incompleto o un componente no válido producen un error de formato. Una discrepancia de resumen del descriptor, de la base de datos o de un componente produce un error de integridad. Estos fallos ocurren antes de que continúen los cálculos o las declaraciones que dependen de la autoridad. Los componentes se cargan solo cuando una operación fijada los solicita; los valores correctos permanecen en una caché acotada al ámbito de la generación.

El punto de control C de desarrollo puede comparar el lector indexado con una línea base JSON explícita de dev.registry.indexed_authority_benchmark. La línea base se escribe a partir del mismo AuthorityArtifact validado en memoria que el candidato exacto, conserva su identidad de generación lógica y decodifica con carga total la misma semántica pública completa de la autoridad. La medición verifica los bytes físicos de la base de datos del descriptor antes de medir. La línea base es un accesorio de medición, no un módulo del producto ni una vía alternativa distribuida. Los resultados numéricos de latencia y memoria siguen pendientes hasta que el punto de control C se ejecute sobre un candidato estable; esta descripción de la API no implica ninguna ganancia medida.

El contrato del entorno de ejecución es para ruedas instaladas en un sistema de archivos ordinario, donde el descriptor y la base de datos SQLite tienen rutas físicas estables. No se admite la ejecución directa por importación desde un zip: SQLite no puede abrir un miembro de archivo comprimido como su base de datos de solo lectura.

python -m dev.registry.conformance integrity rechaza una publicación descriptor/base de datos cuyo resumen de identidad registrado difiere de la identidad del registro activo y de su entorno de compilación. Consulta Publicar una autoridad de ejecución validada para conocer el comando canónico, las garantías de publicación, las comprobaciones de actualidad y la ruta de recuperación.

Formas del contrato de entrada de la presentación¶

La instantánea validada del registro es la autoridad del modelo de lectura para un modelo, año de presentación y periodo. Define las casillas, fórmulas, vinculaciones, campos repetidos, fundamentación y diseño de exportación que exige esa revisión de la presentación. Los registros empresariales de origen siguen siendo propiedad de sus repositorios de dominio cifrados.

Estructura

Revisión del registro

Proyección en tiempo de ejecución

Fórmula o binding

Tipo de origen tipado, selector y agregación

Un valor numérico, enumerado, de texto o de fecha para un identificador de vinculación

Vinculación de fila repetida

Tipo de origen tipado más agrupación, campo de fila y agregación

Valores indexados por identificador de vinculación y por índice de fila que empieza en uno, con filas de detalle validadas

Fórmula

Operandos tipados y operación fundamentada en referencias del registro

Una observación de casilla calculada

Una vinculación no es un bloque de datos al que se pueda adjuntar algo. Es el contrato mediante el que un resolvedor de orígenes inscrito proyecta un registro de origen propio en una de estas formas de entrada de presentación. Los activos extranjeros del Modelo 720 utilizan una proyección inscrita de filas repetidas. La taxonomía de orígenes de vinculaciones no tiene actualmente un miembro de inventario. No hay ningún resolvedor de cálculo inscrito para el InventoryLedger cifrado, por lo que sigue siendo un registro empresarial independiente.

Consulta la referencia de comandos de la aplicación generada para consultar las funciones de cálculo, descripción, informe de verificación y auditoría de Modelo. Usa el glossary para las definiciones dirigidas a contribuyentes.

Consulta de la API pública de Python¶

La API del paquete Cadrumo generada es el punto de entrada para la consulta en Python. Los consumidores públicos importan desde cadrumo y sus fachadas públicas documentadas. El árbol de paquetes generado enumera las superficies admitidas de adaptadores, aplicación, núcleo, dominio, punto de entrada y locales.

No existe un paquete aeat de compatibilidad de importación en Python. Los nombres que contienen aeat dentro del paquete cadrumo identifican el adaptador de la autoridad externa o el vocabulario propio de la autoridad, no una segunda API del producto.

Project notices

Cadrumo is pre-alpha, local-first software. It is not tax advice, is not affiliated with the Agencia Estatal de Administración Tributaria (AEAT), and never replaces official AEAT tools or advice from a qualified professional.

Stay current

  • Critical updates
  • Latest download
  • Release notes

Get help

  • Report an issue
  • CLI reference
  • How it works

Trust and responsibility

  • Disclaimer
  • Events and deadlines
  • Repository
Next
Environment overrides
Previous
Sistema de archivos, estado y seguridad
Copyright © 2026, the Cadrumo authors
Made with Sphinx and @pradyunsg's Furo
On this page
  • Registro, fuentes legales y API de Python
    • Consulta del registro y de las fuentes legales
    • Publicación de la autoridad de ejecución
    • Formas del contrato de entrada de la presentación
    • Consulta de la API pública de Python