概要
advisor-runner / rescue-runner / review-runner の agent body に逐語コピーされている共有節 (helper path 解決・failure 分類基準) の同一性を契約テストで機械検査し、drift を CI で検知可能にする。
背景
3 runner の「helper path 解決」節 (説明文 + plugin cache 検索コマンド) と「failure 分類基準」(retryable-failure / terminal-failure / cancelled の定義) はほぼ同一文言のコピーであり、1 箇所の変更が他 2 箇所に反映されない drift 経路になっている (PR #336 の監査 finding)。runner の tools は Bash / Write / TaskOutput のみで外部参照ファイルの読込を前提にできないため、参照化ではなく「コピー維持 + 同一性の契約テスト検査」で固定する (方式は #341 で確定済み)。
受入基準
- tests/ 配下の契約テストが、3 runner の agent body から「helper path 解決」節と「failure 分類基準」節を抽出し、正規化 (前後空白・改行差の除去) のうえ 3 ファイル間で同一であることを検査する
- 節の抽出はマーカーコメントまたは見出しで決定的に行い、対象節が見つからないファイルがある場合は「同一とみなす」ではなく fail する (fail-closed)
- 3 ファイルの該当節の直前に「3 runner 間で同期必須 (契約テストの検査対象)」の旨のコメントを付す
- 実装時点で 3 ファイル間に差分が見つかった場合は同一化する。role 固有の内容が共有節に混在している場合は共有節の外へ移してから同一化する
- 既存テスト・lint (lint-prompt-sync.sh) がすべて pass する
I/O 契約
- 検査対象: plugins/codex-advisor/agents/{advisor-runner,rescue-runner,review-runner}.md
- テストは pytest (tests/test_*.py) に追加し、CI (ci.yml の validate) で実行される
制約
- runner の実行時挙動 (実行コマンド・job 追跡手順・report 形式) を変えない
- codex-advisor の version bump (patch) と 4 箇所同期を行う
想定ファイル
- plugins/codex-advisor/agents/advisor-runner.md / rescue-runner.md / review-runner.md
- tests/ (新規テストまたは既存 codex-advisor 系テストへの追加)
- version 同期 4 箇所 (plugin.json / marketplace.json / 直下 README.md / plugins/codex-advisor/README.md)
関連 issue
親 issue: #341
概要
advisor-runner / rescue-runner / review-runner の agent body に逐語コピーされている共有節 (helper path 解決・failure 分類基準) の同一性を契約テストで機械検査し、drift を CI で検知可能にする。
背景
3 runner の「helper path 解決」節 (説明文 + plugin cache 検索コマンド) と「failure 分類基準」(retryable-failure / terminal-failure / cancelled の定義) はほぼ同一文言のコピーであり、1 箇所の変更が他 2 箇所に反映されない drift 経路になっている (PR #336 の監査 finding)。runner の tools は Bash / Write / TaskOutput のみで外部参照ファイルの読込を前提にできないため、参照化ではなく「コピー維持 + 同一性の契約テスト検査」で固定する (方式は #341 で確定済み)。
受入基準
I/O 契約
制約
想定ファイル
関連 issue
親 issue: #341