🛡️ إصلاح إنذارين كاذبين للحارسين (2026-08-29 — أمر د. وائل، نقد 5 مستويات + صفر سلبية + إثبات حيّ)
① clean_signal_guard.sh: أُضيف مصدر تحقّق ثانٍ — يطابق sessionId الإشارة بملف trajectory الجلسة (
/data/.openclaw/agents/main/sessions/<sid>.trajectory.jsonl) ويقرأ آخر "model" فعلي. الحكم الجديد: (أ) عُولج على opus (5/4-8/4-7/4-6)=سليم لا إنذار · (ب) عُولج على موديل أدنى=خرق حقيقي إنذار · (ج) لا trajectory=fail-safe لا إنذار.
الجذر: primary=opus-5 عبر البوابة لا يكتب في opus5_executor.log → الحارس القديم عدّه خرقاً (false positive). مُثبَت حيّاً 3/3 سيناريوهات.
② semantic_gate_health.sh: retry + never-stop. المهلة 120s→180s. الحكم بمحاولتين (فاصل 8s): نقص في محاولة1 → retry → لا إنذار إلا إذا تأكّد النقص في محاولتين. تذبذب سحابي عابر يُمتَص (لا فشل، لا توقّف — نمط مجلس النخبة). مُثبَت حيّاً: attempt1 7/7=لا retry · 6/7→7/7=امتُصّ · 6/7→6/7=إنذار حقيقي.
النسخ الاحتياطية: scripts/guards/clean_signal_guard.sh.bak.sessverify_20260829_140613 · semantic_gate_health.sh.bak.retry_20260829_140613. كلاهما bash -n سليم + selftest OK + مربوطان daemons_keepalive. صفر سلبية على الكشف الحقيقي.
✅ الاقتراح ① — probe_retry في arsenal_health_digest (2026-08-29، نقد 8 مستويات + صفر سلبية + إثبات حيّ)
القرار بعد النقد: التعميم الأعمى لـretry على 9 حرّاس = مرفوض (هدر موارد على فحوصات حتمية + إخفاء أعطال + تعقيد بلا عائد). التصنيف الجراحي: الثغرة الحقيقية الوحيدة =
arsenal_health_digest.sh (يفحص 27 باباً بـcurl مرّة واحدة → باب حيّ يتعثّر لحظياً 000/5xx يُنذَر كاذباً down).
التنفيذ: أُضيفت
probe_retry (حتى 3 محاولات بفاصل 2s عند الفشل العابر فقط؛ باب up=محاولة واحدة صفر retry). cron يومي مستقل (id 51043fc9، غير مربوط keepalive → صفر تأثير على انسيابية الحرّاس).
مُثبَت حيّاً: تشغيل حقيقي 27/27 خدمة تعمل (صفر إنذار كاذب) · احتمال قصوى: باب وهمي متوقّف → رُصد down بعد المحاولات (كشف سليم). verify_agreements §73 يقفله (probe_retry). النسخة الاحتياطية: arsenal_health_digest.sh.bak.retryprobe_20260829_143215.
الاقتراحان ②③ (حدّ عمر trajectory + عدّاد إحصائي): لم يُنفّذا (أمر د. وائل: لا فائدة حقيقية مقنعة).