RAILSHOT.
Atpakaļ uz zāli

Railshot

AI deployment & operations platform

Lokāli izveidota tīmekļa lietotne — izvietošanai sagatavotās mākoņa un iekšējās infrastruktūras vidēs un darbībai tajās.

AI izvietošanas un darbības platforma, kas lokāli izveidotu tīmekļa lietotni aizved uz sagatavotām mākoņa vai iekšējās infrastruktūras vidēm un uztur to darbībā.

2026. gada 28. septembris – 4. oktobris · Pabeigts

Komandas projekts · mana daļa: CI plānošana un implementācija, CSP klasteri un Ansible saskarne, darbība, komandas koda pārskatīšana un integrācija

SoftBank Hackathon 2026 powered by KOREC & ProgatePriekšsacīkstu dalībnieks · fināla atlase tiks paziņota 2026. gada 26. oktobrī (uz 2026. gada 7. oktobri)

  • TīmeklisImplementēts · hakatons
  • MCP serverisImplementēts · attālais · lokālais

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

Tīmekļa ekrāns un lietotāja paša aģents pieprasa izvietošanu caur to pašu produkta API.

Produkts no pieņemta izvietošanas pieprasījuma caur CI pārbaudēm un attēla publicēšanu līdz Git konfigurācijai un Argo CD ieviešanai reģistrētā mērķī un publiskā HTTPS verifikācijai. Panākums tiek reģistrēts tikai tad, ja ir gan piemērotā revīzija, gan publiskā pārbaude; iznākums, ko nevar zināt, paliek nezināms.

Projektu var iesniegt no tīmekļa ekrāna vai no sava AI aģenta, kas pieslēgts caur MCP, un platforma veic izvietošanas failu sagatavošanu, kļūmju labošanu, attēla publicēšanu, ieviešanu vidē un publiskā URL verifikāciju; pēc izvietošanas tajā pašā ekrānā redzama vēsture un žurnāli un tiek pārvaldīti atjauninājumi, apturēšana, atsākšana un dzēšana. Komandas projekts.

Sacensību izstrādes periods 2026. gada 28. septembris – 4. oktobris

Hakatona laikā izveidotais tīmekļa ekrāns un MCP serveris. Attālais MCP iesniegšanai piesakās ar OAuth; lokālās mapes tiek iesniegtas caur lokālo MCP.

Produkta arhitektūra · zīmēta pēc publiskā komita 645e28a koda ceļiem
Railshot produkta arhitektūraRailshot produkta komponenti un savienojumi. Tīmekļa ekrāns, attālais OAuth MCP un lokālais MCP lietotāja datorā pieprasa izvietošanu caur to pašu produkta API, kas reģistrē pirmkoda komitu un CI palaidienu. CI lemj ar fiksētām pārbaudēm un publicē pārbaudītos attēlus GHCR. CD adapteris piemēro caur config Git un Argo CD tikai tad, ja reģistrētais mērķis atbilst publicēšanas ierakstam, pēc tam pārbauda reģistrēto publisko HTTPS adresi un reģistrē iznākumu. Metrikas ir novērošana, nošķirta no verdikta.Pārlūka lietotājsmape · ZIP · GitHub URLMCP klientsChatGPT · Codex · Clauderailshot-local MCPlietotāja dators · stdioGHCRattēli pēc jaucējvērtībasAI SDK providerCodex · Claude SDKConfig Git repozitorijsreģistrēts workload.jsonPublisks HTTPS URLreģistrēts health ceļšPrometheusdarbības vadības VM · lasīšanaapps/dashboardtīmekļa ekrāns · vēsture · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidācija · mērķis · 202 pieņemtsizvietošanas rinda · 3 vienlaikusCI palaidiena piesaiste · novērošanacd.js · deployPublishedmetrics observerapi/product-store.jsoperācijas stāvoklis · palaidiena piesaistegitops/bridge.pyuzticama konfigurācija · reģistrēts mērķiscommit · push · attālā nolasīšanaArgo sinhronizācija · novērošanapubliska HTTPS zondeArgo CDApplication · AppProject pārbaudeapps/<tenant>/<app>pirmkoda komits · trailerrailshot-deploy.ymlcikls · bāzes pārbaudes L0–L3SDK labošana · tikai labojamas kļūmestās pašas pārbaudes → testēts komplektsrelease · publicēšana GHCR · piesaisteK3s lietotņu klasterisworkload · ServiceRailshot platformadarbības klasteris · AWSGitHubprivāts apps repozitorijs · ActionsReģistrēts mērķispublisks ceļš katram nodrošinātājam1 mape · ZIP · GitHub URL · Pārlūka lietotājs → tīmekļa ekrāns · vēsture · Insights12tas pats produkta API · /api/v13 OAuth · deploy_repository · MCP klients → OAuth MCP · deploy_repository34tas pats produkta API5 ZIP augšupielāde · deploy_local_project · railshot-local MCP → validācija · mērķis · 202 pieņemts56 reģistrēts kā queued · 202 · validācija · mērķis · 202 pieņemts → operācijas stāvoklis · palaidiena piesaiste67 rindas secība · operācijas stāvoklis · palaidiena piesaiste → izvietošanas rinda · 3 vienlaikus78izvietošanas stāvoklis · vēsture1source commit2workflow_dispatch3iesniegtais komits4labojuma pieprasījums · nosacīts5pārbaudīto attēlu publicēšana6palaidiens · publikācijas nolasīšana7 failed · publication_unverified · CI palaidiena piesaiste · novērošana → operācijas stāvoklis · palaidiena piesaiste71images.json · spec · verdict · manifest2piemērošana · reģistrēts mērķis3workload commit · push4revision5 sinhronizācija · novērošana · Argo sinhronizācija · novērošana → Application · AppProject pārbaude56piemērošana7attēla lejupielāde · jaucējvērtība8HTTPS health9 publiskais ceļš · Publisks HTTPS URL → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → operācijas stāvoklis · palaidiena piesaiste1011 unknown · nepieciešama saskaņošana · cd.js · deployPublished → operācijas stāvoklis · palaidiena piesaiste111PromQL vaicājums2scrape · probe3izvietošanas stāvoklis · vēsture4HTTPS health

