| id | behavior-structure-separation |
| name | Behavior-Structure Separation 振る舞い変更と構造変更の分離・外部挙動維持 |
| description | リファクタリング(構造変更)と機能変更(behavior change)が同一 diff に混在していないかを識別し、structural change に対する external behavior preservation の証拠(テスト・型・静的解析)が揃っているかを diff-time で確認する。証拠不足のときは Characterization Test 追加を促すか question とする。DTO/公開 API の破壊的変更検出は api-compatibility、完了主張の反証や抽出リファクタの性能特性退行は refactor-claim-audit、新知識の命名・責務・境界への反映は knowledge-to-code-alignment、投機的抽象化・スコープ逸脱は altitude-generalization / fix-scope-integrity へ委譲する |
| version | 0.1.0 |
| category | midstream |
| phase | midstream |
| applyTo | ["src/**/*.{ts,tsx,js,jsx,mjs}","app/**/*.{ts,tsx,js,jsx,mjs}","lib/**/*.{ts,tsx,js,jsx,mjs}"] |
| tags | ["behavior-preservation","refactoring","characterization-test","structural-change","safety-net","midstream"] |
| severity | minor |
| inputContext | ["diff"] |
| outputKind | ["findings","questions"] |
| modelHint | high-accuracy |
| dependencies | ["code_search","test_runner"] |
Origin / 由来
inspired by:
上記は観測された考え方の紹介であり、本文の転載・著者による endorsement を含まない(nominative fair use)。命名は skills/README.md Naming に従い value を表す新規名として付与した。
Pattern declaration
Primary pattern: Reviewer
Secondary patterns: Inversion
Why: 振る舞い/構造変更の混在と外部挙動維持の証拠評価は意味的判断が主だが、構造変更の証拠が差分に無い変更では実行を止めるゲートが必要。
Goal / 目的
diff に対し、次を diff-time で確認する。テストが通るだけでは分からない「仕様混在」と「安全網なしの構造変更」を検出する。
- 分離: 外部挙動を変える behavior change と、外部挙動を変えない structural change(リファクタリング)が同一 diff に混在していないか。混在する場合、diff・説明・コミットからそれを識別できるか。
- 外部挙動維持の証拠: structural change の前後で外部挙動が維持されている証拠(テスト・型・静的解析)が揃っているか。証拠が不足する場合、Characterization Test の追加を促すか
needs_review(question)とする。
PlanGate が Behavior Change / Preparatory Refactoring / Post-change Refactoring / Characterization の区分を提供する場合はそれを入力とし、River Review は Plan を再作成せず、diff と検証結果が Plan の変更順序・完了条件を満たすかを確認する。
report-only。finding/question のみを出力し、自動修正・自動マージはしない。
Non-goals / 扱わないこと(委譲表)
- 公開 API / DTO の破壊的変更検出: エンドポイント・DTO・インターフェースの後方互換破壊とその影響範囲は
api-compatibility が担う。本 skill は破壊的変更の検出ではなく、振る舞い変更と構造変更の混在と構造変更の挙動維持証拠を見る。
- 完了主張の反証・性能特性の退行: 「動作は変えていない」「全部置換した」等の主張の grep 反証と、抽出リファクタの並列度/fast-path/遅延評価の退行・キー集約衝突は
refactor-claim-audit が担う。本 skill は主張の有無に関わらず分離の質と証拠の有無を評価する。
- 新知識の命名・責務・境界への反映、設計知識の保全:
knowledge-to-code-alignment(sibling)が担う。本 skill は知識反映ではなく挙動維持を見る。
- 投機的抽象化・不要なスコープ拡大:
altitude-generalization / fix-scope-integrity が担う。
- テストの命名・網羅性そのものの品質: Characterization Test の中身の良し悪しは testing 系観点の責務。本 skill は「挙動維持の証拠が有るか無いか」の充足のみを見る。
Pre-execution Gate / 実行前ゲート
このスキルは以下の条件がすべて満たされない限り NO_REVIEW を返す。