Referencia de Arquitectura de Validación de Comparadores
Resumen
Decision Gate impone la corrección del comparador en dos capas:
- Authoring-time strict validation (default-on) in the MCP layer rejects invalid comparator/type combinations before a scenario or precheck runs. F:crates/decision-gate-mcp/src/validation.rs L36-L673 F:crates/decision-gate-mcp/src/tools.rs L2027-L2050 F:crates/decision-gate-mcp/src/tools.rs L2663-L2707
- Runtime comparator evaluation in the core returns tri-state results and
yields
Unknownwhen evidence types do not match expectations. 2) La evaluación del comparador en tiempo de ejecución en el núcleo devuelve resultados de tres estados y produceDesconocidocuando los tipos de evidencia no coinciden con las expectativas. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L259
El validador estricto es el guardián; la lógica de tiempo de ejecución es la última línea de comportamiento de fallo cerrado. F:crates/decision-gate-mcp/src/validation.rs L36-L170 F:crates/decision-gate-core/src/runtime/comparator.rs L39-L197
Mapa de Fuente de Verdad
| Área | Archivo | Notas |
|---|---|---|
| Enum de comparador + EvidenceQuery | F:crates/decision-gate-core/src/core/evidence.rs L32-L90 | Lista canónica de comparadores y forma de consulta. |
| Semántica del comparador en tiempo de ejecución | F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308 | Ordenación consciente de decimales, comportamiento lex/deep, desconocido en caso de desajuste. |
| Motor de validación estricta | F:crates/decision-gate-mcp/src/validation.rs L36-L673 | Matriz de clases de tipo, análisis de esquema, sobrescrituras de dominio. |
| Integración de herramientas MCP | F:crates/decision-gate-mcp/src/tools.rs L2027-L2050 F:crates/decision-gate-mcp/src/tools.rs L2663-L2707 | scenario_define + precheck invocan validación estricta. |
| Superficie de configuración de validación | F:crates/decision-gate-config/src/config.rs L1469-L1521 | Interruptores de ValidationConfig e identificadores de perfil. |
| Esquemas de contrato | F:crates/decision-gate-contract/src/schemas.rs L1105-L1129 | Esquema de comparador y anotaciones. |
| Tooltips/docs | F:crates/decision-gate-contract/src/tooltips.rs L260-L296 | Comportamiento de comparador y validación orientado al público. |
| Documentación generada | F:Docs/generated/decision-gate/tooling.md L1-L42 F:Docs/generated/decision-gate/tooltips.json L1-L80 | Regenerada después de actualizaciones de esquema/tooltips. |
| Pruebas de validación MCP | F:crates/decision-gate-mcp/tests/validation.rs L1-L220 | Cobertura de unidad para modo estricto. |
| Pruebas del sistema | F:system-tests/tests/suites/validation.rs L1-L220 | Comportamiento de validación de extremo a extremo. |
Validación de la tubería (MCP)
Definición de escenario (scenario_define)
- MCP validates provider contracts and check schemas. MCP valida contratos de proveedores y verifica esquemas. F:crates/decision-gate-mcp/src/tools.rs L2045-L2048
- Strict validation enforces comparator/type compatibility and expected-value shape. La validación estricta impone la compatibilidad del comparador/tipo y la forma del valor esperado. F:crates/decision-gate-mcp/src/tools.rs L2045-L2048
- Implementation:
ToolRouter::define_scenario. Implementación:ToolRouter::define_scenario. F:crates/decision-gate-mcp/src/tools.rs L2027-L2093
Precheck (precheck tool)
- MCP validates payload against the registered data shape schema. MCP valida la carga útil contra el esquema de forma de datos registrado. F:crates/decision-gate-mcp/src/tools.rs L2670-L2680
- Strict validation enforces condition compatibility against the data shape schema. La validación estricta impone la compatibilidad de condiciones contra el esquema de forma de datos. F:crates/decision-gate-mcp/src/tools.rs L2690-L2692
- Implementation:
ToolRouter::precheck. Implementación:ToolRouter::precheck. F:crates/decision-gate-mcp/src/tools.rs L2663-L2707
Reglas de Validación Estrictas (Resumen de Implementación)
Compatibilidad de clases de tipo
- Implemented in
crates/decision-gate-mcp/src/validation.rs. Implementado encrates/decision-gate-mcp/src/validation.rs. F:crates/decision-gate-mcp/src/validation.rs L234-L535 schema_type_classesand helpers derive type classes.schema_type_classesy los ayudantes derivan clases de tipo. F:crates/decision-gate-mcp/src/validation.rs L400-L535comparator_allowancesdefines allowed/opt-in/forbidden combinations.comparator_allowancesdefine combinaciones permitidas/opcional/forbidden. F:crates/decision-gate-mcp/src/validation.rs L234-L398validate_expected_valueensures expected-value shapes match schema.validate_expected_valueasegura que las formas de valor esperado coincidan con el esquema. F:crates/decision-gate-mcp/src/validation.rs L587-L673
Familias de comparadores opcionales
- Lexicographic ordering comparators are opt-in (config flag + schema override). F:crates/decision-gate-mcp/src/validation.rs L329-L340 F:crates/decision-gate-mcp/src/validation.rs L558-L585 F:crates/decision-gate-mcp/src/validation.rs L829-L838 F:crates/decision-gate-config/src/config.rs L1472-L1487
- Deep equality comparators are opt-in (config flag + schema override). F:crates/decision-gate-mcp/src/validation.rs L350-L365 F:crates/decision-gate-mcp/src/validation.rs L558-L585 F:crates/decision-gate-mcp/src/validation.rs L829-L838 F:crates/decision-gate-config/src/config.rs L1472-L1487
Sobrescrituras de dominio
x-decision-gate.allowed_comparatorsrestricts allowed comparators to a subset of the type-class matrix.x-decision-gate.allowed_comparatorsrestringe los comparadores permitidos a un subconjunto de la matriz de tipo-clase. F:crates/decision-gate-mcp/src/validation.rs L537-L585x-decision-gate.dynamic_type = truetreats the schema as dynamic (no declared type) and allows comparator validation to proceed without a type restriction, subject to config toggles.x-decision-gate.dynamic_type = truetrata el esquema como dinámico (sin tipo declarado) y permite que la validación del comparador continúe sin una restricción de tipo, sujeto a los interruptores de configuración. F:crates/decision-gate-mcp/src/validation.rs L400-L414
Manejo de uniones
oneOf/anyOf/multi-type unions intersect allowances across variants. F:crates/decision-gate-mcp/src/validation.rs L234-L270 F:crates/decision-gate-mcp/src/validation.rs L675-L701- Nullable unions allow null without expanding comparator set. Las uniones anulables permiten null sin expandir el conjunto de comparadores. F:crates/decision-gate-mcp/src/validation.rs L703-L755
Semántica del Comparador en Tiempo de Ejecución (Núcleo)
- Numeric comparisons are decimal-aware (no float rounding). Las comparaciones numéricas son conscientes de los decimales (sin redondeo de flotantes). F:crates/decision-gate-core/src/runtime/comparator.rs L148-L277
- RFC 3339
date/date-timeordering is supported for string values. Se admite el ordenamiento dedate/date-timesegún RFC 3339 para valores de cadena. F:crates/decision-gate-core/src/runtime/comparator.rs L168-L295 - Unsupported comparisons yield
TriState::Unknown. Las comparaciones no soportadas producenTriState::Unknown. F:crates/decision-gate-core/src/runtime/comparator.rs L65-L198 in_setonly applies to scalar evidence values; arrays/objects yieldUnknown.in_setsolo se aplica a valores de evidencia escalar; los arreglos/objetos generanUnknown. F:crates/decision-gate-core/src/runtime/comparator.rs L250-L258- Implementation:
crates/decision-gate-core/src/runtime/comparator.rs. Implementación:crates/decision-gate-core/src/runtime/comparator.rs. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308
Superficie de Configuración
- Strict validation is default-on. Disabling strict requires
validation.allow_permissive = true. La validación estricta está activada por defecto. Desactivar la validación estricta requierevalidation.allow_permissive = true. F:crates/decision-gate-config/src/config.rs L1472-L1511 - Optional comparator families are gated by config toggles. Las familias de comparadores opcionales están controladas por interruptores de configuración. F:crates/decision-gate-config/src/config.rs L1472-L1487
- Implementation:
crates/decision-gate-config/src/config.rs(ValidationConfig). Implementación:crates/decision-gate-config/src/config.rs(ValidationConfig). F:crates/decision-gate-config/src/config.rs L1469-L1521
Alineación de Contratos + Documentos
- Comparator schema and annotations are in
crates/decision-gate-contract/src/schemas.rs. El esquema del comparador y las anotaciones están encrates/decision-gate-contract/src/schemas.rs. F:crates/decision-gate-contract/src/schemas.rs L1105-L1129 - Public tooltips and guidance are in
crates/decision-gate-contract/src/tooltips.rs. Las herramientas y guías públicas están encrates/decision-gate-contract/src/tooltips.rs. F:crates/decision-gate-contract/src/tooltips.rs L260-L296 - Regenerate contract artifacts after any validation or comparator changes:
Docs/generated/decision-gate/. F:Docs/generated/decision-gate/tooling.md L1-L42 F:Docs/generated/decision-gate/tooltips.json L1-L80
Lista de Verificación de Cambios
- Update comparator semantics in
crates/decision-gate-core/src/runtime/comparator.rs.- Actualizar la semántica del comparador en
crates/decision-gate-core/src/runtime/comparator.rs. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308
- Actualizar la semántica del comparador en
- Update strict validation logic in
crates/decision-gate-mcp/src/validation.rs. 2) Actualizar la lógica de validación estricta encrates/decision-gate-mcp/src/validation.rs. F:crates/decision-gate-mcp/src/validation.rs L36-L673 - Update config toggles in
crates/decision-gate-config/src/config.rsif needed. 3) Actualizar los toggles de configuración encrates/decision-gate-config/src/config.rssi es necesario. F:crates/decision-gate-config/src/config.rs L1469-L1521 - Align schemas/tooltips in
crates/decision-gate-contract/src/schemas.rsandcrates/decision-gate-contract/src/tooltips.rs. F:crates/decision-gate-contract/src/schemas.rs L1105-L1129 F:crates/decision-gate-contract/src/tooltips.rs L260-L296 - Regenerate
Docs/generated/decision-gate/artifacts. 5) Regenerar los artefactos enDocs/generated/decision-gate/. F:Docs/generated/decision-gate/tooling.md L1-L42 - Update unit + system tests. F:crates/decision-gate-mcp/tests/validation.rs L1-L220 F:system-tests/tests/suites/validation.rs L1-L220