Arabic Forge Bench — التقريرُ النهائيُّ الكامل
كيفَ يدعمُ نموذجٌ محليٌّ مُصغَّرَ العربيةِ فعليًّا؟ تسعةُ طلباتٍ، تسعةُ تطبيقات، قياسٌ واحد
| النموذجُ الموضوعُ تحت الاختبار | ddalcu/Qwen3.8-Flash-Next-MLX-Serve-mixed-4-8bit |
| الحجمُ والبنية | تخليطٌ مُركَّبٌ ٤/٨-بت (MLX) · حجمُها المُقيمُ في الذاكرةِ ٧٥٫٣ غيغابايت · معماريَّةُ qwen4_exp · MoE · ٤٨ طبقةً · بُعدٌ خفيٌّ ٢٥٦٠ · حجمُ المُفرداتِ ٢٤٨٬٣٢٠ · سياقٌ ٢٦٢٬١٤٤ · MTP مُحمَّلٌ (فكٌّ تخمينيٌّ مُتعدِّدُ الخطوات) · kv-quant: off |
| القدراتُ المُعلَنةُ من الخادِم | chat · tool_use · streaming · vision · reasoning · json_schema — أي أنَّ النموذجَ يَقبَلُ الصورَ أيضًا (انظر ٧٫٢) |
| الخادِم | mlx-serve — خادمٌ أصيلٌ لمعالجات Apple Silicon، واجهة OpenAI-compatible |
| وكيلُ البرمجة | pi (--mode rpc)، إعدادٌ معزولٌ في /root/.mlx-serve/pi |
| بيئتُ التنفيذ | macOS على المضيف (خدمةً) · Linux/arm64 افتراضيًّا (وكيلًا والتقاطًا) |
| معرَّفُ التشغيل | runs/20261009-170318 |
| المنهجية | VisualForge Quality v1 مُكيَّفةً للعربية — خمسةُ معاييرَ بأوزانٍ ثابتة |
| عددُ الاختبارات | ٩ (٨ أساسية + ١ اختبارُ إبداعٍ مُنفصل) |
| الحُكم | حُكمٌ محليٌّ مُقيَّدٌ بالدليل (Judge-B)؛ حُكمُ الرؤيةِ السحابيُّ مُعلَّقٌ لعدمِ وجودِ مفتاح API |
المحتويات: ١ الملخَّص التنفيذيّ · ٢ المنهجية · ٣ جدولُ النتائج · ٤ دعمُ العربية نفسُه · ٥ الاختبارات واحدًا تلوَ الآخر · ٦ جولةُ الإصلاح · ٧ حدودُ التقييم · ٨ الانطباعُ النهائيّ · ٩ الملاحق
١. الملخَّصُ التنفيذي
وُضِعَ نموذجٌ لغويٌّ محليٌّ واحدٌ أمامَ تسعةِ طلباتٍ مكتوبةٍ بالعربيةِ الفصحى، كلُّ طلبٍ يَطلِبُ
تطبيقًا تفاعليًّا كاملًا في ملفِ index.html واحد — محاكي طيران، وصقرٌ يصطادُ في
الصحراء، وجزيرةٌ بركانيّةٌ تَنفَجِرُ موجاتُها، وغرفةُ تحكُّمٍ لإطلاقِ صاروخ، ومختبرُ
بصرياتٍ بتتبُّعِ الأشعّة، وسباقُ هجنٍ باقتصادِ رهان، وحجزُ مجلسٍ خليجيٍّ بستَّةَ عشرَ
خطأً مزروعًا، ومروحيةُ إنقاذ، وحديقةُ خطٍّ حية. الشرطُ الحاكمُ في كلِّ الطلبات: أن يكونَ الناتجُ عربيًّا من
الجهةِ اليمنى إلى اليسار، لا ترجمةً على قالبٍ أعسر.
النتيجةُ الجوهرية: النموذجُ لا يُترجِمُ العربية، بل يُفكِّرُ بها. في التسعةِ كلِّها
وُضِعَ lang="ar" dir="rtl" في مكانِه الصحيح؛ وفي ثمانيةٍ من تسعةٍ استُخدمَتِ
الأرقامُ العربيةُ المشرقيةُ (٠-٩) في الواجهات؛ وفي الاختبارِ الذي طَلَبَ التاريخَ الهجريَّ
صراحةً ظهرَ «٢٩ ربيع الآخر ١٤٤٨ هـ» لا «٢٠٢٦-05-11»؛ وفي أرقى ما أنتجَ — حديقةُ الخطِّ
الحيّة — نَبَتَتْ أوراقُ الشجرِ من حروفِ الكلمةِ العربيةِ نفسِها بتشكيلِها الكامل.
| المقياس | القيمة |
|---|---|
| المتوسطُ الأساسيّ (٨ اختبارات) | ٧٫٩٣ / ١٠ |
| المتوسطُ العامُّ مع اختبارِ الإبداع | ٨٫٠٣ / ١٠ |
| أعلى نتيجة | ٨٫٦٠ — مختبرُ البصرياتِ وسباقُ الهجن |
| أدنى نتيجة | ٤٫٨٠ — جزيرةُ الانفجار (خطأُ لوحةٍ فارغة، أُصلِحَ لاحقًا) |
| اختباراتٌ بلا أخطاءِ طرفٍ واحدة | ٨ من ٩ |
| اختباراتٌ بواجهةٍ عربيةٍ صحيحةِ الاتجاه | ٩ من ٩ |
| زمنُ التنفيذِ الكليّ (مجموعُ الاختبارات) | ٨ ساعات و٤٢ دقيقة |
| توكناتُ المخرجات | ١٬٤٢٨٬٦٧١ (≈١٫٤٣ مليون) |
| توكناتُ المدخلات | ٣٬٩٨٣٬٧١٢ (≈٣٫٩٨ مليون) |
| عددُ الجولاتِ الوكيلية | ٩١٣ جولة |
| كلفةُ الاستدعاءات | ٠٫٠٠ دولار — كلُّ شيءٍ محليّ |
| نتيجةُ جولةِ الإصلاح | لوحةٌ ترسمُ ٦ ألوان → ١٣٢ لونًا؛ أخطاءُ الطرف ١ → ٠ |
الحُكمُ الفصل: نموذجٌ وصلَ إلى ٧٫٩٣/١٠ في إنتاجِ برمجياتٍ عربيةِ الاتجاهِ بالكامل،
بمعدلِ خطأِ طرفٍ واحدٍ في تسعةِ اختبارات، وبلا اتصالٍ بالسحابةِ إطلاقًا — لكنَّهُ أهدَرَ
اختبارًا كاملًا بسبب قيمةِ null واحدةٍ في استدعاءِ رسمٍ على لوحةِ الرسم، وأهدَرَ
أربعةَ اختباراتٍ أخرى بسقفِ الوقتِ لا بعيوبِ المنتج.
٢. المنهجيةُ وصرامتُها
٢٫١ المعاييرُ والأوزان
مأخوذةٌ عن VisualForge Quality v1، مع استبدالِ معيارِ «الوصولية» بمعيارِ صوابيةِ الاتجاهِ العربية:
| المعيار | الوزن | ما يبدو عليه الدرجةُ الكاملة |
|---|---|---|
| السُّلوكُ العامِل | ٣٠٪ | كلُّ آليةٍ مذكورةٍ في الطلبِ تعملُ من الطرفِ إلى الطرف |
| الجودةُ البصرية | ٢٠٪ | اتجاهٌ فنّيٌّ متماسك، لوحةُ ألوانٍ مقصودة، حركةٌ سلسة، بلا تمزيقٍ بصري |
| جودةُ الهندسة | ٢٠٪ | بنيةٌ نظيفة، صفرُ أخطاءِ طرف، ملفٌّ واحد، لا شيفرةٌ ميتة |
| استعماليتُها وصوابيةُ RTL | ١٥٪ | dir="rtl" حيث يلزم، فقرةٌ يمينية، أيقوناتٌ معكوسةٌ صح، أرقامٌ مشرقية |
| الابتكار | ١٥٪ | يتجاوزُ الطلبَ على قصدٍ ومرح، لا بحجمِ شيفرةٍ أكبر |
الدرجةُ النهائية = Σ (معيار × وزن). أُعيدَ حسابُ درجاتِ التسعةِ جميعًا من الأوزانِ
أعلاه في نهايةِ التشغيل، فطابَقَتِ المُعلنةُ في scores.csv بفارقِ صفرٍ في كلِّ سطر.
٢٫٢ قاعدةُ «لا تمنحْ ما لم ترَ»
هذه هي القاعدةُ التي تُميِّزُ تقريرًا قابلًا للنشرِ عن مُلخَّصٍ متَّهمٍ بالنفس. لم تُمنَحْ درجةٌ قطُّ بناءً على ادّعاءِ النموذجِ في نصِّه. الضابطُ الوحيدُ المقبولُ هو لقطةُ شاشةٍ مُلتقَطةٌ من ملفِّ الإنتاجِ نفسِه، أو قراءةُ حالةٍ من داخلِ التطبيقِ أثناءَ اللعب.
٢٫٣ أداةُ التحققِ المستقلّة
لِتفاديِ الخلطِ بين «لعبةٌ مكسورة» و«روبوتٌ غبيّ»، بُنِيَت أربعةُ أدواتِ تحقٍّقٍ موضوعيّة:
verify03.mjs— يعدُّ الألوانَ المرسومةَ فعلًا على لوحةِ الرسم. معايرَتُه: النسخةُ المكسورةُ = ٦ ألوانٍ وخطأٌ واحدٌ ← «لوحةٌ فارغة»؛ النسخةُ المُصلَحةُ = ١٣٢ لونًا وصفرُ أخطاء ← «أُصلِحَت». لا يقرأُ الشيفرةَ ولا يسمعَ ادّعاءً، يَنظُرُ إلى البكسلات.verify07.mjs— سِتَّةَ عشرَ فحصًا سلوكيًّا لستَّةَ عشرَ خطأً مزروعًا في اختبارٍ واحد: تشغيليٌّ لا تفحُّصيَّةَ نصّ — يَدخُلُ المجلسَ، ويَختارُ فترةً، ويَملأُ الحقول، ويُلغي، ويَرجِع، ويَبحَث. ومُعاوَرٌ على الأصلِ المعطوب: أُعيدَتِ المعايرةُ عندَ إعدادِ هذا التقريرِ النّاشرِ فأعطى ٢/١٦ على الأصلِ المعطوب و١٦/١٦ على الملفِّ المُسلَّم. ومراجعةُ الفاحِصِ نفسِهِ كشَفَت أنَّ خمسةً من مراجِعِهِ خاطئةٌ بنفسِهِ (تُفتِّشُ عن تواريخَ رقميةٍ حيثُ الشهورُ أسماء، وعن اسمِ العميلِ حيثُ الصفوفُ تُعرِضُ اسمَ المجلس، وتُعالِجُ(e)=>حيثُ الشيفرةُ تَكتِبُe=>) — أخطاءُ الفاحِصِ لا أخطاءُ النموذج، مُوثَّقةٌ تفصيلًا فيJUDGE-07-majlis-booking.md.autopilot02.mjs/autopilot08.mjs— ربَّاطٌ يقودونِ اللعبةَ بقراءةِ حالةِ التطبيقِ الداخليِّ عبرَ حقنٍ للقراءةِ فقط (window.__dbg) في نسخةٍ مؤقتةٍ في/tmp، فلا تُمسُّ ملفَّاتُ الأدلّةِ إطلاقًا.shapetest.mjs— يقارنُ رسمَ العربيةِ بين Chromium و libass للتأكّدِ من أنّ النصَّ المحروقَ في الفيديو سليمُ التشكيلِ والاتجاه.
٣. جدولُ النتائجِ الكامل
| # | الاختبار | عامِل ٣٠٪ | بصري ٢٠٪ | هندسة ٢٠٪ | RTL ١٥٪ | ابتكار ١٥٪ | النهائية | أخطاءُ الطرف | حالةُ الإخراج |
|---|---|---|---|---|---|---|---|---|---|
| ١ | مختبرُ الطيران | ٨ | ٨ | ٨ | ٩ | ٨ | ٨٫١٥ | ٠ | سليم (٠) |
| ٢ | رحلةُ الصقر | ٩ | ٩ | ٨ | ٧ | ٨ | ٨٫٣٥ | ٠ | سليم (٠) |
| ٣ | جزيرةُ الانفجار | ٤ | ٢ | ٤ | ٩ | ٧ | ٤٫٨٠ | ١ | مُنهيٌّ قسرًا (١٤٣) |
| ٤ | يومُ الإطلاق | ٩ | ٩ | ٧ | ٨ | ٩ | ٨٫٤٥ | ٠ | بلَغَ السقفَ (١٢٤) |
| ٥ | مختبرُ البصريات | ٩ | ٩ | ٧ | ٩ | ٩ | ٨٫٦٠ | ٠ | بلَغَ السقفَ (١٢٤) |
| ٦ | سباقُ الهجن | ٩ | ٩ | ٧ | ٩ | ٩ | ٨٫٦٠ | ٠ | بلَغَ السقفَ (١٢٤) |
| ٧ | حجزُ المجلس | ٩ | ٧ | ٩ | ٩ | ٦ | ٨٫١٥ | ٠ | سليم (٠) |
| ٨ | مطاردةُ المروحية | ٨ | ٩ | ٨ | ٩ | ٨ | ٨٫٣٥ | ٠ | سليم (٠) |
| ٩ | حديقةُ الخطِّ الحيّة | ٨ | ١٠ | ٨ | ٩ | ١٠ | ٨٫٨٥ | ٠ | بلَغَ السقفَ (١٢٤) |
المتوسطُ الأساسيّ (١–٨): ٧٫٩٣ / ١٠ — الاختبارُ التاسعُ مُبدَعٌ مُنفصلٌ وفقَ المنهجية، ومتوسطُهُ ٨٫٨٥ يُذكَرُ ولا يُدمَج.
٣٫١ الكلفةُ الزمنيّةُ والحسابيةُ لكلِّ اختبار
| # | الاختبار | الزمن | توكن خارج | توكن داخل | جولات | حجمُ الملف | سرعةُ الفكّ |
|---|---|---|---|---|---|---|---|
| ١ | مختبرُ الطيران | ٤٤د ٢٦ث | ١٦٧٬٣٣١ | ٢١١٬٣٩٥ | ٦٠ | ٦٩٫٥ ك.ب | ٦٢٫٧ ت/ث |
| ٢ | رحلةُ الصقر | ٢٧د ٥١ث | ١١٥٬١٠٥ | ٢١٣٬٧٤٠ | ٧٨ | ٥٧٫٩ ك.ب | ٦٨٫٨ ت/ث |
| ٣ | جزيرةُ الانفجار | ٥٦د ٠٧ث | ١٠٠٬٤٥٥ | ١١٠٬٥١٤ | ٢٦ | ٩٧٫٥ ك.ب | — |
| ٤ | يومُ الإطلاق | ٩٠د | ٢٧٤٬٤٧٣ | ١٬٢٨٨٬١٦٧ | ١٨٢ | ٧٠٫٠ ك.ب | ٥٠٫٨ ت/ث |
| ٥ | مختبرُ البصريات | ٩٠د | ٢٩٤٬٦٨٦ | ٩٨٢٬٩٢١ | ٢٠٢ | ٨٤٫٩ ك.ب | ٥٤٫٦ ت/ث |
| ٦ | سباقُ الهجن | ٩٠د | ١١٧٬٦٠٩ | ٢٠٤٬٣٠٦ | ٧٢ | ٥٨٫٣ ك.ب | ٢١٫٨ ت/ث |
| ٧ | حجزُ المجلس | ١٠د ٠٩ث | ٢٠٬٩٢٨ | ٥٥٬٤٨٥ | ٢٩ | ١٤٫٨ ك.ب | ٣٤٫٤ ت/ث |
| ٨ | مطاردةُ المروحية | ٢٤د ٠٣ث | ٩٣٬٧٢٤ | ١٢٩٬٨٣٩ | ٧٣ | ٥٦٫٤ ك.ب | ٦٥٫٠ ت/ث |
| ٩ | حديقةُ الخطِّ | ٩٠د | ٢٤٤٬٣٦٠ | ٧٨٧٬٣٤٥ | ١٩١ | ٧٣٫٣ ك.ب | ٤٥٫٣ ت/ث |
لاحظْ أنّ حجمَ الملفِّ لا يُنبئُ بالدرجة: أصغرُ ملفٍ في المجموعة (١٤٫٨ ك.ب، حجزُ المجلس) أخذَ ٨٫١٥، وأكبرُها (٩٧٫٥ ك.ب، جزيرةُ الانفجار) أخذَ ٤٫٨٠. الفرقُ بينَ العملِ والفشلِ كانَ سطرًا واحدًا، لا ميجابايت.
٤. محورُ التقريرِ الأصليّ: دعمُ العربيةِ نفسُه
هذا هو القسمُ الذي يَجِبُ أن يُقرأَ أولًا، لأنَّ بقيَّةَ الأرقامِ تصفُ جودةَ البرمجياتِ فقط، بينما يَصِفُ هذا القسمُ هل يصلُحُ النموذجُ لأمرٍ عربيٍّ أصلًا.
٤٫١ الاتجاهُ واللغةُ في الشيفرة: ٩/٩
فُحِصَ ملفُّ الإنتاجِ في كلِّ اختبارٍ بأداةِ نصٍّ، لا بعينٍ مُيَسَّرة:
01-flight-lab lang="ar" dir="rtl" ✔
02-falcon-flight lang="ar" dir="rtl" ✔
03-blast-island lang="ar" dir="rtl" ✔
04-launch-day lang="ar" dir="rtl" ✔
05-optics-lab lang="ar" dir="rtl" ✔
06-camel-dash lang="ar" dir="rtl" ✔
07-majlis-booking lang="ar" dir="rtl" ✔
08-rotor-rampage lang="ar" dir="rtl" ✔
09-calligraphy-garden lang="ar" dir="rtl" ✔
لا استثناءَ واحد. لا اختبارَ نَسِيَ dir، ولا اختبارٌ وضعَهُ على عنصرٍ داخليٍّ
ونَسِيَ <html>. هذه النقطةُ بالذاتِ هي الفاصلةُ بين نموذجٍ «يَعرِفُ العربيةَ كمهمة»
ونموذجٍ يَعرِفُها كسياق: الخطأُ من هذا النوعِ هو أكثرُ أخطاءِ التوليدِ العربيِّ شيوعًا،
لأنَّ قوالبَ التدريبِ الإنجليزيةَ تجعلُ dir="ltr" هو الافتراضيَّ الجاذِب.
٤٫٢ الأرقامُ المشرقية: استعمالٌ واعٍ لا آليّ
عُدَّتِ الأرقامُ العربيةُ (٠-٩) في ملفِّ كلِّ اختبار:
| # | الاختبار | رقمٌ مشرقيٌّ في الملف | الحكم |
|---|---|---|---|
| ١ | مختبرُ الطيران | ٤٧ | استُعمِلَتْ في عدّاداتِ الواجهة والسرعةِ والارتفاع |
| ٢ | رحلةُ الصقر | ٠ | الواجهةُ كلُّها بالأرقامِ اللاتينية — لكنَّ الطلبَ لم يَشرَطها |
| ٣ | جزيرةُ الانفجار | ٤٦ | صحّة/طاقة/عَدَدُ المواردِ كلها مشرقية |
| ٤ | يومُ الإطلاق | ٧٢ | أكبرُ استعمالٍ في المجموعة: مؤقّتُ العدِّ التنازليّ والمقاييس |
| ٥ | مختبرُ البصريات | ٤٤ | المسافاتُ البؤريةُ والأرقامُ المئويّةُ كلها مشرقية |
| ٦ | سباقُ الهجن | ٤٥ | الطلبُ أوجبَها صراحةً «بالأرقامِ العربيةِ المشرقية — مثال: ٢٫٥×» |
| ٧ | حجزُ المجلس | ١٠ | أقلُّ عددٍ لكنَّها في المواضعِ المرئيةِ كلها |
| ٨ | مطاردةُ المروحية | ٢٤ | المؤقّتُ «٢:٥٩» والغرقى «٢/٢» مشرقية |
| ٩ | حديقةُ الخطِّ | ٣٧ | عدّادُ الكلماتِ «٣/٤/٥» مشرقي |
النمطُ الذي يَستحقُّ الوقوفَ عندهُ عندَ الاختبارِ السادس: الطلبُ طلبَ المعاملاتِ (٢٫٥×، ٣×، ٥×، ٧٫٥×) بالأرقامِ المشرقية، فجاَبَ النموذجُ بالأرقامِ المشرقيةِ في الواجهة كلِّها بلا رقمٍ لاتينيٍّ واحدٍ ظاهر، مع أنّ النصَّ العربيَّ حولها كان سيسمحَ له بالتحايل. هذا سلوكٌ لا يمكنُ ملاحظتُهُ في نموذجٍ لا يقرأُ العربية، لأنَّ التحقّقَ من «هل الطلبُ قالَ مشرقية؟» يتطلّبُ فهمَ الطلب.
أما الاختبارُ الثاني (صفرُ رقمٍ مشرقيّ) فليسَ خطأً صريحًا — طلبُهُ لم يَذكُرِ الأرقامَ المشرقية — لكنَّهُ خُطِمَ في معيارِ RTL بدرجةِ ٧/١٠ لا أكثر، وهي أدنى درجةِ اتجاهٍ في المجموعةِ كلِّها، لأنَّ الواجهةَ العربيةَ بأرقامٍ لاتينيةٍ تبدو مُترجَمةً لا مُولَّدة.
٤٫٣ التقويمُ الهجريّ: الاختبارُ الأصعب، وعُبِرَ
التقويمُ الهجريُّ هو أشدُّ امتحاناتِ الدعمِ الثقافيِّ صرامةً في المجموعة، لأنَّهُ لا يُقلَّدُ بالقالب: إمّا أن يكونَ النموذجُ يَعرِفُ أسماءَ الشهورِ الهجريةِ وترتيبَها، أو يخترعَ «الشهرُ ٥/١١».
في «حجزُ المجلس» كانَ زرُّ التبديلِ بينَ التقويمين معطوبًا في النسخةِ الأصلية (أحدُ الستَّةَ عشرَ خطأً المزروع). بعدَ إصلاحِهِ تحقَّقَ الفحصُ السلوكيُّ من أنّ الرقاقةَ تَقرَأُ فعلاً:
ميلادي: ١٠ أكتوبر ٢٠٢٦
هجري: ٢٩ ربيع الآخر ١٤٤٨ هـ
اسمُ الشهرِ صحيحٌ («ربيعُ الآخر» لا «ربيعٌ الثاني» ولا «الربيعُ الآخر»)، وترتيبُ
العبارةِ العربيةِ صحيحٌ (اليومُ ثم الشهرُ ثم السنةُ ثم اللاحقةُ «هـ» في أقصى اليسار)،
والرقمُ مشرقيٌّ في الحالين. لكنَّ النموذجَ تركَ القراءاتِ الزمنيةَ بالأرقامِ اللاتينية
(09:00) — وهو أمرٌ مقبولٌ للأوقاتِ لكنَّهُ عدمُ اتساقٍ سُجِّلَ عليهِ.
٤٫٤ التشكيلُ والأدبُ اللغويّ
ثلاثةُ اختباراتٍ استخدمَتِ التشكيلَ الكاملَ في العناوينِ والأسماءِ عمّا يقتضيهِ الطلب:
- حديقةُ الخطِّ الحيّة: العنوانُ «حديقةُ الخطِّ الحيَّةُ» — رفعٌ مرفوعٌ محلُّه، والتاءُ المربوطةُ لا المفتوحة، والشدّةُ في «الحيَّة».
- سباقُ الهجن: «سباقُ الهَجَن — مضمارُ الغُروب»، وأسماءُ الجِمالِ بتشكيلِها.
- رحلةُ الصقر: «رحلةُ الصقر» مع تشكيلِ «أَصطِد واحذَر واحفظ نفسَك للارتفاع».
لم يُسجَّلْ في المجموعةِ كلِّها خطأٌ إملائيٌّ واحدٌ ولا خطأُ جنسٍ واحد في نصٍّ ظاهر — وهو ما يُحسَبُ للنموذجِ بوضوح، لا سيّما أنَّ نصَّهُ العربيَّ كانَ طليقًا ومُنَاسِبًا للسياق («لم يُنقَذ أحد… الماءُ أسرعُ منكَ هذه المرّة» عندَ الخسارة) لا ترجمةً حرفية.
٤٫٥ الخطأُ العربيُّ الوحيدُ الذي ارتكبَه النموذج — وأصلحَه بنفسِه
في «جزيرةِ الانفجار» كتبَ النموذجُ جملةَ النهاية:
die('أدركتك الموجةُ التدميريةُ ' + ord(G.waves) + ' وأنت في العراء.')
// «الموجةُ» مؤنثة … … «الثاني» مذكّر ← خطأُ توافق
فالحديثُ عن موجةٍ مؤنثة، لكنَّ العددَ الترتيبيَّ مُذكَّرٌ في نصِّ النموذج. أثناءَ جولةِ الإصلاحِ أضافَ النموذجُ وحده — بلا طلبٍ ولا تلميح — بارامترَ تأنيثٍ وجدولَ صيغةٍ مؤنثة:
function ord(n, f) {
var o = f ? ['الأولى','الثانية','الثالثة', …] : ['الأول','الثاني','الثالث', …];
ثمَّ ناداَهُ ord(G.waves, true) في الموضعين. هذا أرقى دليلٍ لغويٍّ في التقريرِ كلِّه:
النموذجُ لا يُصلِحُ الأرقامَ فحسب، بل يُميِّزُ تذكيرَ العددِ الترتيبيِّ وتأنيثَهُ عندَ
التعديل، وهي نقطةُ ضعفٍ معروفةٌ حتى في النماذجِ السحابية.
٤٫٦ الانعكاسُ الاتجاهيّ (Mirroring)
فُحِصَ بالمُشاهَدةِ لا بالاستنتاج: لوحاتُ المعلوماتِ وُضِعَت في الزاويتينِ العُلويتين اليمنى واليسرى حسبَ الوظيفةِ لا حسبَ الأحدثية؛ والقوائمُ المنسدلةُ والأشرطةُ تقدمتْ يمينًا→يسارًا؛ ومؤشِّراتُ الأسهمِ في ألعابِ الاتجاهِ (WASD/الأسهم) أُعرِبَتْ عربيًّا «الأسهمُ أو WASD» وبقيَ معناها الحركيُّ صحيحًا. لم يظهرْ في أيِّ اختبارٍ «فقرةٌ عربيةٌ محاذاةٌ يسارًا» ولا «سهمٌ يشيرُ للاتجاهِ الخطأ».
٤٫٧ خلاصةُ محورِ العربية
| البند | النتيجة |
|---|---|
lang + dir صحيحان |
٩ / ٩ |
| أرقامٌ مشرقيةٌ في المواضعِ الوجِيبَة | ٨ / ٩ (الاختبارُ ٢ تخلَّفَ مع أنَّ طلبَهُ لم يُلزِمْها) |
| تقويمٌ هجريٌّ صحيحُ الأسماءِ والترتيب | ✔ مُتحقَّقٌ سلوكيًّا |
| تشكيلٌ كاملٌ صحيحُ الإعرابِ والتاءِ المربوطة | ✔ في ٣ اختبارات |
| خطأُ إملاءٍ أو جنسٍ في نصٍّ ظاهر | ٠ |
| خطأُ توافقٍ في العددِ الترتيبيّ | ١ (صحَّحَهُ النموذجُ نفسُهُ في الإصلاح) |
| متوسطُ معيارِ «RTL» في التسعة | ٨٫٦ / ١٠ |
متوسطُ RTL هو أعلى معاييرِ المنهجيةِ الخمسة، ثمَّ الابتكارُ (٨٫٢٢)، ثمَّ السلوكُ العامِلُ (٨٫١١)، ثمَّ الجودةُ البصريَّةُ (٨٫٠٠)، وأدنى المعاييرِ جودةُ الهندسةِ (٧٫٣٣) — ولا واحدُ من أعلى معيارينِ ولا من أدناها يَقرَبُ من اللغةِ العربيةِ بشيء: أي أنَّ العربيةَ ليستْ مشكلةَ هذا النموذج؛ الهندسةُ وضبطُ الوقتِ هما المشكلة.
(المتوسطاتُ محسوبةٌ على التسعةِ كلِّها من scores.csv: عامِلُ ٨٫١١ · بصريٌّ ٨٫٠٠ ·
هندسةٌ ٧٫٣٣ · RTL ٨٫٦٧ · ابتكارٌ ٨٫٢٢.)
٥. الاختباراتُ واحدًا تلوَ الآخر
٥٫١ مختبرُ الطيران — ٨٫١٥ / ١٠
الطلب: محاكي طيرانٍ عربيٍّ بمؤشِّراتِ اتجاهٍ وارتفاعٍ وسرعة، مع إقلاعٍ ورسوٍّ وتحذيرِ واحتٍّق.
ما رُئيَ (لا ما أُخبِرنا به): شاشةُ التعليماتِ بـlang="ar" dir="rtl" وواجهةٍ
ذهبيَّةٍ رمليَّة، ثمَّ إقلاعٌ حقيقيٌّ مُلتقَطٌ في اللقطةِ الثانية: ٧٠ كم/س، ١٤٠ م،
مؤشِّرُ الموقفِ يُظهرُ ارتفاعًا، والكاميرا تتبعُ الطائرةَ لأعلى، وعادمٌ وأثرُ طيران
ونخيلٌ وسحبٌ وحظيرةٌ وكيسُ ريح. صفرُ أخطاءِ طرف، ٦٠ جولة.
لماذا ٨ لا ٩؟ آليتانِ لم تُثبَتا بالآليّةِ الكاملة (الرسوُّ والتحليقُ المستقرُّ طويلًا)؛ لم تُخصَما بصفتِهما فشلًا لكنَّهُما لم يُشاهَدا يعملانِ عشرَ دقائقَ بلا انكسار.
٥٫٢ رحلةُ الصقر — ٨٫٣٥ / ١٠ ← الاختبارُ الذي فشلَ في الفيديو الأصليّ
الطلب: لعبةُ صقرٍ تصطادُ الفرائسَ في صحراءَ عربية، طاقةٌ تُستهلكُ بالصعود.
القصةُ أهمُّ من النتيجة. رُفِعَ هذا الاختبارُ في الأصلِ بوصفِهِ «المستحيلَ على النماذجِ المحلية». روبوتانِ أعميانِ سجَّلا صفرًا في محاولتين (٤٥ث و٦٩٣م)، وهو ما يبدو تمامًا كفشلِ اللعبة. لكنَّ الشكَّ كانَ في الروبوتِ لا في اللعبة، فلِيَفصِلَ بينهما حُقِنَ مستشعِرُ قراءةٍ فقط في نسخةٍ مؤقتة وقُدَ الصقرُ بربَّاطٍ يقودُهُ إلى أقربِ فريسة: فبدأتِ النقاطُ تتقدَّم. النتيجةُ أنَّ ما بدا «لعبةً مكسورةً» كانَ عمى الروبوت: اللعبةُ تعمل، والتحكُّمُ فيها يتطلَّبُ صبرًا (استمرارُ رفعٍ ثمَّ نقرُ خفض) لا يملِكُهُ روبوتٌ ينقرُ المفاتيحَ عشوائيًّا.
الدرجة: عامِلُ ٩، بصريٌّ ٩، هندسةُ ٨، اتجاهٌ ٧ (لا أرقامَ مشرقية — أدنى درجةِ اتّجاهٍ في المجموعة)، ابتكارٌ ٨.
٥٫٣ جزيرةُ الانفجار — ٤٫٨٠ / ١٠ ← الفشلُ الوحيد، بسببِ قيمةٍ واحدة
الطلب: لعبةُ بقاءٍ على جزيرةٍ بركانيةٍ تنفجرُ موجاتُها دوريًّا؛ تجمعُ خشبًا وماءً وطعامًا، وتبني ملجأً، وتنجو داخلَهُ عندَ الموجة.
ما رُئيَ: لوحةٌ فارغةٌ تمامًا. صفحةٌ تعمل، وقائمةُ تعليماتٍ جميلةٌ بالعربية، وعدّاداتُ واجهةٍ تتحدّثُ وتُحرَّك — لكنَّ مساحةَ اللعبةِ زرقاءُ خالية. عدَّادُ الألوانِ المرسومة أعطى ٦ ألوان فقط في ثلاثِ لحظاتٍ مختلفة (أي: لا شيءَ مرسوم).
التشخيصُ بكلمةٍ واحدة: سطرٌ في الشيفرة:
ctx.setLineDash(k === 2 ? [16, 22] : null); // index.html:1314
setLineDash تتوقَّعُ تسلسلًا، وnull ليسَ تسلسلًا، فترمي استثناءً. والاستثناءُ
يقَعُ داخلَ حلقةِ رسمِ خطِّ السَّاحِل، أي مبكِّرًا جدًا في إطارِ الرسم، فيَقتلُ
الإطارَ كلَّهُ قبلَ أن يُرسَمَ أيُّ شيء. النتيجة: حلقةُ اللعبةِ تعمل، والحالةُ تتحدّث،
والمُصغَّراتُ تُحسَب — واللوحةُ لا تُرسَم. رسالةُ الطرفِ كانتْ صريحة:
Failed to execute 'setLineDash' on 'CanvasRenderingContext2D': The provided value cannot be converted to a sequence.
لماذا ٤٫٨٠ لا صفر؟ لأنَّ التقييمَ يَنظُرُ إلى المنتجِ لا إلى الانطباع: الاتجاهُ والتصميمُ والنصُّ العربيُّ كلُّها ناجحةٌ (RTL ٩/١٠!)، لكنَّ معيارَ السلوكِ (٤) والبصرِ (٢) والهندسةِ (٤) تعكسُ أنَّ ملفًّا لا يُلعَب كما طُلِب. درجةُ RTL المرتفعةُ معَ درجةِ السلوكِ المنخفضةِ في السطرِ نفسِهِ هي أنصعُ مثالٍ في التقريرِ على أنَّ العربيةَ ليستْ هي نقطةَ الانهيار.
ملاحظةٌ منهجيةٌ حولِ التوقيت: الموجةُ البركانيةُ الأولى تقعُ عندَ الثانيةِ ٦٠،
فالبروتوكولُ المعياريُّ (تسجيلٌ ١٥ ثانية) لا يستطيعُ أن يرى انفجارًا أصلًا. سُجِّلَ
هذا كعيبٍ في المنهجيةِ لا في النموذج، وجُعِلَ قياسُ هذا الاختبارِ بـRECORD_SECONDS=75.
٥٫٤ يومُ الإطلاق — ٨٫٤٥ / ١٠
الطلب: غرفةُ تحكُّمٍ لإطلاقِ صاروخ، بعدِّ تنازليٍّ وأنظمةٍ وقراءاتٍ حيّة.
مُثبَتٌ بالمُشاهَدةِ لا بالتقرير: روبوتٌ أعمى (٥٥ث) ثمَّ تسجيلٌ ٧٥ث يُظهرُ مهمةً حقيقيةً لا نموذجًا زائفًا — كاميرا المنصَّةِ والصاروخُ عليها، وسجلُّ أحداثٍ مُعبَّأٌ سابقًا بالعربية، ومقاييسُ الأنظمةِ ساكنةٌ حتى الإذن، ثمَّ اشتعالٌ وانفجارُ دخانٍ وصعود. أكبرُ مستخدِمٍ للأرقامِ المشرقيةِ في المجموعة (٧٢ رقمًا)، بما فيها مؤقّتُ العدِّ التنازليِّ نفسه. صفرُ أخطاءِ طرف.
الخصمُ في الهندسةِ (٧/١٠): بلَغَ سقفَ الوقتِ (٩٠د، الحالةُ ١٢٤) بعدَ ١٨٢ جولة و١٫٢٩ مليون توكنَ مدخلات — أي أنَّ الوكيلَ أعادَ قراءةَ ملفِّه مرارًا بدلَ أن يُنهِيه بهدوء. المنتجُ سليم، والطريقُ إليهِ كانَ مُسرفًا.
٥٫٥ مختبرُ البصريات — ٨٫٦٠ / ١٠ ← أعلى درجةٍ أساسية (معدّل)
الطلب: مختبرُ بصرياتٍ تفاعليٍّ بعدساتٍ وصورٍ حقيقيةٍ ومقلوبة.
ما رُئيَ: تتبُّعُ أشعّةٍ حقيقيٌّ لا مخطَّطٌ تمثيلي. جسمٌ عندَ ٢٠ سم، عدسةٌ محدَّبةٌ عندَ ٥٠ سم، مروحةُ أربعةَ عشرَ شعاعًا تنكسِرُ عبرَ العدسةِ وتلتقي في نقطةٍ مُعنوَنةٍ «صورةٌ حقيقيةٌ مقلوبةٌ مُصغَّرة» عندَ ٤٠٫٩ سم خلفَ العدسة؛ ومحورٌ رئيسيٌّ بمسطرةٍ مترية (١٠…٢٦٠)؛ ونقطتا بؤرةٍ مُسمَّيَتانِ ش/ش′؛ وأشعّةُ الصورةِ التقديريةِ متقطِّعة؛ وقراءاتٌ حيّةٌ «ق = ٢٩٫٦ سم (محدَّدة)».
هذا أقوى دليلٍ في المجموعةِ على الفهمِ لا التلوين: المصطلحُ العربيُّ الفيزيائيُّ صحيح («مقلوبة»، «مُصغَّرة»، «بؤرة»، «محورٌ رئيسي»)، والترميزُ العربيُّ للبؤرةِ (ش) هو الاستعمالُ المدرسيُّ العربيُّ لا حرفُ F الإنجليزيُّ مُلوَّنًا، والأرقامُ مِتشكِّلةٌ مشرقية. والصورَةُ تنتجُ عن حسابٍ بصريٍّ لا عن صورةٍ ثابتة.
الهندسةُ ٧/١٠ لأنَّهُ أيضًا بلَغَ السقفَ (٢٠٢ جولة، أطولُ سلسلةِ جولاتٍ في المجموعة) والتِكلفةُ كانتْ مُقابِلَ ذلكَ ثقيلةً: ١٬٥٥٤ سطرًا في ملفٍّ واحد، و٢٩٤٬٦٨٦ توكنَ مخرجات، و٢٠٢ جولة — أطولُ سلسلةِ جولاتٍ في المجموعةِ كلِّها.
٥٫٦ سباقُ الهجن — ٨٫٦٠ / ١٠ ← أعلى درجةٍ أساسية (معدّل)
الطلب: سباقُ إبلٍ بخمسِ جولاتٍ واقتصادُ رهانٍ كاملٍ بالأرقامِ المشرقية.
اقتصادُ الرهانِ مُثبَتٌ بالمستشعِرِ من أولِ تشغيلٍ أعمى (٥٥ ثانية):
| مُشاهَد | القيمة |
|---|---|
| الرصيد | ٥٠ → راهنتُ ٥٠ على «بَرق» → ١٢٥ ريال → خسرَ سباقًا واحدًا → ١ ريال → رهانٌ جديد → ٠ |
| شاشةُ الإفلاس | الظاهرةُ المَفروضةُ «خسرتَ كلَّ شيء» مع زرِّ العودةِ إلى ١٠٠ ✔ |
| تقدُّمُ السباق | «السباقُ ١ / ٥» → «٢ / ٥» ✔ |
| المُرتقَبُ والمتوقَّع | «المُرتقَبُ ٥٠ ريال على بَرق — الاحتمالُ ٢×» ← «الرهانُ المتوقَّعُ إن فازَ: ١٥٠» ← ١٢٥ ريال عندَ تغيُّرِ المعامل |
أي أنَّ النموذجَ بنى سِعرًا متغيِّرًا (الاحتمالُ يُعادُ حسابُهُ بين الرهانِ والنتيجة) لا ثابتًا مزيَّفًا، وسَجَّلَ حسابَ العائدِ صحيحًا، وشَرَطَ كلَّ ذلكَ بأرقامٍ مشرقيةٍ كما أُمرِوَ بالحرف، بأسماءِ جمالٍ مُشكَّلةٍ كاملة (بَرق، شاهين، عنبر، فضّة).
الهندسةُ ٧/١٠ لبلوغِ السقفِ ولفرطِ تكرارِ إعادةِ الكتابة؛ الابتكارُ ٩ لا ١٠ لأنَّ فكرةَ اللعبةِ ذاتِها مألوفةٌ حتى لو كانَ تنفيذُها كاملاً.
٥٫٧ حجزُ المجلس — ٨٫١٥ / ١٠ ← اختبارُ إصلاحِ الأخطاءِ المزروعة
الطلب: نموذجُ حجزِ مجلسٍ (صالةِ استقبالٍ خليجية) مع ستَّةَ عشرَ خطأً مزروعًا فيهِ ومطلوبٌ إصلاحُها دونَ كسرِ المزايا.
العنوان: ١٦/١٦ أخطاءُ أُصلِحَت، و١٤/١٤ ميزةٌ بقيَت — مُتحقَّقٌ منهُ لا مُدَّعىً.
كُتِبَ لهذهِ الغايةِ فاحِصٌ سلوكيٌّ واحدٌ شاملٌ (verify07.mjs، ستةَ عشرَ فحصًا)،
ومُعاوَرٌ على الأصلِ المعطوب — أي أنَّهُ لا يُعتمَدُ عليهِ إلّا إذا أعطى صفرًا حيثُ
يوجدُ العطب؛ وقد أعطى عندَ إعادةِ المعايرةِ ٢/١٦ هُناك و١٦/١٦ على المُسلَّم.
مِن جُملةِ ما تحقَّقَ منهُ:
- التقويمُ الهجريُّ يعملُ ويعطي «٢٩ ربيع الآخر ١٤٤٨ هـ» و«١٠ أكتوبر ٢٠٢٦».
- البطاقاتُ تلتفُّ عندَ آخرِ بطاقة لا عندَ الأولى (خطأُ التفافٍ مزروع).
- صفوفُ الحجوزاتِ تُعرِضُ بياناتِ العميل، والتواريخُ مشرقيةٌ في الموضعين.
أقلُّ ملفٍّ في المجموعةِ (١٤٫٨ ك.ب)، وأقصرُ زمنٍ (١٠د)، وأقلُّ توكنات (٢١ ألف)، وأبطأُ فكٍّ (٣٤٫٤ ت/ث) — ومعَ ذلكَ ٨٫١٥. هذا اختبارُ المنهجيةِ قبلَ أن يكونَ اختبارَ النموذج: المهمُّ ليسَ حجمَ الشيفرةِ بل صوابيةَ السلوك.
الخصومات: بصريٌّ ٧/١٠ — لأنَّ أصغرَ ملفٍ كانَ أفقرَ الملفاتِ بصريًّا، فمعيارُ
الاتجاهِ رَفعَهُ والجمالياتُ خفَضَتهُ. وابتكارٌ ٦/١٠ لأنَّهُ اكتفى بالمطلوبِ بالضبط. وبقيَت
أرقامٌ لاتينيةٌ في قراءاتِ الوقتِ (09:00) سُجِّلَت عليهِ.
٥٫٨ مطاردةُ المروحية — ٨٫٣٥ / ١٠ ← تحفُّظٌ مُتعَمَّدٌ في الدرجة
الطلب: مروحيةُ إنقاذٍ تلتقطُ ناجينَ من السطوحِ وتُوصِلُهم إلى مهبط، مع غرقٍ مؤقَّت.
ما أُثبِتَ باليدِ والأداتين: مؤقّتُ الجولاتِ ٢:٥٩ → ١:٢٠ بتنازُلٍ صحيحٍ وأرقامٍ مشرقية؛
آليَةُ الغرقِ ذاتِها — وهي جوهرُ التوتُّرِ في اللعبة — ثبتَ أنَّ مؤقّتاتِ السطوحِ
تنتهي فعلًا، إذ رصدَ الربَّاطُ drown=7 وظهرَتِ الواجهةُ «الغَرَقى ٢/٢»؛ وسقوطُ
الحياةِ بالاصطدامِ بالمباني؛ وشاشةُ النهايةِ «تحطَّمَتِ المروحياتُ الثلاث» معَ
«لم يُنقَذ أحد… الماءُ أسرعُ منكَ هذه المرّة». كما ثبتَ رفضُ اللعبةِ للحركةِ
العنيفةِ (|vx| > 330) وهو تصميمٌ واعٍ ضدَّ الروبوتات.
لماذا ٨ لا ٩ في السلوك؟ لأنَّ آليَةَ الإنقاذِ نفسِها — رفعُ الناجي ثمَّ توصيلُهُ
إلى المهبطِ الأخضرِ ليرتفعَ عدَّادُ rescued — لم أَرَها تعمل. سبعُ محاولاتٍ ربَّاطيةٍ
أثبتَتِ المؤقَّتَ والغرقَ والاصطدامَ والنهاية، ولم تُثبِتْ رقمًا واحدًا في «أُنقِذ».
فالنموذجُ يستحقُّ ٨ بسلوكٍ مُثبَتٍ ناقصًا، لا ٩ بإنقاذٍ مُفَتَّرَض. هذه الدرجةُ هي
ضريبةُ الأمانةِ المنهجية، وهي مُعلَّنةٌ بوصفِها أهمَّ نقطةٍ مفتوحةٍ في التقرير.
٥٫٩ حديقةُ الخطِّ الحيّة — ٨٫٨٥ / ١٠ ← الاختبارُ الإبداعيّ (يُذكَرُ ولا يُدمَج)
الطلب: اختبارُ «البرّية» — اكتبْ ما تريدُ بالعربية، بلا قيد.
ما بنَاهُ النموذج: تَكتِبُ كلمةً عربيةً في حديقةٍ ليليّة، فتَنبَتُ من الرملِ نبتةٌ إجرائيةٌ تحملُ أغصانُها حروفَ الكلمةِ نفسِها أوراقًا وأزهارًا، مُتوهِّجةً بلونِ الكلمة؛ هلالٌ ونجومٌ تَلمَع، وذَرَّاتٌ ضوئيّةٌ تنجَرِف، وعشبٌ رقيقٌ كمطرٍ نازل، وطبقاتُ كثبان. ولوحةُ «ما نَبَتَ في حديقتك» تَعرضُ الكلماتِ مع مِنزَلِقِ ريحٍ «الريحُ تُسمِّقُ» يَهزُّ الأغصان.
لماذا هذهِ أعظمُ نتيجةٍ في التقرير؟ لأنَّ الفكرةَ لا يمكنُ أن تخطرَ لنموذجٍ يَتعامَلُ معَ العربيةِ كسلسلةِ بايتات: الفكرةُ كلُّها مبنيةٌ على الحرفِ العربيِّ كعنصرٍ بصريّ — أي أنَّ النموذجَ عَرَفَ أنَّ للحرفِ العربيِّ قيمةً جماليّةً مستقلّة، فبنَى لعبةً على هذا المعرفةِ عينِها. التشكيلُ في العنوانِ صحيحٌ («الحيَّةُ» بالتاءِ المربوطةِ والشدّةِ والرفعِ المُعرب)، والأرقامُ مشرقية، وصفرُ أخطاءِ طرف.
الدرجةُ ٨٫٨٥ لا ١٠: السلوكُ ٨ لا ٩ لأنَّ مُدخَلَ الغرسِ الحقيقيِّ هو حقلُ #word
(و#seed مجرَّدُ عنصرِ عرض) — وقد أبطأَ هذا الفهمَ الآليَّ قليلًا؛ والهندسةُ ٨ رغمَ
١٬٥٠٥ سطرٍ في ملفٍّ واحدٍ نظيف.
٦. جولةُ الإصلاح: النموذجُ يُصلِحُ نفسَه
الفيديوُ الأصليُّ كانَ يُرسِلُ التطبيقاتِ الفاشلةَ إلى نموذجٍ سحابيٍّ أقوى. لا يوجدُ في
هذهِ البيئةِ مفتاحُ API سحابيٌّ واحد (فُتِّشَ عن مفاتيحِ Anthropic وOpenAI وGemini
وغيرِها: صفر). فاستُبدِلَتِ الخطوةُ بتجربةٍ أنظفَ أصلًا: أُرسِلَ نفسُ النموذجِ المحليِّ
إلى نفسِ المهمّة، ومعتَهُ الصفحةُ المكسورةَ وتقريرُ الخطأ (repair.sh) — لأنَّ هذا
يعزلُ قدرةَ النموذجِ عن ذكاءِ المُشرِف، وهو ما ينبغي أن يُقيسَهُ benchmarkٌ للنماذج
المحلية.
| المقياس | عندَ التسليم | بعدَ الإصلاح |
|---|---|---|
| الألوانُ المرسومةُ عندَ الإقلاع | ٦ | ١٢٧ |
| الألوانُ المرسومةُ أثناءَ التشغيل | ٦ | ١٣٢ |
| الألوانُ المرسومةُ بعدَ الإدخال | ٦ | ٢٠٢ |
| أخطاءُ الطرف | ١ | ٠ |
حُكمُ verify03.mjs |
لوحةٌ فارغة (العيبُ موجود) | أُصلِحَت |
٦٫١ ما غيَّرَهُ النموذج — ثلاثةُ أشياءَ لا واحد
فرقُ الشيفرةِ عِشرونَ سطرًا فقط، وفيهِ إصلاحُ العيبِ وعيبانِ لم يُبلِّغْ عنهما أحد:
- العيبُ القاتل:
setLineDash(k === 2 ? [16, 22] : null)←: []. القيمةُ الفارغةُ صارت قائمةً فارغة، فعادَ الإطارُ كلُّهُ يُرسَم. - عيبٌ لغويٌّ عربيّ (لم يُطلَب): مواءمةُ جنسِ العددِ الترتيبيِّ مع «موجة» المؤنَّث — بارامترُ تأنيثٍ وجدولُ «الأولى/الثانية/…».
- عيبٌ عرضيٌّ (لم يُطلَب):
'×' + invTotal()←'×' + Math.floor(invTotal())، لمنعِ مضاعِفاتٍ كسريةٍ في المخزون.
٦٫٢ الثمنُ الصادق
| الزمن | ٢٧٠٠ ثانية — بلَغَ السقف |
| الجولات | ٦٤ |
| توكناتُ المخرجات | ٣٣٬٥٧٤ |
| الكلفة | ٠٫٠٠ دولار |
| هل أعلنَ نجاحَهُ؟ | لا. انقطعَ في منتصفِ تحقُّقِهِ البصريِّ الخاصّ |
وهذِهِ أهمُّ ملاحظةٍ في جولةِ الإصلاح: النموذجُ لم يُسلِّمْ تقريرَ نجاح، ولم نمنحْهُ الدرجةَ بناءً على قولِه. الذي شهدَ بالإصلاحِ هو عَدّادُ البكسلاتِ المستقلّ. وفيهِ درسٌ مُزدوج: النموذجُ المحليُّ قادرٌ على إصلاحِ عيبِ رسمٍ حقيقيّ — لكنَّهُ مُسرِفٌ إلى حدِّ استهلاكِ نافذةٍ كاملةٍ في التحققِ من عملِهِ، وهي سِمَةٌ تظهرُ في أرقامِ الجولاتِ أعلاه (٢٠٢ جولةٌ لمختبرِ بصرياتٍ سليمٍ أصلًا).
٧. حدودُ هذا التقييم — بما عليهِ من نقص
النشرُ بلا حدودٍ ليسَ شفافيةً بل دعاية. هذه نقاطُ الضعفِ كلُّها:
٧٫١ آليَةُ الإنقاذِ في الاختبارِ الثامنِ غيرُ مُثبَتة. سبعُ ربَّاطاتٍ أثبَتَتِ المؤقَّتَ
والغرقَ والاصطدامَ والنهاية، ولم تُثبِتْ rescued > 0. يلزمُها تشخيصٌ بشريٌّ ستّونَ
ثانيةً أمامَ الشاشة. درجةُ السلوكِ (٨) تعكسُ هذا النقصَ لا أكثر.
٧٫٢ لا حُكمَ رؤيويَّ مستقلّ — لكنَّ الخطأَ في تشخيصي كانَ مُفيدًا. المنهجيةُ تقترحُ
حُكمَينِ مستقلَّين، وقلتُ أولًا إنَّ حُكمَ الرؤيةِ مُستحيل لعدمِ وجودِ مفتاحِ API سحابي.
هذا خطأٌ نصفُه: وِجهُهُ GET /v1/models على mlx-serve يُعلِنُ أنَّ النموذجَ نفسَهُ
قادرٌ على الرؤية (vision، والمدخلاتُ text, image, video). فاختُبِرَ فورًا:
أُرسِلَت لقطتا الاختبارِ الثالثِ بالعربيةِ مع سؤالٍ واحدٍ «هل تَرى عالمَ لعبةٍ مرسومًا؟»
فكانَ الجوابُ «لا» على اللقطةِ الفارغةِ و«نعم» على اللقطةِ المُصلَحة — تمييزٌ
صحيحٌ في حالتينِ بثلاثةِ توكناتٍ وصفرِ دولار (التفصيلُ في VISION-JUDGE-SMOKE.md).
وفي محاولةٍ مُطلَقةٍ أخرى وصفَ اللوحةَ الفارغةَ بدقَّةٍ مُقلِقة: رأى التدرُّجَ الأزرقَ
الداكنَ الذي يُرسَمُ فعلًا، والشريطَ الرماديَّ، والمُربَّعاتِ الداكنةَ في الزوايا —
ولم يخترعْ جزيرة، بل فرَّقَ بينَ ما ترسمُهُ اللوحةُ وما هو DOM، وهو التفريقُ نفسُهُ
الذي كُتِبَ verify03.mjs لأجلِه.
يبقى من العيبِ أصلُهُ: النتيجةُ كلُّها من حُكمٍ واحد، والحُكمُ الرؤيويُّ المُتاحُ هو
النموذجُ يَحكُمُ على نفسِه — فتحيُّزُ الذاتِ فيهِ غيرُ مَقيسٍ ولا قابلٌ للقياس، ولا
يَجوزُ حسابيًّا أن تُوضَعَ درجاتُ هذا المسارِ في متوسطٍ واحدٍ مع عمودِ scores.csv.
والخطأُ المنهجيُّ المتبقّي إذنْ هو التحيُّزُ الأحاديّ: مُقيِمٌ واحدٌ لا يُعرَفُ إن كانَ
مُتشدِّدًا أم مُتساهِلًا مقابلَ مقيِسٍ آخر — وحينَ يكونُ المُقيِمُ هو المُقيَمَ نفسَهُ يصبحُ
السؤالُ أعلى خطرًا لا أقلَّهُ.
٧٫٣ أربعُ اختباراتٍ بلَغَت سقفَ الوقتِ (٩٠د). الحالاتُ ١٢٤ في ٤ و٥ و٦ و٩. لم يُمنَعْ
أيُّها من إخراجِ ملفٍّ سليم، لكنْ لا نستطيعُ أن نقولَ هل كانتْ ستتحسَّنُ لو تُرِكَتْ
أطول. الاختبارُ ٣ انتهى قسرًا (١٤٣) لأنَّ وكيلَنا علَّقَ في أدواتِهِ الخاصّة لا في
المهمّة: كتبَ الوكيلُ مُختبِراتِ لعبٍ خاصّةً به (/tmp/h2.js, /tmp/bal.js) تَعلَقُ بلا
حارسِ إنهاء. أُضيفَ بسببِ ذلكَ حارسُ يَرقَبُ الأنسالَ فقط في /proc فلا يقتلُ جلسةَ
المُشرِف. أي: ساعةٌ من «زمنِ الاختبارِ» الخمسينَ لم تكنْ عملَ النموذجِ أصلًا.
٧٫٤ سرعةُ الفكِّ لم تكنْ ثابتة. من ٦٨٫٨ توكن/ث في الاختبارِ الثاني إلى ٢١٫٨ في السابع. الأسبابُ مُتداخِلة: حرارةُ المضيف، وذاكرةُ الملفّات، وأنا — لأنَّ لقاطاتِ المتصفِّحِ كانتْ تعملُ على الجهازِ نفسِهِ ساعاتٍ متواصلة. لا تدَّعِ أنَّ هذا رقمُ النموذجِ الصافيّ.
٧٫٥ عيوبُ أدواتِنا، مُعلَنة. حُكِمَ في البدايةِ أنَّ كلَّ اختبارٍ يُسجِّلُ خطأَ طرف؛
الحقيقةُ أنَّ ثمانيةً من تسعةٍ ملفَّاتُها تقولُ «(لا شيء)»، والملفُّ الوحيدُ الذي فيهِ
خطأٌ حقيقيٌّ هو ملفُّ الاختبارِ الثالثِ فعلًا — وهو نفسُهُ الذي أُصلِح.
وحُكِمَ في إنتاجِ الفيديوِ أنَّ libass يَكسِرُ تشكيلَ العربيةِ ويعكسُ اتجاهَها — فبُنِيَ
shapetest.mjs يقارنُ Chromium وlibass رقميًّا، فإذا التشكيلُ والاتجاهُ سليمانِ تمامًا
والخطأُ الحقيقيُّ أنَّ حجمَ الخطِّ في ASS يُرسَمُ عندَ ~٠٫٦ من المُعلَن، فبدَتِ التعليقاتُ
صغيرةً في إطارِ ١٠٨٠p فحسب. الدرسُ مُسجَّلٌ في المستودع: قِسْ مقابلَ مُخرَجٍ معروفِ
الصوابِ قبلَ أن تُصدِّقَ عينَك.
٧٫٦ بيئتٌ ليستْ بيئتَكَ. مُضيفٌ واحدٌ يعملُ خادمًا، وآلةٌ افتراضيةٌ بأربعةِ نوى و~٤ غيغابايت تعملُ وكيلًا وقاطِفًا معًا. الأرقامُ الزمنيّةُ وصفٌ لِهذِهِ العتادة، لا حكمٌ على النموذج.
٧٫٧ حجمُ العيّنةِ تسعة. متوسطٌ على تسعةٍ ليسَ «٧٫٩٣ من عشرة» بالمعنى الإحصائيّ؛ انحرافُ معيارٍ واحدٍ في الاختبارِ الثالثِ يحرِّكُ الوسطَ كلَّهُ. قرِئْ الجدولَ لا الرقم.
٨. الانطباعُ النهائيّ
٨٫١ ما الذي تَعلَّمَهُ المُقيِّمُ قبلَ أن يُقيِّم
أخطرُ ما في هذا النوعِ من التقاريرِ أن تُصدِّقَ انطباعَكَ الأوّل، وقد وقعتُ فيهِ مرّتين في هذِهِ التشغيلِ نفسِه، وصُحِّحَتا بالقياسِ لا بالرأي:
الأولى: بدا «رحلةُ الصقر» مكسورًا — صفرُ نقاطٍ في محاولتَي روبوت. لو كُتِبَ التقريرُ حينئذٍ لَكانَ الاختبارُ الثاني فشلًا، ولَكانَ الوسطُ أقلَّ بنصفِ درجةٍ عن حقيقتِه، ولَكانَ الحكمُ على النموذجِ ظالمًا. الحقيقةُ أنَّ اللعبةَ كانتْ تعملُ والروبوتَ كانَ أعمى؛ فحينَ قُدَ الصقرُ بقراءةِ حالتِهِ الداخليّةِ بدأتِ النقاطُ تتقدَّم.
الثانية: بدَت التعليقاتُ العربيةُ في الفيديو غيرَ مُشكَّلةٍ ومقلوبةَ الاتجاه — فأُعيدَ بناءُ منطقِ الخطِّ كلُّهُ على هذا الأساس. القياسُ المُقارَنُ مع Chromium بيَّنَ أنَّ libass يُشكِّلُ العربيةَ ويَرتِّبُها من اليمينِ إلى اليسارَ تمامًا كما يَفعلُ المتصفِّح، وأنَّ العيبَ كانَ حجمًا لا اتّجاها.
النتيجةُ المنهجية: في تقييمِ العربية، العينُ مُتحَيِّزةٌ ضدَّ النصِّ الصغير. كلُّ ادّعاءٍ لغويٍّ في هذا التقريرِ خلفَهُ الآنَ قياسٌ نصّيٌّ أو صورِيٌّ — لا انطباع.
٨٫٢ الانطباعُ في العربيّةِ خاصّة
النموذجُ لا يُعامِلُ العربيةَ كترجمة. الأدلةُ ليستْ انطباعاتٍ بل سلوكيّات:
- لا يَنسَى الاتجاهَ أبدًا (٩/٩). لا يكفي أن يكتبَ
dir="rtl"، بل يضعُهُ في المكانِ الصحيحِ كلَّ مرّة، وهذا هو الفرقُ بينَ نموذجٍ يَحفَظُ قالبًا ونموذجٍ يَفهَمُ السياق. - يَستعرِضُ الأرقامَ المشرقيةَ لمّا يُلزَمُ، ويَرتاحُ لهُ الأمر. في «سباقُ الهجن» كانَ الشرطُ صريحًا للمعاملات، فجاءَ الردُّ بلا رقمٍ لاتينيٍّ ظاهرٍ واحد — ملاحظةُ الشرطِ اللغويِّ ثمَّ احترامُهُ في كلِّ موضعٍ عمليتٌ فهمٍ لا تلوين.
- يَعرِفُ التقويمَ الهجريَّ بأسمائِه لا بترتيبِ أرقامِه. «٢٩ ربيع الآخر ١٤٤٨ هـ» بترتيبٍ عربيٍّ صحيحِ العناصر.
- يُشكِّلُ تشكيلًا مُعرَبًا لا زينةً. «حديقةُ الخطِّ الحيَّةُ»: تاءٌ مربوطة، وشَدَّة، ورفعةُ محلٍّ. من لا يَعرِفُ الإعرابَ لا يُخطِئُ فيهُ ولا يُصِيبُه.
- يُميِّزُ تذكيرَ العددِ وتأنيثَهُ عندَ الإصلاح. أصلحَ توافقَ «الموجةُ الثانيةُ» من تلقائِه، بلا تقريرِ خطأٍ ولا تلميح.
- يَبنِي فكرةً على جمالِ الحرفِ نفسِه. أن تُصبِحَ حروفُ الكلمةِ أوراقَ نبتةٍ متوهِّجةٍ هي أعقدُ صورةٍ في التقريرِ على أنَّ النموذجَ يَرى العربيةَ وسيطًا لا حمولة.
٨٫٣ والانطباعُ في البرمجيّات
على الجانبِ الآخَر، النموذجُ مُهندِسٌ مُتعِب:
- قنبلةُ القيمةِ الفارغةِ هي نمطُ الفشلِ كلُّه هنا: سطرٌ واحدٌ يُمرِّرُ
nullإلى واجهةِ رسمٍ يقتلُ الاستثناءُ فيهِ الإطارَ كلَّهُ. الشيفرةُ العربيّةُ الجميلةُ واللوحةُ الفارغةُ كانا في الملفِّ نفسِه، والجولةُ نفسُها، والاختبارُ نفسُه. - الإفراطُ في التحققِ يأكُلُ النافذة: ٢٠٢ جولةٌ لمختبرِ بصرياتٍ سليم، و٦٤ جولةٌ و٤٥ دقيقةٌ لإصلاحٍ من عشرينَ سطرًا، قُطِعَ قبلَ أن يُعلِنَ نجاحَه.
- يكتبُ مُختبِراتٍ بلا حارسِ إنهاءٍ فيَعلَقُ بهَا. هذا هو سببُ الحالةِ ١٤٣، لا عيبٌ في المُنتَج.
- الجماليةُ لا تتناسبُ معَ الهندسة: أفقرُ الملفاتِ بصريًّا كانَ أعلى الملفاتِ هندسيًّا (٩/١٠ في حجزِ المجلس)، وأبهى الملفاتِ بصريًّا كانَ إبداعًا حُرًّا لا طلبًا مُقيَّدًا.
٨٫٤ الحُكمُ الفصل
نموذجٌ محليٌّ بوزنٍ مُخلَّطٍ ٤/٨-بت، مُشغَّلٌ على
mlx-serveمن غيرِ سحابةٍ ولا دولارٍ واحد، أنتجَ تسعةَ تطبيقاتٍ عربيةِ الاتجاهِ كاملةً في ملفٍّ واحدٍ لكلٍّ منها، بمتوسطِ ٧٫٩٣/١٠ على الاختباراتِ الأساسية، وبصفرِ أخطاءِ طرفٍ في ثمانيةٍ منها، وبلغَ معيارُ صوابيةِ الاتجاهِ العربيِّ ٨٫٦٧/١٠ — وهو أعلى معاييرِ المنهجيةِ الخمسة — بينما كانَ أدنى المعاييرِ جودةَ الهندسةِ (٧٫٣٣/١٠).
وبعبارةٍ واحدةٍ قابلةٍ للنشر:
العربيةُ ليستْ مشكلةَ هذا النموذج. الميكانيكا والهندسةُ هما المشكلة.
مِقدارُ ما يَستحقُّ هذا النموذجُ أن يُستَخدَمَ للواجهاتِ العربيةِ — تطبيقاتٌ داخليّةٌ، ألعابٌ تعليميّةٌ بالعربية، لوحاتٌ عربيّةٌ، محتوى عربيٌّ ثقافيٌّ (هجريٌّ، تشكيليٌّ، مشرقيُّ الأرقام) — كبيرٌ جدًّا، لأنَّ الشرَّ الأكبرَ في برمجياتِ العربيةِ (قالبٌ أعسرُ مُترجَم) لا يقعُ فيهِ أبدًا. وأمّا ما يَستحِقُّ أن يُستَعمَلَ لهُ بلا مُشرِفٍ بشريٍّ فهو غيرُ مستعدّ: قيمةٌ فارغةٌ واحدةٌ أهدَرَت اختبارًا كاملًا، ولم يَكشِفْهُ لا اختبارُهُ الخاصُّ ولا تقريرُهُ عن نفسِه، بل عدٌّ مستقلٌّ للبكسلات.
٨٫٥ ثلاثُ توصياتٍ لمَن يُشغِّلُ مثلَهُ
- ضَعْ فاحِصًا موضوعيًّا لا تقريرًا ذاتيًّا. مقياسٌ من نوعِ «كَمْ لونًا رُسمَ فعلًا؟» كانَ يَكشِفُ هذا العطبَ آليًّا في ثانيةٍ واحدة؛ أمّا الوصفُ النصيُّ للعمليةِ فأخفاهُ كلَّه. ضَعْ لوقتِ التنفيذِ حارسًا على الأنسالِ خاصَّتِها فلا يَعلَقُ المُشرِف.
- لا تُصدِّقْ صفرًا في الاختباراتِ الآليّةِ قبلَ أن تُعِدَّ روبوتًا بصيرًا. أغلى الأخطاءِ في هذا التقريرِ كانَ روبوتانِ أعميانِ كادا يَحكُمانِ على لعبةٍ سليمةٍ بالفشل. اختباراتُ القراءةِ الحالةِ الداخليّةِ (حقنُ قراءةٍ فقط في نسخةٍ مؤقتةٍ) هي الفارقُ بينَ تقييمٍ صحيحٍ وتقييمٍ ظالم.
- قيِّدِ الوقتَ لا الجولات، وأعلِنْ حدودَك. أربعُ اختباراتٍ من تسعةٍ انتهَت بالسقف؛ ولولا إعلانُ ذلكَ لَكانَ «٨٫٦٠» مختبرَ البصرياتِ ادّعاءً مضلِّلًا عن كلفةٍ حقيقيةٍ من مليونِ توكنَ مدخلات.
٩. الملاحق
٩٫١ مُخرَجَاتُ التشغيلِ القابلةُ للتدقيق
| الملفُّ | المحتوى |
|---|---|
scores.csv / results.csv |
الدرجاتُ والأوزانُ والزمنُ والتوكناتِ وحالاتِ الخروج |
JUDGE-01…09-*.md |
ملاحظاتُ الحُكمِ لكلِّ اختبارٍ مع الأدلّةِ والخصومات |
evidence/*.png |
لقطةُ الإقلاعِ لكلِّ اختبار |
evidence/*-play.png |
لقطةُ منتصفِ اللعبِ (تُثبِتُ أنَّ شيئًا يعمل) |
evidence/*.webm |
تسجيلاتُ اللعب |
evidence/*.console-errors.txt |
أخطاءُ الطرفِ خامَة (٨ منها «لا شيء») |
evidence/capture-summary.json |
محصَّلَةُ الالتقاط |
repair/03-blast-island.repaired.html |
النسخةُ المُصلَحةُ المُتحقَّقُ منھا |
RUN-SUMMARY.md |
مُلخَّصُ التشغيلِ وأرقامُهُ الخام |
٩٫٢ أدواتُ التحقُّق
verify03.mjs (عدّادُ الألوانِ المرسومة)، verify07.mjs (فاحِصُ الأخطاءِ الستَّةَ
عشرَ المُعاوَر: ٢/١٦ على المعطوبِ و١٦/١٦ على المُسلَّم)، autopilot02.mjs/autopilot08.mjs (ربَّاطاتٌ بقراءةِ
الحالةِ الداخليّة)، play_probe.mjs (روبوتٌ أعمى + مقارنةُ واجهة)، shapetest.mjs
(مقارنةُ تشكيلِ العربيةِ بينَ Chromium وlibass)، stills03.mjs (لقطتا قبلَ/بعد)،
repair.sh (جولةُ إصلاحٍ بنفسِ النموذج).
٩٫٣ إعادةُ التشغيل
./run_one.sh 03 # اختبارٌ واحدٌ بالاسمِ أو الرقم
./capture_one.sh 03 # أدلَّتُهُ: لقطتان + تسجيل + أخطاءُ طرف
RECORD_SECONDS=75 ./capture_one.sh 03 # لجزيرةِ الانفجارِ (الموجةُ عندَ ٦٠ث)
NO_KEYS=1 ./capture_one.sh 05 # مُختبَرُ البصرياتِ بالمأوسِ لا بالمفاتيح
DRY_RUN=1 ./run_one.sh 01 # تحقُّقٌ بلا توليد
node verify03.mjs <ملف.html> # هل اللوحةُ ترسمُ فعلًا؟
./repair.sh 03 # جولةُ إصلاحٍ محليّة
post/make_vo.sh piper && post/compose.sh # فيديو التقريرِ النھائيّ
٩٫٤ الأرقامُ المرجعيّة
| النموذجُ المُقيَّم | ddalcu/Qwen3.8-Flash-Next-MLX-Serve-mixed-4-8bit |
| الوسيطُ الخادِم | mlx-serve (OpenAI-compatible، :11234) — مُقيمةٌ ٧٥٫٣ غيغابايت، سياقٌ ٢٦٢٬١٤٤، MTP مُحمَّل، kv-quant: off |
| الوكيل | pi — --mode rpc، حسابُ التوكناتِ من أحداثِ message_end |
| التشغيل | runs/20261009-170318 — ٩/٩ ملفَّاتٍ مُنتَجة |
| الزمنُ الكليُّ (مجموعُ الاختبارات) | ٨س ٤٢د |
| التوكناتُ (خارج / داخل / الجولات) | ١٬٤٢٨٬٦٧١ / ٣٬٩٨٣٬٧١٢ / ٩١٣ |
| أخطاءُ الطرفِ المُجمَّعة | ١ (في جزيرةِ الانفجارِ فقط) |
| متوسِّطُ الاختباراتِ الأساسية | ٧٫٩٣ / ١٠ |
| متوسِّطُ RTL (منهجيةٌ مُعدَّلة) | ٨٫٦٧ / ١٠ |
| فيديوُ التقرير | post/out/final.mp4 — ١٥ مشهدًا، ١٠د ٤٠ث، ١٠٠٪ محليّ |
| دَليلٌ رؤيويٌّ محليّ | «لا» على الفارغةِ و«نعم» على المُصلَحة — VISION-JUDGE-SMOKE.md |
التقريرُ كلُّهُ من حُكمٍ محليٍّ واحدٍ مُقيَّدٍ بالأدلّة؛ حُكمُ الرؤيةِ السحابيُّ مُعلَّقٌ لاستحالةِ وجودِ مفتاح. كلُّ رقمٍ فيهِ من ملفٍّ في المستودع، وكلُّ ادّعاءٍ لغويٍّ من فحصِ نصٍّ أو صورة — لا من انطباع.