PJR-9KST 複数リポジトリの統合を再開すると waiting の記帳が事前検査を妨げる
1. 課題内容
統合の途中で失敗して waiting に戻った項目を exec run --resume で再開すると、runner がプロジェクト側に書いた waiting の記帳(個票と event)が、事前検査で merge の対象と重なる未 commit の変更と判定され、統合できない。初回の統合と同じく releasePaths として除外する(v0.3.0)
2. 影響範囲
| 観点 | 影響 |
|---|---|
| スコープ | repos を持つ project の、統合段での失敗からの再開 |
| スケジュール | PJR-69VP の完了の前提であり、v0.3.0 の公開を遅らせる |
| コスト | 修正と再現テストの追加 |
| 品質 | 統合に失敗した項目を再開できず、手で直す必要がある |
| 関係者 | 別リポジトリ構成の利用者 |
3. 対応方針
| 項目 | 内容 |
|---|---|
| 原因 | 初回の統合は runner の記帳を releasePaths として事前検査から除外するが、再開の経路では waiting の記帳(個票・event・生成ビュー)を除外していない。PJR-0WAA の統合テストは関数を直接呼ぶため、この経路を通らなかった |
| 対応策 | 再開の経路でも初回の統合と同じ基準で runner の記帳を除外する。利用者の未 commit の変更と、merge の対象と本当に重なる変更は引き続き止める |
| 依存事項 | prj-0001:pjr-0waa-multi-repo-integration-resume の実装 |
| 完了条件 | 統合の途中で失敗して waiting に戻った項目を exec run --register --worktree --resume で再開すると、統合済みのリポジトリを飛ばして失敗位置から統合できる。PJR-69VP の worktree にある e2e(失敗位置ごとの再開 3 件)と同等の再現テストを本項目で加えて通す。宣言を持たない project の再開の動作が変わらない。親検証がすべて通る。あわせて、PJR-30SW が result へ書くトレーサビリティの文章と表が、result の Markdown 検査(MD013 の行長など)を通るようにする。1 回目の実行(codex)では、事前検査の修正の後、再開時に result の Markdown 検査(MD013/line-length)で止まった。差分の控えは /workspaces/specdojo-workspace/specdojo/logs/pjr-9kst-attempt1.patch にある |
4. 対応結果
- 再開経路の runner 管理パスを、
start遷移と root の派生ビュー再生成の後に取り直すようにした。個票・event・plan・result に加え、初回 checkpoint と同じ基準で検出した生成ビューをreleasePathsと merge 競合解決の対象に渡す。 - プロダクト 2 リポジトリの実 CLI 経路で、1 つ目のプロダクト、2 つ目のプロダクト、プロジェクトのそれぞれの merge を失敗させ、
waiting後の--resumeが失敗位置から統合を完了する回帰テストを追加した。先に統合済みのプロダクトは merge commit を作り直さないことも確かめる。 reposを宣言しない project は、既存の単一リポジトリ用テストと経路を変更していない。