Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-gbvm-product-root-new-files-out-of-scope
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typeissue
specdojo.item_statusdone
specdojo.prioritymedium
specdojo.ownerDEV
specdojo.registered_at2026-10-11T13:43:02Z
specdojo.completed_at2026-10-12T07:19:39Z
specdojo.conclusion使い捨てのファイルを tmp/ に置くよう指示し、tmp/ を除外し、最上位の新規ファイルを commit して申し送りに列挙するようにした

PJR-GBVM 空のプロダクトリポジトリで最上位の新規ファイルが commit 範囲外になる ​

1. 課題内容 ​

register 由来タスクのプロダクト worktree では、最上位に作った新規ファイル(.gitignore・設定・README)が targets なしでは commit されず統合前検査で止まる。追跡済みディレクトリの無い初期構成の作業で必ず起きる

2. 影響範囲 ​

観点影響
スコープregister 由来のタスクで新規ファイルを commit する範囲(project とプロダクトの両リポジトリ)
スケジュールv0.3.0 の公開前に直す
コスト初期構成の作業で、最上位の設定ファイルが commit されずに統合が止まる
品質必要な成果物が統合されず、人が手で適用する
関係者exec を使う利用者と orchestrator

3. 対応方針 ​

項目内容
原因agent が最上位に残す使い捨てのファイルを commit しないため、新規ファイルは決まったディレクトリ・追跡済みのディレクトリ・targets の下に限っている。追跡済みのディレクトリが無い初期構成では、.gitignore や設定ファイルが対象外になり、統合前の検査で止まる
対応策利用者の判断(2026-10-12)により次の方式にする。(1) 予防: executor への指示に、使い捨てのファイルは最上位に作らず worktree の tmp/ に作ることを加える。(2) 除外: runner は tmp/ を両リポジトリで commit の対象から常に外す(.gitignore の有無によらない)。(3) 緩和: 最上位の新規ファイルも commit の対象にする。(4) 安全網: commit した最上位の新規ファイルを、統合ログと result の申し送りに「最上位に追加したファイル」として列挙し、review で気づけるようにする
依存事項なし
完了条件追跡済みのディレクトリが無いリポジトリで、最上位の新規ファイルが commit され、統合ログと申し送りに列挙されることを統合テストで確認する。tmp/ 配下のファイルは commit されないことも確認する。executor への指示に tmp/ の規則が入っていることを確認する。exec-worktree-guide の commit 対象の記述を更新する。統合テストで子プロセスとして CLI を起動する場合は、実リポジトリの node_modules/.bin/tsx を絶対パスで起動する。fixture の agent-members.yaml は schema の必須項目(capabilities・proficiency・priority など)を満たす

4. 対応結果 ​

  • 解決内容:
    1. 予防: docs/ja/specdojo/exec-templates/xep-common-conventions-template.md および src/exec-run.ts の executor 規約に、作業用・使い捨ての一時ファイルはリポジトリ最上位に作らず worktree 内の tmp/ またはリポジトリ外の一時ディレクトリに配置する規則を明記。
    2. 除外: project リポジトリ(src/exec-worktree-ops.ts)およびプロダクトリポジトリ(src/exec-repo-integration.ts)の commit 対象判定および残留変更検査において、.gitignore の有無によらず tmp/ 配下を commit 対象外および事前検査ブロック除外として扱うよう実装。
    3. 緩和: register 由来タスクの project worktree およびプロダクト worktree において、最上位の新規ファイル(パスに / を含まないファイル)を commit 対象として許可。
    4. 安全網: commit された最上位の新規ファイルを integrate.log(scopeLogPath)および result の ## 3. 申し送り に「最上位に追加したファイル:」として記録。あわせて docs/ja/specdojo/guides/exec-worktree-guide.md の commit 対象・除外対象の仕様記述を更新。
  • 確認結果:
    • tests/src/exec-worktree-ops.integration.test.ts で最上位新規ファイル(modify.py 等)の commit、tmp/ の除外、統合ログおよび申し送りへの記録を確認。
    • tests/src/exec-task-repos.integration.test.ts で追跡済みディレクトリの無いプロダクトリポジトリにおける最上位新規ファイル(.gitignore, settings.json)の commit、tmp/ の除外、統合ログ・申し送りへの記録、および productMergeBlockers の通過を確認。
  • 再発防止策:
    • 共通規約テンプレートと executor evidence contract の双方で一時ファイルの tmp/ 配置を標準化。
    • runner 側で tmp/ の自動除外と最上位新規ファイルの申し送り記録を恒久化し、レビュー時の気付きを確保。
  • 統合の経緯: 2026-10-12 の exec run(agy-expert-executor)は、新しい方針に合わせて既存テストの期待値を更新しておらず、統合テスト 3 件が落ちて止まった。orchestrator が期待値だけを直した(最上位の新規ファイルを申し送りへ記録するため result も commit 対象になる、tmp/ 配下は -uall で確かめる、申し送りのファイル名をインラインコードにする)。再開では runner の親検証 7 種がすべて通ったが、修正前の executor 検証の記録で止まったため、利用者の承認を得て orchestrator が exec ブランチへ commit し(ba93f5dbf)、単体テスト 2018 件・統合テスト 178 件・型検査の通過を確かめたうえで develop へ --no-ff で merge した(bd86926ed)。

5. 関連ドキュメント ​