Bologna, Italy
(from 8 to 22)

GLM-BD — Manifiesto de Capas de Gobernanza | Boundary Declarations

Propuesta de Especificación Abierta
GLM-BD · schema 1.4 · Septiembre 2026

GLM-BD

Governance Layer Manifest — Boundary Declarations

GLM-BD (Governance Layer Manifest — Boundary Declarations) es una especificación de implementación abierta. Cualquier governance layer, proveedor, proyecto de investigación, arquitectura empresarial, iniciativa académica o framework independiente puede publicar un manifest conforme a GLM sin permisos, requisitos de licencia, registro, aprobación, certificación ni obligaciones de atribución hacia la implementación proponente.

Se fomentan las implementaciones independientes. Las organizaciones que publican un manifest GLM público pueden, opcionalmente, ser citadas en los ejemplos públicos de implementación: Valida aquí tu manifest GLM

🌍 GLM-BD está disponible en cinco idiomas:
🇬🇧 English | 🇮🇹 Italiano | 🇪🇸 Español | 🇩🇪 Deutsch | 🇫🇷 Français

—————

Declaraciones legibles por máquina para los boundaries de los governance layers y la evaluación de la interoperabilidad.

Propuesto por el Dott. Emanuel Celano – Informatica in Azienda – EVIDE Governance Lab
Implementación de referencia: EVIDE (External Evidentiary Deposit) – Implementación proponente inicial

GLM-BD es la designación distintiva de la especificación Governance Layer Manifest (GLM) – no es un fork, no es una segunda arquitectura y no es una especificación separada. Todos los identificadores técnicos, campos de schema y vocabularios legibles por máquina ya publicados bajo el nombre “GLM” (well-known URI, glm_compatibility, schema_family, manifest_kind, canonicalization_id) permanecen sin cambios. GLM-BD da nombre a lo que esa especificación ya es; no la redefine.

El problema: A medida que se multiplican las arquitecturas de governance para sistemas de altas consecuencias, los equipos de compras, los reguladores, los auditores y los sistemas adyacentes no disponen de ningún mecanismo estándar para determinar qué declara un governance layer, qué excluye explícitamente y cómo se compone con otros layers – sin leer documentación extensa ni realizar revisiones arquitectónicas bilaterales.

La propuesta: Un archivo manifest ligero y legible por máquina, publicado en una URL well-known en el dominio de cada governance layer. GLM utiliza la convención well-known URI establecida por IETF RFC 8615 – el mismo mecanismo empleado por security.txt, openid-configuration y declaraciones similares – para que la semántica de los governance layers sea descubrible, hasheable y verificable de forma independiente.

El resultado: La evolución de la governance no debería producirse a costa de la reconstruibilidad. GLM preserva las declaraciones de boundary de la governance como artefactos revisables de forma independiente a lo largo del tiempo, permitiendo a terceros determinar qué declaraba, excluía y exponía un layer cuando se produjo un evento relevante para la governance.

GLM-BD (Governance Layer Manifest — Boundary Declarations): especificación abierta para boundaries de governance legibles por máquina GLM-BD — Governance Layer Manifest — Boundary Declarations

Por qué es importante

Las arquitecturas de governance para sistemas de altas consecuencias se están desarrollando rápidamente. Múltiples layers independientes están convergiendo en torno a preocupaciones institucionales similares: evidencia en tiempo de ejecución, admisibilidad, continuidad, cierre evidencial y suficiencia de la revisión. Sin un mecanismo estándar de declaración, se repiten tres modos de fallo estructural:

  • Revisión de boundary sin semántica declarada: las arquitecturas adyacentes se revisan o comparan frente a estándares de referencia externos sin que el layer revisado haya declarado su propia semántica de interoperabilidad, creando ambigüedades de posicionamiento que podrían haberse evitado.
  • Solapamiento semántico no declarado: los sistemas adyacentes desarrollan vocabulario o descripciones funcionales solapados sin un mecanismo canónico para distinguir el alcance declarado de la convergencia incidental.
  • Ambigüedad en las compras: compradores, auditores y reguladores no pueden determinar de forma segura o coherente qué declara o excluye un governance layer sin leer documentación extensa del proveedor, sujeta a interpretación.
Un governance layer cuyo alcance no puede ser leído por una máquina
no puede componerse de forma segura o coherente sin interpretación humana.

GLM aborda esto publicando una declaración estructurada, versionada y hasheable en una URL well-known predecible – haciendo que la semántica de los governance layers sea descubrible por máquinas sin exigir la sustitución de la documentación legible por humanos.

GLM es infraestructura descriptiva, no un sistema de certificación de interoperabilidad. Un manifest conforme a GLM declara lo que un layer afirma y lo que no afirma. No certifica, aprueba ni valida ningún governance layer frente a ningún estándar externo.
Nota sobre la convención well-known URI: GLM utiliza el mecanismo well-known URI definido por IETF RFC 8615, que formaliza /.well-known/ como espacio URI para metadatos a nivel de sitio. El mecanismo compartido es la convención URI; el contenido y la finalidad son específicos de la interoperabilidad entre governance layers.

Estructura del Manifest

Un punto de entrada conforme a GLM es un archivo JSON publicado en /.well-known/governance-layer-manifest.json en el dominio canónico. A partir del schema 1.3, este punto de entrada puede ser un manifest de layer único o un organization index que apunta a manifests de layers publicados de forma independiente en ubicaciones well-known separadas (véase manifest_kind más abajo). Un manifest de layer único contiene las siguientes secciones principales:

  • schema_version – versión de la especificación del schema GLM (p. ej. “1.4”)
  • manifest_kind – declara si este archivo es un único governance layer ("layer", el valor por defecto) o un artefacto de descubrimiento a nivel de organización ("organization_index"), introducido en el schema 1.3
  • manifest_version – versión de este documento manifest concreto, distinta de la versión del schema GLM (p. ej. “7.0” para el manifest de EVIDE)
  • valid_from – fecha a partir de la cual esta versión del manifest está en vigor (ISO 8601)
  • valid_until – fecha en la que esta versión del manifest fue sustituida, o null si está activa actualmente
  • layer – nombre del producto, propietario, layer_type (vocabulario controlado), descriptor del proveedor
  • timing_axis – posición en el eje bind-time (pre-bind / at-bind / post-bind / cross-cutting)
  • operational_scope – qué hace y qué no hace el layer
  • claims_boundary – claim autoritativo del layer, non-claims explícitos, restricción de boundary para el consumidor, forbidden_interpretations
  • controlling_test – principio normativo de nivel superior para evaluar los claims de interoperabilidad
  • interoperability_doctrine – el principio fundacional de la componibilidad GLM
  • composition – tipos de layer componibles y URLs de manifests declaradas
  • machine_readable_status – boundary_readiness, authority_dependency, execution_capability
  • public_anchors – referencias documentales verificables de forma independiente
  • glm_compatibility – familia de schema, rango de versiones soportadas, políticas de cambio
  • manifest_digest – verificación de integridad del contenido SHA-256 con método de canonicalización y, a partir del schema 1.4, un canonicalization_id opcional despachable por máquina
  • vendor_framework_constructs – bloque opcional para declarar constructos conceptuales definidos por el proveedor con URIs canónicas, sin importarlos al vocabulario controlado GLM

Vocabulario de Layer Type (controlado, extensible)

El campo layer_type utiliza un vocabulario controlado para permitir la comparación automática entre implementaciones. El vocabulario es extensible mediante futuras revisiones del schema. Los nombres específicos del proveedor se declaran por separado en vendor_layer_name y vendor_layer_descriptor.

