RAILSHOT.
Takaisin saliin

Railshot

AI deployment & operations platform

Paikallisesti rakennettu verkkosovellus käyttöön valmisteltuihin pilvi- ja on-premises-ympäristöihin ja ylläpitoon.

AI-pohjainen käyttöönotto- ja ylläpitoalusta, joka vie paikallisesti rakennetun verkkosovelluksen valmisteltuihin pilvi- tai on-premises-ympäristöihin ja pitää sen käynnissä.

28.9.2026–4.10.2026 · Päättynyt

Tiimiprojekti · oma osuuteni: CI:n suunnittelu ja toteutus, CSP-klusterit ja Ansible-rajapinta, ylläpito, tiimin koodikatselmointi ja integrointi

SoftBank Hackathon 2026 powered by KOREC & ProgateAlkukierroksen osallistuja · finaaliin valitut julkistetaan 26.10.2026 (tilanne 7.10.2026)

  • VerkkoToteutettu · hackathon-versio
  • MCP-palvelinToteutettu · etä · paikallinen

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

Verkkonäkymä ja käyttäjän oma agentti pyytävät käyttöönottoa saman tuote-API:n kautta.

Tuote hyväksytystä käyttöönottopyynnöstä CI-tarkistusten ja levykuvan julkaisun kautta Git-konfiguraatioon ja Argo CD -vientiin rekisteröityyn kohteeseen sekä julkisen HTTPS:n todentamiseen. Onnistuminen kirjataan vain, kun sekä sovellettu revisio että julkinen tarkistus ovat olemassa; lopputulos, jota ei voi tietää, jää tuntemattomaksi.

Projektin voi lähettää verkkonäkymästä tai MCP:llä yhdistetystä omasta AI-agentista, ja alusta hoitaa käyttöönottotiedostojen valmistelun, epäonnistumisten korjauksen, levykuvan julkaisun, ympäristöön viennin ja julkisen URL:n todentamisen; käyttöönoton jälkeen samassa näkymässä näkyvät historia ja lokit, ja siellä hallitaan päivitykset, pysäytykset, jatkamiset ja poistot. Tiimiprojekti.

Kilpailun kehitysjakso 28.9.2026–4.10.2026

Hackathonin aikana rakennetut verkkonäkymä ja MCP-palvelin. Etä-MCP kirjautuu OAuthilla lähettääkseen; paikalliset kansiot lähetetään paikallisen MCP:n kautta.

Tuotearkkitehtuuri · piirretty julkisen commitin 645e28a koodipolkujen pohjalta
Railshotin tuotearkkitehtuuriRailshot-tuotteen komponentit ja yhteydet. Verkkonäkymä, etä-OAuth-MCP ja käyttäjän tietokoneella toimiva paikallinen MCP pyytävät käyttöönottoa saman tuote-API:n kautta, joka rekisteröi lähdecommitin ja CI-ajon. CI päättää kiinteillä tarkistuksilla ja julkaisee tarkistetut levykuvat GHCR:ään. CD-sovitin soveltaa config Gitin ja Argo CD:n kautta vain, kun rekisteröity kohde vastaa julkaisukirjausta, ja tarkistaa sitten rekisteröidyn julkisen HTTPS-osoitteen ja kirjaa lopputuloksen. Mittarit ovat havainnointia, erillään tuomiosta.Selaimen käyttäjäkansio · ZIP · GitHub-URLMCP-asiakasChatGPT · Codex · Clauderailshot-local MCPkäyttäjän tietokone · stdioGHCRlevykuvat tiivisteen mukaanAI SDK providerCodex · Claude SDKConfig Git -repositoriorekisteröity workload.jsonJulkinen HTTPS-URLrekisteröity health-polkuPrometheusylläpidon ohjaus-VM · lukuapps/dashboardverkkonäkymä · historia · Insightsagent/remote-mcp.jsOAuth MCP · deploy_repositoryapps/apivalidointi · kohde · 202 vastaanotettukäyttöönottojono · 3 kerrallaanCI-ajon sidonta · havainnointicd.js · deployPublishedmetrics observerapi/product-store.jsoperaation tila · ajon sidontagitops/bridge.pyluotettu konfiguraatio · rekisteröity kohdecommit · push · etäpään uudelleenlukuArgo-synkronointi · havainnointijulkinen HTTPS-koetinArgo CDApplication · AppProject-tarkistusapps/<tenant>/<app>lähdecommit · traileritrailshot-deploy.ymlsilmukka · perustarkistukset L0–L3SDK-korjaus · vain korjattavat virheetsamat tarkistukset → testattu pakettirelease · julkaisu GHCR:ään · sidontaK3s-sovellusklusteriworkload · ServiceRailshot-alustaylläpitoklusteri · AWSGitHubyksityinen apps-repositorio · ActionsRekisteröity kohdejulkinen polku toimittajaa kohden1 kansio · ZIP · GitHub-URL · Selaimen käyttäjä → verkkonäkymä · historia · Insights12sama tuote-API · /api/v13 OAuth · deploy_repository · MCP-asiakas → OAuth MCP · deploy_repository34sama tuote-API5 ZIP-lataus · deploy_local_project · railshot-local MCP → validointi · kohde · 202 vastaanotettu56 kirjattu tilaan queued · 202 · validointi · kohde · 202 vastaanotettu → operaation tila · ajon sidonta67 jonojärjestys · operaation tila · ajon sidonta → käyttöönottojono · 3 kerrallaan78käyttöönoton tila · historia1source commit2workflow_dispatch3lähetetty commit4korjauspyyntö · ehdollinen5tarkistettujen levykuvien julkaisu6ajo · julkaisun luku7 failed · publication_unverified · CI-ajon sidonta · havainnointi → operaation tila · ajon sidonta71images.json · spec · verdict · manifest2toimeenpano · rekisteröity kohde3workload commit · push4revision5 synkronointi · havainnointi · Argo-synkronointi · havainnointi → Application · AppProject-tarkistus56toimeenpano7levykuvan haku · tiiviste8HTTPS health9 julkinen polku · Julkinen HTTPS-URL → workload · Service910 succeeded · revision · URL · cd.js · deployPublished → operaation tila · ajon sidonta1011 unknown · vaatii täsmäytystä · cd.js · deployPublished → operaation tila · ajon sidonta111PromQL-kysely2scrape · probe3käyttöönoton tila · historia4HTTPS health

Lähetys → vastaanotto

Verkkonäkymä, etä-MCP ja paikallinen MCP kutsuvat samaa tuote-API:a, joka kirjaa tarkistetun pyynnön tilaan queued ja vastaa 202.

  1. Selaimen käyttäjädata: kansio · ZIP · GitHub-URLverkkonäkymä · historia · Insightsapps/dashboard

    Lähde ja rekisteröity ympäristö valitaan verkkonäkymässä.

  2. verkkonäkymä · historia · Insightsapps/dashboarddata: sama tuote-API · /api/v1validointi · kohde · 202 vastaanotettuapps/api

    Verkkonäkymä kutsuu tuote-API:a samasta alkuperästä.

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

    Etä-MCP yhdistää OAuthilla ja ottaa syötteeksi julkisen GitHub-repositorion.

  4. OAuth MCP · deploy_repositoryagent/remote-mcp.jsdata: sama tuote-APIvalidointi · kohde · 202 vastaanotettuapps/api

    Etä-MCP-palvelin kutsuu samaa käyttöönotto-API:a sisäisen API-asiakkaansa kautta.

  5. railshot-local MCPdata: ZIP-lataus · deploy_local_projectvalidointi · kohde · 202 vastaanotettuapps/api

    Käyttäjän tietokoneen stdio-MCP pakkaa kansion ZIP-tiedostoksi ja lataa sen. Sen istuntoa ei jaeta etä-OAuth-istunnon kanssa.

  6. validointi · kohde · 202 vastaanotettuapps/apidata: kirjattu tilaan queued · 202operaation tila · ajon sidontaapi/product-store.js

    Syöte, rekisteröity kohde, kapasiteetti ja idempotenssiavain tarkistetaan; operaatio kirjataan tilaan queued ja siihen vastataan 202. 202 tarkoittaa vastaanotettua, ei käyttöönotettua.

  7. operaation tila · ajon sidontaapi/product-store.jsdata: jonojärjestyskäyttöönottojono · 3 kerrallaanapps/api

    Otetaan vastaanottojärjestyksessä samanaikaisten käyttöönottojen rajan sisällä (oletuksena 3).

  8. operaation tila · ajon sidontaapi/product-store.jshavainnointi: käyttöönoton tila · historiaverkkonäkymä · historia · Insightsapps/dashboard

    Verkkonäkymä ja MCP-työkalut lukevat samoja operaatiokirjauksia. Viimeisin yritys ja nykyinen todennettu käyttöönotto näytetään erikseen, eikä valmis AI-tehtävä ole käyttöönoton onnistuminen.

