Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-nn43-worktree-build-before-product-worktree
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typeissue
specdojo.item_statusdone
specdojo.priorityhigh
specdojo.ownerDEV
specdojo.registered_at2026-10-11T08:58:38Z
specdojo.completed_at2026-10-11T11:09:38Z
specdojo.conclusionプロダクトの worktree を project 側の build より先に作る順序に改め、統合テストを 2 件追加した

PJR-NN43 repos を持つ project の worktree 実行がプロダクトの worktree 作成前の build で失敗する ​

1. 課題内容 ​

repos を宣言した project で exec run --worktree を行うと、project/ の worktree で specdojo build が設定を読む時点で兄弟のプロダクト worktree がまだなく、repos[].path の存在検査で失敗する

2. 影響範囲 ​

観点影響
スコープrepos を宣言した project での exec run --worktree(--register・--task とも)
スケジュールrepos を持つ project では worktree 実行ができず、in-place 実行で回避する必要がある
コスト失敗した実行の後片づけと、in-place への切り替えの手間
品質成果物の隔離という worktree 実行の利点が使えない
関係者別リポジトリ構成の project(prj-0002 など)の利用者

3. 対応方針 ​

項目内容
原因src/exec-worktree-ops.ts の checkpointAndEnsureWorktree は、project/ の worktree を作った直後に generateWorktreeArtifacts(specdojo build)を実行し、その後で ensureProductWorktrees で兄弟のプロダクト worktree を作る。specdojo build は設定の読み込みで repos[].path の存在を検査するため、../<repo> がまだない時点で失敗する。
対応策プロダクトの worktree を先に作り、その後で project 側の specdojo build を実行する順序に改める。
依存事項なし
完了条件repos を宣言した project で exec run --register --worktree が準備の段階を通ることを統合テストで確認する。既存のテストが通る。

4. 対応結果 ​

項目内容
解決内容src/exec-worktree-ops.ts の checkpointAndEnsureWorktree で、project/ の worktree 作成時は生成段階を保留し、兄弟のプロダクト worktree(ensureProductWorktrees)を作った後に generateWorktreeArtifacts を実行する順序へ改めた。プロダクト worktree は checkpoint commit より前に揃うため、commit 時の hook が設定を読む場合も失敗しない。
再利用時既存の project/ worktree を再利用する場合も、先にプロダクト worktree を作成(または再利用)してから build する。プロダクト worktree の作成前に失敗した前回の準備からも再実行で回復できる。
確認結果tests/src/exec-task-repos.integration.test.ts に、../app1・../app2 が無いと失敗する build の代替(dist/specdojo.js)を持つ project で準備が checkpoint commit まで通ること、プロダクト worktree が欠けた状態からの再準備でそれらが作成されることの統合テストを追加した。
再発防止策統合テストで、プロダクト worktree の存在を前提とする build が準備段階で通ることを継続的に検証する。

5. 関連ドキュメント ​

  • prj-0001:pjr-98g4-multi-repo-worktree-agent: repos を持つ project の worktree 配置(project/ と兄弟のプロダクト worktree)を導入した項目。
  • prj-0002 の PJR-G4QN(project/prj-0002/develop 上): 事象が起きた実行(2 回目、../specdojo-lp が存在しないとして準備段階で失敗した)。