layer_type Superficie temporal Función operativa principal
substrate Pre-bind (continuo) Registra el historial de comportamiento y lo expone como señal consultable de forma independiente en el momento de la decisión. El método de derivación de la señal lo define la implementación.
witness Antes o en el momento del bind Preserva evidencia comprobable de forma independiente de las condiciones de estado gobernado que rodean el boundary
boundary En el momento del bind Resuelve la admisibilidad en el bind-time de la ejecución, antes de que la consecuencia se confirme
closure Post-bind Estabiliza el estado de cierre portador de responsabilidad como artefacto verificable externamente que no requiere acceso al sistema de origen para su interpretación
reviewability Post-closure Comprueba si los artefactos producidos por otros layers cumplen las condiciones para una revisión independiente sin acceso al entorno de origen. Opera como condición de propiedad transversal, no como layer de control en tiempo de ejecución.
cross_cutting Declarada por superficie Opera en múltiples posiciones temporales. Debe declarar explícitamente cada superficie en timing_axis.surfaces[] con alcance operativo independiente por superficie.
formation Pre-bind (source-anchored) Establece que las condiciones declaradas deben cumplirse en todas las rutas de ejecución, con cuantificación universal, antes de que ocurra cualquier ejecución específica. Es un objeto de prueba, no un layer de control en tiempo de ejecución.
Cada propietario de layer conserva plena libertad para usar sus propios vendor_layer_name y vendor_layer_descriptor. El vocabulario controlado layer_type permite la comparación de interoperabilidad sin exigir a los proveedores que adopten terminología externa para sus propios productos.
Calificadores temporales: la columna de superficie temporal puede llevar un calificador entre paréntesis para refinar la posición declarada sin introducir un nuevo valor de posición. continuous (en substrate) indica un funcionamiento persistente a lo largo de la línea temporal. source-anchored (en formation) indica que el marco de referencia temporal es el artefacto fuente, no un evento de bind: la salida está anclada a una fuente y se mantiene para cada bind de esa fuente. Un lector resuelve el calificador según esta definición sin requerir documentación adicional.

Definiciones de Campos Clave

responsibility-bearing closure state (estado de cierre portador de responsabilidad): la configuración responsable que existe en el momento en que una decisión finalizada y atribuible cruza un boundary evidencial – incluidas las condiciones de autoridad declaradas, las condiciones de supervisión y el estado de calidad observacional. Este estado es específico del momento del cruce y no puede reconstruirse a partir de artefactos posteriores sin perder su valor evidencial.

externally verifiable artifact (artefacto verificable externamente): un artefacto estructurado de modo que un revisor independiente pueda interpretarlo y verificarlo sin acceso al sistema de origen, a sus operadores ni a su contexto de ejecución. La verificación no debe depender de la explicación del productor.

authoritative_layer_claim: una única frase que declara qué hace este layer que ningún layer adyacente afirma hacer. Utilizado por los sistemas de compras y de composición para determinar el no solapamiento sin requerir una revisión bilateral.

consumer_boundary_constraint: una declaración de lo que los consumidores posteriores no deben inferir de las salidas de este layer. Distinto de los non-claims – la restricción de boundary para el consumidor aborda cómo pueden y no pueden usarse las salidas tras su recepción.

forbidden_interpretations: un array legible por máquina de usos semánticos explícitamente prohibidos para las salidas de este layer. Distinto de explicit_non_claims (que declara lo que el layer no hace) – forbidden_interpretations declara lo que los sistemas posteriores no deben concluir ni inferir de las salidas del layer. Permite la validación automatizada frente al colapso semántico.

controlling_test: un principio normativo de nivel superior para evaluar los claims de interoperabilidad. Declarado en la raíz del manifest (no dentro de claims_boundary) porque se aplica como postura general de governance en todas las secciones del manifest, no solo al claims boundary. En la v1.0 es un principio legible por humanos, no una restricción ejecutable por máquina.

interoperability_doctrine: el principio filosófico fundacional de la componibilidad GLM, declarado como campo de nivel superior. GLM no establece interoperabilidad entre sistemas. Hace que el boundary, los claims, los non-claims y las condiciones de componibilidad de un governance layer sean legibles por máquina y legibles de forma independiente, de modo que la interoperabilidad potencial entre layers pueda evaluarse mediante la inspección y comparación de sus manifests – no mediante acuerdos bilaterales de integración entre proveedores.

glm_compatibility: declara la familia de schema y el rango de versiones soportadas para este manifest. Permite a los ecosistemas multiactor verificar la compatibilidad declarada con el schema GLM sin requerir comunicación directa entre implementadores. El campo schema_family identifica explícitamente el framework GLM (no la versión del layer del proveedor) como referencia para las declaraciones de compatibilidad.

supersedes / supersedes_digest: campos de cadena de custodia para el versionado del manifest. A partir del schema 1.2, supersedes es un objeto estructurado que declara el digest SHA-256 de la versión anterior y la url pública de archivo. El manifest anterior referenciado sigue siendo la fuente autoritativa de sus propios valores de valid_from y valid_until. El campo supersedes_digest en la raíz se mantiene por retrocompatibilidad con las herramientas de los schemas 1.0 y 1.1. Cuando ambos campos están presentes, supersedes_digest DEBE coincidir con supersedes.digest. Un manifest en el que estos valores difieren es no conforme.

La finalidad arquitectónica de esta cadena va más allá del versionado técnico. Las versiones anteriores del manifest deben permanecer públicamente accesibles en la URL declarada en supersedes.url. Esto permite a cualquier parte independiente – incluidos los auditores externos – recuperar la declaración exacta que estaba en vigor durante un periodo específico, verificar su integridad mediante el digest y reconstruir la cadena completa de versiones sin depender del relato retrospectivo del propietario del layer.

Convención de nomenclatura del archivo (recomendada): Para mejorar la descubribilidad y la interoperabilidad de las herramientas, las versiones archivadas del manifest DEBERÍAN publicarse usando la siguiente convención de nomenclatura: /.well-known/archive/governance-layer-manifest-v{manifest_version}.json. Ejemplos: /.well-known/archive/governance-layer-manifest-v4.json, /.well-known/archive/governance-layer-manifest-v5.json. La convención no es obligatoria. Las implementaciones pueden usar estructuras de archivo alternativas cuando las restricciones operativas lo requieran. Sin embargo, la convención recomendada permite a auditores, sistemas de compras, validadores y herramientas de interoperabilidad localizar las versiones históricas del manifest de forma predecible sin requerir documentación adicional. La ubicación autoritativa de un manifest anterior sigue siendo la URL declarada en supersedes.url. Las herramientas DEBEN basarse en supersedes.url en lugar de construir URLs a partir de la convención de nomenclatura. Se anima a los implementadores a usar valores de manifest_version monótonamente crecientes para facilitar la ordenación del archivo y la recuperación automatizada.

valid_until: declarado en la raíz del manifest, este campo registra la fecha en la que este manifest dejó de ser la declaración activa. DEBE ser null en el manifest activo actualmente y solo se rellena cuando la versión se archiva. No debe usarse para predeclarar una fecha de caducidad futura.

manifest_digest vs manifest_signature: GLM v1.0 utiliza manifest_digest (SHA-256 del archivo tal como se sirve) para la verificación de integridad del contenido. Una manifest_signature (firma criptográfica que vincula el digest a una identidad) se declara por separado cuando está disponible. El digest verifica la integridad del contenido; la firma verifica la autoría.

Vocabulario de machine_readable_status: los valores de boundary_readiness (stable | provisional | experimental) y reviewability_state (portable | partial | environment_dependent) son vocabularios de trabajo propuestos en la v1.0. Todavía no son enumeraciones normativas definidas por un organismo de estandarización. Futuras revisiones del schema podrán formalizar estos vocabularios.

boundary_readiness – definiciones (aclaración): boundary_readiness describe el estado de madurez/estabilidad de la propia definición del boundary declarado – su clasificación estructural y el contenido de sus campos – y nada más. Es independiente de la madurez operativa del sistema subyacente, del estado de deployment, de la capacidad de ejecución, de la reviewability de los outputs, de la autoridad, de la interoperabilidad, del cumplimiento normativo, o de la veracidad de cualquier claim.

  • stable – La definición del boundary está consolidada y sujeta a control explícito de versión/cambio como interfaz declarada estable.
  • provisional – La definición del boundary está especificada en su sustancia y constituye la declaración actualmente vigente para el boundary, pero todavía no ha sido congelada como interfaz declarada estable. Es el contenido de sus campos – no su clasificación estructural (layer_type, timing_axis y el conjunto completo de campos utilizados) – lo que permanece sujeto a revisión.
  • experimental – La definición del boundary se utiliza intencionadamente con fines exploratorios o evaluativos, de modo que es su propia clasificación estructural – incluyendo layer_type, timing_axis, o el enfoque arquitectónico general usado para representar el boundary – lo que permanece bajo examen.
Discriminador entre provisional y experimental: qué nivel de la declaración está actualmente sin resolver. Si la clasificación estructural está fijada y solo el contenido de los campos dentro de ella sigue en revisión, la declaración es provisional. Si es la propia clasificación estructural – layer_type, timing_axis, o el enfoque arquitectónico – la que permanece bajo examen, la declaración es experimental. Esta distinción depende de un hecho actualmente observable sobre el estado presente de la declaración, no de una intención declarada o no declarada sobre su evolución futura.

