RAILSHOT.
Atgal į salę

Railshot

AI deployment & operations platform

Vietoje sukurtą žiniatinklio programą įdiegti į paruoštas debesų ir vietines aplinkas, o paskui ją eksploatuoti.

DI diegimo ir eksploatacijos platforma, kuri vietoje sukurtą žiniatinklio programą perkelia į paruoštas debesų ar vietines aplinkas ir toliau ją eksploatuoja.

2026.09.28 – 2026.10.04 · baigta

Komandinis projektas · mano dalis: CI planavimas ir įgyvendinimas, CSP klasteriai ir Ansible sąsaja, eksploatacija, komandos kodo peržiūra ir integracija

SoftBank Hackathon 2026 powered by KOREC & ProgateAtrankos etapo dalyvis · atranka į finalą bus paskelbta 2026.10.26 (2026.10.07 duomenimis)

  • ŽiniatinklisĮgyvendinta · hakatonas
  • MCP serverisĮgyvendinta · nuotolinis · vietinis

Railshot vocabulary

Lens
Deployment
Delivery
Endpoint Verification
Evidence
Artifact Identity
Reconciliation
  1. intake
  2. checks
  3. repair
  4. publish
  5. rollout
  1. route
  2. probe
  1. source commit
  2. digest
  3. binding
  1. unknown
  2. resume
  3. 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

Žiniatinklio ekranas ir naudotojo paties agentas prašo diegimo per tą pačią produkto API.

Produktas nuo priimtos diegimo užklausos per CI patikras ir atvaizdo publikavimą iki Git konfigūracijos ir Argo CD išleidimo į užregistruotą taikinį bei viešos HTTPS patikros. Sėkmė įrašoma tik tada, kai yra ir pritaikyta revizija, ir vieša patikra; rezultatas, kurio negalima žinoti, lieka unknown.

Projektas pateikiamas iš žiniatinklio ekrano arba iš savo DI agento, prijungto per MCP, o platforma veda jį per diegimo failų parengimą, nesėkmių taisymą, atvaizdo publikavimą, išleidimą į aplinką ir viešo URL patikrą; po diegimo tame pačiame ekrane matoma istorija ir žurnalai, valdomi atnaujinimai, sustabdymai, tęsimai ir pašalinimas. Komandinis projektas.

Konkurso kūrimo laikotarpis: September 28, 2026 – October 4, 2026

Hakatono metu sukurti žiniatinklio ekranas ir MCP serveris. Nuotolinis MCP pateikimui prisijungia per OAuth; vietiniai aplankai pateikiami per vietinį MCP.