Iesniegšana → pieņemšana

Tīmekļa ekrāns, attālais MCP un lokālais MCP izsauc to pašu produkta API, kas pārbaudītu pieprasījumu reģistrē kā queued un atbild ar 202.

  1. Pārlūka lietotājsdati: mape · ZIP · GitHub URLtīmekļa ekrāns · vēsture · Insightsapps/dashboard

    Pirmkods un reģistrētā vide tiek izvēlēti tīmekļa ekrānā.

  2. tīmekļa ekrāns · vēsture · Insightsapps/dashboarddati: tas pats produkta API · /api/v1validācija · mērķis · 202 pieņemtsapps/api

    Tīmekļa ekrāns izsauc produkta API no tās pašas izcelsmes.

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

    Attālais MCP pieslēdzas ar OAuth un kā ievadi pieņem publisku GitHub repozitoriju.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsdati: tas pats produkta APIvalidācija · mērķis · 202 pieņemtsapps/api

    Attālais MCP serveris izsauc to pašu izvietošanas API caur savu iekšējo API klientu.

  5. railshot-local MCPdati: ZIP augšupielāde · deploy_local_projectvalidācija · mērķis · 202 pieņemtsapps/api

    stdio MCP lietotāja datorā saspiež mapi ZIP formātā un augšupielādē to. Tā sesija netiek koplietota ar attālo OAuth sesiju.

  6. validācija · mērķis · 202 pieņemtsapps/apidati: reģistrēts kā queued · 202operācijas stāvoklis · palaidiena piesaisteapi/product-store.js

    Tiek pārbaudīta ievade, reģistrētais mērķis, kapacitāte un idempotences atslēga; operācija tiek reģistrēta kā queued, un atbilde ir 202. 202 nozīmē „pieņemts“, nevis „izvietots“.

  7. operācijas stāvoklis · palaidiena piesaisteapi/product-store.jsdati: rindas secībaizvietošanas rinda · 3 vienlaikusapps/api

    Ņemti pieņemšanas secībā vienlaicīgo izvietošanu ierobežojuma robežās (pēc noklusējuma 3).

  8. operācijas stāvoklis · palaidiena piesaisteapi/product-store.jsnovērošana: izvietošanas stāvoklis · vēsturetīmekļa ekrāns · vēsture · Insightsapps/dashboard

    Tīmekļa ekrāns un MCP rīki lasa tos pašus operāciju ierakstus. Pēdējais mēģinājums un pašreizējā verificētā izvietošana tiek rādīti atsevišķi, un pabeigts AI uzdevums nav izvietošanas panākums.

