Documentos de Decision Gate

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

Documentación de Asset Core

escenario_definir

Registra un ScenarioSpec, valídalo y devuelve el hash canónico utilizado para las verificaciones de integridad.

Notas clave

  • Usar antes de comenzar las ejecuciones; scenario_id se convierte en el identificador estable para llamadas posteriores.
  • Valida los IDs de etapa/puerta/condición, los árboles RET y las referencias de condición.
  • El hash de especificación es determinista; guárdalo para auditoría e integridad de descompresión.
  • Falla al cerrarse en especificaciones inválidas o IDs de escenario duplicados.

Entradas

  • spec (requerido): Especificación del escenario a registrar.

Esquema de Entrada

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "spec": {
      "$ref": "decision-gate://contract/schemas/scenario.schema.json",
      "description": "Scenario specification to register."
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}

Salidas

  • scenario_id (requerido): Identificador del escenario.
  • spec_hash (requerido): Tipo: object.

Esquema de Salida

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "scenario_id": {
      "description": "Scenario identifier.",
      "type": "string"
    },
    "spec_hash": {
      "additionalProperties": false,
      "properties": {
        "algorithm": {
          "enum": [
            "sha256"
          ],
          "type": "string"
        },
        "value": {
          "description": "Lowercase hex digest.",
          "type": "string"
        }
      },
      "required": [
        "algorithm",
        "value"
      ],
      "type": "object"
    }
  },
  "required": [
    "scenario_id",
    "spec_hash"
  ],
  "type": "object"
}

Ejemplos

Registra la especificación del escenario de ejemplo.

Entrada:

{
  "spec": {
    "conditions": [
      {
        "comparator": "equals",
        "condition_id": "env_is_prod",
        "expected": "production",
        "policy_tags": [],
        "query": {
          "check_id": "get",
          "params": {
            "key": "DEPLOY_ENV"
          },
          "provider_id": "env"
        }
      },
      {
        "comparator": "equals",
        "condition_id": "after_freeze",
        "expected": true,
        "policy_tags": [],
        "query": {
          "check_id": "after",
          "params": {
            "timestamp": 1710000000000
          },
          "provider_id": "time"
        }
      }
    ],
    "default_tenant_id": null,
    "namespace_id": 1,
    "policies": [],
    "scenario_id": "example-scenario",
    "schemas": [],
    "spec_version": "v1",
    "stages": [
      {
        "advance_to": {
          "kind": "terminal"
        },
        "entry_packets": [
          {
            "content_type": "application/json",
            "expiry": null,
            "packet_id": "packet-hello",
            "payload": {
              "kind": "json",
              "value": {
                "message": "hello",
                "purpose": "scenario entry packet"
              }
            },
            "policy_tags": [],
            "schema_id": "schema-hello",
            "visibility_labels": [
              "public"
            ]
          }
        ],
        "gates": [
          {
            "gate_id": "env_gate",
            "requirement": {
              "Condition": "env_is_prod"
            }
          },
          {
            "gate_id": "time_gate",
            "requirement": {
              "Condition": "after_freeze"
            }
          }
        ],
        "on_timeout": "fail",
        "stage_id": "main",
        "timeout": null
      }
    ]
  }
}

Output:

{
  "scenario_id": "example-scenario",
  "spec_hash": {
    "algorithm": "sha256",
    "value": "5c3a5b6bce0f4a2c9e22c4fa6a1e6d8d90b0f2dfed1b7f1e9b3d3b3d1f0c9b21"
  }
}