Referència de l’Arquitectura de Validació del Comparator
Visió general
Decision Gate aplica la correcció del comparador en dues capes:
- 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) Avaluació del comparador en temps d’execució al nucli retorna resultats de tres estats i produeixUnknownquan els tipus d’evidència no coincideixen amb les expectatives. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L259
El validador estricte és el guardià; la lògica d’execució és la darrera línia de comportament de fallada tancada. F:crates/decision-gate-mcp/src/validation.rs L36-L170 F:crates/decision-gate-core/src/runtime/comparator.rs L39-L197
Font de Veritat Mapa
| Àrea | Fitxer | Notes |
|---|---|---|
| Comparator enum + EvidenceQuery | F:crates/decision-gate-core/src/core/evidence.rs L32-L90 | Llista canònica de comparadors i forma de consulta. |
| Semàntica del comparador en temps d’execució | F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308 | Ordenació conscient dels decimals, comportament lex/deep, unknown en cas de discrepància. |
| Motor de validació estricte | F:crates/decision-gate-mcp/src/validation.rs L36-L673 | Matriu de classes de tipus, anàlisi d’esquemes, sobrescriptura de dominis. |
| Integració d’eines MCP | F:crates/decision-gate-mcp/src/tools.rs L2027-L2050 F:crates/decision-gate-mcp/src/tools.rs L2663-L2707 | scenario_define + precheck invoca la validació estricta. |
| Superfície de configuració de validació | F:crates/decision-gate-config/src/config.rs L1469-L1521 | Interruptors de ValidationConfig i identificadors de perfil. |
| Esquemes de contracte | F:crates/decision-gate-contract/src/schemas.rs L1105-L1129 | Esquema de comparador i anotacions. |
| Tooltip/docs | F:crates/decision-gate-contract/src/tooltips.rs L260-L296 | Comportament de comparador i validació orientat al públic. |
| Docs generades | F:Docs/generated/decision-gate/tooling.md L1-L42 F:Docs/generated/decision-gate/tooltips.json L1-L80 | Regenerades després d’actualitzacions d’esquema/tooltip. |
| Proves de validació MCP | F:crates/decision-gate-mcp/tests/validation.rs L1-L220 | Cobertura unitària per al mode estricte. |
| Proves de sistema | F:system-tests/tests/suites/validation.rs L1-L220 | Comportament de validació de principi a fi. |
Validació del Pipeline (MCP)
Definició de l’escenari (scenario_define)
- MCP validates provider contracts and check schemas. MCP valida els contractes dels proveïdors i comprova els esquemes. F:crates/decision-gate-mcp/src/tools.rs L2045-L2048
- Strict validation enforces comparator/type compatibility and expected-value shape. La validació estricta imposa la compatibilitat entre comparadors/tipus i la forma del valor esperat. F:crates/decision-gate-mcp/src/tools.rs L2045-L2048
- Implementation:
ToolRouter::define_scenario. Implementació: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 càrrega útil contra l’esquema de forma de dades registrades. F:crates/decision-gate-mcp/src/tools.rs L2670-L2680
- Strict validation enforces condition compatibility against the data shape schema. La validació estricta imposa la compatibilitat de les condicions amb l’esquema de forma de dades. F:crates/decision-gate-mcp/src/tools.rs L2690-L2692
- Implementation:
ToolRouter::precheck. Implementació:ToolRouter::precheck. F:crates/decision-gate-mcp/src/tools.rs L2663-L2707
Regles de Validació Estricta (Resum de la Implementació)
Compatibilitat de classes de tipus
- Implemented in
crates/decision-gate-mcp/src/validation.rs. Implementat acrates/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_classesi helpers deriven classes de tipus. F:crates/decision-gate-mcp/src/validation.rs L400-L535comparator_allowancesdefines allowed/opt-in/forbidden combinations.comparator_allowancesdefineix les combinacions permeses/opcionals/prohibides. F:crates/decision-gate-mcp/src/validation.rs L234-L398validate_expected_valueensures expected-value shapes match schema.validate_expected_valueassegura que les formes dels valors esperats coincideixin amb l’esquema. F:crates/decision-gate-mcp/src/validation.rs L587-L673
Famílies de comparadors opcionals
- 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
Sobrecàrregues de domini
x-decision-gate.allowed_comparatorsrestricts allowed comparators to a subset of the type-class matrix.x-decision-gate.allowed_comparatorsrestringeix els comparadors permesos a un subconjunt de la matriu de tipus-classe. 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 = truetracta l’esquema com a dinàmic (sense tipus declarat) i permet que la validació del comparador continuï sense restricció de tipus, subjecte a les alternances de configuració. F:crates/decision-gate-mcp/src/validation.rs L400-L414
Gestió de unions
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. Les unions nullable permeten null sense expandir el conjunt de comparadors. F:crates/decision-gate-mcp/src/validation.rs L703-L755
Semàntica del Comparator en Temps d’Execució (Nucli)
- Numeric comparisons are decimal-aware (no float rounding). Les comparacions numèriques són conscients del decimal (sense arrodoniment de flotants). F:crates/decision-gate-core/src/runtime/comparator.rs L148-L277
- RFC 3339
date/date-timeordering is supported for string values. Es suporta l’ordenaciódate/date-timede l’RFC 3339 per a valors de cadena. F:crates/decision-gate-core/src/runtime/comparator.rs L168-L295 - Unsupported comparisons yield
TriState::Unknown. Les comparacions no suportades donen lloc aTriState::Unknown. F:crates/decision-gate-core/src/runtime/comparator.rs L65-L198 in_setonly applies to scalar evidence values; arrays/objects yieldUnknown.in_setnomés s’aplica a valors d’evidència escalar; els arrays/objectes donenunknown. F:crates/decision-gate-core/src/runtime/comparator.rs L250-L258- Implementation:
crates/decision-gate-core/src/runtime/comparator.rs. Implementació:crates/decision-gate-core/src/runtime/comparator.rs. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308
Superfície de Configuració
- Strict validation is default-on. Disabling strict requires
validation.allow_permissive = true. La validació estricta està activada per defecte. Desactivar la validació estricta requereixvalidation.allow_permissive = true. F:crates/decision-gate-config/src/config.rs L1472-L1511 - Optional comparator families are gated by config toggles. Les famílies de comparadors opcionals estan controlades per commutadors de configuració. F:crates/decision-gate-config/src/config.rs L1472-L1487
- Implementation:
crates/decision-gate-config/src/config.rs(ValidationConfig). Implementació:crates/decision-gate-config/src/config.rs(ValidationConfig). F:crates/decision-gate-config/src/config.rs L1469-L1521
Contracte + Alineació de Documents
- Comparator schema and annotations are in
crates/decision-gate-contract/src/schemas.rs. L’esquema del comparador i les anotacions es troben acrates/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. Les eines i orientacions públiques es troben acrates/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
Llista de Comprovació de Canvis
- Update comparator semantics in
crates/decision-gate-core/src/runtime/comparator.rs.- Actualitzar la semàntica del comparador a
crates/decision-gate-core/src/runtime/comparator.rs. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308
- Actualitzar la semàntica del comparador a
- Update strict validation logic in
crates/decision-gate-mcp/src/validation.rs. 2) Actualitzar la lògica de validació estricta acrates/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) Actualitzeu els toggles de configuració acrates/decision-gate-config/src/config.rssi és necessari. 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 artefactes deDocs/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