Railshot
AI deployment & operations platform
ローカルで作ったWebアプリを、用意されたクラウドとオンプレミス環境にデプロイし、運用します。
ローカルで作ったWebアプリを、用意されたクラウドやオンプレミス環境にデプロイし、運用まで続けるAIデプロイ・運用プラットフォームです。
引き継ぎの独立確認、重なった2つの復旧の整理
大会期間中、2026年10月3–4日の2つの事例です。開発に使ったCodexセッションと、製品内のJevとCI診断は別の列に置いています。
October 3, 2026
可観測性の実装を別のCodexセッションに引き継ぎ、失敗フィクスチャで別途確認しました
作業セッション元のセッション
行動worktreeを1つ引き渡し、そこでの編集を停止
- 引き継ぎworktree · 既知の失敗→ 引き継いだ欠陥から:5段階固定の前提 · Q/L4未実行の証拠 · draftの回帰 (Codex実装セッション)
作業セッション元のセッション
行動契約:観測されたエラー ≠ モデルの仮説、既存のデプロイ経路のみ
- 引き継ぎ完了条件→ 単一のJSONエラー · 証拠契約 + Python · Nodeエミッター (Codex実装セッション)
コーディングエージェントCodex実装セッション
行動引き継いだ欠陥から:5段階固定の前提 · Q/L4未実行の証拠 · draftの回帰
- 引き継ぎ→ 単一のJSONエラー · 証拠契約 + Python · Nodeエミッター (Codex実装セッション)
コーディングエージェントCodex実装セッション
行動単一のJSONエラー · 証拠契約 + Python · Nodeエミッター
- 記録された実行ではない証拠のみ、書き込み権限なし→ Jevは分類のみ、修正権限なし (CI診断 · Jev)
- 引き継ぎPR · リリースの証拠を返却→ PR #131 · 固定リリースの証拠 (成果物)
開発対象CI診断 · Jev
観測 · 指摘Jevは分類のみ、修正権限なし
成果物成果物
成果物PR #131 · 固定リリースの証拠
- 引き継ぎ実装セッションの外で確認→ 独立確認:失敗フィクスチャ · 診断の照会 · 所有権 (元のセッション)
作業セッション元のセッション
行動独立確認:失敗フィクスチャ · 診断の照会 · 所有権
- 引き継ぎ既知の失敗を投入→ 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の検査ごとのNOT_RUN証拠の欠落など)を直す作業でした。ユーザーの依頼で実装は別のCodexセッションが担い、元のセッションはそのworktreeの編集を止めたうえで、自ら失敗を投入して結果を確認しました。
- 結果
- 2つの失敗はどちらも診断記録で原因が明らかになり、構文エラーは検証側が自ら直して、同じ経路でPodとHTTPSまで再確認しました。実装の受け入れとテストリソースの片付けは、元のセッションが別途済ませました。
- 限界
- 自動修正の成功事例ではありません(この時点の自動修正の試行上限は0)。この変更をClaudeが作ったという記録はなく、同じ実行がOpenStackへのデプロイを証明するものでもありません。マージ済みの状態は、正式な承認の数を意味しません。
根拠と残る限界
- 引き継ぎと独立確認は内部の作業記録のため、リンクしていません。統合、プロバイダー、デプロイの作業は他のセッションが引き続き所有し、ユーザーの変更が残っていた既定のcheckoutは使わないよう引き継ぎに記されていました。
- 生のエラーとモデルの仮説、再試行の助言と実際の再試行の決定を、別々のフィールドに分けることが契約の核心でした。
October 4, 2026
GitHubの障害に見えたエラーを再現して切り分け、同時に入った2つの復旧変更を1つに整合させました
開発対象API · GitHub呼び出し
観測 · 指摘リモートにコミットあり · CI実行0件 · livenessで再起動
- 引き継ぎGitHubの障害と断定しない→ モックのGitHubで再現:ブランチ更新は成功、ローカルのcallbackは失敗 (復旧セッション)
作業セッション復旧セッション
行動モックのGitHubで再現:ブランチ更新は成功、ローカルのcallbackは失敗
- 引き継ぎ→ ソース登録 · ローカルチェックポイント · ディスパッチを個別に確認 (復旧セッション)
作業セッション復旧セッション
行動ソース登録 · ローカルチェックポイント · ディスパッチを個別に確認
- 引き継ぎ→ #189: 受け付けたrunを先に保存 · 応答が失われたら既存のrunを照会 (復旧セッション)
成果物成果物
成果物同時の変更:#185の終了処理 · #186のソースチェックポイント
- 差し戻し重なった復旧動作→ #189: 受け付けたrunを先に保存 · 応答が失われたら既存のrunを照会 (復旧セッション)
作業セッション復旧セッション
行動#189: 受け付けたrunを先に保存 · 応答が失われたら既存のrunを照会
- 引き継ぎ3ケースの回帰→ 回帰:受付後の終了 · チェックポイントのエラー · 応答の喪失 (成果物)
成果物成果物
成果物回帰:受付後の終了 · チェックポイントのエラー · 応答の喪失
- 引き継ぎ→ PR #189マージ · ソースハッシュ · イメージ · Argo · health確認 (成果物)
作業セッション別のセッション
行動キャンセル · 同時実行のスコープはこのセッションが所有
- 引き継ぎ重複した再実行を防止→ プラットフォーム確認 ≠ 顧客側の結果 · 再実行せず (成果物)
成果物成果物
成果物PR #189マージ · ソースハッシュ · イメージ · Argo · health確認
- 記録された実行ではない→ プラットフォーム確認 ≠ 顧客側の結果 · 再実行せず (成果物)
成果物成果物
指針 · 未確認プラットフォーム確認 ≠ 顧客側の結果 · 再実行せず
- 背景
- ソースのコミットはリモートにあるのにCIは始まらず、APIはlivenessによって再起動されました。表示されたエラーにはGitHubのステップ名が付いていましたが、実際にはローカルのcallbackが失敗していた可能性がありました。
- 結果
- 観測を止める前に、受け付けたソースとrunを保存し、応答が失われた場合は二重にディスパッチせず、すでに開始したrunを照会します。以前のイメージで失敗したアサーションは別の記録として残しました。
- 限界
- 元の例外の原文がないため、ローカルでの中断は根拠のある説明にとどめました。CPUやストレージのボトルネックを解決した、あるいは顧客端末へのデプロイまで成功したという意味ではなく、再ディスパッチの防止を名前を挙げたケース以外に一般化してはいません。
根拠と残る限界
- 再現は、実際の書き込みや再試行なしに、モックのみで行いました。
- 2つの復旧記録とデプロイ確認は内部の作業記録で、顧客と運用の識別子は載せていません。