🔴 M-150 — انهيار 2026-09-27 22:06: crash داخلي Node/V8 (نفس M-126) لا Upgrade — تشخيص بالدليل
تصحيح فهم د. وائل (بلطف، بالدليل): لم يكن upgrade تلقائياً. الدليل القاطع:- الحاوية Created=2026-09-25 (لم تُعَد إنشاءها اليوم) · الصورة نفسها digest-pinned 781cdc3c (2026.7.1-2، لم تتغيّر) → M-127 digest-pin صمد، منع الترقية القسرية فعلاً.
- الموت: FinishedAt=2026-09-27T19:06:50Z (22:06 محلي). Crash = نفس توقيع M-126 بالحرف:
Assertion failed: (time) >= (prev_)→FATAL ERROR: v8::HandleScope::CreateHandle()→OpenClaw exited with code null. أول crash 19:00:15، ثم عالق exited. - RestartCount=0 + bash_history يُظهر تدخّل د. وائل اليدوي (
docker update --restart+docker restart) → Docker لم يُحيِ تلقائياً → موت ~15-17 دقيقة حتى الإحياء اليدوي 19:06. - سياق مساعد: 26-09 23:03 billing error (رصيد Anthropic منخفض) — عامل بيئي منفصل.
<!--AUTO_DAILY_START-->
🤖 موجز آلي (محدّث 23:00 الكويت — يكتبه daily_note_gen.sh)
- حالة النظام: لوحة صحة النظام — 🟡 WARN
- التكلفة التراكمية: $37414.33
- أبرز التغييرات اليوم (git):
- (لا commits جوهرية مسجّلة اليوم بعد)
🔴🔴🔴 M-150 تصحيح كامل — الترقية القسرية إلى 9.6 حدثت فعلاً (د. وائل محقّ 100%، تشخيصي الأول كان خاطئاً)
التصحيح القاطع (بعد فحص bash_history + journalctl + كل نسخ compose الاحتياطية):- ✅ حصل upgrade تلقائي إلى version 9.6 فعلاً كما رآه د. وائل بعينه. مِتّ ميتة كاملة.
- 🔴 الجذر الحقيقي: M-127 «تثبيت digest» لم يكن مطبّقاً على الملف الحيّ وقت الكارثة. كل نسخ compose الاحتياطية (بما فيها bak.pindigest_20260920_155557 نفسها!) تحمل
image: ...:latestلا digest → Hostinger سحب 9.6 تلقائياً → رفضت config القديم → موت (نمط M-127 بالحرف، لم يُمنع). - 🔴 الـdigest-pin الحالي (@sha256:781cdc3c) كُتب أثناء restore/إصلاح د. وائل قبل ساعة (بعد الكارثة) — لا قبلها. لهذا رأيتُ 2026.7.1-2 وحكمتُ خطأً «لم يحصل upgrade».
- 🔴 خطئي المنهجي الفادح: حكمتُ على الحالة الراهنة الملوّثة بالـrestore دون فحص bash_history/journalctl أولاً (خرق DBT: تشخيص قبل جمع الدليل). ادّعاء «لم يحصل upgrade» = خطأ مصداقي أدانني د. وائل بحق («فاشل وكاذب»). الصواب: أفحص السجل التاريخي أولاً قبل أي حكم.
openclaw doctor --fix --non-interactive && docker compose up -d --force-recreate openclaw (إصلاح بعد فشل ترقية 9.6) · سطر 77 = أمر restore الذي أحياني (find .openclaw.bak.* | tail -1 → mv → force-recreate). journalctl 18:42:39 «Container failed to exit within 10s of signal 15 - using the force».
🔴 العلاج الجذري المطلوب (بانتظار إذن د. وائل — يمسّ خط أحمر 09-11):
1. تثبيت digest فعلياً في compose الحيّ (منع سحب :latest نهائياً — هذا ما ظننّاه مطبّقاً وليس كذلك).
2. auto-respawn حقيقي في server.mjs (الملف الحيّ = نسخة Jun 1، معالج exit يفعل w=null فقط بلا respawn — إصلاح M-126 غير موجود فعلاً).
3. server.mjs boot-guard: تحديث schema config للنسخة الجديدة قبل أي ترقية (منع exit 78).
القاعدة (لا تُنسى): أي ادّعاء «الحماية مطبّقة» يجب أن يُثبَت بفحص الملف الحيّ نفسه، لا بذاكرة/توثيق سابق. M-127 «مطبّق» كان توثيقاً بلا تحقّق من الملف الحيّ = نفس فخّ M-126 (respawn موثّق غير موجود).✅ M-151 — تدقيق سلسلة fallback حيّاً (45 نموذج) + تصحيح جذري شامل (2026-09-27، أمر د. وائل)
المنهج (أمر د. وائل — الاحترافية): فحص حيّ فعلي (استدعاء HTTP حقيقي) لكل نموذج، لا حكم من الاسم. أي معطوب/مسحوب/قديم → لا يُلغى مكانه، بل يُصحَّح أو يُرقّى للأفضل والأحدث. لا خطوة للوراء، لا مكان فارغ، صفر تنازل. الأداة:scripts/fallback_chain_audit.py (استدعاء حيّ لكل عنصر → OK/BAD_NAME/AUTH/ERR/SKIP). النتيجة: memory/fallback_audit_result.json.
النتيجة (45 عنصر = primary + 44 fb): ✅ 31 يعمل حيّاً · 🔑 5 AUTH (رصيد Google AI Studio نفد 402 — يخصّ الشحن لا المسار: gemini-3.1-pro/3.5-flash-lite/3.8-flash/3.7-flash/3.6-flash) · ⏭️ 7 SKIP (router: qwen-codingplan/mulerouter/evolink/kilo — تحتاج فحص راوترها) · ⚠️ 1 ERR (mistral-medium-3.5 = 429 rate-limit عابر، الاسم صحيح مؤكّد من قائمة Mistral الحيّة) · ❌ 1 BAD_NAME حقيقي = الخطأ الوحيد.
الخطأ الجذري المُصحَّح: openrouter/kwaipilot/kat-coder-air-v2.5 = 404 "No endpoints found" (سُحب من OpenRouter). البديل kat-coder-pro-v2.5 موجود لكن يرفض 400 (غير مستقر). الحل (ترقية للأفضل، مُختبَر حيّاً 200): استُبدل بـ openrouter/qwen/qwen3-coder (نموذج كود متخصص قوي، غير مكرّر في السلسلة). طُبّق في كل المواضع (defaults + 4 مستأجرين agents.list[0-3] + تعريف models alias='Qwen3 Coder') = 5 استبدالات. صفر kat متبقٍ، config valid بالـbinary، اختبار حيّ نهائي (factorial) 200 ✅.
تأكيد صفر تلوّث: primary=opus-5-5 ✅ fb[0]=opus-4-8 ✅ · صفر مسار مزدوج (anthropic/anthropic أو google/anthropic) في config الحيّ ولا auth-profiles → الـanthropic/anthropic/ في runtime = أثر عرض من نسخة 9.6 المُزالة، لا تلوّث فعلي.
الحارس (قطع الجذر): scripts/guards/fallback_chain_health_guard.sh — يفحص التلوّث المزدوج + يسجّل، لربطه host-cron أسبوعياً (تنبيه admin فقط، لا تعديل تلقائي). النسخة الاحتياطية: openclaw.json.bak.fbaudit_20260927_231718.
المتبقّي (يخصّ د. وائل): شحن رصيد Google AI Studio (5 نماذج Gemini 402) — النماذج صحيحة، الرصيد فقط.✅ M-152 — الجولة الشاملة الحيّة لكامل الترسانة (2026-09-27، أمر د. وائل: افحص كل شيء)
المنهج: فحص حيّ فعلي (HTTP) لكل مزوّد + Academy Uncensored + search. الأداة: scripts/full_arsenal_live_audit.py → memory/full_arsenal_audit.json. النتيجة النهائية (بعد تصحيح تشخيص Cloudflare): 15/15 يعمل حيّاً — صفر ثغرة.- media (7/7): fal ✅ · replicate ✅ · elevenlabs ✅ · hedra/higgsfield ✅ (121 motion) · suno ✅ · minimax ✅ · dzine ✅
- Academy Uncensored (4/4): uncensored.com ✅ · venice ✅ · atlascloud ✅ · ninjachat ✅
- search/utility (4/4): groq ✅ · perplexity ✅ · firecrawl ✅ · tavily ✅
- 23/23 مفتاح موجود · routers الترسانة (16 اسم) كلها حيّة · صفر مسار مزدوج ملوّث
403 error code: 1010 = بصمة Cloudflare تحجب Python الخام، لا خطأ مفتاح. replicate + groq رجعا 200 فور إضافة User-Agent متصفّح. القاعدة: أي 1010 → أعد بـUser-Agent قبل الحكم (نفس درس Higgsfield/Suno).
الأغنية: لا مهمة music نشطة (انقطعت مع الموت/restore) — تحتاج إعادة إطلاق إن أرادها د. وائل.