Documentos de Decision Gate

Evaluación de puertas determinista, reproducible con decisiones auditables.

Documentación de Asset Core

AssetCore Interop Runbook

Aviso de Acceso (Dependencia Privada)

Este runbook requiere acceso privado al repositorio de AssetCore y el paquete de imagen Docker del starter-pack de AssetCore. Estos activos no están incluidos en el repositorio OSS Decision Gate.

A primera vista

Qué: Validar la interoperabilidad entre Decision Gate y AssetCore Por qué: Asegurar que la evidencia de AssetCore se integre correctamente con las puertas de DG Quién: Ingenieros de integración, operadores de prueba Requisitos previos: Docker (modo en vivo), acceso al repositorio de AssetCore, CLI de Decision Gate construido


Fixture vs Modo en Vivo

Accesorios Offline Deterministas

  • Utiliza un stub de proveedor con un mapa de fixture.
  • Totalmente determinista y rápido.

Modo en Vivo (Integración)

  • Ejecuta los servicios de AssetCore en Docker.
  • Ejercicios de llamadas MCP reales y rutas de red.

Política de Anclaje

Decision Gate aplica las reglas de anclaje a través de la configuración, no del escenario:

[anchors]
[[anchors.providers]]
provider_id = "assetcore_read"
anchor_type = "assetcore.anchor_set"
required_fields = ["assetcore.namespace_id", "assetcore.commit_id", "assetcore.world_seq"]

Anclajes de evidencia: anchor_value es una string que contiene JSON canónico. Ejemplo de fragmento de EvidenceResult:

{
  "evidence_anchor": {
    "anchor_type": "assetcore.anchor_set",
    "anchor_value": "{\"assetcore.namespace_id\":1,\"assetcore.commit_id\":\"c123\",\"assetcore.world_seq\":42}"
  }
}

cargo test -p system-tests \
  --features system-tests \
  --test providers \
  -- \
  --exact assetcore_integration::assetcore_interop_fixtures

Lo que sucede:

  • El stub del proveedor carga system-tests/tests/fixtures/assetcore/interop/fixture_map.json.
  • DG evalúa puertas utilizando evidencia de fijación.

Modo en Vivo (AssetCore Docker)

Paso 1: Cargar Imágenes de AssetCore

cd <ASSETCORE_REPO_ROOT>
starter-pack/scripts/load_images.sh --bundle starter-pack/docker-images

Paso 2: Iniciar AssetCore Stack

docker compose \
  --env-file starter-pack/docker/images.env \
  -f starter-pack/docker/docker-compose.yml \
  up -d

Paso 3: Iniciar el Servidor MCP de Decision Gate

cargo run -p decision-gate-cli -- \
  serve \
  --config system-tests/tests/fixtures/assetcore/decision-gate.toml

Configuración de fixture relevante (campos exactos):

[server]
transport = "http"
bind = "127.0.0.1:8088"

[[providers]]
name = "assetcore_read"
type = "mcp"
url = "http://127.0.0.1:9000/mcp"
allow_insecure_http = true
capabilities_path = "system-tests/tests/fixtures/assetcore/providers/assetcore_read.json"

Paso 4: Ejecutar Evaluación de Interoperabilidad

cargo run -p decision-gate-cli -- \
  interop eval \
  --mcp-url http://127.0.0.1:8088/rpc \
  --spec system-tests/tests/fixtures/assetcore/interop/scenarios/assetcore-interop-full.json \
  --run-config system-tests/tests/fixtures/assetcore/interop/run-configs/assetcore-interop-full.json \
  --trigger system-tests/tests/fixtures/assetcore/interop/triggers/assetcore-interop-full.json

Paso 5: Desmantelar la pila de AssetCore

docker compose \
  --env-file starter-pack/docker/images.env \
  -f starter-pack/docker/docker-compose.yml \
  down

Accesorios Refrescantes

Cuando cambian los contratos de AssetCore, regenere los fixtures del repositorio de AssetCore y cópielos en este repositorio:

cp <ASSETCORE_GENERATED_DIR>/decision-gate/interop/fixture_map.json \
  system-tests/tests/fixtures/assetcore/interop/fixture_map.json

cp <ASSETCORE_GENERATED_DIR>/decision-gate/providers/assetcore_read.json \
  system-tests/tests/fixtures/assetcore/providers/assetcore_read.json

Solución de problemas

Conexión de AssetCore MCP rechazada

  • Verificar que el adaptador AssetCore MCP esté en funcionamiento.
  • Verifique la URL del proveedor en la configuración de Decision Gate (http://127.0.0.1:9000/mcp).

Fallos en la validación de anclajes

  • Confirmar la política de anclaje bajo [anchors].
  • Asegúrese de que anchor_value sea una cadena que contenga JSON canónico con los campos requeridos.

Notas

  • Los fixtures de Interop utilizan marcas de tiempo deterministas (sin reloj de pared).
  • Los fixtures de interoperabilidad en este repositorio son solo ASCII; manténgalos así para obtener diferencias deterministas.

Glosario

Ancla: Referencia externa que prueba la procedencia de la evidencia. Mapa de Instalaciones: Mapeo JSON de consultas a resultados de evidencia deterministas. Interop: Validación de interoperabilidad entre DG y AssetCore.