# 品質ゲート

## 1. 目的

品質ゲートは、実装が「動いた」だけでなく、レビュー可能で、戻せて、運用上も安全な状態かを確認するための共通チェックです。

機能ごとの詳細な確認内容は `docs/features/[feature-name]/05_test_plan.md` と `06_tasks.md` に書きます。
このファイルは、PR前、Issue完了前、リリース前に最低限見る観点を定義します。

## 2. 適用タイミング

| タイミング | 使い方 |
|---|---|
| feature定義時 | `05_test_plan.md` と `06_tasks.md` に必要な品質ゲートを反映する |
| Issue化時 | `triage-issue` で、対象Step IDに検証方法があるか確認する |
| 実装中 | Step IDごとにテスト、build、手動確認などの証跡を残す |
| PR前 | `.github/PULL_REQUEST_TEMPLATE.md` の品質ゲートを確認する |
| リリース前 | `07_release.md` で監視、ロールバック、リリース後確認を確認する |

## 3. レビュー観点

| 観点 | 確認すること |
|---|---|
| 正しさ | 受け入れ条件、例外、境界値、状態遷移、エラー処理を満たしている |
| 読みやすさ | 命名、責務分離、制御フローが理解しやすく、不要な抽象化がない |
| 設計整合性 | `docs/architecture/09_directory_structure.md` と既存パターンに合っている |
| スコープ | `04_technical_delta.md` と `06_tasks.md` の変更範囲を超えていない |
| セキュリティ | 入力検証、認証・権限、秘密情報、ログ、外部入力の扱いに問題がない |
| パフォーマンス | N+1、無制限取得、不要な再レンダー、大きすぎるアセットがない |
| アクセシビリティ | キーボード操作、ラベル、フォーカス、コントラスト、エラー表示に問題がない |
| 運用 | ログ、監視、ロールバック、feature flagの要否が確認されている |

## 4. 検証証跡

PRやIssueには、実行した検証を結果つきで残します。

| 種別 | コマンド / 確認内容 | 結果 | 備考 |
|---|---|---|---|
| lint |  | pass / fail / skipped |  |
| typecheck |  | pass / fail / skipped |  |
| test |  | pass / fail / skipped |  |
| build |  | pass / fail / skipped |  |
| E2E |  | pass / fail / skipped |  |
| 手動確認 |  | pass / fail / skipped |  |

未実行の項目は `skipped` とし、理由を書きます。
一度成功したコマンドは、関連ファイルを変更していない限り、安心のためだけに繰り返し実行しません。

## 5. 公式情報の確認

フレームワーク、ライブラリ、クラウド、ブラウザAPIなど、バージョンや推奨実装が変わり得るものは、実装前に公式ドキュメントを確認します。

| 対象 | 確認すること |
|---|---|
| フレームワーク / ライブラリ | `package.json` などでバージョンを確認し、該当バージョンの公式docsを見る |
| Web標準 / ブラウザAPI | MDN、WHATWG、web.devなどの一次情報を見る |
| クラウド / 外部サービス | 公式docs、公式changelog、公式API referenceを見る |
| 既存コードと公式docsが違う場合 | どちらを優先するか人間に確認する |

公式情報で確認できなかった実装判断は、PRの懸念点に `未確認` として明記します。

## 6. 高リスク判断

以下に該当する場合は、実装前またはPR前に人間確認を入れます。

- DBスキーマ、migration、データ移行
- 認証、権限、課金、セキュリティ設定
- 既存APIレスポンス形式、公開インターフェース
- 本番運用、監視、CI/CD、feature flag
- 複数moduleや複数serviceをまたぐ設計変更
- 正しさが型やテストだけでは確認しにくい状態遷移、並行処理、冪等性
- 外部仕様や公式docsと既存実装が矛盾している場合

## 7. PR前の最低条件

- [ ] 受け入れ条件を満たしている
- [ ] 対象Step IDの完了条件を満たしている
- [ ] 検証証跡がPRまたはIssueに残っている
- [ ] 仕様外の変更がない
- [ ] 変更禁止範囲を触っていない
- [ ] 既存テストを削除していない
- [ ] セキュリティ、パフォーマンス、アクセシビリティの該当観点を確認した
- [ ] 高リスク判断は人間確認済み、または対象外理由がある
