| id | hallucinated-reference |
| name | Hallucinated Reference 幻覚的参照の実在確認 |
| description | 差分で新規に導入された import・メソッド呼び出し・ライブラリ API 参照が実在するかを code_search で検証し、AI 生成コード特有の幻覚的参照(存在しない関数・メソッド・モジュール・引数シグネチャ)を検出する |
| version | 0.1.0 |
| category | midstream |
| phase | ["midstream"] |
| applyTo | ["src/**/*.{ts,tsx,js,jsx,mjs}"] |
| tags | ["hallucination","reference-existence","ai-generated-code","correctness","midstream"] |
| severity | major |
| inputContext | ["diff","fullFile"] |
| outputKind | ["findings","questions"] |
| modelHint | high-accuracy |
| dependencies | ["code_search"] |
Pattern declaration
Primary pattern: Reviewer
Secondary patterns: Inversion
Why: 参照の実在確認はチェックリスト型評価が主だが、新規参照を含まない差分では実行を止めるゲートが必要
Goal / 目的
- 差分で新規に導入された参照(import・関数呼び出し・メソッド・ライブラリ API)が実在することを確認し、AI 生成コードに混入する幻覚的参照が実行時エラーとして本番へ到達するのを防ぐ。
- 「実在するが名前が似た別物」への置き換わり(例:
format と formatDate の取り違え)も対象とする。
Non-goals / 扱わないこと
- レビュー指摘(finding)の evidence 実在確認(それは
independent-review-synthesis の hallucination guard の役割)。
- リファクタで消えたシンボルへの残存参照の検出(それは
cross-file-leakage の役割。本スキルは差分内で新規に導入された参照のみを見る)。
- 先行実装・既存パターンへの準拠判定(
existing-pattern-conformance および SIMPLIFY 観点 Reuse の役割)。
- コードスタイル・命名の適切さの評価。
Pre-execution Gate / 実行前ゲート
このスキルは以下の条件がすべて満たされない限りNO_REVIEWを返す。
ゲート不成立時の出力: NO_REVIEW: hallucinated-reference — 実在確認の対象となる新規参照が検出されない
False-positive guards / 抑制条件
- 同一 PR / 差分内で新規に定義されたシンボルへの参照は指摘しない(定義と利用が同時に追加されるのは正常)。
- tsc / eslint no-undef 等の決定論的チェックが CI で有効なリポジトリでは、ビルドが確実に検出する未解決参照の severity を minor に落とす。実在するが挙動・シグネチャが異なる「意味的幻覚」はこの限りでない。
- code_search で定義が見つからなくても、動的生成(メタプログラミング・codegen)や型定義なし外部パッケージの可能性を棄却できない場合は、findings ではなく questions として返す。
- 標準ライブラリ・依存に含まれる著名ライブラリの公知 API は指摘しない。バージョン差異により存在が疑わしい場合のみ questions とする。
抑制時の出力: 該当する指摘を出力しない(黙る)。
Rule / ルール
- 新規 import / require の解決先が、リポジトリ内のモジュールまたは
package.json の依存に実在するか確認する。
- 新規のメソッド・関数呼び出しについて、レシーバのクラス・モジュール・型にその定義が存在するかを code_search で確認する。
- 依存ライブラリ API の呼び出しが、そのライブラリの公開 API として実在するか確認する。引数の数・名前がシグネチャと乖離している場合も指摘する。
- 「実在するが別物」のパターン(類似名 API・別ライブラリの同名 API・非推奨で削除済みの API)を優先度高く確認する。
- 指摘は最大 5 件。実行時エラーに直結するものを優先する。
Evidence / 根拠の取り方
- 指摘は差分内の参照行(
<file>:<line>)に紐づける。
- code_search の結果(定義が見つかった位置、または検索パターンと 0 件である事実)を根拠として明示する。
- 「存在しない」と「確認できなかった」を明確に区別する。後者は questions に落とす。
Output / 出力(短文版の推奨)
River Review のコメントは<file>:<line>: <message>形式です。コメントは日本語で返す。