الوكيل يقول إن شيئًا ما حدث
تبدأ كل واحدة من تلك المشاهد بنفس الطريقة: نثر سلس يؤكد حقيقة. “تم الاستشهاد: فارغيز ضد خطوط الصين الجنوبية.” “أضفت 5 اختبارات وجميعها ناجحة.” “الإصدار 2.1 جاهز للشحن.”
وضع الفشل ليس أن الوكلاء يكذبون أكثر مما كانوا عليه. بل إن النظام المحيط يعامل الجملة كحقيقة. لا شيء في “هم جميعًا يمرون” يحمل اختبار التشغيل، أو الالتزام الذي تم تشغيله ضده، أو من شاهده. الادعاء هو اقتراح حول الواقع، ويتطلب الاقتراح شيئًا خارج المقترح قبل أن يصبح حقيقة تشغيلية.
الاقتراح الذي يهم
الخطوة الأولى هي تحديد ما تلتزم به الجملة فعليًا، وكتابتها كشرط مكتوب:
Claim: "I added 5 tests and they all pass."
C1: new_test_count == 5
C2: all(required_test_status == PASSED)
C3: tested_commit_digest == delivery_commit_digest
كل شرط يسمي مجال ملاحظة مغلق (عدد صحيح، تعداد enum، ملخص بعرض ثابت) وعبارة شرطية عليه. لا يوجد مجال لـ “خمسة تقريبًا” أو “غالبًا ما ينجح”، ولا يوجد تمييز ضمني يقرر لاحقًا ما إذا كان 1 يساوي 1.0. لاحظ C3: لا شيء في الجملة الأصلية ذكر الالتزامات، لكن “نجح” بلا معنى دون “نجح في ماذا”. كتابة الشروط هي المكان الذي تصبح فيه الافتراضات الصامتة التزامات صريحة.
الأدلة
تتحقق الشروط من خلال الأدلة، والأدلة لا تحصل أبداً على فائدة الشك. كل قطعة تحمل حقائقها بشكل علني: كيف وصلت (مقدمة من الحزام المتصل، أو مكتسبة من مصدر محلي معلن)، ما الذي يتعلق به بالضبط (أي تشغيل، أي التزام، أي حساب)، متى تم ملاحظتها، ما هي حماية النزاهة التي تغطيها، ومدى استقلالية مصدرها عن الوكيل الذي يتم التحقق منه.
هذه الحقائق ليست مدمجة في درجة ثقة واحدة. سياسة استخدام الأدلة لحالة ما تسمي المجموعة التي تكفي لهذا الادعاء في ذلك السياق. قد يقبل سير العمل الخاص بالتطوير تقرير اختبار الوكيل الخاص به؛ بينما قد يتطلب سير العمل الخاص بالإصدار إيصالًا من نظام مستقل، مرتبط بالالتزام الدقيق. نفس القيمة البولينية، تحت سياستين، تحمل كميتين مختلفتين من الأدلة — ويحتفظ النظام بذلك التمييز بدلاً من تجاهله.
حاضر، غائب، مفقود، غير كافٍ
عندما تطلب حالة ما دليلاً، فإن الإجابة تحل بالضبط واحدة من أربع طرق:
| Resolution | Meaning |
|---|---|
| Present | قيمة تلبي السياسة متاحة. |
| ObservedAbsent | إثبات كامل يثبت الغياب في كون معلن. |
| Missing | لم يتم تزويد أو الحصول على أي شيء لهذا الهدف. |
| Insufficient | توجد أدلة، لكن لا شيء منها يلبي السياسة. |
الصفان الأوسطان هما المكان الذي تتجاوز فيه الأنظمة العادية المطالبات. استعلام السجل الذي ينتهي وقته لا يثبت شيئًا. بحث لم يُرجع أي صفوف ولكنه لم ينتهِ من التصفح لا يثبت شيئًا. فقط استعلام كامل على كون مُعلن يمكن أن يثبت أن السجل غائب - وهو بالضبط الفحص الذي كانت بحاجة إليه مشهد الاقتباس المُزيف: ليس “لم نجدها”، ولكن “بحث كامل في المُبلغ يثبت أنها غير موجودة.”
صحيح، خطأ، غير معروف
يؤدي استخدام دالة محددة على حل صالح إلى إنتاج واحدة من ثلاث نتائج دلالية:
| النتيجة | المعنى |
|---|---|
| صحيح | الدليل يفي بالفرض. |
| خاطئ | الدليل يتعارض مع الفرض. |
| غير معروف | الأدلة المقبولة لا تحدد الفرض. |
الحالة غير المعروفة هي حالة العمل، وليست خطأ. يجب على الأنظمة ذات القيمتين أن تتجاهلها - غير المثبتة تصبح خاطئة (البيانات المفقودة تعاقب كفشل) أو غير المثبتة تصبح صحيحة (التقدم غير المدعوم يتم تمريره). القيم الثلاثة تسمح للبوابة بالاحتفاظ: ادعاء وكيل الترميز بدون تقرير اختبار ليس خاطئًا، إنه غير محدد، ويمكن لسير العمل أن يحدد بدقة أي التزام مفتوح.
تظل الفشل خارج هذا المثلث. خطأ في التحليل، انتهاء المهلة، تفويض مرفوض - هذه أحداث تشغيلية لها معالجتها الخاصة. لا يتم تقديمها أبداً على أنها Unknown، ولا يتم تحويلها بهدوء إلى False.
المتطلبات
تتجمع الشروط الفردية لتصبح متطلبات — منطق “تم”:
ALL(C1, C2, C3) -- every obligation holds
ALL(tests_passed, coverage_met,
critical_findings == 0) -- the release gate from the overview
QUORUM(2 of: alice_approved,
bob_approved,
carol_approved) -- human sign-off as evidence
تقييم المتطلبات حتمي ويحافظ على Unknown: متطلب لا يمكن لمدخلاته أن تقرر بعد، يبقى غير محدد بدلاً من أن يتراجع. الموافقة البشرية تتكون مثل أي شرط آخر - توقيع مسجل هو دليل، وغيابه يحجز البوابة، واثنان من ثلاثة نصاب توقف معنى “من أجاب على Slack أولاً.”
سير العمل هي رسوم بيانية
العمل الحقيقي ليس خطًا مستقيمًا. يمكن أن تعمل الاختبارات وفحص الأمان بالتوازي؛ الانتظار للموافقة على كلاهما؛ التسليم ينتظر الموافقة. نموذج Decision Gate يمثل سير العمل كرسوم بيانية للاعتماد عبر المراحل:
build --> verify-tests ----+
+--> approval --> bind-artifact --> release
build --> security-scan ---+
المرحلة ليست جاهزة، أو مفتوحة، أو مكتملة — وتأتي الجاهزية من التقدم المكتمل المقبول، وليس من رواية أي شخص عنه. التقدم يتحرك فقط للأمام: بمجرد أن تكون المرحلة جاهزة لأن متطلباتها قد اكتملت، لا يمكن للتقدم اللاحق في مكان آخر أن يجعلها غير جاهزة. إنهاء آخر مربع لا يثبت شيئًا بمفرده؛ السيناريو يعلن قانون اكتماله الخاص على المراحل المكتملة.
التقدم المقبول
التقييم ينتج نتيجة؛ القبول يجعلها تاريخًا. كل عملية تحتفظ بسجل مقبول لما تم إنشاؤه: أي الشروط تم حلها، من أي دليل، تحت أي سياسة، إكمال أي مراحل. يتم تسجيل المطالبات المثبتة مع أدلتها. تُحتفظ المطالبات غير المثبتة — مغلقة بالفشل — مع الالتزام غير المحلَّل المُسمى. لا شيء يتقدم لأن جملة بدت مكتملة.
السجل مُعد ليتم التحقق منه لاحقًا: ما تم الادعاء به، وما تم ملاحظته، وما تم اتخاذه من قرارات يمكن إعادة التحقق منه دون الاعتماد على النظام الذي سجله. هذا هو ما يحول “الوكيل قال ذلك” إلى “التشغيل يظهر ذلك.”
استمر في المضي قدماً
التطبيقات تعرض هذه القطع داخل أسطح المنتجات الحقيقية. كيف يعمل يقدم الحجة بشكل صارم - بما في ذلك ما لا تدعيه هذه الآلات عمدًا. المستندات تحمل المرجع الكامل.