RAILSHOT.
Back to the hall

Railshot

AI deployment & operations platform

Deploy a locally built web app to prepared cloud and on-premises environments, then run it.

An AI deployment and operations platform that takes a web app built locally to prepared cloud or on-premises environments and keeps running it.

2026.09.28 — 2026.10.04 · Completed

Team project · my part: CI planning and implementation, CSP clusters and Ansible interface, operations, team code review and integration

SoftBank Hackathon 2026 powered by KOREC & ProgatePreliminary participant · finals selection — be announced 2026.10.26 (as of 2026.10.07)

  • WebImplemented · hackathon
  • MCP serverImplemented · remote · local

A handoff checked independently, two recoveries reconciled

Two cases from October 3, 2026 to October 4, 2026, within the contest period. The Codex session used for development and Jev and CI diagnosis inside the product sit in different columns.

Full legend

How to read · one grammar for every case

  • Columns are who acted; top to bottom is time
  • Solid: a recorded handoff or next step
  • Heavy lapis ↩: a finding that sent work back
  • Dashed: not a recorded execution (a written rule, advice without authority, an unverified boundary)
  • Rectangle: an action
  • Rounded: an observed state or finding
  • Folded corner: an artifact or evidence
  • Hatched column: parts of the product under development (not the agents used to build it)

Case 1 / 2 · Observability work was handed to a separate Codex session and checked separately with failure fixtures

October 3, 2026

Observability work was handed to a separate Codex session and checked separately with failure fixtures

  1. Work sessionOriginal session

    ActionHand over one worktree and stop editing there

    • handoffWorktree · known failures→ Handed-over defects first: fixed five-gate assumption · Q/L4 not-run evidence · draft regression (Codex implementation session)
  2. Work sessionOriginal session

    ActionContract: observed error ≠ model hypothesis, existing deploy path only

    • handoffDone criteria→ One JSON error · evidence contract + Python · Node emitters (Codex implementation session)
  3. Coding agentCodex implementation session

    ActionHanded-over defects first: fixed five-gate assumption · Q/L4 not-run evidence · draft regression

    • handoff→ One JSON error · evidence contract + Python · Node emitters (Codex implementation session)
  4. Coding agentCodex implementation session

    ActionOne JSON error · evidence contract + Python · Node emitters

    • not a recorded executionEvidence only, no write access→ Jev only classifies, no authority to fix (CI diagnosis · Jev)
    • handoffPR · release evidence returned→ PR #131 · pinned release evidence (Artifacts)
  5. Under developmentCI diagnosis · Jev

    Observation · findingJev only classifies, no authority to fix

  6. ArtifactsArtifacts

    ArtifactPR #131 · pinned release evidence

    • handoffChecked outside the implementation session→ Independent check: failure fixtures · diagnosis lookup · ownership (Original session)
  7. Work sessionOriginal session

    ActionIndependent check: failure fixtures · diagnosis lookup · ownership

    • handoffKnown failures fed in→ L1: .env exclusion missing from .dockerignore · L2: syntax error (CI diagnosis · Jev)
  8. Under developmentCI diagnosis · Jev

    Observation · findingL1: .env exclusion missing from .dockerignore · L2: syntax error

  9. Work sessionOriginal session

    ActionSyntax error fixed by the check script itself · resubmitted

    • handoffSame service path→ CI → image → GitOps → Argo → Pod · HTTPS confirmed (Artifacts)
  10. ArtifactsArtifacts

    ArtifactCI → image → GitOps → Argo → Pod · HTTPS confirmed

Context
The work fixed CI failures whose causes were hidden (an assumed fixed five stages, a build fingerprint that masked the cause, missing per-check NOT_RUN evidence for disabled Q/L4 and more). At the user’s request a separate Codex session implemented it; the original session stopped editing that worktree and then checked the result by feeding in failures itself.
Outcome
The diagnosis records exposed the cause of both failures, and the checking side fixed the syntax error itself and confirmed the same path again through Pod and HTTPS. Accepting the implementation and cleaning up the test resources were finished separately by the original session.
Limit
Not a success case for automatic repair (the automatic-repair attempt cap was 0 at this point). There is no record that Claude made this change, and the same run does not prove OpenStack deployment. Merged status does not mean a count of formal approvals.
Sources and remaining limits
  • The handoff and the independent check are internal work records and are not linked. Other sessions kept ownership of integration, provider and deployment work, and the handoff said not to use the default checkout that still held the user’s changes.
  • The core of the contract was keeping the raw error apart from the model hypothesis, and retry advice apart from the actual retry decision, in separate fields.

October 4, 2026

What looked like a GitHub outage was reproduced and split, and two concurrent recovery changes were reconciled into one

  1. Under developmentAPI · GitHub calls

    Observation · findingRemote commit present · 0 CI runs · liveness restart

    • handoffNot assumed to be a GitHub outage→ Reproduced with mock GitHub: branch update succeeds, local callback fails (Recovery session)
  2. Work sessionRecovery session

    ActionReproduced with mock GitHub: branch update succeeds, local callback fails

    • handoff→ Check source registration · local checkpoint · dispatch separately (Recovery session)
  3. Work sessionRecovery session

    ActionCheck source registration · local checkpoint · dispatch separately

    • handoff→ #189: store the accepted run first · look up the existing run if the response is lost (Recovery session)
  4. ArtifactsArtifacts

    ArtifactConcurrent changes: #185 termination · #186 source checkpoint

  5. Work sessionRecovery session

    Action#189: store the accepted run first · look up the existing run if the response is lost

    • handoffThree regression cases→ Regressions: exit after accept · checkpoint error · lost response (Artifacts)
  6. ArtifactsArtifacts

    ArtifactRegressions: exit after accept · checkpoint error · lost response

    • handoff→ PR #189 merged · source hash · image · Argo · health confirmed (Artifacts)
  7. Work sessionAnother session

    ActionCancellation · concurrency scope owned by this session

    • handoffPrevents a duplicate re-run→ Platform readback ≠ customer result · not re-run (Artifacts)
  8. ArtifactsArtifacts

    ArtifactPR #189 merged · source hash · image · Argo · health confirmed

    • not a recorded execution→ Platform readback ≠ customer result · not re-run (Artifacts)
  9. ArtifactsArtifacts

    Rule · unverifiedPlatform readback ≠ customer result · not re-run

Context
The source commit was on the remote, yet CI never started and the API was restarted by liveness. The error shown carried a GitHub step name, but the local callback might actually have failed.
Outcome
The accepted source and run are stored before observation stops, and if the response is lost the run already started is looked up instead of dispatching twice. An assertion that failed on the previous image was kept as a separate record.
Limit
With no original exception text, the local interruption stays a grounded explanation only. This does not mean the CPU or storage bottleneck was solved or that deployment to the customer terminal succeeded, and the prevention of re-dispatch is not generalized beyond the named cases.
Sources and remaining limits
  • Reproduction used mocks only, with no real writes or retries.
  • The two recovery records and the deployment readback are internal work records; customer and operational identifiers are not included.