مشكلة الترتيب
يفشل الوكلاء المستقلون بطريقة محددة: يتصرفون قبل أن يتحقق أحد مما إذا كان الفعل مبررًا. تبدو الخطة معقولة، ويكون استدعاء الأداة سليم البنية، فيقع الأثر الجانبي. ولا يظهر عدم التطابق إلا لاحقًا، في سجل أو مهمة تسوية. وعندها يكون الدفع قد تم، أو يكون الحذف قد انتشر، أو تكون الرسالة الصادرة قد قُرئت.
تطرح هذه المقالة موقفًا واحدًا: لا يُجدي التحقق من التنفيذ إلا إذا وقع بين الخطة والأثر الجانبي. وهذا يعني أن طبقة التحقق يجب أن تكون اعتمادًا متزامنًا لاستدعاء الأداة، لا تدفق تدقيق غير متزامن. فالتحقق اللاحق ينتج أدلة بعد وقوع الضرر ولا يمكنه تغيير التشغيل. أما التحقق في المسار فيضيف زمن استجابة لكل استدعاء أداة، لذا يجب قصره على الأفعال غير القابلة للعكس فقط.
الترتيب هو الضابط. وكل ما عداه أدوات قياس.
موضعان للتحقق
هناك موضعان بالضبط يمكن أن تقع فيهما خطوة التحقق، ولهما خصائص متعاكسة.
التحقق اللاحق يعمل بعد عودة استدعاء الأداة. إنه رخيص، وسهل الإضافة، وينتج مخرجات مفيدة: مسارات تدقيق، وتقارير انحراف، وتنبيهات. لكنه لا يمكنه تغيير التشغيل. فإذا انطلق الفحص، يكون الأثر الجانبي قد وقع بالفعل. والفحوص اللاحقة هي الطريقة التي تكتشف بها الفرق أن وكيلًا ظل يكتب سجلات مشوهة طوال أسبوع. ذلك اكتشاف قيّم، لكنه ضابط رديء.
التحقق في المسار يعمل بين الخطة واستدعاء الأداة. فلا يُنفَّذ استدعاء الأداة حتى يُعيد الفحص حكمًا. هذا هو الترتيب الوحيد القادر على منع أثر جانبي سيئ، وهو الترتيب الوحيد الذي يكلّف زمن استجابة على كل استدعاء خاضع للبوابة. فالبوابة المتزامنة على حلقة يقودها نموذج ليست مجانية: تضيف رحلة ذهاب وإياب، وقد تنتهي مهلتها، وقد تفشل هي نفسها. والسؤال الهندسي ليس ما إذا كان يجب دفع هذه الكلفة، بل أين تُدفع.
تصنيف الأفعال حسب قابلية العكس
قاعدة التحديد هي قابلية العكس. يكون الفعل غير قابل للعكس إذا كان التراجع عنه يتطلب تعاونًا لا يملكه الوكيل، أو إذا كان التراجع نفسه أثرًا جانبيًا.

يتحمّل أخذ العينات والمراجعة غير المتزامنة:
- القراءات. القراءة التي تُعيد بيانات قديمة أو خاطئة يمكن تداركها بإعادة القراءة. لا تضع البوابة إلا على التصريح والخروج، لا على المحتوى.
- المسودات. المسودة التي لا تُرسل خاملة. ويمكن أن تكون المراجعة غير متزامنة.
- الكتابات في بيئة الاختبار. الكتابات في نطاق اختباري أو مخزن مؤقت للإضافة فقط تتحمل المراجعة المتأخرة، بشرط أن تكون الترقية إلى الإنتاج نفسها خاضعة للبوابة.
تحتاج فحوصًا متزامنة:
- المدفوعات والتحويلات. حركة الأموال هي الفعل غير القابل للعكس النموذجي. فالتراجع عنه استرداد، وهو يعتمد على طرف مقابل.
- الحذف. الحذف النهائي، وأي حذف يتسلسل، يحتاج بوابة متزامنة. أما الحذف الناعم فصنف مختلف.
- الرسائل الصادرة. البريد الإلكتروني والدردشة وخطافات الويب والمنشورات العامة لا يمكن استرجاعها بعد قراءتها. فالاستدعاء ليس تراجعًا.
- الكتابات الخارجية. أي كتابة إلى نظام خارج حدود الثقة، بما في ذلك واجهات برمجة التطبيقات الخارجية وقواعد البيانات المشتركة، تغيّر حالة لا يملكها الوكيل.
يجب إعلان التصنيف لكل أداة، لا استنتاجه لكل استدعاء. فالأداة التي تكون أحيانًا قراءة وأحيانًا كتابة هي أداتان. والغموض في صنف قابلية العكس هو نفسه عيب.
ما يمكن للفحص أن يؤكده فعلًا
البوابة المتزامنة لا تكون أفضل من المحمولات التي تقيّمها. وهناك أربعة تستحق البناء، وهي تتكامل.
شكل الوسائط مقابل مخطط معلن. عقد مدخلات الأداة هو مخطط، ويتحقق الفحص من الوسائط المقترحة مقابله قبل الاستدعاء. وهذا يلتقط انحراف الأنواع، والحقول المطلوبة الناقصة، وصنف الفشل الذي يُخرج فيه النموذج كائنًا يبدو معقولًا لكن بنيته خاطئة. التحقق من المخطط رخيص وينتمي إلى المسار لكل أداة غير قابلة للعكس.
الوجهة مقابل عقد الخروج. تعلن كل أداة أين يُسمح لها بإرسال البيانات: أي مضيف، وأي حساب، وأي قناة. ويقارن الفحص الوجهة المحلولة بذلك العقد. هذا هو الضابط الذي يمنع إقناع الوكيل بإرسال حمولة إلى عنوان ظهر في محتوى مسترجع. عقد الخروج قائمة سماح ثابتة؛ والفحص مقارنة وقت التشغيل.
الميزانية المتبقية مقابل سقف الإنفاق للتشغيل. يحمل التشغيل ميزانية. وقبل أي فعل غير قابل للعكس، يقرأ الفحص الميزانية المتبقية والكلفة المقترحة، ويرفض إذا كان الفعل سيتجاوز السقف. هذا ليس حدًا لكل استدعاء، بل حد لكل تشغيل، حتى لا تتجمع حلقة من أفعال صغيرة فرديًا في فعل كبير. والآلية عدّاد تُنقصه البوابة ذ
تبقية نفسها.

