> Esta traducción se ofrece por comodidad. El texto normativo es el original en inglés. # MMAS-Interchange - Formato de intercambio del Meta-Universo (MUIF) **Especificación del Meta-Universo** **ID del documento:** MU-V2-ARCH-009 **Título:** Formato de intercambio del Meta-Universo (MUIF) y huella semántica **Clase de documento:** normativo **Versión:** 2.0 (borrador) **Estado:** borrador de trabajo **Referencias normativas:** [MMAS-Core](../02-architecture/MMAS-Core.md), [Versioning](../02-architecture/Versioning.md), [Naming-Conventions](../02-architecture/Naming-Conventions.md), RFC 8785 (JSON Canonicalization Scheme), RFC 2119 **Referencias informativas:** [Validation](../02-architecture/Validation.md), [MMAS-Package](../02-architecture/MMAS-Package.md), [Extension-Model](../02-architecture/Extension-Model.md) **Copyright:** © Orkestron.AI **Licencia:** Apache-2.0 --- # 1. Propósito Este documento define el **Formato de intercambio del Meta-Universo (MUIF)**, la serialización canónica y legible por máquina de un meta-modelo, y el **algoritmo de canonicalización** exacto que se usa para calcular una **huella semántica** reproducible. MUIF es la cara concreta del modelo abstracto definido por [MMAS-Core](../02-architecture/MMAS-Core.md). Es el artefacto fundacional del que dependen la validación, el empaquetado, la migración, las comprobaciones previas de federación y el instrumental: sin una forma canónica única, la huella semántica a la que se remite toda la especificación no sería reproducible entre implementaciones, y «nativo de IA» y «legible por máquina» seguirían siendo afirmaciones en lugar de hechos. --- # 2. Alcance Este documento especifica: - el modelo de documento MUIF y su serialización (JSON, con YAML permitido); - las definiciones de JSON Schema para cada primitivo y para el manifiesto; - la separación entre contenido **semántico** y **no semántico**; - el algoritmo de canonicalización y la huella semántica. No define el transporte (véase [MUFP](../03-federation/MUFP.md)) ni el empaquetado y la firma (véase [MMAS-Package](../02-architecture/MMAS-Package.md)). --- # 3. El modelo de documento MUIF Un documento MUIF codifica la **jerarquía de composición** de MMAS: ```text Meta-Model (manifest) ├── Bundles ── Layers ├── Objects ── Properties ├── Relationships ├── Events ├── Contracts └── Projections ``` El punto de entrada es un **manifiesto**. Cada primitivo lleva un discriminador `muifType` (`Object`, `Relationship`, `Event`, `Contract`, `Projection`). Los esquemas JSON normativos (Draft 2020-12) residen en [`/schemas`](../schemas/): | Esquema | Primitivo | |--------|-----------| | `manifest.schema.json` | Punto de entrada del paquete de Meta-Modelo | | `object.schema.json` | Objeto | | `relationship.schema.json` | Relación | | `event.schema.json` | Evento | | `contract.schema.json` | Contrato | | `projection.schema.json` | Proyección | | `common.schema.json` | Definiciones compartidas (CSN, identificador, procedencia, …) | Un documento MUIF DEBERÁ validar contra `manifest.schema.json` (que referencia a los demás). --- # 4. Serialización - La serialización canónica es **JSON** (RFC 8259) en UTF-8. - **YAML** 1.2 PUEDE usarse para la autoría; DEBERÁ ser convertible sin pérdidas al modelo JSON. La huella semántica se define sobre el modelo JSON, de modo que la elección entre JSON y YAML NO DEBERÁ afectar a la huella. - Los identificadores y los nombres semánticos canónicos siguen [Naming-Conventions](../02-architecture/Naming-Conventions.md). --- # 5. Contenido semántico frente a no semántico La huella semántica se calcula únicamente sobre el **núcleo semántico**. Lo siguiente es **no semántico** y DEBERÁ excluirse de la canonicalización: - claves de objeto: `displayName`, `description`, `documentation`, `comment`, `label`, `labels`, `ui`, `assertedAt`, `assertionTime`, `generatedAt`, `lastModified`, `fingerprint`, `examples`, `$schema`, `$comment`; - cualquier clave que empiece por `_` o por `x-ui`. Justificación: cambiar una etiqueta legible por personas, una descripción, una marca de tiempo de registro o la huella autodeclarada NO DEBE cambiar el significado de un modelo y, por tanto, NO DEBE cambiar su huella. Cada esquema marca esos campos como **NON-SEMANTIC** en su descripción. --- # 6. Algoritmo de canonicalización Dado un documento MUIF, la forma canónica se produce así. 1. **Analizar** el documento hasta obtener un valor abstracto (objeto / array / cadena / número / booleano / null). 2. **Proyectar al núcleo semántico.** Eliminar recursivamente toda clave no semántica (Sección 5). Eliminar las claves cuyo valor sea `null`, un objeto vacío o un array vacío: *ausente* y *vacío* se tratan como equivalentes. 3. **Normalizar valores.** - Las cadenas DEBERÁN normalizarse a Unicode **NFC**. - Las **claves de objeto** DEBERÁN ordenarse por punto de código Unicode ascendente (ordinal). - Los **arrays DEBERÁN tratarse como conjuntos**: cada elemento se canonicaliza y luego los elementos se ordenan por comparación ordinal de su cadena canónica. (El modelo básico de la v1.0 no usa secuencias en las que el orden sea significativo; una revisión futura PUEDE introducir una marca explícita de array ordenado, véase Direcciones futuras.) - Los enteros DEBERÁN emitirse en la forma decimal más corta, sin ceros a la izquierda ni un `+` inicial. Los demás números siguen el formato numérico de RFC 8785 (JSON Canonicalization Scheme). 4. **Serializar** el árbol normalizado a JSON canónico: UTF-8, claves ordenadas, sin espacios insignificantes, escapado de cadenas JSON según RFC 8785. 5. **Hashear.** Calcular `SHA-256` sobre los bytes UTF-8 del JSON canónico. La **huella semántica** es: ```text sha256: ``` Dos documentos MUIF con el mismo núcleo semántico DEBERÁN producir la misma huella, con independencia del formato de serialización, del orden de claves, del orden de los arrays-conjunto, de los espacios en blanco y de los campos no semánticos. --- # 7. Ejemplo resuelto El ejemplo de referencia [`/examples/minimal-person`](../examples/minimal-person/) contiene el mismo modelo en dos serializaciones muy distintas (`person.muif.json` y un `person.variant.json` deliberadamente reordenado y con campos no semánticos adicionales). Ambos producen una huella idéntica: ```text sha256:a628b2afb96dc673f7e2f9161569e573fc70892d10a6997fad7aaa14b04a639d ``` Esto lo verifica la herramienta de referencia [`mu-fingerprint`](../tools/): ```text mu-fingerprint examples/minimal-person/person.muif.json mu-fingerprint examples/minimal-person/person.variant.json # → identical sha256:a628b2af...b04a639d ``` --- # 8. Conformidad Un documento es **conforme con MUIF** cuando: - valida contra `manifest.schema.json` y los esquemas referenciados; - todo primitivo declara su `muifType`, su `id` y los campos obligatorios; - su huella semántica, cuando se autodeclara en `metaModel.fingerprint`, coincide con el valor calculado por el algoritmo de canonicalización de la Sección 6. Un meta-modelo DEBERÁ poder intercambiarse como MUIF para reclamar conformidad MMAS de nivel **A4 Validado** o superior (véase [MMAS-Conformance](../02-architecture/MMAS-Conformance.md)). --- # 9. Invariantes arquitectónicos - La huella semántica DEBERÁ calcularse únicamente sobre el núcleo semántico. - La huella DEBERÁ ser independiente de la serialización, del orden de claves, del orden de los conjuntos, de los espacios en blanco y de los campos no semánticos. - Un cambio de significado DEBERÁ cambiar la huella; un cambio de formato o de etiquetas NO DEBERÁ hacerlo. - `metaModel.fingerprint` DEBERÁ excluirse de su propio cálculo. --- # Direcciones futuras - **Cumplimiento pleno de RFC 8785** para todas las formas numéricas, y un conjunto de vectores de prueba de conformidad para la canonicalización (que alimenta el kit de pruebas semánticas). - **Marcado de arrays ordenados** para los casos raros en que el orden del array es semánticamente significativo. - **MUIF / SDP firmado**: firmas separadas sobre los bytes canónicos, que habilitan el Paquete de distribución semántica (véase [MMAS-Package](../02-architecture/MMAS-Package.md)). - Un **metamodelo MMAS** formal (gramática) a partir del cual se generen los esquemas. --- # Declaración final > Un modelo significa lo mismo con independencia de cómo se escriba. MUIF lo hace preciso: una forma canónica, una huella, de modo que dos sistemas puedan coincidir en que hablan exactamente del mismo significado antes de intercambiar un solo hecho.