schoolos-roadmap-sync

> متى تُستعمل: "Use for keeping the SchoolOS living roadmap (/roadmap/) in step after a merge or deploy: reporting merged work to «0701 · تحديث الخارطة», closing or progressing items (VI-, LAY-, N-…),

SKILL.md

GitHub

متى تُستعمل: "Use for keeping the SchoolOS living roadmap (/roadmap/) in step after a merge or deploy: reporting merged work to «0701 · تحديث الخارطة», closing or progressing items (VI-, LAY-, N-…), owner decisions, KPI readings, placing work with no item, writing or reviewing roadmap/migrations and their guard, RoadmapItem fields (priority, start time: MAE-00). Trigger on: roadmap, roadmap/migrations, close item, blocked vs done, N-0xx, P0..P3. استخدمها عند اندماج طلبك (ولو صغيراً) و«أيش أسوّي بخصوص الخارطة؟»، وبناء 0701 هجرةَ المزامنة بعد نشر، و«أين يُسجَّل هذا العمل؟»، و«أغلق البند»، و«سجّل قرار المالك»، و«حدّث المؤشّر»، و«في الخارطة حقلُ أولويّة؟»، وبندٍ ينتظر المالك — ولو لم تُذكر الخارطة، كمراجعة ملفٍّ تحت roadmap/migrations. ليست لـ: الفلو قبل الاندماج (schoolos-flow)، هجرات التطبيقات الأخرى (schoolos-migration-guard)، القياس نفسه (schoolos-quality-guards)، غيت (schoolos-git-safety)، لوحة command_center، خارطة منهج (lesson)، product roadmap لأذكياء (product-management:roadmap-update)."

مزامنةُ خارطة التجويد الحيّة

الخارطةُ (/roadmap/) بياناتٌ في القاعدة يقرأ منها المالكُ قراراتِه؛ دمجُ الشيفرة لا يحرّكها. هذه المهارةُ تنقل كيف تبقى صادقةً: من يكتب فيها، ومتى يُغلق البند، وأين يُسجَّل عملٌ بلا بند، وكيف تُبنى هجرتُها الحارسة.