Las declaraciones de componibilidad son unilaterales – un layer puede declarar compatibilidad con un layer adyacente sin que esa declaración sea recíproca. Las herramientas que obtienen ambos manifests pueden determinar si la componibilidad está declarada mutuamente.

vendor_framework_constructs: un bloque opcional que permite al propietario de un layer declarar públicamente constructos conceptuales definidos por el proveedor, sin importarlos al vocabulario controlado GLM. Cada constructo lleva una canonical_uri para el aislamiento del namespace, un vendor_local_alias para la legibilidad, una label, una descripción purpose y una version. El bloque incluye forbidden_interpretations para evitar la herencia semántica o la interoperabilidad implícita por parte de sistemas posteriores. El campo purpose es descriptivo, no normativo. Declara la intención operativa definida por el proveedor para el constructo y no debe interpretarse como comportamiento semántico estandarizado.

manifest_kind / organization_index: a partir del schema 1.3, un manifest puede declarar manifest_kind: "organization_index" en lugar del valor por defecto implícito "layer". Un organization index no es un governance layer. No declara ningún claims_boundary, no ocupa ninguna posición en timing_axis y no formula ningún claim de governance. Su única función es el descubrimiento: enumera las URLs de los manifests de los layers GLM publicados de forma independiente pertenecientes a la misma organización, opcionalmente anclados por el digest de cada manifest enumerado. Un organization index DEBE declarar timing_axis: null y DEBE declarar forbidden_interpretations que cubran como mínimo organization_as_layer, authority_transfer_between_listed_layers, implied_composability e interoperability_certification. Cada layer referenciado por un organization index sigue siendo un manifest completo e independiente conforme a las reglas de los schemas 1.0-1.2, con su propio claims_boundary, su propio timing_axis y su propia cadena supersedes. La componibilidad entre los layers enumerados, si existe, sigue declarándose exclusivamente a través del campo composable_with_manifests de cada layer. El principio rector: un organization index descubre layers. No los compone.

Organization Index (Schema 1.3)

Ejemplo de organization index – solo ilustrativo. EVIDE publica actualmente un único layer y no publica un organization index activo. La estructura siguiente ilustra cómo una organización con múltiples layers independientes declararía un punto de entrada de descubrimiento en su ubicación well-known canónica.
Nota sobre el validador: el validador GLM público todavía no implementa comprobaciones específicas para manifest_kind: "organization_index". Hasta que se añada el soporte en el validador, la conformidad con los requisitos MUST indicados abajo (timing_axis: null, forbidden_interpretations) es autodeclarada por el implementador en lugar de comprobable de forma independiente mediante la herramienta validadora.
{
// This file is NOT a governance layer manifest

“schema_version”: “1.3”,
“manifest_kind”: “organization_index”,
“generated_at”: “2026-06-17T00:00:00Z”,
“organization”: {
“name”: “Your Organization”,
“contact”: “[email protected]”,
“url”: “https://yourdomain.com/”
},
“index_note”: “This file is not a governance layer manifest. It is an organizational entry point that lists independently published GLM layer manifests.”,
“timing_axis”: null,
“timing_axis_note”: “Organization indices do not occupy a position on the timing axis. They are discovery artifacts, not governance functions.”,
“forbidden_interpretations”: [
“organization_as_layer”,
“authority_transfer_between_listed_layers”,
“implied_composability”,
“interoperability_certification”
],
“declared_layers”: [
{
“layer_type”: “closure”,
“vendor_layer_name”: “YourClosureLayer”,
“manifest_url”: “https://yourdomain.com/.well-known/glm/closure.json”,
“manifest_digest”: “<sha256-of-listed-manifest>”,
“status”: “active”
},
{
“layer_type”: “boundary”,
“vendor_layer_name”: “YourBoundaryLayer”,
“manifest_url”: “https://yourdomain.com/.well-known/glm/boundary.json”,
“manifest_digest”: “<sha256-of-listed-manifest>”,
“status”: “active”
}
]
}

Implementación Proponente Inicial

Lo siguiente ilustra la estructura del manifest GLM usando EVIDE como implementación proponente inicial. El manifest completo está disponible en https://www.certifywebcontent.com/.well-known/governance-layer-manifest.json.

