Skip to content

Chore/lint env keys#427

Merged
yusuke0610 merged 4 commits into
mainfrom
chore/lint-env-keys
Jun 28, 2026
Merged

Chore/lint env keys#427
yusuke0610 merged 4 commits into
mainfrom
chore/lint-env-keys

Conversation

@yusuke0610

@yusuke0610 yusuke0610 commented Jun 28, 2026

Copy link
Copy Markdown
Owner

変更概要

セルフレビューチェックリスト

必須確認

  • make ci が pass している(lint + test + build-web)
  • コメント・ドキュメント・エラーメッセージは日本語で記述した

条件付き確認(該当する場合のみ N/A と記入)

  • app/schemas/ または app/routers/ を変更した場合: make codegen-types を実行し web/src/api/generated.ts の差分をコミットした
  • 新しいページ・認証・ナビゲーション・レイアウトを変更した場合: E2E を実行した(nix develop --command bash -c "cd web && npm run test:e2e"
  • 新規環境変数を追加した場合: env_keys.py / docs/api.md / infra/modules/cloud_run/main.tf / docker-compose.yml の 4 箇所を同期した
  • web/src/ で日本語メッセージを web/src/constants/messages.ts の定数経由で参照した(リテラル直書きなし)

破壊的変更

  • 破壊的変更なし(API 契約・DB スキーマ・既存の公開インターフェースに変更なし)
  • 破壊的変更あり → 概要:

ADR(設計判断を伴う変更の場合のみ)

  • 新しいライブラリ採用・アーキテクチャ変更を伴う場合、ADR を作成した(または既存 ADR が対応している)

PR タイトル形式: <type>: <内容>(日本語)
type: feat / fix / docs / refactor / test / chore / infra

yusuke0610 and others added 4 commits June 28, 2026 22:23
env_keys.py(正本)の定数が docker-compose.yml に全注入されているか、
errors.py の ErrorCode と errorCodes.ts の ERROR_CODES が一致するかを
scripts/lint-env-keys.sh で機械検証する。言語境界上リテラル複製は消せ
ないため「複製が正本と一致するか」を検証する方針。

- scripts/lint-env-keys.sh 新設(rg/comm のみ依存)
- make lint-env-keys ターゲット + lint 集約に追加
- CI(test.yml の test-backend ジョブ)に fail-fast ステップ配線
- env_keys.py / errors.py の docstring に自動 drift 検知への参照を追記

起動時内部フラグ APP_BOOTSTRAPPED は COMPOSE_ALLOWLIST で除外。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
GitHub ランナー(ubuntu-latest)と flake.nix の devshell に ripgrep が
入っておらず、test-backend の Lint SSoT ステップが rg コマンド不在で
落ちていた。抽出を grep -E + sed -E に置き換え PCRE / rg 依存を除去。
ローカル(macOS)・CI(GNU)の両方で動く。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PR #424 のレビュー指摘 2 件を反映:
- env_keys.py は symbol 名ではなく文字列値(NAME = "VALUE" の VALUE)を
  比較対象にする。symbol だけ rename しても誤検知せず、値だけ変えた drift も
  取りこぼさない
- docker-compose.yml の env 名抽出を api サービスの environment ブロックに
  限定する。全 YAML の大文字キーを拾うと他サービス(libsql の SQLD_NODE 等)の
  名前で検知漏れが起きるため

ネガティブテスト: (a) 他サービスのみに存在する名前, (b) 値のみの drift,
いずれも exit 1 で検知することを確認。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@yusuke0610
yusuke0610 merged commit 84b04bd into main Jun 28, 2026
20 of 38 checks passed
@yusuke0610
yusuke0610 deleted the chore/lint-env-keys branch July 20, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant