2026-07-03 — جلسة اختبار الترسانة + مختبر الدراسات العليا
🔴 قاعدة دائمة جديدة (د. وائل — 2026-07-03 ~13:59) — تُطبّق على كل برنامج/تطبيق نبنيه
عند أي نتيجة خاطئة / مرفوضة / FAIL / غير آمنة في أي application، يجب أن يعرض البرنامج تلقائياً:
1.
سبب الرفض بوضوح (لماذا فشل/رُفض).
2.
التوصية الهندسية/الاحترافية الكمّية للمعالجة (ما التغييرات المطلوبة ليصبح مقبولاً/آمناً — بأرقام: كم يزيد المقطع، كم يقلّ البحر، إلخ).
- المنطق: "نحن قمة القمة، فبرنامجنا لا يكتفي بقول مرفوض، بل يرشد للحل."
- طُبّقت أول مرة على beam-check (فاحص الجسر): دالة
remediation() في src/beam.mjs + واجهة بطاقات كهرمانية عند FAIL (سبب + حلول لكل من الإجهاد والترخيم). 10/10 اختبارات تمر · منشورة حيّاً https://apps.drwaelalkishawi.com/beam-check/ · تحقّق UI حيّ بالمتصفّح ✅.
- ترقى للـ MEMORY.md في الدمج الأسبوعي. تنطبق على كل تطبيق مستقبلي بلا استثناء.
🔴 قواعد دائمة إضافية (د. وائل — 2026-07-03 ~14:21) — لكل تطبيق نبنيه
1.
تسميات ثنائية اللغة (عربي / English) + الوحدات لكل التسميات الأساسية في أي application (مثال: «قوة القص / Shear Force»). يجعل التطبيق عملياً للجميع عند النشر.
2.
التوقيع/البصمة أسفل أي تطبيق = «ترسانة الدكتور وائل القيشاوي — Dr. Wael Al-Qishawi Arsenal» — ❌ ممنوع كتابة «OpenClaw» (كلمة عامة/مشاع). ترسانتنا قمة القمة تخرّج نخبة النخبة → بصمتها الخاصة. ينطبق على كل تطبيق/مخرَج/PDF مستقبلي.
3. (سبق) عند أي رفض/FAIL: سبب الرفض + توصية معالجة كمّية — لكل البرامج في كل المجالات (هندسي/طبي/علمي/...)، نظرة شاملة داخل وخارج الصندوق.
- طُبّقت القواعد 1+2 على beam-check (بنّاء build.mjs + beam.mjs) → 10/10 tests · منشور حيّ · متحقّق بصرياً بالمتصفح ✅.
🟢 قرار دائم (د. وائل 2026-07-03): Playwright E2E = بوابة الاختبار النهائية لكل تطبيق coding
أي تطبيق برمجي (عدا الجزء الأكاديمي) يمرّ بـ
Playwright E2E headless قبل أي compile/publish/إرسال ملف. يعمل 100% على السيرفر (Chromium 148 نظامي، executablePath=/usr/bin/chromium --no-sandbox، مجاني). مدمج في golden_gate.sh (مرحلة 3). نموذج: projects/beam-check (4/4 tests pass). الإعداد: npm i -D @playwright/test + playwright.config.mjs (testMatch "*
/.e2e.mjs", webServer python http.server يخدم dist).
TestSprite — تحقّق عملي شامل (2026-07-03) — حدّ بيئي مُثبت: الخادم يقرأ env باسم API_KEY (لا TESTSPRITE_API_KEY)؛ بدونه 401 فوري. مع API_KEY الصحيح: bootstrap لا يرجع أبداً headless (10+د، صفر artifacts). = أداة IDE فقط. البديل المعتمد = Playwright أعلاه.
TestSprite MCP متّصل في Claude Code (✔) + Codex (✔ enabled). الحساب/الاتصال 100% (check_account_info يرد فوراً، WAEL Free 150 credits، api 200).
لكن testsprite_bootstrap لا يكتمل headless — عُلّق >18د عبر mcporter (3 محاولات) + Claude Code headless (محاولة كاملة) بلا مخرجات/artifacts/استهلاك credits. السبب: bootstrap عملية تفاعلية (repo analysis + cloud tunnel) تحتاج بيئة IDE.
الحل المعتمد: TestSprite = أداة زمن التطوير تُشغّل من IDE (لابتوب د. وائل / VS Code / Claude Code تفاعلي)؛ على السيرفر الجدار = audit المحلي (9 بوابات) + code review. التوثيق: docs/testsprite_workflow.md. التكامل: scripts/golden_gate.sh (موحّد) + projects/coding-elite/testsprite_gate.sh.
درس M-060 تكرّر (2026-07-03 14:03): «media failed»
- أرفقتُ
dist/index.html عبر MEDIA: — امتداد .html خارج allowlist → رفض صامت. لم ألتقطه أثناء التنفيذ (د. وائل لاحظه). التصحيح: فحص الامتداد قبل أي MEDIA؛ التطبيقات تُشارَك برابط لا كملف html.
✅ التوصيات الأربع (2026-07-03) — مُنجزة ومُتحقّقة 100%
1.
Mutation Testing (mutmut 3.6):
projects/coding-elite/mutation_test.sh — harness مسطّح معزول (يتجاوز قيد mutmut 3.x على بادئة src). mutation score 88% (رفعته من 73% بتقوية اختبارات totp 12→20)؛ عتبة 80%؛ الناجيات المتبقية متكافئة مبرهنة.
2.
Parametrized Seeds (أكاديمي):
projects/exam-toolkit/seed_generator.py — تحدّيات فريدة حتمية لكل طالب (SHA256 seed + SplitMix64 PRNG)؛ بنك 4 تحدّيات (buffer/subnet/rsa/forensics)؛ ورقة طالب (بلا مفاتيح) + ورقة مصحّح (بمفاتيح)؛ دفعات + JSON. مفاتيح الحل متحقّقة رياضياً.
3.
VM Pool Manager (Proxmox):
projects/exam-toolkit/vm_pool_manager.py — backend sim (مختبر 100%: create/snapshot/reset/status/destroy + idempotency + حماية آمنة) + backend proxmox (qm clone --full=0 / snapshot / rollback / destroy --purge، متحقّق dry-run). توثيق: VM_POOL_DEPLOY.md. يُنشر على مضيف Proxmox في المختبر (غير متوفر على سيرفر الحاوية).
4.
Arsenal App Template:
projects/arsenal-app-template/scaffold.py — يولّد تطبيق ويب كامل (ثنائي اللغة + سبب/توصية + بصمة الترسانة + audit trail + unit + E2E + playwright.config). المولّد يمرّ golden_gate → ✅ جاهز للنشر (3/3 unit + 3/3 E2E).
✅ التوصيات الأربع الإضافية (2026-07-03 مساءً) — مُنجزة ومُتحقّقة
A.
mutation في golden_gate:
--mutation [module] مرحلة 5 عميقة اختيارية (بطيءة، لا تُشغّل افتراضياً). backward-compat محفوظ. كشفت خلل تنسيق حقيقيً وحجبت (دليل صدق).
B.
CI تلقائي:
arsenal-app-template/ci/ (GitHub Actions golden-gate.yml + pre-commit hook) +
install_ci.sh (opt-in لكل مشروع). صفر-سلبيات: install_ci يرفض مستودع الترسانة العام (يصون auto-backup من الحجب). hook يحجب المكسور ويسمح بالسليم. محقون في scaffold.
C.
لوحة تصحيح المختبر:
exam-toolkit/lab_grader.py — يقرأ مفاتيح seed_generator الحتمية (مصدر واحد) ويصحّح آلياً + تصنيف (ضعيف/متوسط/جيد/ممتاز/احترافي) + CSV/JSON. يتجاهل الحقول النصية الدفاعية (defense/input/e_condition/payload).
D.
بنك تحدّيات أوسع: seed_generator من 4 → 8 (+sqli_union +xss_encode +xor_crypto +pwn_offset)؛ كلها حتمية ومفاتيحها متحقّقة رياضياً.
✅ Playwright E2E = بوابة coding النهائية (مدمج golden_gate مرحلة 3) — beam-check 4/4 headless. mutation مرحلة عميقة منفصلة (بطيئة). كل ما أُنجز اليوم مُتحقّق حيّاً (URLs 200 · coding-elite 20 tests · beam 10+4 · liberation compiles).
🔴 قاعدة دائمة (2026-07-03): ممنوع pkill -f / pgrep -f بنمط قد يطابق أمري
تكرّر مرّتين اليوم إشعار «failed» ذاتي:
pkill -f "testsprite..." طابق صدفة الأمر نفسها (تحوي النمط) → قتل نفسه → SIGTERM → «failed» مرئي للمستخدم (أزعج د. وائل).
القاعدة: ❌ لا
pkill -f <نمط> ولا
pgrep -f <نمط> | ... kill داخل أي exec. ✅ اقتل بالـ
PID الرقمي المحدّد فقط (حدّده أولاً في أمر منفصل عبر /proc/<pid>/cwd أو المنفذ، ثم
kill <pid> في أمر لا يحوي النمط). صفر أثر وظيفي لكن يزعج المستخدم — يُعامَل كخط سلوكي.
مختبر الدراسات العليا — القرارات
- الأدوات: على فلاشة معتمدة + نسخ virtual (VMs). الطالب لا يُحضر أدواته. التقييم على تجارب حقيقية على أجهزة/تحديات فعلية بكل البيئات والمجالات.
- Recovery بعد الامتحانات لكل الأجهزة (خطورة عالية جداً في المختبر). budget متاح لكن نقلّل الخسائر قدر الإمكان لخدمة الهدف الأكاديمي.
- حزمة الأدوات:
projects/exam-toolkit/ — 79 أداة / 15 فئة · PDF عربي 18ص + ملحق recovery 3ص · ZIP + launcher + manifest + SHA256 · منشورة https://apps.drwaelalkishawi.com/exam-tools/.
تنفيذ التوصيات (طلب د. وائل: واحدة واحدة + تحقّق مليار% بعد كل واحدة)
- [x] قاعدة سبب+توصية على beam-check (منجزة + متحقّقة حيّاً)
- [ ] Rec1: Structured Code Review إلزامي (مرحلة 8)
- [x] Rec2: TestSprite gate — غلاف بوابة testsprite_gate.sh + تحقّق حساب/اتصال حيّ (150 credits). صدق: التشغيل التوليدي الكامل عملية سحابية طويلة تحتاج خدمة حيّة على منفذ + مضيف MCP تفاعلي (IDE)؛ headless mcporter timed out. للمكتبة النقية التغطية = audit.sh (9 بوابات + code review).
- [x] Rec3: تشذيب كاشف الرفض + Ollama abliterated طبقة أخيرة
- [x] Rec4: إصلاح trail + --code-max
- [x] Rec5: circuit breaker على 4xx (ديكوريتر على الطبقات)
- [x] Rec6: توثيق قرار المسار (decisions.jsonl)
- [x] ملحق حماية العتاد + روابط تنزيل + طبقة المصحّح المتفوّقة (الملحق 4 صفحات) + إعادة توقيع كل مخرجات الحزمة باسم الترسانة (صفر OpenClaw)
اختبارات محقّقة حيّاً هذا اليوم
- coding-elite (TOTP): audit 9/9 pass · coverage 91% · RFC6238 5/5 (بايثون+Node).
- beam-check: 10/10 tests (بعد إضافة remediation).