Nota sobre el proveedor: EVIDE es la implementación proponente inicial, no la autoridad canónica de la especificación. GLM-BD está diseñado para ser implementado por cualquier governance layer con independencia de EVIDE. La implementación proponente no confiere ningún estatus privilegiado al proveedor proponente.
Nota sobre la versión del schema: el manifest de EVIDE que aparece abajo está publicado en el schema 1.4. Utiliza el canonicalization_id opcional introducido en la 1.4 y no utiliza manifest_kind, ya que EVIDE publica actualmente un único layer y no necesita un organization index. Un manifest de layer no está obligado a adoptar la última versión del schema para seguir siendo conforme – véase glm_compatibility más abajo.
Extracto ilustrativo – no es JSON válido. Los comentarios (//) se incluyen solo para legibilidad. El archivo manifest publicado no contiene comentarios.
{
// Schema identity

“schema_version”: “1.4”, // 1.0: base | 1.1: adds formation + source-anchored | 1.2: supersedes becomes structured object | 1.3: adds manifest_kind | 1.4: adds canonicalization_id
“manifest_version”: “7.0”, // version of your specific manifest document
“valid_from”: “2026-09-05”,
“valid_until”: null, // null = currently active; populated only when archived
“supersedes”: {
“digest”: “<sha256-of-prior-version>”,
“url”: “https://yourdomain.com/.well-known/archive/governance-layer-manifest-v6.json”
},
“supersedes_digest”: “<sha256-of-prior-version>”, // MUST match supersedes.digest — retained for backward compatibility
// Definitions
“definitions”: {
“responsibility_bearing_closure_state”: “…”,
“externally_verifiable_artifact”: “…”
},// Top-level normative principle — applies across the entire manifest
“controlling_test”: “Interoperability must increase reviewability without silently transferring authority across layers.”,// Layer identity
“layer”: {
“layer_type”: “closure”, // controlled vocabulary
“vendor_layer_name”: “EVIDE”, // vendor free field
“vendor_layer_descriptor”: “Post-bind evidentiary stabilization”
},// Timing-axis position
“timing_axis”: { “position”: “post-bind” },// Claims boundary — with machine-readable forbidden interpretations
“claims_boundary”: {
“authoritative_layer_claim”: “…”,
“explicit_non_claims”: [“…”],
“consumer_boundary_constraint”: “…”,
“forbidden_interpretations”: [
“execution_authorization”,
“admissibility_certification”,
“authority_transfer”,
“runtime_approval”,
“correctness_certification”,
“post_bind_authority_validation”
]
},// Foundational interoperability principle — top-level field
“interoperability_doctrine”: “GLM does not establish interoperability. GLM makes interoperability assessable through independently readable boundary declarations.”,// Composition
“composition”: {
“composable_with_types”: [“substrate”, “witness”, “boundary”, “formation”, “reviewability”],
“composable_with_manifests”: [“https://example-formation.org/.well-known/governance-layer-manifest.json”],
“composition_note”: “One sentence on what a submitted object must satisfy to compose with this layer, independent of any specific upstream system.”
},// Machine-readable status
“machine_readable_status”: {
“boundary_readiness”: “stable”,
“reviewability_state”: “portable”,
“authority_dependency”: “external_to_execution_system”, // optional, schema 1.4 — see Status below
“execution_capability”: false
},// GLM schema compatibility declaration
“glm_compatibility”: {
“schema_family”: “GLM”,
“minimum_supported”: “1.0”,
“forward_compatible_until”: “1.x”,
“breaking_change_policy”: “major version increment required”,
“non_breaking_addition_policy”: “minor version increment, backward compatible within major version”
},// Vendor framework constructs — optional
“vendor_framework_constructs”: {
“declared_by_owner”: true,
“scope_note”: “Vendor-defined conceptual references. Not part of the GLM controlled vocabulary.”,
“forbidden_interpretations”: [“semantic_inheritance”, “implied_interoperability”],
“constructs”: [
{
“canonical_uri”: “https://yourdomain.com/docs/your-construct/”,
“vendor_local_alias”: “VENDOR:CONSTRUCT”,
“label”: “Your Construct Name”,
“purpose”: “One sentence describing what the construct observes or produces.”,
“version”: “1.0”
}
]
},// Content integrity — see Canonicalization ID and publishing steps below
“manifest_digest”: {
“type”: “sha256”,
“value”: “<computed-at-publish-time>”,
“canonicalization_id”: “glm-digest-v1”, // optional, schema 1.4 — machine-dispatchable
“canonicalization_method”: “SHA-256 computed over the file as served, with manifest_digest.value set to the placeholder string <computed-at-publish-time> during computation.”
}
}

Cómo Implementar GLM

Publicar un manifest conforme a GLM requiere tres pasos:

① STEP 1
Declara tu layer
Crea un archivo JSON siguiendo el schema GLM actual, o la versión mínima del schema requerida por los campos que utilices. Elige layer_type del vocabulario controlado, o usa cross_cutting con declaraciones explícitas de superficies. Añade libremente tus propios vendor_layer_name y vendor_layer_descriptor. Define timing_axis.position con precisión.

② STEP 2
Escribe tu claims_boundary
Enuncia tu authoritative_layer_claim en una sola frase. Enumera con precisión los explicit_non_claims. Define tu consumer_boundary_constraint – lo que los sistemas posteriores no deben inferir de tus salidas. Opcionalmente declara forbidden_interpretations como array legible por máquina de usos semánticos prohibidos.

③ STEP 3
Publica y calcula el digest

Coloca el archivo en /.well-known/governance-layer-manifest.json en tu dominio canónico, servido con Content-Type: application/json.

Antes de publicar una nueva versión, archiva primero la actual. El procedimiento completo correcto es:

Fase 1 – Archivar la versión actual

  • Por FTP o mediante el gestor de archivos de tu hosting, crea la carpeta /.well-known/archive/ si todavía no existe
  • Mueve el governance-layer-manifest.json actual a la carpeta de archivo
  • Renómbralo a governance-layer-manifest-v{manifest_version}.json – por ejemplo governance-layer-manifest-v5.json
  • Renombrar un archivo no altera su contenido ni cambia su digest SHA-256

Fase 2 – Publicar la nueva versión

  • Crea un nuevo archivo en /.well-known/ llamado governance-layer-manifest.json
  • Pega el contenido del nuevo manifest con todos los campos actualizados y manifest_digest.value establecido en "<computed-at-publish-time>" como placeholder
  • Guarda y sube

Fase 3 – Calcular e insertar el digest

El método a utilizar depende del canonicalization_id que declare tu manifest:

canonicalization_id reconocido (p. ej. glm-digest-v1): usa el algoritmo normativo definido en Canonicalization ID (Schema 1.4) más abajo, o un validador que lo implemente. No uses los comandos de texto/regex que aparecen más adelante para un manifest que declare glm-digest-v1 – son un procedimiento distinto y más antiguo, y no se garantiza que coincidan con el algoritmo normativo en todos los casos.

Ningún canonicalization_id declarado: se aplican los comandos legacy/manuales de sustitución de texto que aparecen abajo.

canonicalization_id no reconocido: no uses los comandos de abajo como alternativa y no adivines una transformación. Informa del método de canonicalización como desconocido/no implementado.

El resto de esta Fase describe el procedimiento legacy/manual, para un manifest que no declara un canonicalization_id:

  • Descarga el archivo del servidor y calcula el digest SHA-256 usando los comandos de abajo
  • Abre la copia local, sustituye el placeholder por el hash calculado y guarda
  • Sube la versión final al servidor, sobrescribiendo la versión con el placeholder
  • Ejecuta los comandos de verificación para confirmar que el digest coincide

Windows PowerShell – calcular el digest:
cd $env:USERPROFILE\Downloads
Invoke-WebRequest -Uri "https://yourdomain.com/.well-known/governance-layer-manifest.json" -OutFile "manifest-v{N}-calc.json"
$content = Get-Content "manifest-v{N}-calc.json" -Raw
$content = $content -replace '"value":\s*"[A-Fa-f0-9]{64}"', '"value": "<computed-at-publish-time>"'
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::WriteAllText("$env:USERPROFILE\Downloads\manifest-v{N}-calc-normalized.json", $content, $utf8NoBom)
Get-FileHash "manifest-v{N}-calc-normalized.json" -Algorithm SHA256

Linux / macOS – calcular el digest:

curl -o manifest-v{N}-calc.json https://yourdomain.com/.well-known/governance-layer-manifest.json
cat manifest-v{N}-calc.json | sed 's/"value": "[A-Fa-f0-9]\{64\}"/"value": "<computed-at-publish-time>"/' > manifest-v{N}-calc-normalized.json
sha256sum manifest-v{N}-calc-normalized.json

Windows PowerShell – verificar:

cd $env:USERPROFILE\Downloads
Invoke-WebRequest -Uri "https://yourdomain.com/.well-known/governance-layer-manifest.json" -OutFile "manifest-v{N}-verify.json"
$content = Get-Content "manifest-v{N}-verify.json" -Raw
$content = $content -replace '"value":\s*"[A-Fa-f0-9]{64}"', '"value": "<computed-at-publish-time>"'
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::WriteAllText("$env:USERPROFILE\Downloads\manifest-v{N}-verify-normalized.json", $content, $utf8NoBom)
Get-FileHash "manifest-v{N}-verify-normalized.json" -Algorithm SHA256

Linux / macOS – verificar:

curl -o manifest-v{N}-verify.json https://yourdomain.com/.well-known/governance-layer-manifest.json
cat manifest-v{N}-verify.json | sed 's/"value": "[A-Fa-f0-9]\{64\}"/"value": "<computed-at-publish-time>"/' > manifest-v{N}-verify-normalized.json
sha256sum manifest-v{N}-verify-normalized.json

Sustituye {N} por la versión numérica del manifest (p. ej. 6, 7) para evitar conflictos de nombre de archivo con descargas anteriores. El hash de verificación debe coincidir con el valor insertado en manifest_digest.value.

En cada revisión, actualiza valid_from, establece valid_until en null en la nueva versión, archiva la versión anterior en una URL pública estable y, a continuación, rellena el objeto supersedes con el digest y la URL de archivo de la versión anterior. Establece supersedes_digest en el mismo valor de digest que supersedes.digest.

Preserva las versiones anteriores: Las versiones anteriores del manifest deben permanecer públicamente accesibles en la URL declarada en supersedes.url. La URL del manifest actual sirve siempre la última versión. Las versiones anteriores deben archivarse en una URL estable y públicamente accesible antes de publicar una nueva versión. Esto es lo que hace posible la reconstrucción independiente en una auditoría – sin el archivo archivado en la URL declarada, la cadena de custodia está declarada pero no es reconstruible.
Ruta de archivo recomendada: /.well-known/archive/governance-layer-manifest-v{manifest_version}.json – por ejemplo /.well-known/archive/governance-layer-manifest-v5.json. Usar valores de manifest_version monótonamente crecientes garantiza que la ordenación del archivo siga siendo predecible.
Múltiples series de manifests: Los implementadores que gestionen múltiples series de manifests en el mismo dominio DEBERÍAN usar nombres de archivo well-known distintos para cada serie, por ejemplo /.well-known/governance-layer-manifest.json, /.well-known/governance-layer-manifest-lab.json o /.well-known/governance-layer-manifest-enterprise.json. La URL canónica de cada manifest actúa como identificador de esa serie de manifests, y cada serie mantiene su propia cadena supersedes.
Referencia del schema: El schema GLM canónico se alojará en una ubicación neutral respecto al proveedor. Referencia provisional actual: certifywebcontent.com/supervised-ai/governance-layer-manifest/. Esta referencia se actualizará cuando se establezca una ubicación de alojamiento neutral.

Verificación Independiente

Cualquier tercero puede verificar de forma independiente que un manifest GLM publicado no ha sido alterado desde que se calculó su digest. La verificación no requiere herramientas especiales – solo una shell de línea de comandos y los comandos de abajo.

La verificación funciona descargando el archivo en vivo, sustituyendo el valor del digest declarado por el placeholder estándar, calculando el SHA-256 del archivo normalizado y comparando el resultado con el valor declarado en manifest_digest.value. Si coinciden, el archivo está intacto.

El procedimiento aplicable depende del canonicalization_id declarado por el manifest (introducido en el schema 1.4):

canonicalization_id reconocido (p. ej. glm-digest-v1): la verificación debe seguir el algoritmo normativo asociado a ese identificador – véase Canonicalization ID (Schema 1.4) más abajo – o usar un validador que lo implemente. El procedimiento manual de esta página no es ese algoritmo y no se garantiza que coincida con él en todos los casos.

Ningún canonicalization_id declarado: puede usarse el procedimiento manual de abajo. Su resultado es una verificación legacy/manual, no un recálculo frente a un algoritmo normativo despachable por máquina.

canonicalization_id no reconocido: no recurras al procedimiento manual como alternativa y no adivines. Informa del método de canonicalización como desconocido/no implementado.

Los pasos siguientes son la ruta de verificación legacy/manual. Son anteriores a canonicalization_id y localizan manifest_digest.value mediante sustitución de texto en lugar de mediante la ubicación estructural JSON Pointer, y no gestionan la sustitución de manifest_signature.value. Siguen siendo válidos para cualquier manifest que no declare un canonicalization_id.

① STEP 1
Descarga, normaliza y calcula

Windows PowerShell:

cd $env:USERPROFILE\Downloads
Invoke-WebRequest -Uri "https://yourdomain.com/.well-known/governance-layer-manifest.json" -OutFile "manifest-verify.json"
$content = Get-Content "manifest-verify.json" -Raw
$content = $content -replace '"value":\s*"[A-Fa-f0-9]{64}"', '"value": "<computed-at-publish-time>"'
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::WriteAllText("$env:USERPROFILE\Downloads\manifest-verify-normalized.json", $content, $utf8NoBom)
Get-FileHash "manifest-verify-normalized.json" -Algorithm SHA256

Linux / macOS:

curl -o manifest-verify.json https://yourdomain.com/.well-known/governance-layer-manifest.json
cat manifest-verify.json | sed 's/"value": "[A-Fa-f0-9]\{64\}"/"value": "<computed-at-publish-time>"/' > manifest-verify-normalized.json
sha256sum manifest-verify-normalized.json

Usa siempre un nombre de archivo nuevo para cada descarga. Si ya existe un archivo con el mismo nombre en la carpeta, no se sobrescribirá y acabarás verificando la copia antigua en caché.

② STEP 2
Compara con el digest declarado
Abre el archivo manifest y localiza el campo manifest_digest.value. El hash devuelto por el comando debe coincidir exactamente con este valor – carácter por carácter, sin distinguir mayúsculas de minúsculas. Si los dos valores difieren, el archivo en el servidor ha sido modificado después de calcular el digest.
Qué verifica esto y qué no: un digest coincidente confirma que el contenido del manifest es idéntico tras normalizar manifest_digest.value al placeholder estándar. No prueba de forma independiente cuándo se publicó el archivo por primera vez. Se aplican dos anclajes temporales distintos: la especificación GLM original se publicó por primera vez en LinkedIn y en la página de especificación legible por humanos, ambas fechadas el 29 de mayo de 2026 – bajo el nombre GLM, antes de la designación GLM-BD. La evolución hacia la designación pública GLM-BD, el schema 1.4 y la redacción actual de interoperability_doctrine se anunció en LinkedIn en septiembre de 2026. GLM-BD no es un fork, una nueva especificación ni una segunda arquitectura – es la designación pública de la misma especificación, evolucionada. La fecha de septiembre no se aplica retroactivamente a la publicación de mayo de 2026, y el nombre GLM-BD no estaba en uso en ese momento.

Verificación rápida – manifest actual de EVIDE:

El manifest en vivo de EVIDE en https://www.certifywebcontent.com/.well-known/governance-layer-manifest.json declara canonicalization_id: "glm-digest-v1". Los comandos legacy de sustitución de texto de arriba no son el procedimiento normativo para este manifest y no deberían usarse para verificarlo. Para verificarlo, puedes:

Canonicalization ID (Schema 1.4)

canonicalization_method describe en prosa la transformación aplicada para el digest. Un verificador no debería tener que interpretar lenguaje natural para determinar qué transformación aplicar antes de recalcular un digest. canonicalization_id da nombre a esa transformación como identificador despachable por máquina y versionado. canonicalization_method sigue presente junto a él como descripción legible por humanos; los dos campos no son alternativos entre sí.

El identificador es normativo y permanente una vez publicado. La transformación vinculada a glm-digest-v1 nunca puede redefinirse. Una transformación futura – incluso mínima – requiere un nuevo identificador, glm-digest-v2 y así sucesivamente. glm-digest-v1 sigue siendo válido e interpretable indefinidamente para cualquier manifest que lo declare.

glm-digest-v1 – algoritmo normativo

Entrada: el archivo manifest exactamente como se sirve, como secuencia de bytes. El archivo DEBE ser UTF-8 válido. Si no lo es, un verificador que aplique glm-digest-v1 DEBE rechazarlo con el motivo “not valid UTF-8 – cannot apply glm-digest-v1” en lugar de intentar cualquier otra codificación.

Paso 1 – Localizar mediante JSON Pointer, nunca mediante búsqueda de texto. Usando un parser JSON capaz de informar del desplazamiento en bytes de cada token, localiza:

  • el rango de bytes del valor de cadena JSON (incluidos los caracteres de comillas que lo rodean) en el JSON Pointer /manifest_digest/value;
  • si la clave manifest_signature existe, y su subcampo value está presente con tipo JSON string (no null, no ausente): el rango de bytes del valor de cadena JSON en el JSON Pointer /manifest_signature/value.

Localizar mediante ruta estructural en lugar de mediante contenido de cadena es lo que hace segura la transformación: un valor de cadena idéntico que aparezca bajo cualquier otra clave se encuentra en un JSON Pointer distinto y nunca se examina. No existe ningún escenario, bajo este algoritmo, en el que se altere una cadena que coincida por casualidad en otra parte del archivo.

Paso 2 – Sustituir, dejando intacto cualquier otro byte. Sustituye el rango de bytes localizado para /manifest_digest/value por el literal de bytes UTF-8 exacto, comillas JSON incluidas:

“<computed-at-publish-time>”

Si en el Paso 1 se localizó un rango de bytes para /manifest_signature/value, sustitúyelo por el literal de bytes UTF-8 exacto, comillas JSON incluidas:

“<signed-at-publish-time>”

Estos dos literales están fijados como parte de la definición de glm-digest-v1 y no pueden alterarse sin definir un nuevo canonicalization_id. La sustitución se realiza directamente sobre el búfer de bytes original en los rangos de bytes identificados en el Paso 1 – el archivo nunca se parsea completamente ni se vuelve a serializar. Cada byte fuera de los rangos identificados – espacios en blanco, orden de las claves, indentación, terminadores de línea, una marca de orden de bytes inicial si está presente, un salto de línea final si está presente – permanece idéntico byte a byte al archivo servido. Todos los desplazamientos de bytes usados en los Pasos 1 y 2 son desplazamientos dentro de la secuencia de bytes original completa, marca de orden de bytes incluida cuando está presente: el BOM, si existe, se preserva exactamente y nunca se elimina, reubica ni excluye de la secuencia sobre la que se calculan los desplazamientos.

Paso 3 – Hash. Calcula el SHA-256 sobre la secuencia de bytes producida por el Paso 2, sin ninguna transformación adicional.

manifest_signature.value es null, o la clave está ausente: no se realiza ninguna sustitución para la firma. No es un caso especial que requiera un tratamiento aparte – se deriva directamente de que la condición del Paso 1 (“el tipo JSON es string”) ya es falsa. Solo se aplica la sustitución de manifest_digest.value.
canonicalization_id no reconocido: un verificador que encuentre un valor que no implementa DEBE informar “CANNOT VERIFY – UNKNOWN CANONICALIZATION ID” y NO DEBE recurrir a adivinar una transformación.
Manifest legacy sin canonicalization_id declarado: el manifest sigue siendo verificable mediante el procedimiento manual de Verificación Independiente más arriba. Un verificador informa “LEGACY MANIFEST – MANUAL VERIFICATION REQUIRED”, nunca un fallo o un mismatch.

Dos implementaciones independientes que sigan esta definición, usando cualquier parser JSON que informe de los desplazamientos en bytes de los tokens parseados – una capacidad ampliamente disponible, no a medida – producen bytes de salida idénticos y un digest SHA-256 idéntico.

Causa común de un falso MISMATCH: un digest calculado correctamente sobre una copia local del archivo puede aun así fallar la verificación si el archivo se altera – aunque sea en un solo byte – entre el momento en que se calculó el digest y el momento en que se sirve. La causa más frecuente es un salto de línea final añadido o eliminado silenciosamente por un editor de texto al guardar, un cliente FTP configurado en modo de transferencia texto/ASCII en lugar de binario, o el propio entorno de alojamiento. No se trata de un defecto de glm-digest-v1 ni de un validador conforme – la sensibilidad byte a byte a exactamente este tipo de cambio es la propiedad que el algoritmo está diseñado para proporcionar. La solución es procedimental, no técnica: calcula el digest sobre los bytes exactos que se van a servir, y verifica obteniendo el archivo desde su URL publicada en vivo – nunca desde una copia local que pueda haberse vuelto a guardar, recodificado o transferido por una ruta con pérdidas desde que se calculó el digest. Si un MISMATCH persiste tras volver a subirlo, obtén el archivo en vivo directamente (una simple petición a la URL, no un copiar y pegar a través de un editor o una ventana de chat) e inspecciónalo en busca de una línea en blanco final o una marca de orden de bytes inesperadas antes de asumir que el propio digest es incorrecto.

Declaraciones de Componibilidad

El campo composable_with_manifests permite a un layer identificar los manifests específicos con los que declara componibilidad. Esto permite a las herramientas construir un grafo de componibilidad entre los layers participantes.

“composition”: {
“composable_with_types”: [“witness”, “boundary”],
“composable_with_manifests”: [
“https://example-witness.org/.well-known/governance-layer-manifest.json”,
“https://example-boundary.com/.well-known/governance-layer-manifest.json”
]
}

Las declaraciones de componibilidad son unilaterales: un layer puede declarar compatibilidad con un layer adyacente sin que esa declaración sea recíproca. Cuando ambos layers se declaran mutuamente en sus respectivos manifests, la componibilidad está declarada mutuamente y es comprobable de forma independiente obteniendo ambos manifests. Esta declaración recíproca no constituye prueba de interoperabilidad operativa. Esto permite:

  • Verificación automatizada en compras sin requerir documentación bilateral
  • Construcción del grafo de composición a partir de archivos manifest públicamente disponibles
  • Evaluación de las relaciones de componibilidad declaradas por parte de los sistemas que consumen las declaraciones de los governance layers
  • Validación de scenario packs que confirma declaraciones coherentes entre los layers participantes

Herramienta Interactiva
GLM-BD Manifest Validator

Pega cualquier governance-layer-manifest.json y valídalo frente al schema GLM actual. Comprueba los requisitos estructurales, el vocabulario controlado, el eje temporal, la conformidad con el schema y – cuando se declara un canonicalization_id reconocido – recalcula de forma independiente el digest del manifest. Toda la validación se ejecuta en tu navegador – no se envía ningún dato a ningún servidor.


Abrir el GLM-BD Validator ↗

Preguntas Planteadas Durante la Revisión Arquitectónica

Las siguientes preguntas surgieron durante la revisión arquitectónica y el debate público de la especificación GLM y de la implementación de referencia EVIDE. Se conservan aquí porque aclaran distinciones estructurales que no resultan inmediatamente evidentes a partir de la especificación por sí sola.


¿Puedo implementar GLM en mi propio proyecto comercial o de investigación?

Sí. GLM se diseñó específicamente para fomentar implementaciones independientes. Puedes implementar, adaptar, extender o publicar un manifest conforme a GLM para proyectos comerciales, académicos, gubernamentales, de código abierto o propietarios. La implementación proponente no impone ningún permiso, registro, acuerdo de licencia ni requisito de atribución. Se fomentan las implementaciones independientes porque ayudan a evaluar el valor del propio modelo de declaración para la evaluación de la interoperabilidad. Las organizaciones que publican un manifest GLM público pueden, opcionalmente, ser citadas en los ejemplos públicos de implementación: Valida aquí tu manifest GLM


¿Por qué GLM recomienda la publicación en una well-known URI?

Porque la descubribilidad forma parte del modelo de interoperabilidad. Una declaración de boundary que no puede localizarse de forma predecible no puede ser consumida automáticamente por los sistemas adyacentes. El uso de well-known URIs sigue el mismo principio arquitectónico que otros mecanismos de descubrimiento a escala de internet: la declaración debería ser descubrible sin coordinación bilateral previa.


¿Puede un governance layer publicar un manifest GLM sin implementar EVIDE?

Sí. GLM es independiente de EVIDE. Cualquier governance layer puede publicar un manifest conforme a GLM con independencia de si realiza witnessing, evaluación de admisibilidad, governance de la ejecución, estabilización evidencial, reviewability o cualquier otra función de governance. GLM describe boundaries. No prescribe la implementación.


¿Publicar un manifest GLM crea autoridad o legitimidad de governance?

No. Un manifest GLM declara lo que un layer afirma, lo que no afirma, dónde opera y cómo se presenta para la composición. La publicación no crea autoridad, legitimidad, fiabilidad ni interoperabilidad. Crea una superficie de declaración legible por máquina. La validez de los claims declarados sigue siendo responsabilidad del propietario del layer.


¿Puede un layer ser conforme a GLM aun declarando claims muy amplios o poco realistas?

Sí. GLM no valida la veracidad, la calidad, la corrección ni la viabilidad de los claims de un layer. Un manifest puede ser sintácticamente válido y a la vez contener claims incompletos, exagerados u operativamente poco realistas. GLM hace que esos claims sean legibles por máquina y revisables de forma independiente. No los certifica. La responsabilidad sobre el contenido declarado recae íntegramente en el propietario del layer.


¿Por qué GLM no certifica la interoperabilidad?

Porque los claims de interoperabilidad y las declaraciones de interoperabilidad son funciones distintas. GLM declara boundaries, claims, non-claims, posición temporal y postura de composición. No determina si dos sistemas son realmente compatibles, ni certifica que se haya alcanzado la interoperabilidad. Declarar un boundary no es lo mismo que validar una relación a través de los boundaries.


¿Por qué GLM incluye forbidden_interpretations?

Porque muchos fallos de governance surgen de suposiciones y no de claims explícitos. Un layer puede no haber afirmado nunca una capacidad y, sin embargo, los sistemas adyacentes pueden empezar gradualmente a tratar esa capacidad como si existiera. forbidden_interpretations hace que esas herencias semánticas prohibidas sean legibles por máquina en lugar de dejarlas implícitas.


¿Por qué GLM se centra tanto en los non-claims?

Porque los fallos de governance a menudo surgen de capacidades que se dieron por supuestas en lugar de afirmarse explícitamente. En ecosistemas de governance componibles, entender lo que un layer no determina puede ser tan importante como entender lo que hace. Los non-claims reducen el riesgo de transferencia implícita de autoridad, herencia semántica y ambigüedad de boundary.


GLM define un layer type “boundary”. ¿Tienen alguna opinión sobre qué debería ocupar esa posición en la práctica, o se deja intencionadamente abierto?

Intencionadamente abierto. GLM define la posición en el eje temporal y la función operativa, pero no prescribe qué sistema debe ocuparla. El boundary layer resuelve la admisibilidad en el bind-time de la ejecución antes de que la consecuencia se confirme. Qué sistema realiza esa función es una decisión de implementación soberana que se deja al propietario de ese layer.


EVIDE parece situarse principalmente post-bind / del lado del closure. ¿Cómo gestionan las situaciones en las que el propio estado de autoridad pre-bind está en disputa?

EVIDE no resuelve la autoridad pre-bind en disputa. Eso queda explícitamente fuera de su alcance. Lo que EVIDE hace es registrar el estado de autoridad declarado en el momento del cierre, incluyendo si ese estado estaba en disputa, era provisional o no era verificable. Un estado pre-bind en disputa no bloquea la estabilización. Pasa a formar parte del registro evidencial, con sus limitaciones declaradas en lugar de ocultas.


Cuando EVIDE registra el contexto de clasificación declarado, ¿valida la estabilidad de esa taxonomía ascendente o simplemente preserva lo que se declaró en ese momento?

Se preserva tal como se declaró. EVIDE no valida la estabilidad ni la corrección de la taxonomía ascendente. Registra lo que se declaró en el momento del cruce. Si la taxonomía cambia posteriormente o pasa a estar en disputa, el registro evidencial refleja lo que se declaró en ese momento concreto – que es precisamente su valor forense.


¿Cómo explican la diferencia entre “apoya la defendibilidad” y “satisface un requisito regulatorio”?

La distinción es estructural. EVIDE apoya la defendibilidad produciendo un registro evidencial verificable de forma independiente de las condiciones de cierre. Que ese registro satisfaga un requisito regulatorio específico depende de lo que exija la regulación y de cómo evalúe el registro la autoridad competente. EVIDE no determina el cumplimiento. Proporciona la infraestructura evidencial que hace que la defendibilidad sea posible y reconstruible de forma independiente.


¿Aspiran a que GLM se convierta en un estándar formal, o el objetivo actual es establecer una superficie de declaración práctica de facto?

El objetivo inmediato es una superficie de declaración práctica. GLM es actualmente una especificación abierta destinada a establecer un patrón: declaraciones de boundary legibles por máquina publicadas en well-known URIs, verificables de forma independiente, sin requerir coordinación bilateral ni transferencia de autoridad. Que ese patrón evolucione finalmente hacia un esfuerzo formal de estandarización sigue siendo una cuestión abierta. El valor inmediato es práctico más que institucional.


Si existen múltiples declaraciones de boundary para el mismo objeto operativo y esas declaraciones son mutuamente incompatibles, ¿proporciona GLM algún mecanismo de precedencia o de resolución de conflictos?

No, y de forma intencionada. GLM puede hacer visible un conflicto. No resuelve el conflicto. En cuanto un sistema empieza a determinar qué declaración prevalece o cómo deben resolverse las incompatibilidades, ha pasado de la declaración a la governance. Cualquier modelo de precedencia, mecanismo de arbitraje o proceso de resolución de conflictos pertenece al layer que reclame explícitamente la responsabilidad de esa función. GLM declara. GLM no adjudica.


GLM hace que un constructo sea descubrible y que su significado declarado sea legible por máquina. Pero ¿garantiza que los sistemas gobernados de forma independiente mantendrán interpretaciones compatibles a lo largo del tiempo?

No. La descubribilidad y la compatibilidad interpretativa a lo largo del tiempo son problemas estructuralmente distintos. GLM hace que un constructo sea localizable y que su significado declarado sea legible en el momento de la declaración. No garantiza que los observadores gobernados de forma independiente mantengan interpretaciones compatibles a medida que acumulan sus propias suposiciones en torno a él. Precisamente por eso el manifest se centra tanto en forbidden_interpretations, non-claims explícitos, boundaries de autoridad y restricciones de composición – no como garantías de permanencia semántica, sino como mecanismos para reducir el colapso semántico silencioso durante la interoperabilidad. Que las interpretaciones divergentes requieran una realineación explícita sigue siendo un problema de coordinación fuera de la superficie de declaración GLM.


¿Cómo siguen siendo válidos los manifests GLM cuando la autoridad, el estado y las condiciones operativas cambian con el tiempo?

GLM aborda esto mediante el versionado y no mediante una suposición de permanencia. Un manifest no pretende describir la postura de governance de un layer indefinidamente. Declara lo que un layer afirma, lo que excluye y cómo se presenta para la composición en un momento concreto – anclado por valid_from, un digest calculado y una cadena supersedes que enlaza con las versiones anteriores.

Cuando la autoridad, el estado o las condiciones operativas cambian, la expectativa es que se publique una nueva versión del manifest – con la versión anterior permaneciendo verificable de forma independiente mediante su digest. Esto es estructuralmente similar a cómo EVIDE gestiona el estado de cierre: el valor del registro no está en que siga siendo verdadero para siempre, sino en que capture con precisión lo que se declaró en el momento en que se externalizó.

Que el versionado por sí solo sea suficiente para entornos de governance de alta frecuencia o altamente dinámicos es una cuestión abierta – y probablemente cada vez más relevante a medida que estos ecosistemas maduren.


GLM hace que las declaraciones sean descubribles y legibles por máquina en el momento de la publicación. Pero ¿qué ocurre cuando los sistemas gobernados de forma independiente siguen evolucionando después de publicarse una declaración – pueden las interpretaciones compatibles mantenerse estables aunque la propia declaración original permanezca sin cambios?

Este es un problema estructuralmente distinto de la descubribilidad. GLM se diseñó para hacer que las declaraciones sean descubribles, legibles por máquina y comparables en el momento en que se publican. Permite a un layer declarar qué es, dónde opera, qué afirma y qué no afirma explícitamente.

Lo que GLM no intenta determinar es si las interpretaciones se mantienen alineadas a lo largo del tiempo tras la publicación. Un manifest puede permanecer sin cambios mientras el ecosistema circundante evoluciona, surgen nuevos layers, cambian las suposiciones o las relaciones de composición se vuelven más complejas. Esas cuestiones pertenecen a un espacio de problemas distinto.

Desde la perspectiva de GLM, el objetivo es más acotado: proporcionar una superficie declarativa estable que permita a los sistemas gobernados de forma independiente exponer sus boundaries de forma coherente y revisable. Que la alineación semántica persista a través del tiempo, las revisiones y las composiciones en evolución requeriría mecanismos más allá de la propia declaración – mecanismos que, por diseño, quedan fuera de la superficie de declaración GLM.

En ese sentido, la revisión de la extensión del vocabulario fue valiosa no simplemente porque se aceptó una nueva categoría, sino porque ayudó a aclarar dónde termina la responsabilidad de GLM y dónde empiezan otras cuestiones de governance.


¿Qué impide a un governance layer cambiar unilateralmente sus boundaries declarados tras la publicación?

GLM no intenta estabilizar permanentemente los boundaries como primitiva arquitectónica. Asume que un governance layer ya tiene un boundary definido y se centra en hacer que ese boundary esté explícitamente declarado, sea legible por máquina y revisable de forma independiente en el momento de la publicación.

La evolución del boundary no es necesariamente una condición de fallo. Los sistemas, los modelos de governance y las restricciones operativas pueden cambiar legítimamente con el tiempo. Lo que importa desde una perspectiva evidencial es si esos cambios pueden reconstruirse de forma independiente. Un governance layer puede declarar un conjunto de boundaries hoy y otro distinto más adelante. La declaración histórica sigue siendo verificable de forma independiente mediante su digest, y la cadena supersedes hace transparente la evolución de los boundaries declarados a lo largo del tiempo.

En este sentido, el foco está menos en impedir el cambio de boundary y más en impedir la pérdida de reconstruibilidad cuando el cambio de boundary se produce. Que la ambigüedad del boundary se origine en una declaración inicial insuficiente, en una deriva del boundary o en factores estructurales es una pregunta que se vuelve respondible precisamente porque las declaraciones históricas siguen siendo verificables de forma independiente.


¿Deberían mantenerse las versiones anteriores del manifest públicamente accesibles tras publicarse una nueva versión?

Sí. Esta es la finalidad arquitectónica de la cadena supersedes. La URL del manifest actual sirve siempre la última versión. Las versiones anteriores deberían permanecer públicamente accesibles en una URL estable de tu elección – una ruta de archivo en tu dominio, un archivo versionado o cualquier otra ubicación públicamente accesible.

La razón es evidencial. Cualquier parte independiente que revise un evento de governance, una decisión, una disputa o una auditoría pasados debería poder recuperar la declaración que estaba en vigor cuando se produjo ese evento – y verificar mediante el digest publicado que la declaración no se ha alterado desde entonces. Sin versiones anteriores públicamente accesibles, esa reconstrucción no es posible ni siquiera cuando la propia cadena supersedes está intacta.

Un governance layer puede actualizar legítimamente sus boundaries a medida que evoluciona. Lo que preserva la cadena de versiones es la capacidad de determinar qué se declaró en cualquier momento concreto del pasado, sin depender del relato retrospectivo del propietario del layer. Esa independencia es precisamente lo que hace significativa la cadena de custodia.


Lo que sigue siendo recuperable y lo que sigue siendo admisible pueden no ser lo mismo. ¿Cómo gestiona GLM las situaciones en las que las condiciones de autoridad o admisibilidad que originalmente respaldaban una decisión de governance ya no existen?

GLM no intenta determinar si las condiciones históricas de autoridad siguen siendo válidas, exigibles o admisibles en el presente. Lo que intenta preservar es la capacidad de reconstruir de forma independiente qué se declaró, cuándo se declaró y cómo evolucionaron esas declaraciones a lo largo del tiempo.

Un governance layer puede cambiar legítimamente sus boundaries, dependencias, estructuras de autoridad o suposiciones operativas a medida que evoluciona. Desde la perspectiva de GLM, la cuestión crítica no es si se produce el cambio, sino si el estado histórico sigue siendo reconstruible de forma independiente después de que se produzca el cambio. Si un governance layer publica un conjunto de declaraciones hoy y otro distinto más adelante, la declaración anterior sigue siendo verificable de forma independiente mediante su digest publicado y su cadena supersedes.

La distinción entre recuperabilidad y admisibilidad es importante y deliberada. GLM apoya la recuperabilidad. No determina la admisibilidad. Que una declaración recuperada sea admisible en un contexto de governance, legal o institucional concreto depende de factores fuera de la superficie de declaración GLM – incluidos los marcos de autoridad, los requisitos regulatorios y los mandatos institucionales que GLM no fue diseñado para resolver.


Cuando coexisten múltiples governance layers válidos y sus claims de autoridad se solapan parcialmente, ¿cómo deberían las instituciones determinar qué declaración de governance prevalece?

GLM no debería determinar qué declaración de governance prevalece. Eso trasladaría a GLM de un layer de declaración a un layer de resolución de autoridad, que no es su función. GLM está diseñado para hacer que los claims de governance, los non-claims, la posición temporal, las suposiciones de componibilidad y los boundaries declarados sean explícitos, legibles por máquina y revisables de forma independiente.

Cuando coexisten múltiples governance layers válidos y sus claims de autoridad se solapan parcialmente, la cuestión de la prevalencia debería resolverse mediante una base de autoridad externa: la ley, un mandato institucional, una jerarquía contractual, un estatuto de governance interno, una obligación regulatoria u otro marco de autoridad decisoria explícitamente reconocido. GLM puede exponer el solapamiento. Puede hacer visible el conflicto. Puede mostrar dónde dos layers reclaman responsabilidades adyacentes o competidoras. Pero no debería decidir silenciosamente la legitimidad.

Aquí es donde EVIDE resulta complementario. EVIDE tampoco resuelve el conflicto de autoridad. Su función es preservar evidencia reconstruible de qué se declaró, qué layer actuó, qué base de autoridad se invocó, qué traspaso o escalada se produjo y cómo se estabilizó o se disputó posteriormente la cadena de decisión.

GLM declara el boundary de governance. Los marcos de autoridad determinan la precedencia. EVIDE preserva la evidencia de cómo se aplicó esa precedencia. Esta separación es importante porque, de lo contrario, un layer técnico de declaración podría convertirse involuntariamente en un layer constitucional oculto.


¿Qué mecanismo del modelo GLM garantiza que la semántica de governance pueda reconstruirse de forma independiente en un momento concreto sin depender de una continuidad de estado implícita?

El mecanismo es la combinación de tres requisitos estructurales. Primero, el propio manifest debe publicarse contemporáneamente y ser verificable de forma independiente – el manifest_digest y la cadena de versiones hacen que el contenido declarado sea comprobable de forma independiente a lo largo del tiempo. Segundo, el timing_axis obliga a cada layer a declarar explícitamente dónde opera respecto al momento del bind, impidiendo que la continuidad se dé por supuesta silenciosamente a través de los límites temporales. Tercero, explicit_non_claims y forbidden_interpretations hacen visibles los límites de la reconstrucción – un layer que no pueda garantizar la externalización contemporánea debe declarar esa limitación en lugar de dejarla inferencial. GLM no garantiza la reconstrucción. Hace que las condiciones bajo las cuales la reconstrucción es, o no es, posible sean legibles por máquina y revisables de forma independiente. En EVIDE concretamente, esa brecha se aborda mediante la externalización contemporánea en el momento del cruce: la configuración responsable se externaliza cuando existe, no se reconstruye después.

Estado de la Especificación

GLM-BD (Governance Layer Manifest — Boundary Declarations) es actualmente una especificación abierta propuesta en la versión de schema 1.4. Se desarrolló dentro del EVIDE Governance Lab en mayo de 2026 como parte del trabajo sobre la interoperabilidad de governance layers en arquitecturas de sistemas de altas consecuencias.

  • Estado: Especificación abierta propuesta – todavía no adoptada por ningún organismo de estandarización
  • Licencia: Permisiva para la implementación – cualquier governance layer puede implementar GLM sin restricciones ni requisitos de atribución hacia el proveedor proponente
  • Autoridad del manifest: GLM declara la semántica de los layers. No decide la validez, la legitimidad, la adopción ni la conformidad. Un manifest no debe convertirse en una metaautoridad sobre primitivas de governance soberanas. Un manifest GLM es metadato de infraestructura autodeclarado, no certificación de terceros.
  • Extensión del vocabulario: Los nuevos valores de layer_type requieren una justificación documentada y un incremento de la versión del schema
  • Primera extensión externa del vocabulario: El layer_type formation y el calificador temporal source-anchored fueron aceptados el 2026-06-12 tras una revisión formal de la justificación. Implementación proponente: NOUS (Hlias Staurou). Maintainer revisor: EVIDE Governance Lab. Esto constituye la schema_version 1.1. Digest de la justificación (SHA-256): fad8c5a839f601893114b9072f5bedb96d01837bb844c9635339db321d7404bd
  • Schema 1.2: El campo supersedes pasó de ser una cadena simple a un objeto estructurado que lleva el digest de la versión anterior y la url pública de archivo. El campo supersedes_digest se mantiene como contrato estable para las herramientas de los schemas 1.0 y 1.1, que pueden seguir leyendo supersedes_digest e ignorar el nuevo objeto estructurado. Bajo este planteamiento, el schema 1.2 es un cambio aditivo no disruptivo, coherente con la política de incremento de versión menor. El campo supersedes_digest en la raíz se mantiene por retrocompatibilidad y DEBE coincidir con supersedes.digest cuando ambos están presentes. También se añadió un campo valid_until en la raíz para registrar cuándo una versión archivada del manifest dejó de estar activa. Esto constituye la schema_version 1.2.
  • Schema 1.3: Introduce manifest_kind, un campo opcional en la raíz que distingue un manifest de layer único ("layer", el valor por defecto implícito para todos los manifests de los schemas 1.0-1.2) de un artefacto de descubrimiento a nivel de organización ("organization_index"). La extensión responde a las organizaciones que publican múltiples governance layers independientes y que anteriormente no tenían una forma estándar de declarar, en una única ubicación predecible, qué manifests de layers existen y dónde están publicados. Un organization index no formula ningún claim de governance, no ocupa ninguna posición en el eje temporal y no debe interpretarse como que implica componibilidad o transferencia de autoridad entre los layers que enumera. Parte proponente: EVIDE Governance Lab. Maintainer revisor: Stone Shi (CLARIXO/TGTRACING). Revisado y aprobado en principio el 2026-06-17, siguiendo la misma separación propuesta/revisión utilizada para la extensión formation del schema 1.1. Principio rector: un organization index descubre layers. No los compone. Esto constituye la schema_version 1.3. Nota sobre la compatibilidad hacia adelante: un consumidor que no reconozca manifest_kind DEBE tratar el artefacto como opaco y omitir la validación, en lugar de recurrir al valor por defecto implícito layer y señalar como no conformidad la ausencia de claims_boundary o de una posición en timing_axis. Esto preserva una compatibilidad hacia adelante segura para las herramientas anteriores a la 1.3.
  • Schema 1.4: Introduce manifest_digest.canonicalization_id, un campo de cadena opcional junto al ya existente canonicalization_method legible por humanos. Mientras que canonicalization_method describe en prosa la transformación aplicada para el digest, canonicalization_id le da nombre como identificador despachable por máquina y versionado sobre el que un verificador puede actuar sin interpretar lenguaje natural. El campo es aditivo y OPCIONAL: un manifest que lo omita sigue siendo plenamente conforme en cualquier versión del schema y los verificadores lo tratan como que requiere verificación manual. El primer identificador definido es glm-digest-v1 – véase Canonicalization ID más abajo para su definición normativa completa. Una vez publicada, la transformación vinculada a un valor dado de canonicalization_id no puede cambiar; una transformación futura requiere un nuevo identificador (glm-digest-v2 y así sucesivamente), nunca la redefinición de uno existente. El schema 1.4 también documenta machine_readable_status.authority_dependency (con su campo complementario authority_dependency_note) como campo de vocabulario opcional y transversal a las implementaciones: observado de forma independiente en uso por más de una implementación GLM con el mismo valor declarado (external_to_execution_system), y documentado aquí por esa razón. No es obligatorio, y su presencia o ausencia no afecta a la conformidad. Esto constituye la schema_version 1.4.
  • Modificaciones del schema: Los cambios disruptivos requieren un incremento de la versión mayor. Las adiciones no disruptivas pueden introducirse como incrementos de la versión menor. La retrocompatibilidad dentro de una versión mayor es un objetivo de diseño.
  • Comentarios: Los comentarios arquitectónicos y los informes de implementación son bienvenidos en [email protected]
GLM está diseñado para implementarse con independencia de cualquier arquitectura de governance, ecosistema de proveedores o marco regulatorio específico. Cualquier governance layer de cualquier sistema de altas consecuencias puede publicar un manifest conforme a GLM.