CI-tarkistukset → levykuvan julkaisu

Kiinnitetty alustakoodi tarkistaa lähetetyn commitin, antaa vain korjattavat virheet AI:lle ja julkaisee vain levykuvat, jotka läpäisivät samat tarkistukset uudelleen.

  1. käyttöönottojono · 3 kerrallaanapps/apidata: source commitlähdecommit · traileritapps/<tenant>/<app>

    Lähetetystä lähteestä tulee commit yksityiseen apps-repositorioon (Railshot-Request- ja Railshot-Target-trailereilla), ja haara päivitetään ilman forcea.

  2. käyttöönottojono · 3 kerrallaanapps/apisuoritus · toimeenpano: workflow_dispatchsilmukka · perustarkistukset L0–L3railshot-deploy.yml

    Pyytää ajoa arvoilla tenant, app, source_commit ja target_id. Jos vastaus katoaa, sitä ei lähetetä uudelleen; sen sijaan haetaan saman commitin ajot.

  3. lähdecommit · traileritapps/<tenant>/<app>data: lähetetty commitsilmukka · perustarkistukset L0–L3railshot-deploy.yml

    Vain lähetetty commit ja kiinnitetty alustakoodi (PLATFORM_REF) haetaan työkopioon.

  4. SDK-korjaus · vain korjattavat virheetrailshot-deploy.ymldata: korjauspyyntö · ehdollinenAI SDK provider

    Kutsutaan vain korjattavissa olevissa virheluokissa, ja pysäytetään, kun sama virhe toistuu tai yritysten raja saavutetaan. Läpäisystä tai hylkäyksestä päättävät tarkistukset, eivät LLM.

  5. release · julkaisu GHCR:ään · sidontarailshot-deploy.ymldata: tarkistettujen levykuvien julkaisuGHCR

    Tarkistukset läpäisseen paketin todentamisen jälkeen samat levykuvat julkaistaan GHCR:ään. Mitään ei rakenneta uudelleen.

  6. CI-ajon sidonta · havainnointiapps/apihavainnointi: ajo · julkaisun lukurailshot-deploy.yml

    Julkaisu lasketaan vain, kun sen run id, lähdecommit, kohde ja sovellus vastaavat vastaanotettua kirjausta.

  7. CI-ajon sidonta · havainnointiapps/apiepäonnistuminen · tuntematon lopputulos: failed · publication_unverifiedoperaation tila · ajon sidontaapi/product-store.js

    CI-virhe tai todentamaton julkaisu kirjataan diagnostiikan kanssa eikä sitä välitetä CD:lle.

Toimeenpano → julkinen tarkistus

Toimeenpanee config Gitin ja Argo CD:n kautta vain, kun julkaisu vastaa rekisteröityä kohdetta, ja kirjaa onnistumisen vasta, kun rekisteröity julkinen HTTPS-osoite on tarkistettu.

  1. release · julkaisu GHCR:ään · sidontarailshot-deploy.ymldata: images.json · spec · verdict · manifestcd.js · deployPublishedapps/api

    CD lukee julkaisukirjauksen tiedostot luotetun lataajan kautta. CI itse ei luo klusteriresurssia, URL:ia eikä käyttöönoton onnistumista.

  2. cd.js · deployPublishedapps/apisuoritus · toimeenpano: toimeenpano · rekisteröity kohdeluotettu konfiguraatio · rekisteröity kohdegitops/bridge.py

    Ajaa gitops/bridge.py:n luotetulla konfiguraatiolla vain, kun rekisteröity sovellus ja tenant vastaavat julkaisukirjausta.

  3. commit · push · etäpään uudelleenlukugitops/bridge.pydata: workload commit · pushConfig Git -repositorio

    Commitoi vain workload.jsonin erillisen haaran rekisteröityyn polkuun, kirjaa ensin push-aikomuksen, pushaa ja lukee etärevision takaisin. Epävarmaa pushia ei toisteta.

  4. Config Git -repositoriodata: revisionApplication · AppProject-tarkistusArgo CD

    Config-repositorion revisio, johon Argo CD Application osoittaa.

  5. Argo-synkronointi · havainnointigitops/bridge.pysuoritus · toimeenpano: synkronointi · havainnointiApplication · AppProject-tarkistusArgo CD

    Pyytää synkronointia AppProjectin tarkistuksen jälkeen; havainnointi vain lukee ilman synkronointia.

  6. Application · AppProject-tarkistusArgo CDsuoritus · toimeenpano: toimeenpanoworkload · ServiceK3s-sovellusklusteri

    Vie työkuorman rekisteröityyn kohdeklusteriin.

  7. workload · ServiceK3s-sovellusklusteridata: levykuvan haku · tiivisteGHCR

    Hakee julkaistun tiivisteen. Yksityinen GHCR tarvitsee oman pull-tunnistetiedon.

  8. julkinen HTTPS-koetingitops/bridge.pyhavainnointi: HTTPS healthJulkinen HTTPS-URL

    Tarkistaa vain operaattorin rekisteröimän HTTPS-health-osoitteen ilman uudelleenohjauksia: vastaako se 200 (ja odotetun JSONin, jos asetettu).

  9. Julkinen HTTPS-URLdata: julkinen polkuworkload · ServiceK3s-sovellusklusteri

    Julkinen polku (LB, NodePort, varmenne) vaihtelee toimittajan ja rekisteröidyn kohteen mukaan.

  10. cd.js · deployPublishedapps/apidata: succeeded · revision · URLoperaation tila · ajon sidontaapi/product-store.js

    Kirjataan tilaan succeeded vain, kun on cd.deployed, revisio, onnistunut julkinen HTTPS-tarkistus, sen aika ja kelvollinen URL.

  11. cd.js · deployPublishedapps/apiepäonnistuminen · tuntematon lopputulos: unknown · vaatii täsmäytystäoperaation tila · ajon sidontaapi/product-store.js

    Lopputulos, jota ei voi tietää, jää tilaan unknown; samaa toimeenpanoa ei lähetetä uudelleen eikä peruta.

