نظرة عامة على البنية
DispatchAtlas مساحة عمل من خمس حزم توزيع مركّزة تتشارك مساحة أسماء Python
dispatchatlas، إضافةً إلى حزمة تجميع جذرية. تُبقي البنية عقود المجال في المركز
وتنقل توليد النسخ المرجعية، والحلّ، وتنفيذ الحملات، والتحليل، والتوثيق، وأتمتة الإصدار
إلى الخارج. تشير كل تبعية إلى الداخل، نحو dispatchatlas.core — لا جانبيًّا بين الحزم
النظيرة أبدًا، ولا خارجيًّا نحو الأدوات أبدًا.
🧭 اتجاه التبعيّات
dispatchatlas.lab
/ | \
v | v
dispatchatlas.bench | dispatchatlas.solve
\ | /
v v v
dispatchatlas.core
^
|
dispatchatlas.analytica
(يقرأ أيضًا بيانات حملة مستقرّة كبيانات)كل سهم يعني "يستورد". كل الأسهم تشير إلى dispatchatlas.core؛ ولا سهم يشير إلى
الخارج أو جانبيًّا. لا يملك dispatchatlas.analytica عمدًا سهمًا إلى
dispatchatlas.lab: فهو يستهلك بيانات JSON التي تتركها حملة مكتملة على القرص، لا
زمن تشغيل الحملة نفسه.
مُشتقّ من بيانات الحزم (packages/*/pyproject.toml) ومن جُمَل الاستيراد في شجرة
src/ لكل حزمة؛ تم التحقّق 2026-06-10.
| الطبقة | الحزمة | المسؤولية | يجوز أن يستورد | يجب ألّا يستورد |
|---|---|---|---|---|
| المجال | dispatchatlas.core | عقود الجدولة، والتحقّق، والأصل، والبذور، والتسلسل، والبروتوكولات. | المكتبة القياسية والتبعيّات الخفيفة المعتمَدة فقط. | أي حزمة DispatchAtlas أخرى. |
| النسخة المرجعية | dispatchatlas.bench | تصنيف النسخ المرجعية، والمولّدات، والكتالوجات، والتجسيد، وأدلّة الاستشهاد. | dispatchatlas.core. | شيفرة الحلّال أو الحملة أو التحليل أو زمن تشغيل الموقع. |
| الحلّال | dispatchatlas.solve | بيانات الحلّالات، والسجلّات، وخطوط الأساس، والخوارزميات الميتاهيوريستية، والمشغّلات، والمحوّلات الاختيارية. | dispatchatlas.core. | مولّدات النسخ المرجعية، ومشغّلات الحملات، وصادرات التحليل، أو شيفرة زمن تشغيل الموقع. |
| الحملة | dispatchatlas.lab | تهيئة حملات قابلة لإعادة الإنتاج، وميزانيات، ونقاط تفتيش، وإعادات، وتنفيذ. | dispatchatlas.core، dispatchatlas.bench، dispatchatlas.solve. | حزمة التحليل أو بواطن زمن تشغيل الموقع. |
| التحليل | dispatchatlas.analytica | الإحصاء، وترشيح الإفصاح، وحِزَم الأدلّة، ومجموعات بيانات البوابة، وواجهة الأوامر. | dispatchatlas.core، إضافةً إلى بيانات حملة مستقرّة تُقرأ كبيانات JSON. | تنفيذ الحملات الحيّ أو بواطن زمن تشغيل الموقع. |
| التجميع | dispatchatlas | التوزيع الجذري؛ يكشف سطح الإصدار ويثبّت الحزم الخمس عبر إضافته all. | لا شيء وقت التشغيل؛ يحدث التركيب عبر الإضافات. | — |
📦 أدوار الحزم
dispatchatlas.coreهو الحدّ الداخلي. يُعرّف مفردات الجدولة المشتركة (ProblemSpec،Schedule، الأهداف، القيود)، والتحقّق، والأصل ونسب البذور، والتسلسل المعياري، والبروتوكولات (BenchmarkProvider،Solver،ExperimentRunner،ResultRepository،DisclosurePolicy،AnalysisExporter) التي تُنفّذها كل حزمة خارجية. يُعلِن بيانه صفرَ تبعيّات، فيبقى المجال قابلًا للاستيراد في كل مكان.dispatchatlas.benchيحوّل مفردات المجال إلى أدلّة نسخ مرجعية: عائلات المولّدات، وملفّات المجال، والكتالوجات الدخانية والكاملة، ومقاييس التوصيف، ومصفوفة استشهاد تسجّل من أين تأتي افتراضات كل عائلة.dispatchatlas.solveيملك كل ما يُنتِج الجداول: بيانات الحلّالات وواصفات القدرة، وسجلّ الحلّالات، وخطوط الأساس البنائية، والخوارزميات الميتاهيوريستية للتبديلات، وعائلة NDSO، ومشغّلات الجدولة، ومحوّلات الحلّ الدقيقة الاختيارية المحفوظة خلف الإضافات.dispatchatlas.labيركّب النسخ المرجعية والحلّالات في حملات بنقاط تفتيش وميزانيات وأختام بيئة، بمعرّفات تشغيل حتمية، ويملك مصفوفة قابلية التطبيق التي توفّق بين كل عائلة وكل حلّال. ولهذا فهو الحزمة الوحيدة المسموح لها برؤية core وbench وsolve معًا: فإقرانها هو تحديدًا ما وُجد من أجله.dispatchatlas.analyticaيقرأ دليل حملة مكتملًا —checkpoint.json،plan.json،environment.json، وصفوف النتائج — ويُنتِج ملخّصات إحصائية، وحِزَم أدلّة، وهياكل تقارير، ومجموعات بيانات بوابة. يُبقي الإدخالُ القائم على البيانات التحليلَ قابلًا لإعادة الإنتاج من المُنتَجات المُسجَّلة وحدها.dispatchatlas(الجذر) يجمّع الحزم الخمس لتثبيت بأمر واحد ويحمل سطح الإصدار العام.
🔒 لماذا يُفرَض الاتجاه
الاتجاه إلى-الداخل-فقط عقدٌ مُختبَر لا عُرف:
- قابلية الاختبار. يتحقّق core من المسائل والجداول دون أي آلية حلّال أو حملة أو تحليل مُثبَّتة، فتعمل اختبارات المجال باستيرادات من المكتبة القياسية فقط. ويُختبَر bench وsolve إزاء عقود core دون أن يجرّ أحدهما الآخر.
- قابلية إعادة الإنتاج. بما أن
dispatchatlas.analyticaيستهلك بياناتٍ مُسجَّلة بدل زمن تشغيل الحملة الحيّ، يمكن إعادة تحليل أي حملة مكتملة بايتًا بايتًا من مُنتَجاتها. - إصدار مستقلّ. تُبنى كل حزمة وتثبّت إصدارها على حدة؛ ولا يمكن لتغيير حلّال أن يُغيّر بصمت سلوك النسخة المرجعية أو التحليل.
تعيش اختبارات حدود الاستيراد في tests/architecture/: يجوب
test_import_boundaries.py كل ملف مصدري لحزمة بوحدة ast ويفشل عند أي استيراد يعبر
جدول الاستيرادات الممنوعة أعلاه، ويحرس test_workspace_privacy.py مُنتَجات البحث
الخاصة. وينصّ AGENTS.md الجذري (§ Package Boundary Summary) على هذا الاتجاه نصًّا
مرجعيًّا، بينما ينقله CONTRIBUTING.md إلى المساهمين؛ وهذه الصفحة هي التفصيل المبنيّ
عليهما، وتُراجَع كل pull request في ضوئها.
🌐 الأسطح العامة
يستهلك موقع التوثيق تحت site/ بياناتٍ مُصدَّرة معتمَدة — حِزَم بوابة مُرشَّحة وفق
الإفصاح وملخّصات أدلّة. وهو لا ينفّذ حملات حيّة ولا يتجاوز سياسة الإفصاح.
🛠️ أسطح الحوكمة
يجوز لـ tools/ وCI فحص كل شيفرة الحزم، ومُنتَجات البناء، والتقارير. تُبوِّب الجودة من
الخارج، ولا تكون أبدًا تبعيّات زمن تشغيل لحزم المنتج.