Railshot
AI deployment & operations platform
로컬에서 만든 웹 앱을, 준비된 클라우드와 온프레미스에 배포하고 운영합니다.
로컬에서 만든 웹 앱을 클라우드나 온프레미스에 배포하고 운영까지 이어 주는 AI 배포 · 운영 플랫폼입니다.
넘겨준 구현의 독립 확인, 겹친 복구의 정리
대회 중 October 3, 2026 to October 4, 2026에 있었던 두 사건입니다. 개발에 쓴 Codex 세션과 제품 안의 Jev · CI 진단은 다른 열에 두었습니다.
October 3, 2026
관측성 구현을 별도 Codex 세션에 넘기고, 실패 fixture로 따로 확인했습니다
작업 세션원래 세션
행동worktree 하나를 넘기고 그곳 편집 중단
- 전달worktree · 알려진 실패→ 넘겨받은 결함부터: 5단계 고정 가정 · Q/L4 미실행 구분 · draft 회귀 (Codex 구현 세션)
작업 세션원래 세션
행동계약: 관측된 오류 ≠ 모델 가설, 기존 배포 경로만
- 전달완료 조건→ JSON 오류 · 증거 계약 하나 + Python · Node emitter (Codex 구현 세션)
코딩 에이전트Codex 구현 세션
행동넘겨받은 결함부터: 5단계 고정 가정 · Q/L4 미실행 구분 · draft 회귀
- 전달→ JSON 오류 · 증거 계약 하나 + Python · Node emitter (Codex 구현 세션)
코딩 에이전트Codex 구현 세션
행동JSON 오류 · 증거 계약 하나 + Python · Node emitter
- 기록된 실행 아님증거만, 쓰기 권한 없음→ Jev는 분류만, 수정 권한 없음 (CI 진단 · Jev)
- 전달PR · release 증거 반환→ PR #131 · 고정 release 증거 (산출물)
개발 대상CI 진단 · Jev
관측 · 지적Jev는 분류만, 수정 권한 없음
산출물산출물
산출물PR #131 · 고정 release 증거
- 전달구현 세션 밖에서 확인→ 독립 확인: 실패 fixture · 진단 조회 · 소유권 (원래 세션)
작업 세션원래 세션
행동독립 확인: 실패 fixture · 진단 조회 · 소유권
- 전달알려진 실패 투입→ L1: .dockerignore의 .env 제외 규칙 누락 · L2: 문법 오류 (CI 진단 · Jev)
개발 대상CI 진단 · Jev
관측 · 지적L1: .dockerignore의 .env 제외 규칙 누락 · L2: 문법 오류
- 되돌린 지적L2 문법 실패→ 문법 오류는 검증 스크립트가 직접 수정 · 재제출 (원래 세션)
작업 세션원래 세션
행동문법 오류는 검증 스크립트가 직접 수정 · 재제출
- 전달같은 서비스 경로→ CI → 이미지 → GitOps → Argo → Pod · HTTPS 확인 (산출물)
산출물산출물
산출물CI → 이미지 → GitOps → Argo → Pod · HTTPS 확인
- 배경
- CI 실패 원인이 가려지던 문제(고정된 5단계 가정, 원인을 덮는 빌드 지문, 선택 검사 Q/L4의 미실행 구분 누락 등)를 고치는 작업이었습니다. 사용자의 요청으로 구현은 별도 Codex 세션이 맡았고, 원래 세션은 그 worktree의 편집을 멈춘 뒤 결과를 직접 실패를 넣어 확인했습니다.
- 결과
- 두 실패 모두 진단 기록으로 원인이 드러났고, 문법 오류는 검증 쪽이 직접 고쳐 같은 경로로 Pod와 HTTPS까지 다시 확인했습니다. 구현 수용과 테스트 자원 정리는 원래 세션이 따로 마무리했습니다.
- 한계
- 자동 수정의 성공 사례가 아닙니다(이 시점의 자동 수정 시도 상한은 0). 이 변경을 Claude가 만들었다는 기록은 없고, 같은 실행이 OpenStack 배포를 증명하지도 않습니다. 병합 상태는 공식 승인 수를 뜻하지 않습니다.
근거와 남은 한계
- 인계와 독립 확인은 내부 작업 기록이라 링크하지 않았습니다. 다른 세션들은 통합 · provider · 배포 작업을 계속 소유했고, 사용자 변경이 남아 있던 기본 checkout은 쓰지 않도록 인계에 적혀 있었습니다.
- 원본 오류와 모델 가설, 재시도 조언과 실제 재시도 결정을 다른 필드로 나누는 것이 계약의 핵심이었습니다.
October 4, 2026
GitHub 장애처럼 보인 오류를 재현해 나누고, 동시에 들어온 두 복구 변경을 하나로 맞췄습니다
개발 대상API · GitHub 호출
관측 · 지적원격 commit 있음 · CI 실행 0 · liveness 재시작
- 전달GitHub 장애로 단정하지 않음→ mock GitHub로 재현: 브랜치 갱신은 성공, 로컬 callback 실패 (복구 세션)
작업 세션복구 세션
행동mock GitHub로 재현: 브랜치 갱신은 성공, 로컬 callback 실패
- 전달→ 소스 등록 · 로컬 체크포인트 · dispatch를 따로 확인 (복구 세션)
작업 세션복구 세션
행동소스 등록 · 로컬 체크포인트 · dispatch를 따로 확인
- 전달→ #189: 수락된 run을 먼저 저장 · 응답 유실 시 기존 run 조회 (복구 세션)
산출물산출물
산출물동시 변경: #185 종료 처리 · #186 소스 체크포인트
- 되돌린 지적겹친 복구 동작→ #189: 수락된 run을 먼저 저장 · 응답 유실 시 기존 run 조회 (복구 세션)
작업 세션복구 세션
행동#189: 수락된 run을 먼저 저장 · 응답 유실 시 기존 run 조회
- 전달세 경우 회귀→ 회귀: 수락 뒤 종료 · 체크포인트 오류 · 응답 유실 (산출물)
산출물산출물
산출물회귀: 수락 뒤 종료 · 체크포인트 오류 · 응답 유실
- 전달→ PR #189 병합 · 소스 해시 · 이미지 · Argo · health 확인 (산출물)
작업 세션다른 세션
행동취소 · 동시성 범위는 이 세션 소유
- 전달중복 재실행 막음→ 플랫폼 확인 ≠ 고객 결과 · 재실행 안 함 (산출물)
산출물산출물
산출물PR #189 병합 · 소스 해시 · 이미지 · Argo · health 확인
- 기록된 실행 아님→ 플랫폼 확인 ≠ 고객 결과 · 재실행 안 함 (산출물)
산출물산출물
지침 · 미확인플랫폼 확인 ≠ 고객 결과 · 재실행 안 함
- 배경
- 소스 commit은 원격에 있는데 CI가 시작되지 않은 채 API가 liveness로 재시작됐습니다. 표시된 오류에는 GitHub 단계 이름이 붙어 있었지만, 실제로는 로컬 callback이 실패했을 수 있었습니다.
- 결과
- 관측을 멈추기 전에 수락된 소스와 run을 먼저 저장하고, 응답이 유실되면 두 번 dispatch하는 대신 이미 시작된 run을 찾습니다. 이전 이미지에서 실패한 단언은 별도 기록으로 남겼습니다.
- 한계
- 원래 예외 원문이 없어서 로컬 중단은 근거 있는 설명으로만 남겼습니다. CPU · 저장 병목을 해결했다거나 고객 터미널 배포까지 성공했다는 뜻이 아니며, 이름 붙인 경우 밖의 재dispatch 방지를 일반화하지 않았습니다.
근거와 남은 한계
- 재현은 실제 쓰기나 재시도 없이 mock으로만 했습니다.
- 두 복구 기록과 배포 확인은 내부 작업 기록이며, 고객 · 운영 식별자는 싣지 않았습니다.