CI pārbaudes → attēla publicēšana

Fiksētais platformas kods pārbauda iesniegto komitu, nodod AI tikai labojamas kļūmes un publicē tikai attēlus, kas atkal izturēja tās pašas pārbaudes.

  1. izvietošanas rinda · 3 vienlaikusapps/apidati: source commitpirmkoda komits · trailerapps/<tenant>/<app>

    Iesniegtais pirmkods kļūst par komitu privātajā apps repozitorijā (ar trailer Railshot-Request un Railshot-Target), un zars tiek atjaunināts bez force.

  2. izvietošanas rinda · 3 vienlaikusapps/apiizpilde · piemērošana: workflow_dispatchcikls · bāzes pārbaudes L0–L3railshot-deploy.yml

    Pieprasa palaidienu ar tenant, app, source_commit un target_id. Ja atbilde zūd, tā netiek sūtīta atkārtoti; tā vietā tiek meklēti tā paša komita palaidieni.

  3. pirmkoda komits · trailerapps/<tenant>/<app>dati: iesniegtais komitscikls · bāzes pārbaudes L0–L3railshot-deploy.yml

    Darba kopijā tiek ņemts tikai iesniegtais komits un fiksētais platformas kods (PLATFORM_REF).

  4. SDK labošana · tikai labojamas kļūmesrailshot-deploy.ymldati: labojuma pieprasījums · nosacītsAI SDK provider

    Tiek izsaukts tikai labojamām kļūmju klasēm un apturēts, ja tā pati kļūme atkārtojas vai sasniegts mēģinājumu ierobežojums. Par izturēšanu vai neizturēšanu lemj pārbaudes, nevis LLM.

  5. release · publicēšana GHCR · piesaisterailshot-deploy.ymldati: pārbaudīto attēlu publicēšanaGHCR

    Pēc pārbaudes izturējušā komplekta verificēšanas tie paši attēli tiek publicēti GHCR. Nekas netiek būvēts no jauna.

  6. CI palaidiena piesaiste · novērošanaapps/apinovērošana: palaidiens · publikācijas nolasīšanarailshot-deploy.yml

    Publikācija tiek ieskaitīta tikai tad, ja tās run id, pirmkoda komits, mērķis un lietotne atbilst pieņemtajam ierakstam.

  7. CI palaidiena piesaiste · novērošanaapps/apikļūme · nezināms iznākums: failed · publication_unverifiedoperācijas stāvoklis · palaidiena piesaisteapi/product-store.js

    CI kļūme vai neverificēta publikācija tiek reģistrēta ar diagnostiku un netiek nodota CD.

Piemērošana → publiskā pārbaude

Piemēro caur config Git un Argo CD tikai tad, ja publikācija atbilst reģistrētajam mērķim, un panākumu reģistrē tikai pēc reģistrētās publiskās HTTPS adreses pārbaudes.

  1. release · publicēšana GHCR · piesaisterailshot-deploy.ymldati: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD nolasa publikācijas ieraksta failus caur uzticamu ielādētāju. CI pats nerada klastera resursu, URL vai izvietošanas panākumu.

  2. cd.js · deployPublishedapps/apiizpilde · piemērošana: piemērošana · reģistrēts mērķisuzticama konfigurācija · reģistrēts mērķisgitops/bridge.py

    Palaiž gitops/bridge.py ar uzticamo konfigurāciju tikai tad, ja reģistrētā lietotne un tenant atbilst publikācijas ierakstam.

  3. commit · push · attālā nolasīšanagitops/bridge.pydati: workload commit · pushConfig Git repozitorijs

    Komitē tikai workload.json atsevišķa zara reģistrētajā ceļā, vispirms reģistrē push nodomu, veic push un nolasa attālo revīziju atpakaļ. Nenoteikts push netiek atkārtots.

  4. Config Git repozitorijsdati: revisionApplication · AppProject pārbaudeArgo CD

    Config repozitorija revīzija, uz kuru norāda Argo CD Application.

  5. Argo sinhronizācija · novērošanagitops/bridge.pyizpilde · piemērošana: sinhronizācija · novērošanaApplication · AppProject pārbaudeArgo CD

    Pieprasa sinhronizāciju pēc AppProject pārbaudes; novērošana tikai lasa, bez sinhronizācijas.

  6. Application · AppProject pārbaudeArgo CDizpilde · piemērošana: piemērošanaworkload · ServiceK3s lietotņu klasteris

    Piemēro darba slodzi reģistrētajā mērķa klasterī.

  7. workload · ServiceK3s lietotņu klasterisdati: attēla lejupielāde · jaucējvērtībaGHCR

    Lejupielādē publicēto jaucējvērtību. Privātam GHCR vajadzīgi atsevišķi pull akreditācijas dati.

  8. publiska HTTPS zondegitops/bridge.pynovērošana: HTTPS healthPublisks HTTPS URL

    Pārbauda tikai operatora reģistrēto HTTPS health adresi, bez pāradresācijām, vai atbilde ir 200 (un sagaidītais JSON, ja iestatīts).

  9. Publisks HTTPS URLdati: publiskais ceļšworkload · ServiceK3s lietotņu klasteris

    Publiskais ceļš (LB, NodePort, sertifikāts) atšķiras atkarībā no nodrošinātāja un reģistrētā mērķa.

  10. cd.js · deployPublishedapps/apidati: succeeded · revision · URLoperācijas stāvoklis · palaidiena piesaisteapi/product-store.js

    Tiek reģistrēts kā succeeded tikai tad, ja ir cd.deployed, revīzija, sekmīga publiskā HTTPS pārbaude, tās laiks un derīgs URL.

  11. cd.js · deployPublishedapps/apikļūme · nezināms iznākums: unknown · nepieciešama saskaņošanaoperācijas stāvoklis · palaidiena piesaisteapi/product-store.js

    Iznākums, ko nevar zināt, paliek unknown; tā pati piemērošana netiek ne nosūtīta atkārtoti, ne atsaukta.