Produkto architektūra · nubraižyta pagal kodo kelius viešame komite 645e28a
Railshot produkto architektūraRailshot produkto komponentai ir ryšiai. Žiniatinklio ekranas, nuotolinis OAuth MCP ir vietinis MCP naudotojo kompiuteryje prašo diegimo per tą pačią produkto API, kuri užregistruoja šaltinio komitą ir CI paleidimą. CI sprendžia fiksuotomis patikromis ir patikrintus atvaizdus publikuoja į GHCR. CD adapteris pakeitimus taiko per config Git ir Argo CD tik tada, kai užregistruotas taikinys sutampa su publikavimo įrašu, tada patikrina užregistruotą viešą HTTPS adresą ir įrašo rezultatą. Metrikos yra stebėjimas, atskirtas nuo verdikto.Naršyklės naudotojasaplankas · ZIP · GitHub URLMCP klientasChatGPT · Codex · Clauderailshot-local MCPnaudotojo kompiuteris · stdioGHCRatvaizdai pagal maišąAI SDK providerCodex · Claude SDKConfig Git saugyklaužregistruotas workload.jsonViešas HTTPS URLužregistruotas health keliasPrometheuseksploatacijos valdymo VM · skaitymasapps/dashboardžiniatinklio ekranas · istorija · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidacija · taikinys · 202 priėmimasdiegimų eilė · po 3 vienu metuCI paleidimo susiejimas · stebėjimascd.js · deployPublishedmetrics observerapi/product-store.jsoperacijos būsena · run susiejimasgitops/bridge.pypatikima konfigūracija · užregistruotas taikinyskomitas · push · nuotolinis perskaitymasArgo sinchronizavimas · stebėjimasviešas HTTPS zondasArgo CDApplication · AppProject patikraapps/<tenant>/<app>šaltinio komitas · trailerrailshot-deploy.ymlciklas · bazinės patikros L0–L3taisymas per SDK · tik pataisomos nesėkmėstos pačios patikros → patikrintas bundleleidimas · publikavimas į GHCR · susiejimasK3s programų klasterisworkload · ServiceRailshot platformaeksploatacijos klasteris · AWSGitHubprivati apps saugykla · ActionsUžregistruotas taikinysviešas kelias kiekvienam tiekėjui1 aplankas · ZIP · GitHub URL · Naršyklės naudotojas → žiniatinklio ekranas · istorija · Insights12ta pati produkto API · /api/v13 OAuth · deploy_repository · MCP klientas → OAuth MCP · deploy_repository34ta pati produkto API5 ZIP įkėlimas · deploy_local_project · railshot-local MCP → validacija · taikinys · 202 priėmimas56 įrašyta queued · 202 · validacija · taikinys · 202 priėmimas → operacijos būsena · run susiejimas67 eilės tvarka · operacijos būsena · run susiejimas → diegimų eilė · po 3 vienu metu78diegimo būsena · istorija1source commit2workflow_dispatch3pateiktas komitas4taisymo užklausa · su sąlyga5publikuoti patikrintus atvaizdus6paleidimas · publikacijos skaitymas7 failed · publication_unverified · CI paleidimo susiejimas · stebėjimas → operacijos būsena · run susiejimas71images.json · spec · verdict · manifest2taikyti · užregistruotas taikinys3workload commit · push4revision5sinchronizuoti · stebėti6taikyti7atvaizdo pull · maiša8HTTPS health9 viešas kelias · Viešas HTTPS URL → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → operacijos būsena · run susiejimas1011 unknown · reikia suderinimo · cd.js · deployPublished → operacijos būsena · run susiejimas111PromQL užklausa2scrape · probe3diegimo būsena · istorija4HTTPS health

Pateikimas → priėmimas

Žiniatinklio ekranas, nuotolinis MCP ir vietinis MCP kviečia tą pačią produkto API, kuri patikrintą užklausą įrašo kaip queued ir atsako 202.

  1. Naršyklės naudotojasduomenys: aplankas · ZIP · GitHub URLžiniatinklio ekranas · istorija · Insightsapps/dashboard

    Šaltinis ir užregistruota aplinka pasirenkami žiniatinklio ekrane.

  2. žiniatinklio ekranas · istorija · Insightsapps/dashboardduomenys: ta pati produkto API · /api/v1validacija · taikinys · 202 priėmimasapps/api

    Žiniatinklio ekranas kviečia produkto API iš tos pačios kilmės (origin).

  3. MCP klientasduomenys: OAuth · deploy_repositoryOAuth MCP · deploy_repositoryagent/remote-mcp.js

    Nuotolinis MCP jungiasi per OAuth ir kaip įvestį priima viešą GitHub saugyklą.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsduomenys: ta pati produkto APIvalidacija · taikinys · 202 priėmimasapps/api

    Nuotolinis MCP serveris kviečia tą pačią diegimo API per savo vidinį API klientą.

  5. railshot-local MCPduomenys: ZIP įkėlimas · deploy_local_projectvalidacija · taikinys · 202 priėmimasapps/api

    Stdio MCP naudotojo kompiuteryje supakuoja aplanką į ZIP ir jį įkelia. Jo sesija nebendrinama su nuotoline OAuth sesija.

  6. validacija · taikinys · 202 priėmimasapps/apiduomenys: įrašyta queued · 202operacijos būsena · run susiejimasapi/product-store.js

    Tikrinami įvesties duomenys, užregistruotas taikinys, talpa ir idempotentiškumo raktas; operacija įrašoma kaip queued ir atsakoma 202. 202 reiškia „priimta“, o ne „įdiegta“.

  7. operacijos būsena · run susiejimasapi/product-store.jsduomenys: eilės tvarkadiegimų eilė · po 3 vienu metuapps/api

    Imamos priėmimo tvarka, neviršijant lygiagrečių diegimų limito (numatytasis – 3).

  8. operacijos būsena · run susiejimasapi/product-store.jsstebėjimas: diegimo būsena · istorijažiniatinklio ekranas · istorija · Insightsapps/dashboard

    Žiniatinklio ekranas ir MCP įrankiai skaito tuos pačius operacijų įrašus. Paskutinis bandymas ir dabartinis patikrintas diegimas rodomi atskirai, o baigta DI užduotis nėra diegimo sėkmė.

CI patikros → atvaizdo publikavimas

Užfiksuotas platformos kodas tikrina pateiktą komitą, DI perduoda tik pataisomas nesėkmes ir publikuoja tik atvaizdus, vėl praėjusius tas pačias patikras.

  1. diegimų eilė · po 3 vienu metuapps/apiduomenys: source commitšaltinio komitas · trailerapps/<tenant>/<app>

    Pateiktas šaltinis tampa komitu privačioje apps saugykloje (su Railshot-Request ir Railshot-Target trailer), o šaka atnaujinama be force.

  2. diegimų eilė · po 3 vienu metuapps/apipaleisti · taikyti: workflow_dispatchciklas · bazinės patikros L0–L3railshot-deploy.yml

    Prašo paleidimo su tenant, app, source_commit ir target_id. Praradus atsakymą, užklausa nesiunčiama iš naujo; vietoj to ieškoma to paties komito paleidimų.

  3. šaltinio komitas · trailerapps/<tenant>/<app>duomenys: pateiktas komitasciklas · bazinės patikros L0–L3railshot-deploy.yml

    Checkout atliekamas tik pateiktam komitui ir užfiksuotam platformos kodui (PLATFORM_REF).

  4. taisymas per SDK · tik pataisomos nesėkmėsrailshot-deploy.ymlduomenys: taisymo užklausa · su sąlygaAI SDK provider

    Kviečiama tik pataisomų nesėkmių klasėms ir sustabdoma, kai ta pati nesėkmė pasikartoja arba pasiekiamas bandymų limitas. Sėkmę ar nesėkmę lemia patikros, o ne LLM.

  5. leidimas · publikavimas į GHCR · susiejimasrailshot-deploy.ymlduomenys: publikuoti patikrintus atvaizdusGHCR

    Patikrinus bundle, kuris praėjo patikras, tie patys atvaizdai publikuojami į GHCR. Niekas neperkuriama.

  6. CI paleidimo susiejimas · stebėjimasapps/apistebėjimas: paleidimas · publikacijos skaitymasrailshot-deploy.yml

    Publikacija įskaitoma tik tada, kai jos run id, šaltinio komitas, taikinys ir app sutampa su priimtu įrašu.

  7. CI paleidimo susiejimas · stebėjimasapps/apinesėkmė · nežinomas rezultatas: failed · publication_unverifiedoperacijos būsena · run susiejimasapi/product-store.js

    CI nesėkmė ar nepatikrinta publikacija įrašoma su diagnostika ir neperduodama į CD.

Taikymas → vieša patikra

Pakeitimus taiko per config Git ir Argo CD tik tada, kai publikacija sutampa su užregistruotu taikiniu, o sėkmę įrašo tik po to, kai užregistruotas viešas HTTPS adresas praeina patikrą.

  1. leidimas · publikavimas į GHCR · susiejimasrailshot-deploy.ymlduomenys: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD skaito publikacijos įrašo failus per patikimą įkėliklį. Pats CI nesukuria nei klasterio išteklių, nei URL, nei diegimo sėkmės.

  2. cd.js · deployPublishedapps/apipaleisti · taikyti: taikyti · užregistruotas taikinyspatikima konfigūracija · užregistruotas taikinysgitops/bridge.py

    Paleidžia gitops/bridge.py su patikima konfigūracija tik tada, kai užregistruoti app ir tenant sutampa su publikacijos įrašu.

  3. komitas · push · nuotolinis perskaitymasgitops/bridge.pyduomenys: workload commit · pushConfig Git saugykla

    Į skirtosios šakos užregistruotą kelią komituoja tik workload.json, pirma įrašo push ketinimą, atlieka push ir perskaito nuotolinę reviziją. Neaiškus push nekartojamas.

  4. Config Git saugykladuomenys: revisionApplication · AppProject patikraArgo CD

    Konfigūracijos saugyklos revizija, į kurią rodo Argo CD Application.

  5. Argo sinchronizavimas · stebėjimasgitops/bridge.pypaleisti · taikyti: sinchronizuoti · stebėtiApplication · AppProject patikraArgo CD

    Prašo sinchronizavimo patikrinus AppProject; stebėjimas tik skaito, be sinchronizavimo.

  6. Application · AppProject patikraArgo CDpaleisti · taikyti: taikytiworkload · ServiceK3s programų klasteris

    Pritaiko workload užregistruotam tiksliniam klasteriui.

  7. workload · ServiceK3s programų klasterisduomenys: atvaizdo pull · maišaGHCR

    Atsisiunčia publikuotą maišą. Privačiam GHCR reikia skirtųjų pull prisijungimo duomenų.

  8. viešas HTTPS zondasgitops/bridge.pystebėjimas: HTTPS healthViešas HTTPS URL

    Tikrina tik operatoriaus užregistruotą HTTPS health adresą, be peradresavimų, ar grąžina 200 (ir laukiamą JSON, jei nustatytas).

  9. Viešas HTTPS URLduomenys: viešas keliasworkload · ServiceK3s programų klasteris

    Viešas kelias (LB, NodePort, sertifikatas) skiriasi pagal tiekėją ir užregistruotą taikinį.

  10. cd.js · deployPublishedapps/apiduomenys: succeeded · revision · URLoperacijos būsena · run susiejimasapi/product-store.js

    Įrašoma kaip succeeded tik esant cd.deployed, revizijai, sėkmingai viešai HTTPS patikrai, jos laikui ir galiojančiam URL.

  11. cd.js · deployPublishedapps/apinesėkmė · nežinomas rezultatas: unknown · reikia suderinimooperacijos būsena · run susiejimasapi/product-store.js

    Rezultatas, kurio negalima žinoti, lieka unknown; tas pats taikymas nei siunčiamas iš naujo, nei atšaukiamas.

Stebėjimas · ne verdiktas

Metrikos ir zondai nesprendžia diegimo sėkmės. Trūkstamos, pasenusios ir nepavykusios reikšmės rodomos tokios, kokios yra.

  1. metrics observerapps/apistebėjimas: PromQL užklausaPrometheus

    Skaito up, probe_success ir Pod eilutes. Trūkstamos, pasenusios ar nepavykusios reikšmės rodomos tokios būsenos ir niekada nepaverčiamos 0.

  2. Prometheusstebėjimas: scrape · probeworkload · ServiceK3s programų klasteris

    Exporter rinkimas ir HTTP zondas. Šios metrikos nenaudojamos sprendžiant apie diegimo sėkmę.

  3. operacijos būsena · run susiejimasapi/product-store.jsstebėjimas: diegimo būsena · istorijažiniatinklio ekranas · istorija · Insightsapps/dashboard

    Žiniatinklio ekranas ir MCP įrankiai skaito tuos pačius operacijų įrašus. Paskutinis bandymas ir dabartinis patikrintas diegimas rodomi atskirai, o baigta DI užduotis nėra diegimo sėkmė.

  4. viešas HTTPS zondasgitops/bridge.pystebėjimas: HTTPS healthViešas HTTPS URL

    Tikrina tik operatoriaus užregistruotą HTTPS health adresą, be peradresavimų, ar grąžina 200 (ir laukiamą JSON, jei nustatytas).

Visi ryšiai vienodo storio. Pasirinkite srautą, kad būtų paryškintas tik jo kelias su sunumeruotais žingsniais.

  • Ištisinė · kryptis, kuria keliauja šaltinis, atvaizdai ir užklausos
  • Brūkšninė · paleidimo užklausa, taikymas ar sinchronizavimas
  • Ilga brūkšninė-taškinė · būsenos skaitymai, zondai ir metrikos, atskirai nuo verdikto
  • Trumpa brūkšninė · užfiksuota nesėkmė ar nežinomas rezultatas
  • Stora juoda linija · pasirinktas srautas; skaičiai rodo tvarką
  • Rėmelis · nuosavybės riba, šaltinio kelias antraštėje
  • Vidinė plokštelė · komponentas tos ribos viduje
  • Brūkšninis rėmelis · už platformos ribų
  • Oranžinis kontūras · kur sprendžia modelis
  • Produkto API
  • Diegimų įrašai
  • CD vykdymo riba
  • Įėjimas · CI · taikinys

October 2 (bc61a5a) paveikslas docs/architecture/README.md yra įgyvendinimo istorija; ši architektūra atitinka 645e28a kodą. Tiekėjai ir tinklo keliai skiriasi pagal užregistruotą taikinį, ir tai nereiškia, kad kiekvienas tiekėjas visada įjungtas.