コンテンツにスキップ

0015. 品質ゲート(CI + セキュリティ + シナリオ)

決定

品質は、通常のコードゲート、セキュリティゲート、実 DB の証明、業務シナリオ、ブラウザ golden path を分けて検証します。UI のスクリーンショットや単体テストだけで出荷可否を判断しません。

CI

ci.yml は全 PR と main / develop push で次を実行します。

  • Biome による lint / format
  • dependency-cruiser による arch
  • turbo の typecheck / test / build

security.yml は全 PR で Semgrep の security-audit / secrets と Gitleaks を必須実行します。Semgrep と Gitleaks はレビュー時の任意運用ではなく、秘密・危険な実装を機械的に止めるゲートです。

業務シナリオ

  • S1 は実 DB シナリオテストで、実 Postgres・PostgREST・全 migration・RLS を通し、per-PR で実行します。lib/db 内部をモックせず、必要な差し替えは Supabase client singleton と外部 API 境界だけです。
  • S2 はブラウザ golden path で、夜間とリリース前に実行します。リリース前は手動 dispatch を一度通し、配車・完了・計量・請求の画面連携を確認します。
  • E2E 予約 actor は admin2 / staff2 / driver10 / edriver3、取引先 000100 です。手動撮影・確認では admin1 / staff1 / driver01 だけを使います。
  • 重要な修正は、巻き戻すと S1 またはミューテーションテストが赤になることを確認します。

セキュリティ・DB 証明

RLS を変更する migration は verifier の期待値を同じ変更で更新します。Docker proof は全 migration 適用後に scripts/proofs/*.sql を全流しし、出力と終了コードを判定します。verify の完了主張は lint、arch、typecheck、test、build、Semgrep、Gitleaks、proof の全てが緑であることを前提にします。

影響

CI が速い単位を担当し、S1 が画面をまたぐデータ整合、S2 がリリースの利用者経路を担当します。S2 は時間とフレークを抑えるため per-PR の必須ゲートにはせず、夜間・リリース前に限定します。