Novērošana · nav verdikts

Metrikas un zondes nelemj par izvietošanas panākumu. Trūkstošas, novecojušas un neizdevušās vērtības tiek rādītas, kādas tās ir.

  1. metrics observerapps/apinovērošana: PromQL vaicājumsPrometheus

    Nolasa up, probe_success un Pod sērijas. Trūkstošas, novecojušas vai neizdevušās vērtības tiek rādītas šajā stāvoklī un nekad netiek pārvērstas par 0.

  2. Prometheusnovērošana: scrape · probeworkload · ServiceK3s lietotņu klasteris

    Exporter scrape un HTTP zonde. Šīs metrikas netiek izmantotas, lai lemtu par izvietošanas panākumu.

  3. operācijas stāvoklis · palaidiena piesaisteapi/product-store.jsnovērošana: izvietošanas stāvoklis · vēsturetīmekļa ekrāns · vēsture · Insightsapps/dashboard

    Tīmekļa ekrāns un MCP rīki lasa tos pašus operāciju ierakstus. Pēdējais mēģinājums un pašreizējā verificētā izvietošana tiek rādīti atsevišķi, un pabeigts AI uzdevums nav izvietošanas panākums.

  4. publiska HTTPS zondegitops/bridge.pynovērošana: HTTPS healthPublisks HTTPS URL

    Pārbauda tikai operatora reģistrēto HTTPS health adresi, bez pāradresācijām, vai atbilde ir 200 (un sagaidītais JSON, ja iestatīts).

Visi savienojumi ar vienādu svaru. Izvēlieties plūsmu, lai izceltu tikai tās ceļu ar numurētiem soļiem.

  • Nepārtraukta · pirmkoda, attēlu un pieprasījumu plūsmas virziens
  • Raustīta · palaišanas pieprasījums, piemērošana vai sinhronizācija
  • Gara svītra-punkts · stāvokļa nolasījumi, zondes un metrikas, nošķirti no verdikta
  • Īsa svītra · reģistrēta kļūme vai nezināms iznākums
  • Bieza melna līnija · izvēlētā plūsma; skaitļi norāda secību
  • Rāmis · īpašumtiesību robeža, avota ceļš galvenē
  • Iekšējā plāksnīte · komponents šīs robežas iekšienē
  • Raustīts rāmis · ārpus platformas
  • Oranža kontūra · vieta, kur lemj modelis
  • Produkta API
  • Izvietošanas ieraksti
  • CD izpildes robeža
  • Ieeja · CI · mērķis

docs/architecture/README.md 2. oktobra (bc61a5a) attēls ir implementācijas vēsture; šī arhitektūra seko kodam 645e28a. Nodrošinātāji un tīkla ceļi atšķiras atkarībā no reģistrētā mērķa, un tas nenozīmē, ka katrs nodrošinātājs vienmēr ir ieslēgts.