Railshot
AI deployment & operations platform
نشر تطبيق ويب مبني محليًا على بيئات سحابية ومحلية مُعدّة، ثم تشغيله.
منصة نشر وتشغيل بالذكاء الاصطناعي تنقل تطبيق ويب مبنيًا محليًا إلى بيئات سحابية أو محلية مُعدّة وتواصل تشغيله.
تسليم فُحص باستقلال، واستعادتان جرى التوفيق بينهما
حالتان من October 3, 2026 to October 4, 2026، ضمن فترة المسابقة. وتقع جلسة Codex المستخدمة في التطوير وتشخيص Jev وCI داخل المنتج في أعمدة مختلفة.
October 3, 2026
سُلّم عمل قابلية المراقبة إلى جلسة Codex منفصلة، وفُحص على حدة بـ fixtures للإخفاقات
جلسة العملالجلسة الأصلية
فعلتسليم worktree واحد والتوقف عن التحرير فيه
- تسليمworktree · إخفاقات معروفة→ العيوب المسلَّمة أولًا: افتراض خمس بوابات ثابتة · دليل عدم تشغيل Q/L4 · تراجع draft (جلسة تطبيق Codex)
جلسة العملالجلسة الأصلية
فعلالعقد: الخطأ المرصود ≠ فرضية النموذج، ومسار النشر القائم فقط
- تسليممعايير الإنجاز→ عقد واحد لخطأ JSON · الأدلة + emitters لـ Python · Node (جلسة تطبيق Codex)
وكيل البرمجةجلسة تطبيق Codex
فعلالعيوب المسلَّمة أولًا: افتراض خمس بوابات ثابتة · دليل عدم تشغيل Q/L4 · تراجع draft
- تسليم→ عقد واحد لخطأ JSON · الأدلة + emitters لـ Python · Node (جلسة تطبيق Codex)
وكيل البرمجةجلسة تطبيق Codex
فعلعقد واحد لخطأ JSON · الأدلة + emitters لـ Python · Node
- ليس تنفيذًا مسجّلًاأدلة فقط، بلا صلاحية كتابة→ Jev يصنّف فقط، بلا سلطة إصلاح (تشخيص CI · Jev)
- تسليمإعادة PR · أدلة الإصدار→ PR #131 · أدلة إصدار مثبّتة (المُخرَجات)
قيد التطويرتشخيص CI · Jev
ملاحظة · نتيجةJev يصنّف فقط، بلا سلطة إصلاح
المُخرَجاتالمُخرَجات
مُخرَجPR #131 · أدلة إصدار مثبّتة
- تسليمفُحص خارج جلسة التطبيق→ فحص مستقل: fixtures للإخفاقات · استعلام التشخيص · الملكية (الجلسة الأصلية)
جلسة العملالجلسة الأصلية
فعلفحص مستقل: fixtures للإخفاقات · استعلام التشخيص · الملكية
- تسليمإدخال الإخفاقات المعروفة→ L1: استثناء .env مفقود من .dockerignore · L2: خطأ نحوي (تشخيص CI · Jev)
قيد التطويرتشخيص CI · Jev
ملاحظة · نتيجةL1: استثناء .env مفقود من .dockerignore · L2: خطأ نحوي
- أُعيدإخفاق نحوي في L2→ أصلح سكربت الفحص نفسه الخطأ النحوي · أُعيد الإرسال (الجلسة الأصلية)
جلسة العملالجلسة الأصلية
فعلأصلح سكربت الفحص نفسه الخطأ النحوي · أُعيد الإرسال
- تسليممسار الخدمة نفسه→ CI → الصورة → GitOps → Argo → Pod · تأكيد HTTPS (المُخرَجات)
المُخرَجاتالمُخرَجات
مُخرَجCI → الصورة → GitOps → Argo → Pod · تأكيد HTTPS
- السياق
- أصلح العمل إخفاقات CI كانت أسبابها مخفية (افتراض خمس مراحل ثابتة، وبصمة بناء تحجب السبب، وغياب دليل NOT_RUN لكل فحص في Q/L4 المعطّلة، وغير ذلك). وبطلب من المستخدم طبّقته جلسة Codex منفصلة، وتوقفت الجلسة الأصلية عن تحرير ذلك الـ worktree ثم فحصت النتيجة بإدخال الإخفاقات بنفسها.
- النتيجة
- كشفت سجلات التشخيص سبب الإخفاقين، وأصلحت جهة الفحص الخطأ النحوي بنفسها وأكدت المسار نفسه مجددًا حتى Pod وHTTPS. وأنهت الجلسة الأصلية على حدة قبول التطبيق وتنظيف موارد الاختبار.
- الحد
- ليست حالة نجاح للإصلاح التلقائي (كان سقف محاولات الإصلاح التلقائي 0 حينها). ولا يوجد سجل يفيد بأن Claude أجرى هذا التغيير، ولا يثبت التشغيل نفسه النشر على OpenStack. وحالة الدمج لا تعني عددًا من الموافقات الرسمية.
المصادر والحدود المتبقية
- التسليم والفحص المستقل سجلا عمل داخليان، فلا روابط لهما. واحتفظت جلسات أخرى بملكية أعمال التكامل والمزوّدين والنشر، ونصّ التسليم على عدم استخدام checkout الافتراضي الذي كان لا يزال يحمل تغييرات المستخدم.
- كان جوهر العقد فصل الخطأ الخام عن فرضية النموذج، ونصيحة إعادة المحاولة عن قرار إعادة المحاولة الفعلي، في حقول منفصلة.
October 4, 2026
أُعيد إنتاج ما بدا انقطاعًا في GitHub وفُصّل، ووُفّق بين تغييرَي استعادة متزامنين في تغيير واحد
قيد التطويرAPI · استدعاءات GitHub
ملاحظة · نتيجةالإيداع البعيد موجود · 0 تشغيلات CI · إعادة تشغيل liveness
- تسليملم يُفترض أنه انقطاع في GitHub→ أُعيد الإنتاج بـ GitHub وهمي: تحديث الفرع ينجح، وcallback المحلي يخفق (جلسة الاستعادة)
جلسة العملجلسة الاستعادة
فعلأُعيد الإنتاج بـ GitHub وهمي: تحديث الفرع ينجح، وcallback المحلي يخفق
- تسليم→ فحص تسجيل المصدر · checkpoint المحلي · dispatch كلٌّ على حدة (جلسة الاستعادة)
جلسة العملجلسة الاستعادة
فعلفحص تسجيل المصدر · checkpoint المحلي · dispatch كلٌّ على حدة
- تسليم→ #189: تخزين run المقبول أولًا · الاستعلام عن run القائم إن فُقدت الاستجابة (جلسة الاستعادة)
المُخرَجاتالمُخرَجات
مُخرَجتغييرات متزامنة: #185 الإنهاء · #186 checkpoint المصدر
- أُعيدسلوك استعادة متداخل→ #189: تخزين run المقبول أولًا · الاستعلام عن run القائم إن فُقدت الاستجابة (جلسة الاستعادة)
جلسة العملجلسة الاستعادة
فعل#189: تخزين run المقبول أولًا · الاستعلام عن run القائم إن فُقدت الاستجابة
- تسليمثلاث حالات تراجع→ حالات تراجع: خروج بعد القبول · خطأ checkpoint · استجابة مفقودة (المُخرَجات)
المُخرَجاتالمُخرَجات
مُخرَجحالات تراجع: خروج بعد القبول · خطأ checkpoint · استجابة مفقودة
- تسليم→ دمج PR #189 · تأكيد hash المصدر · الصورة · Argo · health (المُخرَجات)
جلسة العملجلسة أخرى
فعلنطاق الإلغاء · التزامن تملكه هذه الجلسة
- تسليميمنع إعادة تشغيل مكررة→ قراءة المنصة ≠ نتيجة العميل · لم يُعَد التشغيل (المُخرَجات)
المُخرَجاتالمُخرَجات
مُخرَجدمج PR #189 · تأكيد hash المصدر · الصورة · Argo · health
- ليس تنفيذًا مسجّلًا→ قراءة المنصة ≠ نتيجة العميل · لم يُعَد التشغيل (المُخرَجات)
المُخرَجاتالمُخرَجات
قاعدة · غير متحقَّق منهاقراءة المنصة ≠ نتيجة العميل · لم يُعَد التشغيل
- السياق
- كان إيداع المصدر موجودًا على المستودع البعيد، ومع ذلك لم يبدأ CI قط، وأعاد liveness تشغيل API. وحمل الخطأ المعروض اسم خطوة في GitHub، لكن callback المحلي ربما كان هو الذي أخفق فعلًا.
- النتيجة
- يُخزَّن المصدر وrun المقبولان قبل توقف المراقبة، وإن فُقدت الاستجابة يُستعلم عن run الذي بدأ بالفعل بدلًا من dispatch مرتين. واحتُفظ بـ assertion أخفق على الصورة السابقة سجلًّا منفصلًا.
- الحد
- لغياب نص الاستثناء الأصلي، يبقى الانقطاع المحلي تفسيرًا مسندًا فحسب. ولا يعني ذلك حل اختناق CPU أو التخزين ولا نجاح النشر حتى طرفية العميل، ولا يُعمَّم منع إعادة dispatch خارج الحالات المسمّاة.
المصادر والحدود المتبقية
- استخدمت إعادة الإنتاج mocks فقط، دون كتابات أو إعادات محاولة حقيقية.
- سجلا الاستعادة وقراءة النشر سجلات عمل داخلية، ولا تُدرج معرّفات العملاء والتشغيل.