| id | refactor-claim-audit |
| name | Refactor-Claim Audit リファクタ完了主張の検証 |
| description | コミット/PR の「全部置換した」「-N%削減」等の完了主張を grep で反証できる残骸や best/typical/worst 試算で検証し、抽出・集約リファクタでは並列度(Promise.all)/fast-path/遅延評価の性能特性退行と、Map/Set 集約キーの cross-kind 衝突による検出漏れも監査する |
| version | 0.2.0 |
| category | midstream |
| phase | midstream |
| applyTo | ["**/*.{ts,tsx,js,jsx,mjs}","**/*.md","**/*.{yaml,yml,json}"] |
| tags | ["adversarial","refactor-claim","claim-vs-actual","verification","midstream","cognitive-bias","performance-regression","key-collision"] |
| severity | major |
| inputContext | ["diff","fullFile"] |
| outputKind | ["findings","actions"] |
| modelHint | high-accuracy |
| dependencies | ["code_search"] |
Pattern declaration
Primary pattern: Reviewer
Secondary patterns: Inversion
Why: 完了主張の反証は grep 検索による決定論的突合が主だが、主張がない変更では実行を止めるゲートが必要
Goal / 目的
- 「全部置換した」「すべて移行済み」「-83% 削減」のような 完了主張(commit message / PR description / コメント)に対し、grep で簡単に反証できる残骸や、過大な数値主張を検証する。
- 抽出(extract function/module)・集約リファクタが伴う 暗黙の挙動不変主張(「動作は変えていない」「テストは通る」)に対し、戻り値の byte 不変では守られない性能特性の退行やキー集約の衝突を検証する。
- 「やったと書いてあること」と「実際にやれていること」のギャップを可視化する。
Non-goals / 扱わないこと
- リファクタの設計妥当性の判断(それ自体が良い変更かは問わない)。
- 残骸が1件もない正当な完了主張への難癖(反証できなければ指摘しない)。
- パフォーマンス計測の代替(数値は主張の論理的整合性のみ検証し、実測はしない)。
Pre-execution Gate / 実行前ゲート
このスキルは以下の条件がすべて満たされない限り NO_REVIEW を返す。
ゲート不成立時の出力: NO_REVIEW: refactor-claim-audit — 完了主張・リファクタ挙動不変主張が検出されない
False-positive guards / 抑制条件
- 主張の対象を grep しても残骸が見つからない場合は指摘しない(反証できない主張は正しいとみなす)。
- 残骸が意図的に残されたもの(後方互換のための alias、deprecation 期間中の旧 API 等)で、差分内にその旨が明記されている場合は抑制。
- 数値主張が範囲表記(「-47%〜-55%」)で既に幅を持っている場合は抑制。
- 性能特性の退行は、抽出前に並列(
Promise.all)・fast-path・遅延評価が存在したことを差分または元コードで確認できる場合のみ指摘する。元から直列・同一評価順のコードを「直列だ」と指摘しない(新規の非効率提案は本スキルの対象外)。
- キー集約の衝突は、集約対象が単一 kind のみ、または集約キーが元から複合キーで衝突し得ない場合は指摘しない(衝突の現実的な可能性を示せないなら抑制)。
Rule / ルール
検出ロジック
- 主張の抽出: 完了主張を抽出し、検証可能な命題に変換する。
- 置換主張: 「A を B に全置換」→ 「repo 全体に A が残っていないはず」
- 完了主張: 「移行完了」→ 「旧構造への参照が残っていないはず」
- 数値主張: 「-N%」→ 「best/typical/worst のどのケースの値か」
- 反証検索: 主張の対象パターン(旧 API 名・旧参照形式・旧記法)を repo 全体に grep し、残骸を探す。
- 数値の独立試算:
-N% 等の定量主張は、best-case / typical-case / worst-case を独立に算出し、主張値がどのケースか・過大表示でないかを併記要求する。
- ギャップの報告: 主張と、それを反証する残骸 or 試算を
<file>:<line> で示す。
抽出・集約リファクタの退行観点
抽出・集約リファクタは「動作は変えていない」「テストは通る」という暗黙の挙動不変主張を伴う。だがこの主張が守るのは戻り値・出力(byte 不変)までで、次の。主張に挙動不変が含まれるとき、抽出前後のコードを対比して以下を追加監査する(grep 単独では判定できない意味論的観点)。