الفحص الجمركي للكود: كيف نضمن تحسين برامج الأطفال دون أخطاء ✛

الأصل: "Certificate-Carrying Transformation of Event-Driven Block Programs"
· Yuan Si, Jialu Zhang
arXiv:2607.00563 · 2026-07-01 · CC BY 4.0 · 4 دقيقة
قبل أن يعدل لعبة طفل، يعيد المدقق الرسمي حساب كافة شروط الحفاظ على السلوك — وعندها فقط يمنح الإذن.

السياق

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

المنهجية

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

النتائج

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

الأهمية

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

التطور المستقبلي

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

التأثير

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

الخطوات التالية

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

المسائل المفتوحة الرئيسية

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

نظرة آلة المعرفة

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

ماذا يفعل هذا العمل

تقدم هذه الورقة نظام CertiBlock للتحسين الآمن لمشاريع Scratch: حيث يقترح مُحسِّن غير موثوق إزالة الكود الميت، بينما يتحقق مُراقِب موثوق من كل تعديل بالاعتماد على نظرية الإطار المُبرهَنة آليًا في Lean. أظهرت التجارب على 300 مشروع عشوائي أن المُراقِب قبل تعديلًا واحدًا على الأقل يحافظ على السلوك في 94.3% من الحالات.

أين تكمن قوته

تكمن القوة في الضمان الرسمي للحفاظ على السلوك الملاحَظ أثناء التحسين، والمُكيَّف ليتوافق مع تعدد المهام التعاوني ونموذج الأحداث في Scratch، مما يسد الفجوة بين التحقق التقليدي للمُصرِّفات ولغات البرمجة المرئية الفعلية.

إلى أين يمكن المضي

  • يمكن النظر في استخدام أساليب التعلم التكيفي لضبط معاملات عدسة الملاحظة: على سبيل المثال، تحديد جوانب السلوك المهمة لمشروع معين تلقائيًا، بالاعتماد على ملاحظات المستخدم.استنادًا إلى: تصحيح الأخطاء الكمومية يتعلم أثناء الطيران arXiv:2607.10707
  • من المثير للاهتمام دراسة كيفية استخدام الضوضاء وعدم اليقين في سلوك الآلة الافتراضية في Scratch لتعزيز موثوقية التحقق: على سبيل المثال، إضافة اضطرابات عشوائية مضبوطة عند اختبار التكافؤ.استنادًا إلى: الضوضاء التي تساعد على تصحيح الأخطاء arXiv:2608.09583v1
  • ربما يجدر استكشاف طرق لمعالجة الأخطاء في الوقت الفعلي، بحيث لا يقتصر دور المُراقِب على رفض التعديلات الخطرة فحسب، بل يقترح أيضًا تصحيحات تحافظ على نية المؤلف.استنادًا إلى: مترجم كمومي يتعلم من أخطائه arXiv:2604.27648

يستحق التجربة

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

الملخص الأصلي

كما كتبه المؤلفون، بالإنجليزية arXiv:2607.00563

Block-based end-user languages such as Scratch run tens of millions of programs. Existing tools establish behavior preservation through program analysis and testing without a checked guarantee. We turn optimization into certificate-carrying source-to-source rewriting. An untrusted optimizer proposes a rewrite; a trusted, fail-closed checker accepts it only after recomputing every side condition that the rewrite's behavior preservation depends on under an explicit observation lens. The checker is the sole authority: given a correct checker and a small, explicitly stated set of model-to-VM assumptions, an optimizer bug cannot mint an unsound acceptance. The observation lens is a parameter, and the central soundness argument is a cooperative-frame refinement theorem: a write overwritten before any thread observes it, within a window in which no thread yields, can be removed. We mechanize this theorem in Lean and show that one parametric statement covers two concrete rewrite families instantiated to variable state and renderer state. We build a checker for six rewrite families and evaluate it on 300 real Scratch projects. The checker accepts a behavior-preserving rewrite on 94.3% of projects (283 of 300); certification costs under one tenth of a second per project; and a cross-family adversarial campaign of 4,278 perturbed rewrites produces zero false accepts. An audit found eight false accepts the per-family test suites missed; each is now rejected. An ablation that strips the semantic side conditions, leaving analysis and testing alone, ships rewrites the virtual machine confirms change behavior; the full checker rejects every one. The result shows how to provide behavior-preservation guarantees for a concurrent, event-driven, end-user language. The checker recomputes every required condition instead of trusting optimizer claims, keeping the trusted base small.

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

أرقام رئيسية

  • نسبة المشاريع ذات التحسين الناجح: 94.3% (283 من 300)
  • غياب القبولات الخاطئة في الهجوم: 0 من 4278 تعديلاً تشويشياً
  • أسطر الكود الموثوق (بايثون): 9 921
  • أسطر البرهان المُمَيْكَن (لين): 5 909
  • متوسط زمن فحص المشروع: عشرات الميلي ثانية
المفاهيم
مفتوح المصدر معيار مرجعي التحقق المتقاطع عتبة الخطأ رمز المثبت إثبات المفهوم تكرار كريسبر