Havainnointi · ei tuomio

Mittarit ja koettimet eivät päätä käyttöönoton onnistumisesta. Puuttuvat, vanhentuneet ja epäonnistuneet arvot näytetään sellaisinaan.

  1. metrics observerapps/apihavainnointi: PromQL-kyselyPrometheus

    Lukee up-, probe_success- ja Pod-sarjoja. Puuttuvat, vanhentuneet tai epäonnistuneet arvot näytetään siinä tilassa eikä niitä koskaan muuteta arvoksi 0.

  2. Prometheushavainnointi: scrape · probeworkload · ServiceK3s-sovellusklusteri

    Exporterien scrape ja HTTP-koetin. Näitä mittareita ei käytetä käyttöönoton onnistumisen päättämiseen.

  3. operaation tila · ajon sidontaapi/product-store.jshavainnointi: käyttöönoton tila · historiaverkkonäkymä · historia · Insightsapps/dashboard

    Verkkonäkymä ja MCP-työkalut lukevat samoja operaatiokirjauksia. Viimeisin yritys ja nykyinen todennettu käyttöönotto näytetään erikseen, eikä valmis AI-tehtävä ole käyttöönoton onnistuminen.

  4. julkinen HTTPS-koetingitops/bridge.pyhavainnointi: HTTPS healthJulkinen HTTPS-URL

    Tarkistaa vain operaattorin rekisteröimän HTTPS-health-osoitteen ilman uudelleenohjauksia: vastaako se 200 (ja odotetun JSONin, jos asetettu).

Kaikki yhteydet samalla painolla. Valitse virta, niin vain sen polku korostuu numeroiduin vaihein.

  • Yhtenäinen · lähteen, levykuvien ja pyyntöjen kulkusuunta
  • Katkoviiva · ajopyyntö, toimeenpano tai synkronointi
  • Pitkä pistekatkoviiva · tilan luvut, koettimet ja mittarit, erillään tuomiosta
  • Lyhyt katko · kirjattu epäonnistuminen tai tuntematon lopputulos
  • Paksu musta viiva · valittu virta; numerot kertovat järjestyksen
  • Laatikko · omistava raja, lähdepolku otsakkeessa
  • Sisälaatta · komponentti rajan sisällä
  • Katkoviivalaatikko · alustan ulkopuolella
  • Oranssi ääriviiva · kohta, jossa malli päättää
  • Tuote-API
  • Käyttöönottokirjaukset
  • CD:n suoritusraja
  • Sisääntulo · CI · kohde

Tiedoston docs/architecture/README.md kuva lokakuun 2. päivältä (bc61a5a) on toteutushistoriaa; tämä arkkitehtuuri noudattaa koodia 645e28a. Toimittajat ja verkkopolut vaihtelevat rekisteröidyn kohteen mukaan, eikä tämä tarkoita, että jokainen toimittaja olisi aina päällä.