مصدر القيم التي تُكتب. هذا أقلها شيوعًا وأكثرها أهمية. كل قيمة ستُحفظ تحمل وسم مصدر: مشتقة من نتيجة أداة، أو من مدخلات المستخدم، أو من إكمال نموذج. ويرفض الفحص كتابة قيمة مصدرها مولّد من نموذج في حقل يتطلب مصدرًا مشتقًا من أداة أو من المستخدم. هذا ما يمنع الوكيل من تبييض حقيقة مهلوسة إلى سجل. فبدونه، يصبح إكمال طليق صفًا في قاعدة بيانات، ويعيش الصف أطول من السياق الذي أنتجه.
يتطلب تتبع المصدر انضباطًا في المنبع: يجب وسم نتائج الأدوات عند الحدود، ويجب أن يحافظ المخطط على الوسوم عبر التحويلات. هذا عمل حقيقي، وهو الفرق بين بوابة تفحص الشكل وبوابة تفحص المعنى.
الكلفة وسلوك الفشل
البوابة الآن على المسار الحرج، لذا فإن أنماط فشلها هي أنماط فشل التشغيل.
الفشل مغلقًا عند انتهاء مهلة التحقق، واجعل ذلك السلوك الافتراضي لا علامة إعداد. البوابة التي تنتهي مهلتها فتسمح بالفعل ليست بوابة. فإذا لم يستطع الفحص إعادة حكم خلال مهله، لا يُنفَّذ الفعل، ويُظهر التشغيل انتهاء المهلة كخطأ من الدرجة الأولى. وجعل هذا علامة إعداد يغري بضبطها على التسامح أثناء حادثة، ثم تركها كذلك. ينبغي أن يكون السلوك الآمن هو السلوك الوحيد، أو أن يتطلب السلوك غير الآمن تجاوزًا صريحًا قابلًا للتدقيق يُسجَّل هو نفسه.
قِس معدل الإيجابيات الكاذبة لطبقة التحقق نفسها. البوابة التي تحجب أفعالًا مشروعة هي بوابة تُعطَّل. ومعدل الإيجابيات الكاذبة هو نسبة الأفعال الصحيحة التي ترفضها البوابة. وينبغي تتبعه لكل محمول، لأن فحص المخطط وفحص المصدر يفشلان بطرق مختلفة. فمحمول المصدر كثير الضجيج سيكون أول ما يوقفه المشغّل، ومتى أُوقف، انفتح مسار التبييض من جديد. والمقايضة الصادقة أن تشديد محمول يقلل السلبيات الكاذبة ويرفع الإيجابيات الكاذبة، وبقاء البوابة يعتمد على إبقاء الرقم الثاني منخفضًا بما يكفي ألا يرغب أحد في إزالتها.
هناك كلفة من الدرجة الثانية. فكل فحص متزامن اعتماد، والاعتمادات تفشل. ويجب أن تكون البوابة أكثر إتاحة من الأدوات التي تحرسها، وإلا صارت هي الانقطاع. وهذا يعني عادةً تقييم المحمولات محليًا مقابل عقود وعدادات مخزنة مؤقتًا، بدل استدعاء خدمة سياسات بعيدة عند كل فعل.
أين يترك هذا الحلقة
المعمارية التي تنتج عن حجة الترتيب صغيرة. تعلن الأدوات صنف قابلية العكس. وتعلن الأدوات غير القابلة للعكس مخططًا، وعقد خروج، وتفاعلًا مع الميزانية، ومتطلب مصدر. وتستدعي حلقة الوكيل البوابة، وتستدعي البوابة الأداة. ويظل التحقق اللاحق موجودًا، لكن مهمته اكتشاف محمولات ينبغي إضافتها، لا التقاط أفعال وقعت بالفعل.
الجزء غير المريح أن هذا يدفع التحقق إلى المسار الساخن للنظام، حيث يشعر كل تشغيل بزمن استجابته وبإيجابياته الكاذبة. وهذا هو المقصود. فالضابط الذي لا يشعر به التشغيل ليس ضابطًا للتشغيل. والبديل، تدفق تدقيق غير متزامن، سجل لما فعله الوكيل، والسجل ليس قرارًا.
