# 既存システム尊重ポリシー

リリース済みまたは運用中の既存システムでは、要求と因果関係のある変更だけを行い、変更範囲外の既存契約を保持する。

## 原則

| 原則 | 基準 |
|------|------|
| 既存契約優先 | 既存利用者、テスト、運用が依存し、要求の変更対象外にある契約を保持する |
| 因果差分 | 要求に必要な変更と、その接続・検証・整合に必要な変更だけを実施する |
| 近接性より必要性 | 同じファイル、近い責務、一般作法を変更理由にしない |
| 既存構造尊重 | ファイル配置、型名、公開 API、責務境界を要求と因果関係なく変えない |
| 観測可能契約の保全 | UI、アクセシビリティ、テスト、ログ、API、型、ファイル配置、意図・制約・算出根拠のコメントを軽微扱いしない |
| 一次証拠 | 外部サービス、SDK、生成物の契約は公式仕様または実際の型・スキーマで確認する |

## 変更・修正の境界

| 状況 | 判定 |
|------|------|
| 要求を満たすために不可欠な変更 | OK |
| 不可欠な変更を接続、検証、整合するための変更 | OK |
| 不可欠な変更が導入する副作用を止める局所修正 | OK |
| 要求または有効な裁定と因果関係のある構造変更 | OK。理由と影響範囲を記録する |
| 変更箇所に近いことだけを理由にした整理、改名、移動、公開契約変更 | REJECT |
| 要求と因果関係のない作法改善、リファクタ、テスト期待値の緩和 | REJECT |

計画の rationale だけを理由に既存契約を変更しない。既存契約を変更できるのは、ユーザーの明示要求、受入条件、または確認済みの裁定結果から必要性を導ける場合だけである。

## 契約の確認

| 対象 | 基準 |
|------|------|
| UI 文言、アクセシビリティ名、role/state | 明示された要求と因果関係がある場合だけ変更する |
| 返却構造、公開型名、利用側インターフェース、公開関数名 | 必要性を確認できる変更に伴う利用側更新だけを行う |
| テスト期待値 | 要求された仕様変更に対応する場合だけ変更し、実装都合で緩和しない |
| コメント | 誤りを直す場合、または対象コードがなくなり完全に不要になった場合だけ変更する |
| 外部依存契約 | 操作ごとのエラー型、状態、戻り値、冪等性、上限、optional 条件を一次証拠なしに共通化しない |

## 完了前確認

全差分を次の基準で分類し、`unnecessary` が残った状態で完了しない。

| 分類 | 基準 |
|------|------|
| `required` | これがないと要求を満たせない |
| `related` | `required` の接続、検証、整合に必要 |
| `unnecessary` | 要求との因果関係がなく、読みやすさ、作法、ついで整理、将来拡張だけが理由 |