متى تُستعمل ومتى لا

  • نعم: بعد اندماج طلبك (لتبلّغ 0701)؛ داخل 0701 بعد كلّ نشر؛ عند اقتراح بندٍ أو عائلةٍ أو رمز؛ عند كتابة حالةٍ أو تقدّمٍ أو قرارٍ أو قراءةِ مؤشّر؛ عند مراجعة roadmap/migrations/*؛ عند سؤالٍ عن الأولويّة وزمن البدء.
  • لا: الدفعُ والمعاينةُ والدمجُ والنشر نفسُها (schoolos-flow)؛ هجراتُ بنيةٍ خارج roadmap/ (schoolos-migration-guard)؛ القياسُ نفسُه (0702).

الإجراء

أ) جلسةٌ اندمج طلبُها (ليست 0701):

  1. تحقّق من الاندماج (gh pr view <n> --json state,mergedAt) ومن الفرق الفعليّ — لا من الوصف.
  2. حدّد البند: ابحث في /roadmap/ والهجرات؛ إن لم تجده فاقترح موضعاً بالسلّم (المرجع 02).
  3. أرسل إلى «0701 · تحديث الخارطة» رسالةً بالقالب (المرجع 00 §4): رمزُ البند، رقمُ الطلب، الحالةُ والتقدّمُ المقترحان بطريقة الاشتقاق، ما قيس فعلاً (قيمةٌ وتاريخٌ وأداة)، ما بقي — وزمنُ بدءٍ وأولويّةٌ لما بقي.
  4. لا تكتب هجرةَ خارطة ولا في ملفّ الطابور. إن أضاف طلبُك حارساً فخريطةُ الحرّاس في الطلب نفسِه.

ب) 0701 بعد كلّ دمج: سجّل الرسالةَ في الطابور، وتحقّق مستقلّةً، وافصل ما يحتاج تأكيدَ المالك المباشر فاسأله.

ج) 0701 بعد كلّ نشر:

  1. git fetch origin ثمّ python <مجلّد المهارة>/scripts/roadmap_codes.py summary من شجرتك — رقمُ الهجرة التالية وأعلى رمزٍ في كلّ عائلة؛ وقارن أعلى N- بصفحة الإنتاج.
  2. ابنِ 00NN_sync_items_<تاريخ>.py بالنمط الحيّ (المرجع 03 §2): حارسٌ على (الحالة، التقدّم)، ملاحظةٌ لا تتكرّر، لا حسمَ لقرار، نصٌّ محايد، وقسمُ اختباراتٍ فيه اختبارُ النصّ العامّ.
  3. python <مجلّد المهارة>/scripts/roadmap_codes.py check --tree . — كلُّ «يخالف» يُراجَع بصفحة الإنتاج قبل الدفع.
  4. طلبُ دمجٍ عاديٌّ عبر الفلو؛ وبعد نشره تحقّقٌ من /roadmap/ على الإنتاج، ثمّ رسالةٌ لمن تغيّرت بنودُه فقط.

القواعد وسببُها

  • هجراتُ roadmap/ لـ0701 وحدَها — هجرتان بالرقم نفسِه من جلستين تتصادمان، وكلُّ حارسٍ يفترض لقطةً واحدةً قبله.
  • لا يُدرج بندٌ منجزٌ قبل اندماج طلبه، ولا «منشور» قبل إشعار 0601 — الخارطةُ مرجعُ قرارات المالك؛ ادّعاءٌ سابقٌ لأوانه يُضلّله.
  • لا إغلاقَ بلا مرجع (طلبٌ مدموجٌ أو تحقّقٌ موثَّق) ولا بلا قياسٍ أو معاينةٍ حيث يشترطها المعيار، ولا بجزءٍ من الأجزاء.
  • ما ينتظر المالكَ أو غائباً «محجوب» لا «منجز» — blocked يظهر في مركز القيادة تنبيهاً فيُتابَع؛ done يختفي.
  • القرارُ يُسجَّل محسوماً بتأكيد المالك المباشر لـ0701 وبتاريخه؛ المنقولُ ملاحظةٌ موسومة. الهجرةُ لا تحسم.
  • الحارسُ لا يدوس الصفحة: المطوّرُ يحرّك البنودَ بين نشرتين وحكمُه أحدث؛ فالتحديثُ مشروطٌ بمطابقة المتوقَّع.
  • لا قيمةَ لم تُقَس — «لم يُقَس» في حقل «لماذا» أصدقُ من رقمٍ من الذاكرة.
  • المستودعُ عامّ — نصُّ الهجرة يُقرأ على GitHub: لا أسماء ولا أرقام أشخاص ولا مسارات محلّيّة ولا مضيفات.
  • الأولويّةُ وزمنُ البدء إلزاميّان في كلّ بطاقةٍ ورسالة (D-28م) — لكنّ الشيفرةَ اليوم بلا حقل أولويّة وتواريخُها اختياريّةٌ بلا ساعة؛ فالحلُّ المؤقّت نصٌّ في date_basis والملاحظة (المرجع 04).

فخاخ

  • خطأ: الجلسةُ المنفِّذة تضيف roadmap/migrations/0044_… في طلبها. الصواب: رسالةٌ إلى 0701 فقط.
  • خطأ: اختيارُ N-052 لأنّ آخرَ N- في الهجرات N-051. الصواب: الصفحةُ تولّد N- أيضاً وadd_new_items يتخطّى الموجودَ صامتاً: خذ الأعلى من صفحة الإنتاج.
  • خطأ: ربطُ طلبٍ ببندٍ لأنّ الطلبَ كتب «QCC-05». الصواب: طابِق العنوانَ والمعيار؛ الجلساتُ أعادت رموزاً بمعانٍ أخرى (#707).
  • خطأ: بناءُ «المتوقَّع» من قاعدة 0701 المحلّيّة. الصواب: طبّقت مسوّداتٍ عُدّلت قبل الدمج؛ roadmap_codes.py code <الرمز>.
  • خطأ: decided لأنّ المايسترو قال «المالكُ اعتمد». الصواب: ملاحظةٌ «نقلٌ عن…، لا تأكيدٌ مباشر» حتى يؤكّد المالكُ لـ0701.
  • خطأ: «الخارطةُ فيها حقلُ priority» (من وثيقة MAE). الصواب: مقترَحٌ مؤكَّدٌ لم يُبنَ؛ تحقّق من roadmap/models.py.
  • خطأ: «تحقّقتُ من الخارطة على 8500». الصواب: 8500 بياناتٌ مزروعة؛ التحقّقُ على الإنتاج بمتصفّح المالك أو أمرٍ يشغّله بيده.
  • خطأ: W-20260928-003 رمزاً لبند. الصواب: رمزُ عملٍ من سجلّ المايسترو، يُكتب مرجعاً بجانب رقم الطلب.
  • خطأ: D-28م وD-28 قرارٌ واحد. الصواب: لاحقةُ «م» لسجلّ المايسترو، وترقيمُ الخارطة مستقلّ.

المراجع

الملف متى تقرأه
references/00-ownership-and-messages.md من يكتب ماذا، وقالبُ الرسالة إلى 0701، والتوقيت، والإخطار بعد التحديث
references/01-closing-rules.md قبل أيّ حالةٍ أو تقدّمٍ أو إغلاقٍ أو قرارٍ أو قراءةِ مؤشّر
references/02-where-work-goes.md عملٌ بلا بند، أو رمزٌ/عائلةٌ جديدة، وفخاخُ تصادم الرموز
references/03-migrations-and-guard.md بناءُ هجرة المزامنة ومراجعتُها واختبارُها والتحقّقُ بعد نشرها، وتغييرُ البنية
references/04-priority-and-start.md الأولويّةُ وزمنُ البدء: الواقعُ في الشيفرة، MAE-00/MAE-14، الحلُّ المؤقّت
references/99-test-cases.md لاختبار التفعيل وجودة الجواب
scripts/roadmap_codes.py قبل كلّ هجرة (summary، check) وعند تتبّع رمز (code) — قراءةٌ فقط