PJR-J3G0 Schedule タスクの統合段だけを再開できるようにする
1. 概要
worktree で実行した Schedule タスクが executor・reporter 成功後の commit・merge で失敗して block した場合、register 項目の --resume にある統合段の再開に相当する経路が無い。exec resume --task は executor を再実行しようとするため、cdfd-check-010 では exec worktree commit / merge / remove と exec complete を手で順に実行して回復した。pipeline-state.json の executor・reporter が succeeded なら agent を起動せず統合だけを行う再開を exec resume に追加し、統合段の状態を Schedule タスクの pipeline-state にも記録する。
1.1. 観測(T-DATA-FLOW-PDCA-cdfd-check-010)
pipeline-state.jsonは executor・reporter ともsucceeded。統合段(integrate)の記録は無い。- commit が失敗して block event が書かれ、worktree は成果物と記入済み result を保持したまま残った。
exec resume --taskはblockedを「再開不可」とし、exec unblock後の dry-run では executor の再実行を提示した。- 回復は次の手順を手で行った: result を修正 →
exec unblock→ worktree 内でexec worktree commit→exec worktree merge→exec worktree remove→exec complete。
register 項目の exec run --register --worktree --resume には統合段の再開(agent を起動せず commit → merge → 撤去)が あるが、Schedule タスクには無い。
1.2. 対処の方向
- Schedule タスクでも
pipeline-state.jsonに統合段の開始・失敗を記録する。 exec resume --task <task>が、state の executor・reporter がsucceededで統合が未完了なら agent を起動せず 統合だけを再開する。blockedの場合も、block の原因が統合段ならunblock後に統合段から再開できるようにする。- 前回 merge まで完了していた場合は再 merge せず、撤去と
completeだけを進める。
2. 完了条件
- 統合段で失敗した Schedule タスクの worktree に対して
exec resume --task <task>を実行すると、agent を起動せずに commit → merge → worktree 撤去 → complete が行われる。 pipeline-state.jsonに統合段の開始・失敗・成功が記録される。- 前回 merge 済みの場合に再 merge しない。
- 統合テストに、commit 失敗後の再開と、merge 済み後の再開の 2 ケースがある。
- specdojo:exec-operation-guide の再開の説明が Schedule タスクにも当てはまる記述になっている。
npm run typecheck、npm run lint:ts、npm run test:unit、npm run test:integrationが成功する。
3. 作業内容
| No | 作業 | 担当 | 状態 | メモ |
|---|---|---|---|---|
| 1 | Schedule タスクの pipeline-state に統合段を記録する | ARC | done | 開始・失敗・成功を run state に記録 |
| 2 | exec resume --task に統合段だけの再開を追加する | ARC | done | agent を起動せず既存 worktree を統合 |
| 3 | 統合テストと exec-operation-guide を更新する | ARC | done | commit 失敗と merge 済み再開を追加 |
4. 対応結果
- Schedule pipeline の通常統合で
pipeline-state.jsonのintegrateをrunning、succeeded、failedに更新し、統合失敗の block event へpipeline_stage=integrateとpipeline_state_refを記録するようにした。 exec resume --task <task-id>が統合失敗の block を同じ claim で再開し、executor と reporter がsucceededであることを検証したうえで agent を起動せず統合だけを実行するようにした。- exec branch が既に統合先へ merge 済みの場合は commit と merge を再実行せず、runner が残した result / pipeline-state の lifecycle 差分だけを確認・復元して worktree 撤去と complete を行う。
- Schedule pipeline の E2E テストへ、commit 失敗後の統合再開と、merge 後の worktree 撤去失敗からの 再開を追加した。運用手順は specdojo:exec-operation-guide へ反映した。
- 残課題はない。
5. 関連ドキュメント
- 再開の設計: specdojo:exec-operation-guide
- 発生の原因: prj-0001:pjr-19hx-result-prettier-emphasis-mangling
- register 側の worktree 統合: prj-0001:pjr-6776-worktree-branch-naming