Railshot
AI deployment & operations platform
نشر تطبيق ويب مبني محليًا على بيئات سحابية ومحلية مُعدّة، ثم تشغيله.
منصة نشر وتشغيل بالذكاء الاصطناعي تنقل تطبيق ويب مبنيًا محليًا إلى بيئات سحابية أو محلية مُعدّة وتواصل تشغيله.
Railshot vocabulary
- intake
- checks
- repair
- publish
- rollout
- route
- probe
- source commit
- digest
- binding
- unknown
- resume
- observation
Intake: deploy_repository · deploy_local_project · OAUTH MCP · Idempotency-Key · IDEMPOTENCY_CONFLICT · 202 ACCEPTED · EXECUTOR_BUSY · CAPACITY_EXCEEDED · maxConcurrentDeployments · workflow_dispatch · TARGET ALLOWLIST · reconciliation_required · CI_DISPATCH_UNCONFIRMEDChecks: package.policy · package.spec · source.quality · image.build · image.runtime · image.scan · GATE_ORDER · verdict.json · release_eligible · GATE VERDICT · SECRET SCAN · --cap-drop=ALL · source_change_allowed · verify_imagesAI Repair: GATE VERDICT · FIXABLE · give_up · PROMPT INJECTION · FAILURE SIGNATURE · REPAIR_SCOPE · MAX_REPAIR_ATTEMPTS · claude-agent-sdk · openai-codex · fixer · lessons.md · source_change_allowed · SDK_OUTCOME_UNKNOWNPublish: release_eligible · GHCR · images.json · EXACT TESTED BUNDLE · GITHUB-HOSTED RELEASE · published · publication_unverified · MANIFEST INSPECT · REGISTRY_VISIBILITY · publish-journal · railshot-release · containerd-snapshotter · images.tar · handoff.jsonRollout: bridge.py · workload.json · CONFIG GIT · pushing · REMOTE READBACK · ARGO CD · Synced · Healthy · targetRevision · sync_requested · NO PRUNE, NO FORCE · NetworkPolicy · readinessProbe · observed_images · NEVER BLINDLY RETRYPublic Route: routing · SHARED ALB · aws_lb_listener_rule · aws_lb_target_group · aws_route53_record · NodePort · LISTENER OWNERSHIP · GCP_ROUTE_APPLY_TIMEOUT · GCP_CERTIFICATE_DNS_FAILED · WireGuardHealth Probe: public_probe · site_probe · railshot-health/1 · NO PROXY, NO REDIRECT · expected_json · HTTPS 200 · verified_at · public_http · health_path · readinessProbe · probe_successSource Commit: workflow_dispatch · targetRevision · Railshot-Request · Railshot-Target · source_commit · source_parent · force: false · source_digest · snapshot.json · GITHUB_SHA · PLATFORM_REF · harness_sha256 · SUBMITTED SOURCE CHANGED · source_preparedImage Digest: GHCR · images.json · MANIFEST INSPECT · source_digest · IMMUTABLE GHCR DIGEST · images_sha256 · observed_images · PULL BY DIGEST · imagePullSecrets · containerd-snapshotter · RESUME_PUBLICATION_CHANGED · verify_images · images.tarRun Binding: Idempotency-Key · published · Railshot-Request · Railshot-Target · handoff.json · producer_attempt · bundle_artifact_id · run_id · state.bindings · CI_BINDING_MISMATCH · DEPLOYMENT BINDING CONFLICT · config_sha256 · TARGET ALLOWLIST · registered_applicationUnknown Outcome: publication_unverified · pushing · GCP_ROUTE_APPLY_TIMEOUT · outcome_unknown · CD_RECONCILE_REQUIRED · reconciliation_required · CD_OUTCOME_UNKNOWN · SDK_OUTCOME_UNKNOWN · unknown_timeout · CI_DISPATCH_UNCONFIRMED · NEVER BLINDLY RETRY · after_reconcile · reconcile_remote · CI_DISPATCH_NOT_IDENTIFIED · READ-ONLY OBSERVEResume: publish-journal · source_parent · RESUME_PUBLICATION_CHANGED · --resume · state.sqlite3 · resumePrepared · findDeployment · recoverDispatch · source_prepared · CI_DISPATCH_NOT_IDENTIFIED · resume_count · SAME WORKFLOW RUN · INTERRUPTEDObservation: observationRetry · next_retry_at · consecutive_failures · no_data · stale · collection_failed · NOT A SUCCESS GATE · probe_success · PROMETHEUS · BLACKBOX EXPORTER · READ-ONLY OBSERVE
تطلب شاشة الويب والوكيل الخاص النشرَ عبر API المنتج نفسه.
المنتج من طلب نشر مقبول، مرورًا بفحوص CI ونشر الصورة، وصولًا إلى إعداد Git وطرح Argo CD على هدف مسجّل والتحقق من HTTPS العام. ولا يُسجَّل النجاح إلا بوجود revision مطبّقة وفحص عام معًا، والنتيجة التي يتعذر معرفتها تبقى unknown.
يُقدَّم المشروع من شاشة الويب أو من وكيل ذكاء اصطناعي خاص متصل عبر MCP، فتمضي المنصة عبر تحضير ملفات النشر، وإصلاح الإخفاقات، ونشر الصورة، والطرح في البيئة، والتحقق من عنوان URL العام، وبعد النشر تعرض الشاشة نفسها تاريخ النشر والسجلات وتدير التحديثات والإيقاف والاستئناف والحذف. مشروع جماعي.
فترة التطوير في المسابقة September 28, 2026 to October 4, 2026
شاشة الويب وخادم MCP المبنيان خلال الهاكاثون. يسجّل MCP البعيد الدخول عبر OAuth للإرسال، وتُرسل المجلدات المحلية عبر MCP المحلي.
الإرسال → القبول
تستدعي شاشة الويب وMCP البعيد وMCP المحلي API المنتج نفسه، الذي يسجّل الطلب المفحوص بوصفه queued ويجيب بـ 202.
مستخدم المتصفحبيانات: مجلد · ZIP · GitHub URLشاشة الويب · السجل · Insights
apps/dashboardيُختار المصدر وبيئة مسجّلة على شاشة الويب.
شاشة الويب · السجل · Insights
apps/dashboardبيانات: API المنتج نفسه · /api/v1التحقق · الهدف · قبول 202apps/apiتستدعي شاشة الويب API المنتج من الأصل نفسه.
عميل MCPبيانات: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsيتصل MCP البعيد عبر OAuth ويأخذ مستودع GitHub عامًا مُدخلًا.
OAuth MCP · deploy_repository
agent/remote-mcp.jsبيانات: API المنتج نفسهالتحقق · الهدف · قبول 202apps/apiيستدعي خادم MCP البعيد API النشر نفسه عبر عميل API الداخلي الخاص به.
railshot-local MCPبيانات: رفع ZIP · deploy_local_projectالتحقق · الهدف · قبول 202
apps/apiيضغط stdio MCP على حاسوب المستخدم مجلدًا في ZIP ويرفعه. ولا تُشارك جلسته مع جلسة OAuth البعيدة.
التحقق · الهدف · قبول 202
apps/apiبيانات: سُجّل queued · 202حالة operation · ربط runapi/product-store.jsتُفحص المُدخلات والهدف المسجّل والسعة ومفتاح idempotency، وتُسجَّل operation بوصفها queued ويُجاب بـ 202. و202 يعني القبول، لا النشر.
حالة operation · ربط run
api/product-store.jsبيانات: ترتيب الطابورطابور النشر · 3 في وقت واحدapps/apiتُؤخذ بترتيب القبول، ضمن حد النشر المتزامن (3 افتراضيًا).
حالة operation · ربط run
api/product-store.jsملاحظة: حالة النشر · السجلشاشة الويب · السجل · Insightsapps/dashboardتقرأ شاشة الويب وأدوات MCP سجلات operation نفسها. وتُعرض أحدث محاولة والنشر المُتحقَّق منه الحالي كلٌّ على حدة، واكتمال مهمة الذكاء الاصطناعي ليس نجاحًا للنشر.
فحوص CI → نشر الصورة
تفحص شيفرة المنصة المثبّتة الإيداعَ المُرسَل، ولا تُسلّم إلى الذكاء الاصطناعي إلا الإخفاقات القابلة للإصلاح، ولا تنشر إلا الصور التي اجتازت الفحوص نفسها مجددًا.
طابور النشر · 3 في وقت واحد
apps/apiبيانات: source commitإيداع المصدر · trailersapps/<tenant>/<app>يصبح المصدر المُرسَل إيداعًا في مستودع apps الخاص (مع Railshot-Request وRailshot-Target بوصفهما trailers)، ويُحدَّث الفرع دون force.
طابور النشر · 3 في وقت واحد
apps/apiتشغيل · تطبيق: workflow_dispatchloop · الفحوص الأساسية L0–L3railshot-deploy.ymlيطلب تشغيلًا بـ tenant وapp وsource_commit وtarget_id. وإن فُقدت الاستجابة لا يُعاد الإرسال، بل يُبحث عن تشغيلات الإيداع نفسه.
إيداع المصدر · trailers
apps/<tenant>/<app>بيانات: الإيداع المُرسَلloop · الفحوص الأساسية L0–L3railshot-deploy.ymlلا يُجلب في checkout إلا الإيداع المُرسَل وشيفرة المنصة المثبّتة (PLATFORM_REF).
إصلاح SDK · الإخفاقات القابلة للإصلاح فقط
railshot-deploy.ymlبيانات: طلب إصلاح · مشروطAI SDK providerلا يُستدعى إلا لفئات الإخفاق القابلة للإصلاح، ويتوقف حين يتكرر الإخفاق نفسه أو يُبلغ حد المحاولات. والفحوص هي التي تحسم النجاح أو الإخفاق، لا LLM.
release · النشر إلى GHCR · الربط
railshot-deploy.ymlبيانات: نشر الصور المفحوصةGHCRبعد التحقق من bundle الذي اجتاز الفحوص، تُنشر الصور نفسها إلى GHCR. ولا يُعاد بناء أي شيء.
ربط تشغيل CI · مراقبة
apps/apiملاحظة: التشغيل · قراءة النشرrailshot-deploy.ymlلا يُحتسب النشر إلا حين يطابق run id وsource commit وtarget وapp السجلَّ المقبول.
ربط تشغيل CI · مراقبة
apps/apiإخفاق · نتيجة غير معروفة: failed · publication_unverifiedحالة operation · ربط runapi/product-store.jsيُسجَّل إخفاق CI أو النشر غير المُتحقَّق منه مع تشخيصات، ولا يُمرَّر إلى CD.
التطبيق → الفحص العام
لا يطبّق عبر config Git وArgo CD إلا حين يطابق النشرُ الهدفَ المسجّل، ولا يسجّل النجاح إلا بعد اجتياز عنوان HTTPS العام المسجّل للفحص.
release · النشر إلى GHCR · الربط
railshot-deploy.ymlبيانات: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiيقرأ CD ملفات سجل النشر عبر loader موثوق. ولا ينشئ CI بنفسه أي مورد عنقود أو URL أو نجاح نشر.
cd.js · deployPublished
apps/apiتشغيل · تطبيق: تطبيق · هدف مسجّلconfig موثوق · هدف مسجّلgitops/bridge.pyلا يشغّل gitops/bridge.py بالـ config الموثوق إلا حين يطابق app وtenant المسجّلان سجل النشر.
commit · push · قراءة بعيدة للتحقق
gitops/bridge.pyبيانات: workload commit · pushمستودع Git للإعدادلا يودِع إلا workload.json في المسار المسجّل لفرع مخصص، ويسجّل نية push أولًا، ثم ينفّذ push ويعيد قراءة revision البعيدة للتحقق. ولا يُكرَّر push غير المؤكد.
مستودع Git للإعدادبيانات: revisionفحص Application · AppProject
Argo CDrevision مستودع config التي يشير إليها Argo CD Application.
Argo sync · مراقبة
gitops/bridge.pyتشغيل · تطبيق: sync · مراقبةفحص Application · AppProjectArgo CDيطلب sync بعد فحص AppProject، أما المراقبة فقراءة فقط، دون sync.
فحص Application · AppProject
Argo CDتشغيل · تطبيق: تطبيقworkload · Serviceعنقود تطبيقات K3sيطبّق workload على عنقود الهدف المسجّل.
workload · Service
عنقود تطبيقات K3sبيانات: سحب الصورة · digestGHCRيسحب الـ digest المنشور. ويحتاج GHCR الخاص إلى بيانات اعتماد pull مخصصة.
probe لـ HTTPS العام
gitops/bridge.pyملاحظة: HTTPS healthعنوان HTTPS URL العاملا يفحص إلا عنوان HTTPS health الذي سجّله المشغّل، دون إعادة توجيه، بحثًا عن 200 (وعن JSON المتوقع إن حُدّد).
عنوان HTTPS URL العامبيانات: المسار العامworkload · Service
عنقود تطبيقات K3sيختلف المسار العام (LB وNodePort والشهادة) حسب المزوّد والهدف المسجّل.
cd.js · deployPublished
apps/apiبيانات: succeeded · revision · URLحالة operation · ربط runapi/product-store.jsلا يُسجَّل بوصفه succeeded إلا مع cd.deployed، وrevision، وفحص HTTPS عام ناجح، ووقته، وURL صالح.
cd.js · deployPublished
apps/apiإخفاق · نتيجة غير معروفة: unknown · يحتاج إلى مطابقةحالة operation · ربط runapi/product-store.jsالنتيجة التي يتعذر معرفتها تبقى unknown، ولا يُعاد إرسال التطبيق نفسه ولا يُتراجع عنه.
ملاحظة · ليست الحكم
لا تحسم المقاييس وprobes نجاح النشر. وتُعرض القيم المفقودة والقديمة والفاشلة كما هي.
metrics observer
apps/apiملاحظة: استعلام PromQLPrometheusيقرأ سلاسل up وprobe_success وPod. وتُعرض القيم المفقودة أو القديمة أو الفاشلة على حالها، ولا تُحوَّل إلى 0 أبدًا.
Prometheusملاحظة: scrape · probeworkload · Service
عنقود تطبيقات K3sscrape من exporter وHTTP probe. ولا تُستخدم هذه المقاييس لحسم نجاح النشر.
حالة operation · ربط run
api/product-store.jsملاحظة: حالة النشر · السجلشاشة الويب · السجل · Insightsapps/dashboardتقرأ شاشة الويب وأدوات MCP سجلات operation نفسها. وتُعرض أحدث محاولة والنشر المُتحقَّق منه الحالي كلٌّ على حدة، واكتمال مهمة الذكاء الاصطناعي ليس نجاحًا للنشر.
probe لـ HTTPS العام
gitops/bridge.pyملاحظة: HTTPS healthعنوان HTTPS URL العاملا يفحص إلا عنوان HTTPS health الذي سجّله المشغّل، دون إعادة توجيه، بحثًا عن 200 (وعن JSON المتوقع إن حُدّد).
كل الروابط بالسماكة نفسها. اختر مسارًا لإبراز طريقه وحده، مع خطوات مرقّمة.
- خط متصل · اتجاه تدفق المصدر والصور والطلبات
- خط متقطع · طلب تشغيل أو تطبيق أو sync
- شرطة طويلة ونقطة · قراءات الحالة وprobes والمقاييس، بمعزل عن الحكم
- شرطة قصيرة · إخفاق مسجّل أو نتيجة unknown
- خط أسود سميك · المسار المختار، والأرقام تبيّن الترتيب
- مربع · حدّ مالك، ومسار مصدره في الترويسة
- شريحة داخلية · مكوّن داخل ذلك الحد
- مربع متقطع · خارج المنصة
- إطار برتقالي · حيث يقرر نموذج
- API المنتج
- سجلات النشر
- حدود تنفيذ CD
- الدخول · CI · الهدف
صورة October 2 (bc61a5a) في docs/architecture/README.md تاريخ تطبيق، وهذه البنية تتبع شيفرة 645e28a. وتختلف المزوّدات ومسارات الشبكة حسب الهدف المسجّل، ولا يعني هذا أن كل مزوّد يعمل دائمًا.