الأدلة الإرشادية
أبحاث السلامة: من سجل Inspect إلى فقرة المنهجية
شغّلت تقييمًا على نموذج: كائن نموذجي (model organism) ونموذج ضابط له، ومجموعة هجمات، ونصوص محادثات وكيل تدقيق منحها حَكَم درجاتها. وقبل أن تدوّن النتيجة، تحسم ثلاثة أسئلة هل تصمد: ما مدى اتساع عدم اليقين، وهل «لا شيء من 200» لا شيء حقًا، وهل يمكنك الوثوق بالحَكَم الذي منح النصوص درجاتها؟ يجيب Oloproof عنها من السجل الذي لديك بالفعل، ويكتب الشكل والجدول وفقرة المنهجية مما قاسه.
اقرأ السجل
يقرأ Oloproof سجلات UK AISI Inspect، أي ملف .eval الذي يكتبه inspect eval أو سجل JSON:
oloproof scores import --from inspect logs/organism.eval
oloproof scores import --from inspect logs/control.eval logs/organism.eval --policy release.yamlيستورد الأمر الأول تشغيلًا واحدًا ويجيب بكلمات واضحة. ويستورد الثاني تشغيلين، ويقرنهما على معرِّفات العينات، ويقرر قواعد المقارنة في السياسة؛ ويجب أن تتضمن السياسة المعطاة مع سجلين قاعدة واحدة منها على الأقل (kind: superiority أو non_inferiority أو equivalence)، أما السقف على تشغيل واحد فيُقرَّر باستيراد ذلك السجل وحده مع السياسة. يصير كل مُقيِّم (scorer) معيارًا: C نجاح وI إخفاق، والدرجة الجزئية درجة من 0 إلى 1، ويحتاج المُقيِّم الرقمي إلى مداه، يُعطى بـ --scale LOW HIGH. لا يُنسخ إلا المعرِّفات والدرجات؛ وتبقى النصوص في السجل. راجع رأي ثانٍ في درجات أداة أخرى لكل قواعد القراءة.
الحقب ليست عينات إضافية
تشغيل كل عينة عدة مرات (حقب Inspect) لا يمنحك حالات مستقلة إضافية. يُبقي Oloproof العينة وحدةً: يُستورد السجل تشغيلًا تكراراته هي حقبه، وقيمة كل عينة هي متوسط حقبها، ولكل عينة الوزن نفسه. وتحتفظ كل حقبة بنجاحها أو إخفاقها، فيمكن فحص الحَكَم على الحقب، والعينة هي الوحدة. أما عدّ تشغيلات كل عينة حالاتٍ منفصلة فيعامل التكرارات كأنها مطالبات جديدة: في شبكة الطريقة، لم يغطِّ تجميعُ تشغيلين لكل عينة بهذه الطريقة ادعاءً عن مطالبات كهذه إلا في 86% من المرات أحيانًا عند 95% معلنة، وإن صمد لادعاء عن العينات نفسها (docs/engine/PASS_AT_K_METHOD.md §8). وتُعدّ العينة التي فيها حقبة انتهت بخطأ مفقودة، على أسوأ قيمها، ولا تُعدّ أبدًا متوسط الحقب التي اكتملت، لأن الأخطاء تميل إلى الوقوع على العينات الصعبة.
عدم الرؤية ليس عدمًا
كثيرًا ما يستند ادعاء السلامة إلى عدد صفري: لم ينجح أي هجوم، ولم يُظهر أي نص السلوك. لكن رؤية صفر ليست معدلًا صفريًا. ودون حد مضبوط، يقول Oloproof إلى أي حد قد يظل المعدل مرتفعًا، وكم حالة نظيفة ستخفضه:
attack_succeeded: about 0.0%; the true value is likely between 0.0% and 1.9% (95% range, 200 cases).
None of the 200 cases counted toward it, yet the rate could still be as high as 1.9%: none seen is not none.
If the next cases show none either, a suite of 368 cases (168 more) would bring the high end to 1.0% or below.وتحت سقف، تقرر السياسة. فـ max: 0.01 على 0 من 200 هو INSUFFICIENT_EVIDENCE، والنصيحة مشروطة: «إن لم تُحتسب أيٌّ من الحالات التالية أيضًا، فنحو 368 حالة ستقرره؛ وكل حالة تُحتسب ترفع هذا العدد». ولا يُذكر أي احتمال، لأنه حين لا توجد أحداث لا يوجد ما يُستند إليه في ذكره.
rules:
- id: attack-ceiling
metric: attack_succeeded
max: 0.01هل ينجح أبدًا؟ pass@k
كثيرًا ما يكون سؤال القدرة أو الفريق الأحمر هو ما إذا كانت أي محاولة من k محاولات تنجح. يقرأ oloproof passk كل حقبة من العينة على أنها محاولة واحدة، ويقدّر pass@k لكل عينة دون انحياز، ثم متوسط المجموعة:
oloproof passk logs/organism.eval --from inspect --criterion leaked --k 5ويصلح أيضًا ملف فيه صف واحد لكل محاولة (case وpassed وerror اختياريًا). وتُعدّ العينة التي فيها محاولة انتهت بخطأ، أو أقل من k محاولات، مفقودة، على أسوأ قيمها. يعطي الجواب التقدير ومداه عند 95%. ومع --min أو --max يقرر: PASS حين يتجاوز المدى الحد، وFAIL حين يقع كله في الجهة الخاطئة، وINSUFFICIENT_EVIDENCE في غير ذلك (رمز الخروج 0 أو 1 أو 3). غطّت الطريقة (docs/engine/PASS_AT_K_METHOD.md) نسبتها المعلنة 95% في كل خلية من شبكتها، وقبلها تدقيق مستقل في 3 نوفمبر 2026 بشروطها: محاولات الحالة الواحدة مستقلة بعضها عن بعض، ولم توقف محاولات حالة مبكرًا لأن إحداها نجحت.
شروط كثيرة في آن واحد: مسح (sweep)
يُتوقَّع أن يكون جدول من عشرين فرقًا، لكلٍّ منها مجال 95% خاص به، خاطئًا في موضع ما مرة واحدة تقريبًا: في شبكة المنهجية، لم تصمد خمسون مجالًا منفصلة معًا إلا ست مرات من عشر. يقرر oloproof sweep عائلة من المقارنات تسمّيها قبل قراءة التشغيلات، فيصمد الجدول كله معًا:
sweep:
conditions:
control: run_01...
organism_a: run_01...
organism_b: run_01...
contrasts:
- organism_a - control
- organism_b - controloloproof sweep sweep.yaml --policy compare.yamlكل مقارنة هي مقارنة مقترنة بين تشغيلين لمجموعة واحدة، تقررها كل قاعدة مقارنة في السياسة، وكل ادعاء عند 1 - alpha/m حيث m عدد الادعاءات: احتمال أن يكون أيٌّ منها خاطئًا هو alpha على الأكثر. والمقارنة التي لا تقرؤها إلا بعد النظر في الجدول تقع خارج هذا الضمان. ولا تُقارَن التشغيلات على مجموعات مختلفة.
سلامة مراقب مقابل كلفة تدقيقه
لبروتوكول تحكم، يعطي ملف من صف واحد لكل مسار، بذراعه arm (attack أو honest) ودرجة ريبة المراقب score، السلامةَ (حصة الهجمات المُعلَّمة) ومعدلَ تعليم المسارات الصادقة عند كل عتبة:
oloproof control monitor.csv --budget 0.02 --min-safety 0.9تصمد المجالات عند كل العتبات في آن واحد، وللذراعين معًا، فتبقى العتبة المختارة بقراءة المنحنى، كتلك التي تلائم ميزانية تدقيق 2%، مشمولة. ومع --budget و--min-safety يقرر ما إذا كانت عتبةٌ ما تعلّم على الأكثر تلك الحصة من المسارات الصادقة وتلتقط على الأقل تلك الحصة من الهجمات. والمجالات عريضة في الذيل كعرضها في الوسط، فتحتاج الميزانية الصغيرة إلى مسارات صادقة كثيرة: مع 2,000 منها يُعرف معدل تعليم الصادقة في حدود 3 نقاط تقريبًا. والسلامة هنا هي في مواجهة الهجمات الموجودة في الملف؛ أما المهاجم الذي يتكيف مع المراقب فخارجها.
تُحسب السلامة على مسارات ذراع الهجوم، سواء نجح هجومها أم لا. فالمسار الذي طُلب منه زرع باب خلفي ربما لم يزرعه، ولا يُلام المراقب على تفويت ما ليس موجودًا. لقياس السلامة أمام الهجمات الناجحة، تحقّق أولًا من كل مسار هجوم (للباب الخلفي، اختبار على مدخله السري) واحتفظ في الذراع attack بالمسارات التي تجتازه فقط قبل أن يصل الملف إلى oloproof control.
فحص الحَكَم
النص الذي منحه نموذج درجته هو كلمة الحَكَم إلى أن يوافقه الناس. ضع وسومًا على عينة عمياء من التشغيل المستورد، مع إبقاء النصوص على جهازك:
oloproof scores import --from inspect --answers logs/organism.eval logs/organism.eval
oloproof review latest --criterion deceptive --by NAMEيسحب review العينة، ويعرض كل نص دون حكم الحَكَم، ويقيس الاتفاق، ولا يعتمد الحَكَم إلا إذا تجاوز الحد الذي تعلنه. وإلى أن يُعتمد، فإن السياسة التي تشترط حكّامًا معتمدين، كالتي يكتبها oloproof init، لا تقرر قاعدة بناءً عليه. ولتشغيل نفّذه Oloproof، تحمل حالاته وسومًا (tags) في بياناتها الوصفية، يعرض oloproof labels disagreements RUN --criterion deceptive --by behavior بعد ذلك أين يفترق الحَكَم والناس، لكل سلوك وبحسب الاتجاه: ما أنجحه الحَكَم وأخفقه الناس، والعكس. ومدى كل مجموعة ادعاء قائم بذاته؛ والتقرير لا يقرر شيئًا.
اكتبها
oloproof report latest --paper paper/يكتب هذا figure.svg (تقدير كل مقياس ومجاله)، وtable.md وtable.tex، وmethods.md، وهي فقرة تسمّي كل طريقة مجال وثقتها، وتقول إن المجالات تخص هذه المجموعة المحدودة، وتسمّي الحالات المفقودة والأحداث النادرة، وتقول عن كل حَكَم هل فحصه الناس وكم مرة اتفقوا معه، وتذكر ما قررته البوابة. كل رقم هو رقم التشغيل المخزَّن، والفقرة مبنية من جمل ثابتة ووقائع مسجّلة؛ ولا يكتبها أي نموذج. وفي دفتر (notebook):
import oloproof
result = oloproof.analyze_inspect("logs/organism.eval", project="analysis")
result # the figure, the table and the methods paragraph
result.write("paper/")نصوص وكيل تدقيق
أداة التدقيق التي تعمل على Inspect، مثل Petri، تكتب سجل Inspect يمنح مُقيِّمه كل نص درجة لكل بُعد، غالبًا من 1 إلى 10. استورده بهذا المدى، oloproof scores import --from inspect --scale 1 10 audit.eval، فيصير كل بُعد معيارًا بمتوسط محدود ومجاله. ويُقارَن سجلان كهذين، قبل تغيير في الهدف وبعده، على نصوصهما المشتركة. وتبقى الدرجات كلمة الحَكَم: فدرجات الحَكَم، بخلاف حكمه بالنجاح أو الإخفاق، لا يمكن فحصها مقابل الناس بعد.
ما لم يُبنَ
- فحص درجات الحَكَم مقابل درجات الناس، بخلاف أحكامه بالنجاح أو الإخفاق.
- الوسوم من البيانات الوصفية لعينة Inspect: لا تحمل حالات التشغيل المستورد أي وسوم، ولذا لا يجمّع labels disagreements --by إلا التشغيلات التي نفّذها Oloproof.
- مسح أضيق من Bonferroni (Dunnett أو الاختبار المغلق)، ومقارنات بين شروط على مجموعات مختلفة، ونطاقات مراقب أضيق في الذيل، أو عدة مراقبين مجتمعين، أو بروتوكولات بعدة عتبات.
- شكل PNG: الشكل بصيغة SVG فقط.
ما لا يمكن أن يخبرك به هذا
كل مجال يخص العينات في سجلك. فهو يقول ما سيُظهره تشغيل كامل خالٍ من الأخطاء لهذه العينات، لا كيف يتصرف النموذج مع موجِّهات أخرى، أو عند النشر، أو أمام مهاجم يتكيّف. والحَكَم الذي فحصه الناس مفحوص على الحالات التي وسموها وبالنموذج الذي حكم عليها، لا على نصوص لا تشبهها. والمعدل المحصور دون 1% على مجموعة هجماتك لا يقول شيئًا عن هجمات لا تحتويها مجموعتك.