Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-k1zd-opencode-plugin-bootstrap-protected-false-positive
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-01T15:29:49Z
specdojo.completed_at2026-10-02T00:42:42Z
specdojo.conclusionopencode の導入ファイルが git に ignore されている場合だけ保護設定の検査から除外し、agent 定義は引き続き保護する

PJR-K1ZD opencode が生成するプラグインの導入ファイルを保護設定の検査が検出する ​

1. 課題内容 ​

opencode の reporter が worktree の .opencode/ にプラグインを自動導入し、package.json・package-lock.json・node_modules とそれらを ignore する .gitignore を生成する。保護設定の検査がこれらを agent による変更として検出し、exec run が止まる。git が ignore する opencode の導入ファイルだけを安全なものとして除外する

2. 影響範囲 ​

観点影響
スコープopencode の agent(gemma-reporter など)を使う exec run
スケジュールopencode の reporter を使う実行が保護設定の検査で止まる
コスト保護設定の検査の除外条件の追加とテスト
品質誤検出で実行が止まり、利用者が worktree を手で片付ける必要がある
関係者opencode を使う利用者

3. 対応方針 ​

項目内容
原因opencode が起動時に worktree の .opencode/ へプラグインを自動導入し、package.json・package-lock.json・node_modules・bun.lock と、それらを ignore する .gitignore を生成する。.opencode/ は保護パスのため、検査が agent による変更として検出する
対応策src/exec-agent-protected-config.ts の検査で、opencode の導入ファイル(.opencode/package.json・.opencode/package-lock.json・.opencode/bun.lock・.opencode/node_modules/**・.opencode/.gitignore)が git に ignore されている場合だけ安全なものとして除外する。agent 定義(.opencode/agents/**)と AGENTS.md は引き続き保護する。git の判定が失敗した場合は除外しない(PJR-GRB5 の方針)
依存事項なし
完了条件opencode の導入ファイルが ignore されているときは検査で止まらず、ignore されていないとき、agent 定義を変えたとき、git の判定が失敗したときは止まることを確かめる単体テストがある。親検証がすべて通る

4. 対応結果 ​

  • OpenCode が agent 実行中に .opencode/.gitignore、package.json、package-lock.json、bun.lock、node_modules/** をまとめて生成する条件を単体テストで再現し、既知の導入ファイルかつ Git の ignore 対象である場合だけ保護設定の検査から除外することを確認できるようにした。
  • .opencode/node_modules/ の走査省略を無条件ではなく Git の ignore 判定が成功した場合だけに限定した。ignore されていない場合と Git の判定に失敗した場合は配下を走査し、導入ファイルを保護対象として検出する。
  • .opencode/agents/** と .opencode/AGENTS.md は既知の生成物へ追加せず、従来どおり保護対象に残した。単体テストでは導入ファイルと同時に agent 定義を変更した場合も agent 定義だけを検出する。
  • 親 runner が lint-ts、lint-fm、lint-md、test-integration、validate-schema、typecheck、test-unit を実行する。

5. 関連ドキュメント ​