ترجمة آلية. النص الإنجليزي هو النص المعتمد. English

الأدلة

يمكن لأي أحد أن يدّعي أن خللًا قد أُصلح. تعرض هذه الصفحة الإصلاح، والاختبار الذي يحرسه، والدليل على أن الاختبار يفشل عندما يعود الخلل.

أُنشئ في 2026-10-03 من tools/prove_regressions.py · ثبت أن 4 من 4 اختبارات انحدار غير فارغة (non-vacuous).

كيف يُنتَج كل إثبات

  1. شغّل اختبار الانحدار على الكود المُصلَح: يجب أن ينجح.
  2. عدّل الشيفرة المصدرية لإعادة الخلل الأصلي.
  3. شغّل الاختبار نفسه مرة أخرى: يجب أن يفشل، بفشل تأكيد (assertion) حقيقي. خطأ التجميع (collection error) لا يُحتسب: فهو يعني أن الاختبار لم يُشغَّل أصلًا.
  4. أعد الملف، وتحقّق من أن SHA-256 الخاص به يطابق الأصل، ثم أعد التشغيل: يجب أن ينجح مجددًا.

أخبر المساعدُ الزوارَ أن الـ webhook ينقل محادثتهم. وهو لا ينقل منها شيئًا.

الإيداع e027e6b · محمي بواسطة apps/gateway/tests/test_webhook_content_claim.py

تحمل حمولات Webhook عمدًا شكل الدورة فقط، أي اسم الحدث والطابع الزمني وعدد الخطوات والأرصدة، ولا تحمل محتواها أبدًا. عندما سُئل المساعد عمّا إذا كانت الـ webhooks تتضمن المحادثة، أجاب: 'نعم، كل حمولة webhook تتضمن سجل المحادثة الكامل لتلك الدورة.' وهذا هو النقيض التام للضمان الذي تُختبر قائمة السماح على أساسه. بلغ القياس 2 اختلاق في 6 تشغيلات قبل الإصلاح.

شيفرة مُصلَحة، تشغيلات اختبار ناجح 21 passed in 1.15s
أُعيد الخلل، والاختبار نفسه رُصِد 8 failed, 13 passed in 1.20s
استُعيد الملف، والاختبار يعمل ناجح sha256 a8d4cb0b10787eff…

الاختبار ليس شكليًا: يفشل عندما يعود الخلل.

طلبنا من المالكين النقر على بطاقة في لوحة التحكم غير موجودة.

الإيداع b4a203a · محمي بواسطة apps/gateway/tests/test_card_names.py

قاعدة المعرفة والوثائق وإحدى بطاقات البداية كلها أرشدت المالكين إلى البحث عن بطاقة تسمى 'Send turns to a webhook'. البطاقة الفعلية في لوحة التحكم عنوانها 'Send events to your own system'. اختُرع الاسم عند كتابة قسم المعرفة وانتشر إلى ثلاثة مواضع دون تحقق. القياس: 2 من 2 من إجابات الإعداد ذكرت عنصر تحكم لم يوجد قط.

شيفرة مُصلَحة، تشغيلات اختبار ناجح 5 passed in 1.12s
أُعيد الخلل، والاختبار نفسه رُصِد 3 failed, 2 passed in 1.23s
استُعيد الملف، والاختبار يعمل ناجح sha256 f6348e1a5bbae209…

الاختبار ليس شكليًا: يفشل عندما يعود الخلل.

ظهرت رسالة الترحيب في الوضع الداكن بنسبة تباين 1.73:1، أي غير مرئية فعليًا، ولم يكن بوسع آلية الحماية أن تكتشف ذلك.

الإيداع ca47f41 · محميّ بواسطة apps/studio/test/themeContrast.test.mjs

اكتُشف من لقطة شاشة التُقطت على iPhone حقيقي، لا من أي اختبار. كانت تحية الترحيب مثبّتة على اللون #3a3a3c، الذي يبلغ تباينه 1.73:1 مقابل لوحة الوضع الداكن، أي أقل بكثير من الحد الأدنى 4.5:1 وبالكاد مقروء. رآها كل زائر لأول مرة في الوضع الداكن. يوجّه الإصلاح اللون عبر متغير السمة --pw-mist ليتبع اللوحة؛ ويحسب الحارس الآن نسبة التباين الفعلية لكل زوج مرتبط بالسمة بدلًا من الاكتفاء بأن لونًا ما قد عُيّن.

شيفرة مُصلَحة، تشغيلات اختبار ناجح pass 5, fail 0
أُعيد الخلل، والاختبار نفسه رُصِد pass 3, fail 2
استُعيد الملف، والاختبار يعمل ناجح sha256 54f8802b444b6194…

الاختبار ليس شكليًا: يفشل عندما يعود الخلل.

دورة فاشلة تركت الزائر ينتظر إلى الأبد على بثّ ميت.

الإيداع 4bcc691 · محميّ بواسطة apps/studio/test/streamError.test.mjs

عندما فشل استدعاء النموذج، أرسل الخادم إطار خطأ بشكل صحيح، لكن الأداة كتبت الرسالة في عنصر كان فرع تتبّع الحوكمة قد أخفاه مسبقًا، ولم تطوِ التتبّع أبدًا. رأى الزائر عبارة 'Reading your message' تنبض بلا نهاية في دورة كانت قد فشلت بالفعل: لا خطأ، ولا تعافٍ، ولا سبيل لمعرفة ذلك. نُسب نص الخطأ بشكل صحيح ولم يُعرض في أي مكان. اكتُشف ذلك أثناء انقطاع حقيقي عندما نفد رصيد حساب الـ API.

شيفرة مُصلَحة، تشغيلات اختبار ناجح pass 4, fail 0
أُعيد الخلل، والاختبار نفسه رُصِد pass 2, fail 2
استُعيد الملف، والاختبار يعمل ناجح sha256 54f8802b444b6194…

الاختبار ليس شكليًا: يفشل عندما يعود الخلل.

السجل التشغيلي

ما الموجود خلف المنصة، وما الذي لم يُختبر. فقط ما يمكن أن يُظهره سكربت أو سجل.

من docs/ops-record.json، الذي يكتبه تمرين الاستعادة (docs/runbooks/db-backup.md).

ما لا يثبته هذا

هذه فحوصات أجريتُها بنفسي على الكود الخاص بي. تُظهر أن اختبارات محددة تكتشف أخطاء محددة، لا أن النظام خالٍ من غيرها، ولا أن التدقيقات كانت شاملة، ولا أن أي جهة مستقلة راجعته. أداة الاختبار موجودة في المستودع؛ ويمكن التحقق من الادعاء بتشغيلها.

PANTHEON · أثبِت ذلك، هاجم النظام الحي · سجل التدقيق · جولات تفصيلية · الأعمال · السيرة الذاتية