حماية الفرع
حماية فرع Apothem على main — بوّابة المراجعة، البوْبَنة عبر فحوص الحالة، وقيود الدفع.
فرع main الخاص بِـ Apothem محميٌّ بحماية فرع GitHub بعد نشر التزام الإصدار الجديد الوحيد. تَفرِض هذه الحماية انضباط مجموعة-التغيير المُعلَن في rules/production-ready-prs.md وتُغذّي فحصَي Branch-Protection وCode-Review في OpenSSF Scorecard للعمل المستقبلي.
إعلان مجموعة القواعد
| الإعداد | القيمة | المسوّغ |
|---|---|---|
| الهدف | main | يحمي الفرع الافتراضي العام. |
| حالة الفرض | active | ليس في وضع التشغيل-التجريبي. |
| اشتراط طلب سحب قبل الدمج | ✅ | الدفع المباشر إلى main محظور. |
| المراجعات المُوافِقة المطلوبة | 1 | الحدّ الأدنى من بوّابة المراجعة البشرية لمشروع جديد بمشرف-منفرد. |
| إسقاط الموافقات القديمة عند الالتزامات الجديدة | ✅ | الدفع القسري (force-push) بعد الموافقة يُعيد إطلاق المراجعة. |
| اشتراط مراجعة من Code Owners | مؤجَّل | تفعيل هذا قبل انضمام مشرف ثانٍ قد يُوقِع طلبات سحب المشرف-المنفرد في طريق مسدود. |
| اشتراط موافقة أحدث دفعة قابلة للمراجعة | ✅ | يجب أن يحمل أحدث التزام مدفوع موافقةً. |
| اشتراط حلّ المحادثات | ✅ | خيوط المراجعة المفتوحة تَحجب الدمج. |
| اشتراط نجاح فحوص الحالة | ✅ | سير عمل CI + Scorecard + CodeQL + pip-audit. |
| فحوص الحالة المطلوبة | الفحوص الأساسية الحالية | تُحدَّث القائمة المطلوبة من أحدث التزام إصدار أخضر. |
| اشتراط تحديث الفروع | ✅ | يمنع انحدارات الدمج القديم. |
| اشتراط التزامات موقَّعة | مُوصًى به | التزامات الإصدار المحلّية موقَّعة؛ الفرض الكامل ينتظر حتى تَصِف وثائق إدماج المساهمين إعداد SSH/GPG. |
| اشتراط تاريخ خطّي | ✅ | يُبقي التاريخ العام أحادي-الخط مفهومًا. |
| حجب الدفع القسري | ✅ | إعادة كتابة التاريخ على main محظورة. |
| السماح بالحذف | ❌ | لا يمكن حذف فرع main. |
قيد المشرف-المنفرد
لا يسمح GitHub لملفات المستودع بإنشاء تاريخ مراجعة بشرية. لذلك يُطبّق المستودع أقوى حماية فرع لا تُسبِّب طريقًا مسدودًا لنموذج مشرفه الحالي: مراجعة مُوافِقة واحدة، إسقاط المراجعة القديمة، موافقة آخر دفعة، حلّ المحادثات، فحوص الحالة، تاريخ خطّي، ودون حذف فرع أو دفع قسري. عندما ينضمّ مشرف ثانٍ، تصبح مراجعة CODEOWNERS والحدّ الأدنى من مُراجِعَين هي الإعداد الأقوى.
متطلبات فحوص الحالة
فحوص الحالة الأربعة ذات البوْبَنة الصارمة المُعلَنة أعلاه:
ci— مصفوفة اختبار كاملة + ruff + mypy + bandit + Trivy + pip-audit على شجرة التبعيات المُحلَّلةScorecard— تشغيل OpenSSF Scorecard دون انحدار لكل-فحصCodeQL— حِزَم استعلامsecurity-extendedلِـpython+actionspip-audit— مسح ثغرات أسبوعي + لكل-طلب-سحب مقابل شجرة التبعيات المُحلَّلة
قد يُبلِّغ أي سير عمل آخر عن حالة، لكن نتيجته لا تُبوْبِن الدمج ما لم تُرَقَّ إلى قائمة الفحوص المطلوبة.
إيقاع التدقيق
تُراجَع هذه الملفّ في كل تدقيق أمني وعند كل نقطة تفتيش لهندسة-الإصدار. الانحراف بين هذا الملفّ والتهيئة الفعلية لحماية الفرع هو اكتشاف عالي الخطورة.
المراجع
- OpenSSF Scorecard — Branch-Protection check
- GitHub — About protected branches
- Apothem CODEOWNERS — ملكية مراجعة بنطاق-لكل-مسار
rules/production-ready-prs.md§1 — انضباط مجموعة-التغيير-نفسها الذي تَفرِضه مجموعة القواعد هذه