Skip to content
This repository was archived by the owner on Aug 26, 2026. It is now read-only.

[Phase1] Supabase init + ローカル起動手順をREADMEに追加 - #29

Merged
reitojike merged 4 commits into
mainfrom
23-phase1-supabase-init
Aug 6, 2026
Merged

reitojike merged 4 commits into
mainfrom
23-phase1-supabase-init

Conversation

@reitojike

Copy link
Copy Markdown
Owner

概要

Issue #23 の対応。supabase init を実行し supabase/config.toml を生成。以降のPhase1作業(マイグレーション・RLS・型生成・db test)の前提を整える。

変更内容

  • supabase/config.toml / supabase/.gitignore を追加(supabase/.gitkeep は不要になったため削除)
  • README.mdのセットアップ手順に、Supabase CLIバージョンをCI(.github/workflows/supabase.ymlSUPABASE_CLI_VERSION=2.111.0)と揃える旨を追記

注意

この作業環境にはDockerが無く、supabase start はローカルで検証できない。supabase init(Docker不要)のみこの環境で実施し、実際の起動確認は本PRのCI(db-test / types-check ジョブがスキップ経路ではなく実行経路に切り替わるか)で行う。

確認したこと

  • yarn lint / yarn typecheck / yarn test が通ることを確認
  • このPRのCIで .github/workflows/supabase.ymldb-test / types-checksupabase/config.toml を検出し、実行経路(supabase start 等)に切り替わることを確認する

Test plan

  • db-test / types-check が実行経路(スキップでなくsupabase startを伴う)で成功する

supabase init でsupabase/config.tomlを生成。CIのSupabase CLIバージョン
(2.111.0)とローカルを揃える方針をREADMEに明記。この環境にはDockerが無く
supabase startはローカル検証できないため、CI(.github/workflows/supabase.yml)
のdb-test/types-checkが実行経路に切り替わることで動作確認する。

Closes #23
Copilot AI lite review requested due to automatic review settings August 6, 2026 00:15
Comment thread README.md Outdated
yarn install
cp .env.example .env.local # Supabaseの接続情報を設定
supabase start # ローカルDB
npx supabase@2.111.0 start # ローカルDB(Dockerが必要)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: バージョン 2.111.0.github/workflows/supabase.ymlSUPABASE_CLI_VERSION とここの2箇所に手書きで重複しています。両者を揃える運用はコメント(L39)で明記されていますが、ずれても機械的に検出する手段が今は無く「気づかず放置」されうる状態です(CLAUDE.mdの「これは機械が止められるか」の観点)。将来的にはREADMEからワークフローの値を参照する形にするか、CIでバージョン文字列の一致をチェックするステップを足すと安全かもしれません。今回のPRをブロックするものではありません。

@claude

claude Bot commented Aug 6, 2026

Copy link
Copy Markdown

レビュー総評

このPRは docs/roadmap.md フェーズ1の最初のチェック項目(supabase init、ローカル起動手順をREADMEに)に沿ったスコープで、supabase/config.toml / supabase/.gitignore の追加とREADME更新のみです。app/ common/ mcp/ 配下のコードは変更されておらず、CLAUDE.mdが特に警戒している以下の観点はいずれも該当なしでした。

  • as キャスト / any / eslint-disable / @ts-ignore: 該当ファイルなし(TSファイルの変更なし)
  • common/ に置くべき判断ロジックの app//mcp/ への複製: 該当なし(ロジック変更なし)
  • 権限判定・削除分岐・公開設定デフォルトへの影響: なし(スキーマ・RLS・アプリコードは未着手、PR本文にも明記の通りフェーズ1の後続作業)
  • 型の手書き: なし(supabase/types.ts はまだ生成されておらず、このPRの範囲外)

.github/workflows/supabase.ymlSUPABASE_CLI_VERSION: "2.111.0" とREADME・PR本文に書かれたバージョンも一致しており、supabase/.gitignore の内容も標準的な supabase init 出力どおりです。supabase/.gitkeep の削除も、config.toml が追加されたことで不要になったという理由が明確で妥当です。

