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.
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
Ž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.
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.
Naršyklės naudotojasduomenys: aplankas · ZIP · GitHub URLžiniatinklio ekranas · istorija · Insights
apps/dashboardŠaltinis ir užregistruota aplinka pasirenkami žiniatinklio ekrane.
žiniatinklio ekranas · istorija · Insights
apps/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).
MCP klientasduomenys: OAuth · deploy_repositoryOAuth MCP · deploy_repository
agent/remote-mcp.jsNuotolinis MCP jungiasi per OAuth ir kaip įvestį priima viešą GitHub saugyklą.
OAuth MCP · deploy_repository
agent/remote-mcp.jsduomenys: ta pati produkto APIvalidacija · taikinys · 202 priėmimasapps/apiNuotolinis MCP serveris kviečia tą pačią diegimo API per savo vidinį API klientą.
railshot-local MCPduomenys: ZIP įkėlimas · deploy_local_projectvalidacija · taikinys · 202 priėmimas
apps/apiStdio MCP naudotojo kompiuteryje supakuoja aplanką į ZIP ir jį įkelia. Jo sesija nebendrinama su nuotoline OAuth sesija.
validacija · taikinys · 202 priėmimas
apps/apiduomenys: įrašyta queued · 202operacijos būsena · run susiejimasapi/product-store.jsTikrinami į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“.
operacijos būsena · run susiejimas
api/product-store.jsduomenys: eilės tvarkadiegimų eilė · po 3 vienu metuapps/apiImamos priėmimo tvarka, neviršijant lygiagrečių diegimų limito (numatytasis – 3).
operacijos būsena · run susiejimas
api/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.
diegimų eilė · po 3 vienu metu
apps/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.
diegimų eilė · po 3 vienu metu
apps/apipaleisti · taikyti: workflow_dispatchciklas · bazinės patikros L0–L3railshot-deploy.ymlPraš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ų.
šaltinio komitas · trailer
apps/<tenant>/<app>duomenys: pateiktas komitasciklas · bazinės patikros L0–L3railshot-deploy.ymlCheckout atliekamas tik pateiktam komitui ir užfiksuotam platformos kodui (PLATFORM_REF).
taisymas per SDK · tik pataisomos nesėkmės
railshot-deploy.ymlduomenys: taisymo užklausa · su sąlygaAI SDK providerKvieč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.
leidimas · publikavimas į GHCR · susiejimas
railshot-deploy.ymlduomenys: publikuoti patikrintus atvaizdusGHCRPatikrinus bundle, kuris praėjo patikras, tie patys atvaizdai publikuojami į GHCR. Niekas neperkuriama.
CI paleidimo susiejimas · stebėjimas
apps/apistebėjimas: paleidimas · publikacijos skaitymasrailshot-deploy.ymlPublikacija įskaitoma tik tada, kai jos run id, šaltinio komitas, taikinys ir app sutampa su priimtu įrašu.
CI paleidimo susiejimas · stebėjimas
apps/apinesėkmė · nežinomas rezultatas: failed · publication_unverifiedoperacijos būsena · run susiejimasapi/product-store.jsCI 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ą.
leidimas · publikavimas į GHCR · susiejimas
railshot-deploy.ymlduomenys: images.json · spec · verdict · manifestcd.js · deployPublishedapps/apiCD skaito publikacijos įrašo failus per patikimą įkėliklį. Pats CI nesukuria nei klasterio išteklių, nei URL, nei diegimo sėkmės.
cd.js · deployPublished
apps/apipaleisti · taikyti: taikyti · užregistruotas taikinyspatikima konfigūracija · užregistruotas taikinysgitops/bridge.pyPaleidžia gitops/bridge.py su patikima konfigūracija tik tada, kai užregistruoti app ir tenant sutampa su publikacijos įrašu.
komitas · push · nuotolinis perskaitymas
gitops/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.
Config Git saugykladuomenys: revisionApplication · AppProject patikra
Argo CDKonfigūracijos saugyklos revizija, į kurią rodo Argo CD Application.
Argo sinchronizavimas · stebėjimas
gitops/bridge.pypaleisti · taikyti: sinchronizuoti · stebėtiApplication · AppProject patikraArgo CDPrašo sinchronizavimo patikrinus AppProject; stebėjimas tik skaito, be sinchronizavimo.
Application · AppProject patikra
Argo CDpaleisti · taikyti: taikytiworkload · ServiceK3s programų klasterisPritaiko workload užregistruotam tiksliniam klasteriui.
workload · Service
K3s programų klasterisduomenys: atvaizdo pull · maišaGHCRAtsisiunčia publikuotą maišą. Privačiam GHCR reikia skirtųjų pull prisijungimo duomenų.
viešas HTTPS zondas
gitops/bridge.pystebėjimas: HTTPS healthViešas HTTPS URLTikrina tik operatoriaus užregistruotą HTTPS health adresą, be peradresavimų, ar grąžina 200 (ir laukiamą JSON, jei nustatytas).
Viešas HTTPS URLduomenys: viešas keliasworkload · Service
K3s programų klasterisViešas kelias (LB, NodePort, sertifikatas) skiriasi pagal tiekėją ir užregistruotą taikinį.
cd.js · deployPublished
apps/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.
cd.js · deployPublished
apps/apinesėkmė · nežinomas rezultatas: unknown · reikia suderinimooperacijos būsena · run susiejimasapi/product-store.jsRezultatas, 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.
metrics observer
apps/apistebėjimas: PromQL užklausaPrometheusSkaito up, probe_success ir Pod eilutes. Trūkstamos, pasenusios ar nepavykusios reikšmės rodomos tokios būsenos ir niekada nepaverčiamos 0.
Prometheusstebėjimas: scrape · probeworkload · Service
K3s programų klasterisExporter rinkimas ir HTTP zondas. Šios metrikos nenaudojamos sprendžiant apie diegimo sėkmę.
operacijos būsena · run susiejimas
api/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ė.
viešas HTTPS zondas
gitops/bridge.pystebėjimas: HTTPS healthViešas HTTPS URLTikrina 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.