Skip to content

fix(plan-package): #886 敵対的レビュー残件 — PR-2(c3-prime 受理側)着手前に F-1/F-3/F-5 是正必須 #887

Description

@s977043

背景

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 条件

  • F-1/F-2/F-3/F-5 の是正が PR-2 本体または先行 PR で merge 済み
  • F-7 の契約記述是正済み
  • F-4/F-6/F-8 の対応(または明示的な採否記録)
  • 再現手順(F-1/F-3)が負側テストとして固定されている

Refs #872 / PR #886

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions