| id | e2e-wiring |
| name | End-to-End Wiring 末端到達・貫通の検証 |
| description | 宣言した処理(計測 / 通知 / 保存 / 検証 / 例外通知)が起点から末端まで途切れず配線されているかを確認し、「実装したつもり」で経路が途中で止まっている欠落を検出する |
| version | 0.1.0 |
| category | midstream |
| phase | midstream |
| applyTo | ["**/*.{ts,tsx,js,jsx,mjs,cjs,py,rb,go,php,java}"] |
| tags | ["wiring","end-to-end","correctness","integration","midstream"] |
| severity | major |
| inputContext | ["diff"] |
| outputKind | ["findings","questions"] |
| modelHint | high-accuracy |
| dependencies | ["code_search"] |
Pattern declaration
Primary pattern: Reviewer
Secondary patterns: Inversion
Why: 宣言された処理の配線追跡はチェックリスト型だが、貫通すべき処理を含まない変更では実行を止めるゲートが必要。
Goal / 目的
- ある処理が「宣言(意図)」されているのに、起点から末端まで配線が途切れている欠落を検出する。
- 「実装したつもり」で経路が途中で止まっているパターン(計測がセッション書き込み止まりで永続化されない、
validate() が保存経路に未配線、例外を捕捉して silent skip)を可視化する。
Non-goals / 扱わないこと
- 個別関数の論理的正しさ(
logic-torturing の領域)。
- caller 側の旧構造残骸(リファクタ後ドリフトは
cross-file-leakage の領域)。
- テストの有無そのもの(テスト不足は test 系スキルの領域。本スキルは「本番経路の配線」を見る)。
Pre-execution Gate / 実行前ゲート
このスキルは以下の条件がすべて満たされない限り NO_REVIEW を返す。
ゲート不成立時の出力: NO_REVIEW: e2e-wiring — 貫通処理の変更が検出されない
False-positive guards / 抑制条件
- 経路の末端側が差分外の場合は、まず
code_search(grep)で呼び出し先・末端の配線を確認した上でのみ指摘する。grep で確認せず「差分内に末端が見えない」ことだけを根拠に「途切れている」と推測断定してはならない(推測断定は最も多い誤検出源)。grep で配線済みと確認できたら指摘しない。
- 末端の到達可否が grep でも確定できない場合は、
findings で断定せず questions で確認する。
- 意図的に途中で止める設計(feature flag で後続を保留中など)が差分内に明記されている場合は抑制。
- ベストエフォートで欠落が許容される処理(デバッグログ等)は対象外。
Rule / ルール
検出ロジック
- 宣言の特定: 差分から「何をする宣言か」を抽出する(計測する / 通知する / 保存する / 検証する / 例外を通知する など)。
- 経路の追跡: その宣言の起点(呼び出し箇所)から末端(送信完了 / 受信者 / DB 確定 / 監視到達 / 戻り値の利用)まで、各ホップが実際に配線されているかを追う。
- 途切れの判定: 次の典型断点を確認する。
- 計測・状態をセッション / メモリに書いたが永続化・送信していない
validate() 等を定義したが保存・実行経路に呼び出していない
- 例外を
catch して通知・再送・再 throw のいずれもせず握り潰している(silent skip)
- 非同期処理を**
await / 完了確認せず**発火しっぱなし
- 報告: 起点と途切れた箇所を両方
<file>:<line> で示す。
制約
- 検出は最大 5 件。本番影響(データ欠落 / 通知不達 / 集計欠損)が大きいものを優先。
- 各指摘に「宣言」「起点」「途切れた箇所」「末端に到達しない影響」を必ず含める。