مرجع بنية التحقق من المقارنات
نظرة عامة
يطبق Decision Gate صحة المقارنات على ثلاثة مستويات:
- Typed import-time synthesis for OpenAPI typed providers derives
allowed_comparatorsfrom normalized result schemas using the strict type-class matrix and canonical comparator ordering. F:crates/decision-gate-typed/src/openapi/check_synthesis.rs L34-L109 F:crates/decision-gate-typed/src/openapi/comparator_derivation.rs L52-L134 - 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/router.rs L3173-L3241 F:crates/decision-gate-mcp/src/tools/router.rs L3808-L3887
- Runtime comparator evaluation in the core returns tri-state results and
yields
Unknownwhen evidence types do not match expectations. 2) تقييم المقارن في وقت التشغيل في النواة يُرجع نتائج ثلاثية الحالة ويعطيUnknownعندما لا تتطابق أنواع الأدلة مع التوقعات. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L259
المحقق الصارم هو حارس البوابة؛ منطق وقت التشغيل هو الخط الأخير من سلوك الفشل المغلق. F:crates/decision-gate-mcp/src/validation.rs L36-L170 F:crates/decision-gate-core/src/runtime/comparator.rs L39-L197
خريطة مصدر الحقيقة
خط أنابيب التحقق (MCP)
تعريف السيناريو (scenario_define)
- MCP validates provider contracts and check schemas. F:crates/decision-gate-mcp/src/tools/router.rs L3216-L3220
- Strict validation enforces comparator/type compatibility and expected-value shape. F:crates/decision-gate-mcp/src/tools/router.rs L3216-L3220
- Implementation:
ToolRouter::define_scenario. F:crates/decision-gate-mcp/src/tools/router.rs L3173-L3241
التحقق المسبق (precheck tool)
- MCP validates payload against the registered data shape schema. F:crates/decision-gate-mcp/src/tools/router.rs L3848-L3858
- Strict validation enforces condition compatibility against the data shape schema. F:crates/decision-gate-mcp/src/tools/router.rs L3868-L3870
- Implementation:
ToolRouter::precheck. F:crates/decision-gate-mcp/src/tools/router.rs L3808-L3887
قواعد التحقق الصارمة (ملخص التنفيذ)
توافق نوع الفئة
- Implemented in
crates/decision-gate-mcp/src/validation.rs. تم التنفيذ فيcrates/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_classesوالمساعدات تستمد فئات الأنواع. F:crates/decision-gate-mcp/src/validation.rs L400-L535comparator_allowancesdefines allowed/opt-in/forbidden combinations.comparator_allowancesيحدد التركيبات المسموح بها/المختارة/الممنوعة. F:crates/decision-gate-mcp/src/validation.rs L234-L398validate_expected_valueensures expected-value shapes match schema.validate_expected_valueيضمن تطابق أشكال القيمة المتوقعة مع المخطط. F:crates/decision-gate-mcp/src/validation.rs L587-L673
عائلات المقارنات الاختيارية
- 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
تجاوزات المجال
x-decision-gate.allowed_comparatorsrestricts allowed comparators to a subset of the type-class matrix.x-decision-gate.allowed_comparatorsيقيّد المقارنات المسموح بها إلى مجموعة فرعية من مصفوفة نوع الفئة. 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 = trueيعامل المخطط على أنه ديناميكي (بدون نوع محدد) ويسمح بالتحقق من المقارنات بالاستمرار دون قيود نوع، مع مراعاة إعدادات التكوين. F:crates/decision-gate-mcp/src/validation.rs L400-L414
معالجة الاتحاد
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. تسمح الاتحادات القابلة للاحتواء بـ null دون توسيع مجموعة المقارنات. F:crates/decision-gate-mcp/src/validation.rs L703-L755
دلالات المقارنات في وقت التشغيل (الأساسية)
- Numeric comparisons are decimal-aware (no float rounding). المقارنات العددية تأخذ في الاعتبار الأرقام العشرية (بدون تقريب للكسور العائمة). F:crates/decision-gate-core/src/runtime/comparator.rs L148-L277
- RFC 3339
date/date-timeordering is supported for string values. دعم ترتيبdate/date-timeوفقًا لمعيار RFC 3339 للقيم النصية. F:crates/decision-gate-core/src/runtime/comparator.rs L168-L295 - Unsupported comparisons yield
TriState::Unknown. المقارنات غير المدعومة تعطيTriState::Unknown. F:crates/decision-gate-core/src/runtime/comparator.rs L65-L198 in_setonly applies to scalar evidence values; arrays/objects yieldUnknown.in_setينطبق فقط على قيم الأدلة السلمية؛ المصفوفات/الكائنات تعطيUnknown. F:crates/decision-gate-core/src/runtime/comparator.rs L250-L258- Implementation:
crates/decision-gate-core/src/runtime/comparator.rs. التنفيذ:crates/decision-gate-core/src/runtime/comparator.rs. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308
واجهة التكوين
- Strict validation is default-on. Disabling strict requires
validation.allow_permissive = true. التحقق الصارم مفعل بشكل افتراضي. تعطيل التحقق الصارم يتطلبvalidation.allow_permissive = true. F:crates/decision-gate-config/src/config.rs L1472-L1511 - Optional comparator families are gated by config toggles. عائلات المقارنات الاختيارية محجوزة بواسطة مفاتيح التكوين. F:crates/decision-gate-config/src/config.rs L1472-L1487
- Implementation:
crates/decision-gate-config/src/config.rs(ValidationConfig). التنفيذ:crates/decision-gate-config/src/config.rs(ValidationConfig). F:crates/decision-gate-config/src/config.rs L1469-L1521
توافق العقد + الوثائق
- Comparator schema and annotations are in
crates/decision-gate-contract/src/schemas.rs. مخطط المقارنات والتعليقات موجود فيcrates/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. التلميحات العامة والإرشادات موجودة فيcrates/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
قائمة التغيير
- Update comparator semantics in
crates/decision-gate-core/src/runtime/comparator.rs.- تحديث دلالات المقارنات في
crates/decision-gate-core/src/runtime/comparator.rs. F:crates/decision-gate-core/src/runtime/comparator.rs L39-L308
- تحديث دلالات المقارنات في
- Update strict validation logic in
crates/decision-gate-mcp/src/validation.rs. 2) تحديث منطق التحقق الصارم فيcrates/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) تحديث مفاتيح التكوين فيcrates/decision-gate-config/src/config.rsإذا لزم الأمر. 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) إعادة توليد العناصر فيDocs/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