بوّابة المطابقة
الفهرس
بوّابة المطابقة في Apothem — الجزء الآلي من بوّابة ما-قبل-الإصدار ذات الخمسة عشر حاجزًا (M1-M15) التي يجب أن يجتازها كل أثر مُصدَر.
الحواجز الخمسة عشر
| الحاجز | المُعرِّف | التفويض | صنف الفحص | الإخفاق ← الإجراء |
|---|---|---|---|---|
| 1 | M1 | لاأدريّة المشروع المُضيف | استدلالي | راجِع لمطابقة اصطلاحات المُضيف |
| 2 | M2 | الانضباط التحريري (سجلّ الإفصاح) | آلي | أضِف علامات الإفصاح |
| 3 | M3 | أبعاد الجودة العشرة | استدلالي | راجِع على الأبعاد المُخفِقة |
| 4 | M4 | التطبيق الذاتي (كتلة السجلّ الموقَّعة حاضرة) | آلي | سجّل كتلة السجلّ الموقَّعة |
| 5 | M5 | مبدأ السلطة (لا هوية / نقطة-نهاية / سرّ مُلفَّق) | آلي | وجِّه إلى الاستفسار |
| 6 | M6 | دمج الخبرة (الثغرات المُبرَزة) | استدلالي | أبرِز الثغرات؛ استشهِد بالصقل |
| 7 | M7 | وصم الخيارات (علامة موصًى به + مبرّر الدافع) | آلي | صِم مجموعات الخيارات |
| 8 | M8 | القطعية (لا تحوّط في النثر المُلزِم) | آلي | رقِّ التحوّطات إلى شروط |
| 9 | M9 | الرافعة البصرية (المواد البنيوية تحمل مخطّطات) | استدلالي | أنشِئ / حدِّث المخطّط |
| 10 | M10 | الربط ثنائي الاتّجاه (المؤشّرات الخلفية المتبادلة مُغلَقة) | آلي | أغلِق أنصاف-الحواف |
| 11 | M11 | السباقات الرشيقة (الهدف / قائمة الأعمال / DoR / DoD / المراجعة / الاسترجاع) | استدلالي | أعِد البِنية بوصفها سباقات |
| 12 | M12 | تقارير الأطوار والتخطيط الكانوني | آلي | أنشِئ التجميع؛ أعِد التموضع إلى التخطيط الكانوني |
| 13 | M13 | إتقان الشيفرة (lint / format / type-check؛ العدد السحري؛ bare-except) | آلي | راجِع وفق قواعد إتقان الشيفرة لكلّ لغة |
| 14 | M14 | النَظْميّة (تُعلِن المنبع / المصبّ / الأقران / المُنفِّذين) | استدلالي | أعلِن؛ افهرِس في السجلّات |
| 15 | M15 | الجاهزية للإنتاج (اختبارات + وثائق + CHANGELOG + commit مطابِق + CI خضراء + استقرار semver) | آلي | أضِف الأسطح الناقصة |
سُلّم الخطورة
| الخطورة | الأثر على البوّابة |
|---|---|
| حرِجة | البوّابة FAIL — الإصدار محظور بلا قيد |
| مهمّة | البوّابة FAIL حين يُخفِق حاجزان مهمّان أو أكثر في آنٍ معًا |
| استشارية | البوّابة WARN — تُسجَّل في السجلّ الموقَّع؛ لا تحظر الإصدار |
تتخذ معظم مُطابِقات الجزء الآلي قيمة مهمّة افتراضيًّا. أمّا M5 (السلطة — الأسرار، نقاط النهاية المُلفَّقة) وM12 (المخرجات اليتيمة) فهما حرِجان.
%% provenance: hand-authored %%
%% verified: 2026-07-06 %%
%% cross-reference: the Severity ladder table above; src/apothem/conformity/gate.py (severity aggregation) %%
flowchart TD
accTitle: Conformity-gate severity-to-verdict decision flow
accDescr: A finding's severity determines the gate verdict. A Critical finding — M5 authority or M12 orphan output — fails the gate and blocks emission unconditionally. Important findings block only when two or more fail simultaneously; a single Important finding does not block. Advisory findings are logged in the signed record and never block emission.
F["Finding raised<br/>by a matcher"] --> S{"Severity?"}
S -->|Critical| C["Critical<br/>M5 authority · M12 orphan output"]
S -->|Important| I["Important<br/>most mechanical matchers"]
S -->|Advisory| A["Advisory"]
C --> FAIL["Gate FAIL<br/>emission blocked"]
I --> Q{"2+ Important<br/>bars failing?"}
Q -->|yes| FAIL
Q -->|no| WARN["Gate WARN<br/>logged in signed record<br/>emission proceeds"]
A --> WARNمُطابِقات الجزء الآلي
يعيش الجزء الآلي في src/apothem/conformity/*_grep.py، بتنسيق من src/apothem/conformity/gate.py.
| المُطابِق | الحاجز | الوظيفة |
|---|---|---|
hedging_grep.py | M8 | يكشف مفردات التحوّط في النثر المُلزِم |
option_annotation_grep.py | M7 | يتحقّق من علامة **Recommended** + مبرّر الدافع على مجموعات الخيارات |
user_confirm_grep.py | M5 | يحظر نواقل <USER-CONFIRM:…> من الإصدار |
binding_reciprocity_grep.py | M10 | يكشف أنصاف-الحواف في ## Bindings (§0.j five-direction) |
orphan_output_grep.py | M12 | يَسِم الآثار التي لا مُستهلِك لها / لا مدخل فهرسة / لا إسناد مُنتِج |
bare_except_grep.py | M13 | يكشف except: / except Exception: دون تعليق مُبرِّر |
magic_number_grep.py | M13 | يكشف الحرفيات العددية في منطق الأعمال |
commented_out_code_grep.py | M13 | يكشف كتل الشيفرة المُعلَّق عليها |
file_header_grep.py | M13 | يتحقّق من وجود ترويسة رخصة SPDX أحادية السطر |
frontmatter_grep.py | M14 | يتحقّق من حقول الـ frontmatter المطلوبة على دلائل التوجيه الكانونية الأربعة المُدرَجة أدناه |
semver_stability_grep.py | M15 | يكشف تغييرات API العام الكاسرة دون رفع نسخة MAJOR |
production_ready_pr_grep.py | M15 | يتحقّق من انضباط مجموعة-التغيير نفسها (اختبارات + وثائق + CHANGELOG) |
secret_leak_grep.py | M15 | يكشف الأسرار / بيانات الاعتماد المُضمَّنة بالصلب |
unpinned_action_grep.py | M15 | يتحقّق من تثبيت GitHub Actions على commit SHA |
always_on_budget_grep.py | سقف الميزانية | يُقيِّد متن القاعدة دائمة-التشغيل عند 500 token جوهري |
تشغيل البوّابة
على harness مُثبَّت، تعمل البوّابة تلقائيًّا: يُوصِّل settings.json
الخاص بـ Claude Code البوّابةَ بوصفها خطّاف PreToolUse يستدعي النسخة
المُجسَّدة في ~/.claude/.apothem/support/conformity/gate.py قبل كل
Write/Edit. ومن استخراج المصدر، تُشغِّل صيغة الوحدة الشيفرةَ نفسها:
# توزيع ملفّ واحد (يحاكي خطّاف PreToolUse):
echo '{"tool_input": {"file_path": "path/to/file", "content": "..."}}' \
| python -m apothem.conformity.gate --hook
# مسح مُركَّب عبر المستودع:
python -m apothem.conformity.gate --sweep src/ site/content/docs/ rules/راجِع تشغيل بوّابة المطابقة للإجراء الكامل.
مرجع
- سجلّ بوّابة ما-قبل-الإصدار — تعريفات الحواجز الكانونية
- سجلّ المطابقة الخارجية — دلالات M1-M15 التفصيلية
- التفويضات المتقاطعة — مصدر الحقيقة للتفويضات
- انضباط الأداء — ميزانيات زمن التشغيل لكلّ صنف