背景
PR #886(TASK-0872 PR-1・merged 721edcb)への敵対的レビュー(bot レビュー不在の logic-heavy PR への 1 本・オーガナイザー派遣)で major 4 / minor 4 を検出。PR-1 窓では bin/plangate が c3-prime を受理しない(c3_status 不在で FAIL)ため本番承認境界への実害は未接続だが、PR-2(受理側実装)が入ると F-1+F-3 は「改竄 evidence / 不整合 record で exec が解錠される」実経路に昇格する(その時点で critical 相当)。
指摘(severity 別)
major(PR-2 着手前に是正必須)
- F-1: C-1 判定行抽出が last-match substring で FAIL→PASS 反転可能。
scripts/ai-loop/plan_package.py _extract_verdict_line(後方探索・部分一致)により、判定: **FAIL** の後に「参考メモ: …判定: PASS となる見込み」を追記すると verdict=PASS が抽出される(オーガナイザーが再現実測 CONFIRMED)。是正案: 行頭アンカー + 専用マーカー行を c3-prime-contract §1 に正規定義
- F-3: build_c3_prime が decision と verdicts の整合を検証しない。verdicts=reject×2 + decision=AUTO_APPROVED で例外なく record 生成(再現済み)。受理側(PR-2)にも整合規則なし(契約 §4 未定義)。生成・受理の両側に verdict 整合検証を追加
- F-2: mtime ベース stale 判定が非決定(fresh checkout で PASS/FAIL 揺れ・touch でバイパス可)。契約正本 §1 の stale 定義(hash 照合)と実装が乖離。hash ベースへの置換 or 契約への暫定注記
- F-5: evidence 抽出契約が実 artifact 形式と未突合。実在の review-external.md(R-NNN 監査表形式)に「総合判定:」行は存在せず、現行の実 artifact では Plan-first 経路は常に fail-closed = 機能不達。テスト fixture は実装 regex から逆算した合成形式のみ(盲点構造)。実テンプレ由来 fixture + 抽出マーカーの契約正規化
minor(PR-2 実装時に対応)
- F-4:
production: true 自己申告 opt-in の残置は設計判断済み(decision-log 2026-07-20T07:10)だが、PR-2 受理側で record の production 経路由来担保(issued_by 検証等)が契約 §4 未定義
- F-6: 負側テスト欠落 3 点(HO 先勝ち順序 / F-3 不整合ケース / mtime 同値境界)
- F-7: 契約 §5 の serialization 防御記述が現行
bin/plangate:981 の非アンカー grep と不一致(PR-2 実装者が契約を信じて legacy grep 流用すると誤動作)。契約記述の是正は PR-2 実装前に必須
- F-8: schema_mapping の c3-prime dispatch 先 schema が PR-2 まで不在 → validate SKIP の fail-open 窓
検証済み(指摘なし)
HO 混入 0(9 カテゴリ全数照合)/ AC-11 schemas diff 0 byte / arbiter 既存 246 テスト全 PASS・HO escalate 先勝ち構造 / C-2 発見 7 点(R-003/004/006/007/008/010/013)全反映
Close 条件
Refs #872 / PR #886
🤖 Generated with Claude Code
背景
PR #886(TASK-0872 PR-1・merged 721edcb)への敵対的レビュー(bot レビュー不在の logic-heavy PR への 1 本・オーガナイザー派遣)で major 4 / minor 4 を検出。PR-1 窓では
bin/plangateが c3-prime を受理しない(c3_status 不在で FAIL)ため本番承認境界への実害は未接続だが、PR-2(受理側実装)が入ると F-1+F-3 は「改竄 evidence / 不整合 record で exec が解錠される」実経路に昇格する(その時点で critical 相当)。指摘(severity 別)
major(PR-2 着手前に是正必須)
scripts/ai-loop/plan_package.py_extract_verdict_line(後方探索・部分一致)により、判定: **FAIL**の後に「参考メモ: …判定: PASS となる見込み」を追記すると verdict=PASS が抽出される(オーガナイザーが再現実測 CONFIRMED)。是正案: 行頭アンカー + 専用マーカー行を c3-prime-contract §1 に正規定義minor(PR-2 実装時に対応)
production: true自己申告 opt-in の残置は設計判断済み(decision-log 2026-07-20T07:10)だが、PR-2 受理側で record の production 経路由来担保(issued_by 検証等)が契約 §4 未定義bin/plangate:981の非アンカー grep と不一致(PR-2 実装者が契約を信じて legacy grep 流用すると誤動作)。契約記述の是正は PR-2 実装前に必須検証済み(指摘なし)
HO 混入 0(9 カテゴリ全数照合)/ AC-11 schemas diff 0 byte / arbiter 既存 246 テスト全 PASS・HO escalate 先勝ち構造 / C-2 発見 7 点(R-003/004/006/007/008/010/013)全反映
Close 条件
Refs #872 / PR #886
🤖 Generated with Claude Code