インラインで1点、nitpickをコメントしました(README内のCLIバージョンがワークフローと2箇所で手書き重複しており、将来ずれても機械的に検出できない点)。ブロッカーではありません。

Dockerがこの作業環境に無く supabase start のローカル検証ができない旨がPR本文に明記されており、実際の起動確認をCI(db-test/types-check が実行経路に切り替わるか)に委ねる方針は、このリポジトリの「壊れたらCIが赤くなることで品質を担保する」という運用方針と整合しています。CIの実行結果(実行経路への切り替わりが成功しているか)は別途確認をお願いします。

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Issue #23 の対応として、Supabase のローカル開発/CI 実行の前提となる supabase init 相当の初期ファイルを追加し、README にローカル起動手順と Supabase CLI バージョン固定の注意を追記するPRです。以降の Phase1(マイグレーション/RLS/型生成/db test)に入るための土台を整える変更になっています。

Changes:

  • supabase/config.toml を追加して Supabase ローカル設定を導入
  • supabase/.gitignore を追加して Supabase 作業ディレクトリ等を除外
  • README のセットアップ手順に Supabase CLI バージョン固定と supabase start の実行例を追記

Reviewed changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.

File Description
supabase/config.toml Supabase ローカル開発用の設定ファイルを追加
supabase/.gitignore Supabase の作業ディレクトリ/ローカルdotenv系を ignore 対象に追加
supabase/.gitkeep Supabase ディレクトリのプレースホルダを削除
README.md ローカル起動手順に Supabase CLI バージョン固定と起動コマンド例を追記

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread supabase/config.toml Outdated
Comment on lines +67 to +71
# If enabled, seeds the database after migrations during a db reset.
enabled = true
# Specifies an ordered list of seed files to load during db reset.
# Supports glob patterns relative to supabase directory: "./seeds/*.sql"
sql_paths = ["./seed.sql"]
この環境にはDockerが無くyarn gen:types --localをローカル実行できないため、
CIでの生成結果を取得してコミットできるようにする。
Copilot AI review requested due to automatic review settings August 6, 2026 00:18
この環境にはDockerが無くyarn gen:types --localをローカル実行できないため、
CI(types-checkジョブ)のartifactからyarn gen:types相当の出力をそのまま
配置した。マイグレーション追加時(#24)に再生成が必要になる。

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.

Suppressed comments (3)

supabase/config.toml:71

  • [db.seed]sql_paths = ["./seed.sql"] を参照していますが、リポジトリ内に supabase/seed.sql が存在しません(現状 supabase/ には config.toml と .gitignore のみ)。supabase db reset や CLI の挙動によっては起動/リセットが失敗する可能性があるため、seed ファイルを追加するまで seeding を無効化するか、sql_paths を空にしてください。
enabled = true
# Specifies an ordered list of seed files to load during db reset.
# Supports glob patterns relative to supabase directory: "./seeds/*.sql"
sql_paths = ["./seed.sql"]

README.md:46

  • README で「Supabase CLIは .github/workflows/supabase.ymlSUPABASE_CLI_VERSION と同じ」と明記している一方、コマンド側で 2.111.0 を直書きしているため、Workflow 側のバージョン更新時にREADMEだけ古くなりやすいです。README上は値を固定せず、SUPABASE_CLI_VERSION を参照して合わせる前提の書き方に寄せるのが安全です。
npx supabase@2.111.0 start   # ローカルDB(Dockerが必要)

supabase/config.toml:163

  • auth.site_urlhttp://127.0.0.1:3000 なのに対して、additional_redirect_urlshttps://127.0.0.1:3000 のみになっています。ローカル開発(READMEの yarn dev 想定)では http で動くため、OAuth/redirect の許可リストが一致せず認証フローが失敗しやすいです。少なくとも http を含め、必要なら https も併記する形にしてください。
site_url = "http://127.0.0.1:3000"
# The public URL that Auth serves on. Defaults to the API external URL with `/auth/v1` appended.
# external_url = ""
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
additional_redirect_urls = ["https://127.0.0.1:3000"]

Comment on lines +92 to +96
- uses: actions/upload-artifact@v4
if: steps.check.outputs.initialized == 'true'
with:
name: supabase-types
path: supabase/types.ts
Copilot AI review requested due to automatic review settings August 6, 2026 00:22

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 6 changed files in this pull request and generated no new comments.

Suppressed comments (4)

supabase/config.toml:71

  • [db.seed]enabled = true かつ sql_paths = ["./seed.sql"] になっていますが、リポジトリ内に supabase/seed.sql が存在しないため、supabase db reset 等で seed 読み込みが走った場合に失敗する可能性があります。seed を用意するまで一旦無効化するか、seed ファイルを追加してください。
# If enabled, seeds the database after migrations during a db reset.
enabled = true
# Specifies an ordered list of seed files to load during db reset.
# Supports glob patterns relative to supabase directory: "./seeds/*.sql"
sql_paths = ["./seed.sql"]

README.md:46

  • README のコマンド例で Supabase CLI バージョンを 2.111.0 にハードコードすると、workflow 側の SUPABASE_CLI_VERSION 更新時にドキュメントだけが古くなるリスクがあります。バージョン値はプレースホルダにして、上の説明どおり workflow の値に合わせて置き換える形にするとズレを防げます。
npx supabase@2.111.0 start   # ローカルDB(Dockerが必要)

.github/workflows/supabase.yml:91

  • このコメント内の yarn gen:types --local は、package.json のスクリプト名と一致していません(実際は yarn gen:types--local を内包しています)。手順名を正しいものに揃えてください。
      # ローカル開発機にDockerが無く `yarn gen:types --local` を手元で実行できない
      # 場合でも、生成結果をここから取得してコミットできるようにする。

supabase/types.ts:3

  • PR説明の「変更内容」には supabase/types.ts の追加と workflow の artifact upload 追加が含まれていません。差分自体は妥当ですが、レビュー/運用上の前提が変わるので PR説明側も更新して変更点を列挙してください。
export type Json =
  | string
  | number

Comment thread supabase/config.toml Outdated
enabled = true
# Specifies an ordered list of seed files to load during db reset.
# Supports glob patterns relative to supabase directory: "./seeds/*.sql"
sql_paths = ["./seed.sql"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[db.seed] enabled = truesql_paths = ["./seed.sql"] を参照していますが、supabase/seed.sql はこのPRに含まれておらず、リポジトリ上に存在しません。

これはグロブパターンではなく固定パスなので、ファイルが無いと supabase start / db reset 実行時に読み込みエラーになる可能性があります。今回まさにこのPRで db-test / types-check の実行経路(supabase start を伴う)への切り替えを検証しようとしているので、ここで失敗すると「マイグレーション忘れ」でも「CLI差」でもない、seedファイル欠如というノイズでCIが赤くなり、CIの信頼性を損ないます。

空の supabase/seed.sql を追加するか、シードデータが用意できるフェーズまで sql_paths = [](または enabled = false)にしておくのが安全だと思います。CIの db-test/types-check が実際に緑になっているか確認をお願いします。

Comment thread README.md Outdated
yarn install
cp .env.example .env.local # Supabaseの接続情報を設定
supabase start # ローカルDB
npx supabase@2.111.0 start # ローカルDB(Dockerが必要)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: 直前の行で「.github/workflows/supabase.ymlSUPABASE_CLI_VERSION と同じバージョンを使うこと」と明記している一方、ここでは 2.111.0 を直書きしています。ワークフロー側のバージョンが将来上がったとき、README側は文章だけ読むと「揃える方針」に見えて実際には自動で追従せず、無言でズレます(このリポジトリの「人間がdiffを読まない」前提だと特に気づきにくい)。

ブロッカーではありませんが、SUPABASE_CLI_VERSION を更新する際はREADMEのこの行も一緒に直す、という運用ルールをどこかに書いておくか、バージョン番号をコメントで「(supabase.ymlのSUPABASE_CLI_VERSIONと同じ値にすること)」と注記しておくと、ズレたときに気づきやすくなります。

Comment thread supabase/config.toml
# The public URL that Auth serves on. Defaults to the API external URL with `/auth/v1` appended.
# external_url = ""
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
additional_redirect_urls = ["https://127.0.0.1:3000"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick(低優先度): site_url = "http://127.0.0.1:3000" に対して additional_redirect_urlshttps://127.0.0.1:3000 のみで、httpのURLが許可リストに入っていません。これは supabase init のデフォルトテンプレートそのままなので今回の変更で持ち込まれた問題ではありませんが、docs/roadmap.md フェーズ1に「Google SSO (Supabase Auth) の設定」があるため、そのタイミングでローカルの yarn dev(http)からのOAuthリダイレクトが弾かれる可能性があります。今すぐの修正は不要ですが、SSO実装時に踏む地雷として頭に入れておくとよさそうです。

@claude

claude Bot commented Aug 6, 2026

Copy link
Copy Markdown

レビュー総評

このPRは docs/roadmap.md フェーズ1の最初のチェック項目(supabase init、ローカル起動手順の整備)の範囲に収まっており、app/ common/ mcp/ のコードは変更されていません。CLAUDE.mdが重点的に警戒している以下の観点は、このPRの範囲では該当なしでした。

  • as キャスト / any / eslint-disable / @ts-ignore によるエラーの黙殺: なし。supabase/types.ts は生成型で、含まれる as const はSupabase CLIの標準出力そのもの(手書きの型逃げ道ではない)
  • common/ に置くべき判断ロジックの app//mcp/ への複製: なし(ロジック変更なし)
  • 権限判定・削除分岐・公開設定デフォルトなど静かに失敗する変更とそのテスト: 該当なし(スキーマ・RLS・アプリコードは未着手で、PR本文の通りフェーズ1の後続作業)
  • 型の手書き: なし。supabase/types.ts はCIの types-check ジョブの成果物(artifact)をそのまま配置したものとコミットメッセージに明記されており、docs/lint-policy.md の「生成型はコミットするが手で編集しない」という運用と矛盾しません。ただし、これは"最終的にCIの差分チェック(git diff --cached --exit-code)が緑になって初めて担保される"性質のものなので、db-test/types-check が実際に成功しているかの確認は別途必要です

その上で、config.tomlの中身に実行時のリスクを1点見つけました。

  • supabase/config.toml[db.seed](sql_paths = ["./seed.sql"], enabled = true)が参照する supabase/seed.sql がリポジトリに存在しません。固定パス指定なのでファイル欠如時に supabase start が失敗する可能性があり、今回まさに検証したい「db-test/types-check が実行経路に切り替わって成功するか」を、無関係な理由(seedファイル欠如)でブロックしうる箇所です。インラインで指摘しました。CIが実際に緑になっているか確認をお願いします

軽微な指摘として、READMEでのSupabase CLIバージョンの直書き重複(ワークフロー側と2箇所で手で揃える形になっている)と、auth.site_url/additional_redirect_urls のスキーム不一致(supabase init のデフォルトのまま、フェーズ1後半のGoogle SSO設定時に踏みうる)をインラインでコメントしています。いずれもブロッカーではありません。

supabase/.gitignore の内容は標準的な supabase init 出力どおりで、.gitkeep の削除も config.toml 追加により不要になったという理由が明確で妥当です。Dockerが無い作業環境で supabase start をローカル検証できない旨がPR本文に明記され、検証をCIに委ねる方針も「壊れたらCIが赤くなることで品質を担保する」という運用と整合しています。

存在しないsupabase/seed.sqlを固定パス参照したままだとsupabase start/db reset
実行時に失敗しうるため、シードデータが無い間はdb.seedを無効化する。
READMEのCLIバージョンにも「ワークフローと同じ値にすること」を注記し、
機械的に検出できないズレに気づきやすくする。
Copilot AI review requested due to automatic review settings August 6, 2026 00:28
@reitojike

Copy link
Copy Markdown
Owner Author

レビュー指摘の分類

  • supabase/seed.sqlが存在しないのに固定パス参照している(Claude・Copilot両方)対応済み(5bf16e6)。今回のCIでは偶然通ったが、将来のCLIバージョンで挙動が変わるリスクがあるためdb.seed.enabled = false / sql_paths = []に変更。シードデータが必要になった段階で有効化する
  • READMEのCLIバージョン直書き重複(nitpick)対応済み(5bf16e6)。「.github/workflows/supabase.ymlのSUPABASE_CLI_VERSIONと同じ値にすること」を注記に追加し、ズレに気づきやすくした
  • types-checkの差分チェックが必ず失敗する(Copilot) → 誤検知。レビュー実行時点がsupabase/types.tsをコミットする前のコミット(0b1714b)に対するもので、その後のコミット(35c1454)で解決済み。実際にCIはtypes-check含めて全ジョブpassしている
  • site_url/additional_redirect_urlsのscheme不一致(nitpick、低優先度) → 見送り。supabase initのデフォルト値のままで今回のPRが持ち込んだ問題ではない。Issue [Phase1] Google SSO (Supabase Auth) 設定 #28(Google SSO設定)着手時に検討する

@claude

claude Bot commented Aug 6, 2026

Copy link
Copy Markdown

総評

Phase1の土台づくりとして妥当なスコープ。common/app/mcp/ には触れておらず、判断ロジックの複製やas/any/eslint-disableによる黙殺も見当たらない。supabase/types.ts はテーブル0件のCLI生成そのままで、手書き型の混入もなし。CIのdb-test/types-checkがこのPRで初めてスキップ経路から実行経路に切り替わる変更なので、CIが実際に緑になることを確認してからマージするのが安全(PR本文のTest planが未チェックの通り)。

良い点

  • db.seed.enabled = false + コメントで、seed.sql不在によるCI失敗リスクを先回りして潰している。原因と対処が明記されており、あとから見て意図が分かる。
  • types-checkジョブへのupload-artifact追加は、Docker無し環境でも生成結果を取得してコミットできるようにする実務的な工夫で、コメントも「何のためか」が書かれている。
  • README追記もdocs/roadmap.mdのフェーズ1注意点(CLIバージョンのズレで結果を誰も信じなくなる)に沿った理由づけ。

気になった点(ブロッカーではない)

  • README: npx supabase@2.111.0 start とバージョンを直書きしている一方、直前の説明文は「SUPABASE_CLI_VERSIONと同じバージョンを使うこと」という一般論に留めている。ワークフロー側のSUPABASE_CLI_VERSIONが将来更新されても、この直書きを検知・追従する仕組みがない(CIがREADMEの文字列までは見ない)。バージョンがズレても機械が止められない箇所なので、更新時に見落とされやすい。
  • supabase/.gitignore(新規)とリポジトリルートの.gitignoresupabase/.branchessupabase/.tempをそれぞれ別の書式で二重に無視している。実害はないが、どちらか一方に寄せた方が「どこを見れば無視ルールが分かるか」が明確になる。

確認したこと

  • asキャスト・any@ts-ignoreeslint-disable: 該当箇所なし
  • common/に置くべきロジックの複製: 該当なし(このPRはロジック変更を含まない)
  • supabase/types.ts: 手書きではなくCLI生成のまま(0テーブル、現状のマイグレーション状況と整合)
  • 権限・削除・公開設定のデフォルト値変更: なし(テスト要否の対象外)

インライン指摘は別途投稿する。

Comment thread README.md
yarn install
cp .env.example .env.local # Supabaseの接続情報を設定
supabase start # ローカルDB
npx supabase@2.111.0 start # ローカルDB(Dockerが必要。バージョンは.github/workflows/supabase.ymlのSUPABASE_CLI_VERSIONと同じ値にすること)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

バージョン 2.111.0 を直書きしているため、.github/workflows/supabase.ymlSUPABASE_CLI_VERSION が将来更新された際にここが追従する保証がない(CIはREADMEの文字列までは検証しない)。このリポジトリの方針(CLAUDE.md「壊れたらCIが赤くなることで品質を担保する」)からすると、静かにズレうる箇所。実害は小さいが、コメントで「更新時はここも合わせる」旨を明記しておくと事故を防げる。

Comment thread supabase/.gitignore
@@ -0,0 +1,8 @@
# Supabase

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: ルートの .gitignore に既に supabase/.branches / supabase/.temp の無視ルールがあり、ここと二重管理になっている(書式は異なる: ルート側は supabase/.env 単体を無視、こちらは .env.keys / .env.local / .env.*.local のパターン)。実害はないが、無視ルールの置き場所がルートとサブディレクトリに分散すると、どちらが正か把握しづらくなる。supabase init の既定生成物なのでこのままでも良いが、気になるなら重複分はルート側から削ってこちらに一本化してもよさそう。

@reitojike
reitojike merged commit f2ecb04 into main Aug 6, 2026
8 checks passed
@reitojike
reitojike deleted the 23-phase1-supabase-init branch August 6, 2026 00:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 6 changed files in this pull request and generated no new comments.

Suppressed comments (3)

.github/workflows/supabase.yml:91

  • ワークフローのコメントが実際のスクリプトと一致していません。yarn gen:types は package.json で既に --local を含むため、ここで yarn gen:types --local と書くと誤解を招きます。
      # ローカル開発機にDockerが無く `yarn gen:types --local` を手元で実行できない
      # 場合でも、生成結果をここから取得してコミットできるようにする。

supabase/types.ts:178

  • supabase/types.tsas const が含まれており、CLAUDE.md の「as によるキャストを使わない」というルールと衝突します。生成ファイルとして例外扱いするのか、生成方法/チェック方法を調整するのかを明確にした方がよいです。
} as const

.github/workflows/supabase.yml:96

  • PR説明の「変更内容」に、このワークフロー変更(生成型をartifactとしてアップロードする)と supabase/types.ts の追加が含まれていません。CI挙動や成果物の扱いが変わるので、変更点として明示した方がレビュワー/後追いが迷いません。
      - uses: actions/upload-artifact@v4
        if: steps.check.outputs.initialized == 'true'
        with:
          name: supabase-types
          path: supabase/types.ts

reitojike added a commit that referenced this pull request Aug 8, 2026
PR #68 のClaude Reviewの指摘に対応。指摘は正しかった。

誤り: 「300行を超えた5本」は事実と異なり、素の差分では9本だった
(#31 307 / #59 365 / #60 380 / #30 441 / #29 617 / #18 679 / #41 698 /
#32 1063 / #16 3528)。同じ本文が書いていた「300行以下が65%(17/26)」は
超過9本を含意しており、記述が自己矛盾していた。

原因: 母集団の統計(中央値・65%)は素の差分で数え、外れ値の説明だけに
除外規則を適用していた。数え方を混在させたうえ、超過リストを上位5本で
打ち切って全件確認しなかった。

訂正: 26本すべてを git show --numstat で数え直し、除外の段階ごとに
表で示す。素の差分(中央値135行 / 65% / 超過9本)、パス名で機械的に
判定できる除外まで(中央値128行 / 85% / 超過4本)、除外規則を最後まで
適用(超過2本 = #59#60)。落ちる7本の内訳も明記した。

あわせて、3段階目の中央値を出さない理由を書いた。supabase/config.toml は
#29 では supabase init の出力(416行)、#56 では根拠コメント付きで手で
直した6行で、同じパスでも扱いが逆になる。パス名では決まらないことが、
この節が機械的ゲートになり得ない理由そのものなので、「lintではない」の
段落の根拠もこの実測に差し替えた。

Refs #44
reitojike added a commit that referenced this pull request Aug 8, 2026
Claude Reviewの指摘どおり、#29(617→22)はsupabase/config.toml(416行)
だけでなくsupabase/types.ts(179行)も、#32(1063→79)はテスト表(924行)
だけでなくyarn.lock(60行)も除外して初めて数字が再現できる。
片方しか書いていなかったため、追試すると数値が合わなかった。

Refs #44
reitojike added a commit that referenced this pull request Aug 8, 2026
* docs: Issueの粒度とPR差分サイズの目安をCLAUDE.mdに明文化

判断ポイントは1 Issueに3個まで(5個超で分割)、PR差分は300行を目安とする。
記事の実測値をそのまま採らず、main にマージ済みのPR 26本(中央値135行、
300行以下65%)で裏を取ってから採用した。行数の数え方から生成物・ロック
ファイル・権限マトリクスを写したテスト表を除外する根拠も、超過した
PR #16 / #32 の実態から示した。

機械的ゲートにしない旨と、3回ルール(モデルを上げる) / PO確認(判断を
下せる層に上げる) / 粒度超過(Issueを分ける)の対処の違いを表で整理。
docs/roadmap.md はポインタ1行に留め、根拠は1箇所にだけ置く。

Refs #44

* docs: 判断ポイント数の境界を一本化し、裏取り済みの数値と外部実測を書き分ける

PR #68 のClaude Reviewの指摘2件に対応。

指摘1: 「3個まで、5個を超えるなら分割」で4個の扱いが未定義だった。
閾値を「3個まで。4個目が出てきたら分ける」に一本化する。機械的ゲートに
しない方針である以上、「検討」と「必ず」の二段構えは実効性のない
false precisionになるため、緩衝域を作らず単一の線にした。

指摘2: 裏取り済みの300行と、外部実測のままの3個が同じ文脈に並んでいた。
「2つの数字は裏付けの強さが違う」として段落を分け、300行はこのリポジトリの
実測(PR 26本、中央値135行/300行以下65%)で検証済み、3個は外部実測のみを
根拠とする未検証のヒューリスティックであると明示した。過去Issueの判断数は
記録がなく後から数え直せないため、このリポジトリでの裏取りが今はできない
理由も併記。採用の根拠はコストの非対称性に置いた。

あわせて、外部実測に対応値のない4個/5個を推定して線を引いていないことと、
実績が溜まったら見直す旨を記載した。

Refs #44

* docs: PR実測の集計を数え直し、超過本数の誤りを訂正する

PR #68 のClaude Reviewの指摘に対応。指摘は正しかった。

誤り: 「300行を超えた5本」は事実と異なり、素の差分では9本だった
(#31 307 / #59 365 / #60 380 / #30 441 / #29 617 / #18 679 / #41 698 /
#32 1063 / #16 3528)。同じ本文が書いていた「300行以下が65%(17/26)」は
超過9本を含意しており、記述が自己矛盾していた。

原因: 母集団の統計(中央値・65%)は素の差分で数え、外れ値の説明だけに
除外規則を適用していた。数え方を混在させたうえ、超過リストを上位5本で
打ち切って全件確認しなかった。

訂正: 26本すべてを git show --numstat で数え直し、除外の段階ごとに
表で示す。素の差分(中央値135行 / 65% / 超過9本)、パス名で機械的に
判定できる除外まで(中央値128行 / 85% / 超過4本)、除外規則を最後まで
適用(超過2本 = #59#60)。落ちる7本の内訳も明記した。

あわせて、3段階目の中央値を出さない理由を書いた。supabase/config.toml は
#29 では supabase init の出力(416行)、#56 では根拠コメント付きで手で
直した6行で、同じパスでも扱いが逆になる。パス名では決まらないことが、
この節が機械的ゲートになり得ない理由そのものなので、「lintではない」の
段落の根拠もこの実測に差し替えた。

Refs #44

* docs: PR #29/#32の除外理由が2段階なのに1段階しか書いていなかった記述漏れを修正

Claude Reviewの指摘どおり、#29(617→22)はsupabase/config.toml(416行)
だけでなくsupabase/types.ts(179行)も、#32(1063→79)はテスト表(924行)
だけでなくyarn.lock(60行)も除外して初めて数字が再現できる。
片方しか書いていなかったため、追試すると数値が合わなかった。

Refs #44
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants