Skip to content
Apothem
セキュリティ

ブランチ保護

main に対する Apothem のブランチ保護 — 現行の保護ルール、その必須ステータスチェック、追加予定のチェック。

Apothem の main ブランチは、GitHub のクラシックなブランチ保護ルールによって保護されています。リポジトリにルールセットはありません。この保護は rules/production-ready-prs.md で宣言された変更セットの規律を強制し、OpenSSF Scorecard の Branch-Protection チェックと Code-Review チェックに情報を提供します。

このページは、2026-10-07 に GitHub API から最後に読み取ったとおりの現行設定を正確に記録します。メンテナーが意図しているがまだ適用していない設定は、メンテナーによる保留中の変更の下にのみ記載されます。

保護設定

設定API フィールド現行の値効果
マージ前にプルリクエストを必須にするrequired_pull_request_reviews(存在する)✅変更はプルリクエストを通じて main に到達します。
必須の承認レビュー数required_approving_review_count0プルリクエストは承認レビューなしでマージされます。単独メンテナーモデルを参照してください。
新しいコミットで古い承認を破棄するdismiss_stale_reviews✅新しいプッシュの前に与えられた承認は、もはやカウントされません。
Code Owners からのレビューを必須にするrequire_code_owner_reviews❌2 人目のメンテナーが加わる前にこれを有効にすると、単独メンテナーのプルリクエストがデッドロックします。
最新のレビュー可能なプッシュの承認を必須にするrequire_last_push_approval❌GitHub はその承認がプッシュした人以外から行われることを要求しますが、単独メンテナーはそれを用意できません。
ステータスチェックの合格を必須にするrequired_status_checks✅必須ステータスチェックに記載されている 12 のコンテキストが合格しなければなりません。
マージ前にブランチを最新の状態にすることを必須にするrequired_status_checks.strict❌必須チェックが古い main に対して合格していれば、プルリクエストはマージできます。その後、main へのプッシュで実行されるワークフローが、マージされた結果をテストします。
マージ前に会話の解決を必須にするrequired_conversation_resolution✅未解決のレビュースレッドがマージをブロックします。
署名付きコミットを必須にするrequired_signatures❌リリースコミットはローカルで署名されています。強制は、コントリビューターのオンボーディング文書が SSH または GPG の署名セットアップを記述するまで待ちます。
線形履歴を必須にするrequired_linear_history✅main の公開履歴を一本の線に保ちます。
ブランチをロックするlock_branch❌main はマージを受け付けます。
上記の設定のバイパスを許可しないenforce_admins❌上記の設定はリポジトリ管理者を拘束しません。管理者は、必須チェックなしでマージすることも、main に直接プッシュすることもできます。
強制プッシュを許可するallow_force_pushes❌main への強制プッシュは、管理者を含むすべての人に対してブロックされます。
削除を許可するallow_deletions❌管理者を含め、誰も main を削除できません。

単独メンテナーモデル

リポジトリのメンテナーは 1 人です。GitHub は「プルリクエストの作成者は、自分のプルリクエストを承認できません」と述べています。したがって、必須の承認数が 0 を超えると、メンテナーのすべてのプルリクエストがブロックされます。現行のルールは、承認 0 件でのプルリクエストを要求し、enforce_admins をオフのままにしています。

管理者権限を持たない人がマージするには、引き続き、必須ステータスチェックがグリーンであること、レビューの会話が解決されていること、線形履歴であることが必要です。main への強制プッシュとその削除は、すべてのアカウントに対してブロックされたままです。

2 人目のメンテナーが加わったときのより強力な設定は、少なくとも 1 件の必須承認、最新プッシュの承認、CODEOWNERS レビュー、そして enforce_admins のオンです。単独メンテナーのマージ儀式は、承認を要求し、かつそれを管理者にも強制する保護にのみ適用されます。

必須ステータスチェック

次の 12 のコンテキストはそれぞれ必須であり、そのソースは GitHub Actions(アプリ ID 15368)です。

quality / ubuntu-latest / py3.10
quality / ubuntu-latest / py3.11
quality / ubuntu-latest / py3.12
quality / ubuntu-latest / py3.13
quality / ubuntu-latest / py3.14
quality / windows-latest / py3.10
quality / windows-latest / py3.11
quality / windows-latest / py3.12
quality / windows-latest / py3.13
quality / windows-latest / py3.14
coverage
Require Signed-off-by
コンテキストワークフローとジョブすべてのプルリクエストで報告される仕組み
quality / <os> / py<ver>(10)ci.yml、ジョブ qualityプルリクエストがコードまたは設定のパスに触れると、ci.yml が実行されます。ドキュメントのみのプルリクエストでは、ci-docs-stub.yml が同じコンテキストを報告します。
coverageci.yml、ジョブ coveragequality と同じです。
Require Signed-off-bydco.yml、ジョブ dcoそのプルリクエストトリガーには paths フィルターがないため、main へのすべてのプルリクエストで実行されます。

プレリリースのセル quality / ubuntu-latest / py3.15 は、continue-on-error 付きで ci.yml 内で実行され、必須ではありません。CodeQL、Scorecard、pip-audit を含むその他のワークフローはステータスを報告することがありますが、そのコンテキストがこのリストに追加されない限り、その結果がマージをゲートすることはありません。

メンテナーによる保留中の変更

メンテナーは、次の 25 のコンテキストを必須リストに追加する予定です。各ワークフローのヘッダーはそのジョブを必須チェックとして宣言しており、そのプルリクエストトリガーには paths フィルターがないため、main へのすべてのプルリクエストで実行されます。コンテキストが追加されるまでは、そのコンテキストでの失敗はマージをブロックしません。

clean-install-gate.yml、7 つのコンテキスト:

installer-shell-compat / ubuntu-latest
installer-shell-compat / macos-latest
installer-shell-compat / windows-latest
clean-install-gate / ubuntu-latest
clean-install-gate / windows-latest
wheel-smoke / ubuntu-latest
wheel-smoke / windows-latest

harness-matrix.yml、17 のコンテキスト。ジョブのマトリクス内のアダプターごとに 1 つの matrix (<adapter>) です:

matrix (antigravity)
matrix (claude-code)
matrix (codebuddy)
matrix (codex)
matrix (cursor)
matrix (gemini-cli)
matrix (github-copilot)
matrix (glm)
matrix (hermes)
matrix (kimi-code)
matrix (kiro)
matrix (open-claw)
matrix (opencode)
matrix (qwen-code)
matrix (trae)
matrix (windsurf)
matrix (zed)

installer-lint.yml、1 つのコンテキスト:

installer-lint

harness-matrix.yml のコンテキストが必須になった後は、新しいアダプターを登録すると matrix (<adapter>) コンテキストが追加され、同じ変更で必須リストにもそれが加わります。「マージ前にブランチを最新の状態にすることを必須にする」はオフのままです。保留中の変更を適用したときは、同じ変更でそれを上記の現行設定のセクションへ移してください。

監査の周期

このファイルは、すべてのセキュリティ監査時と、すべてのリリースエンジニアリングのチェックポイントで見直されます。このファイルと実際のブランチ保護設定との間のドリフトは、高重大度の発見事項です。現行の設定は、次のコマンドで読み取ります。

gh api repos/ahmed-g-gad/apothem/branches/main/protection
gh api repos/ahmed-g-gad/apothem/rulesets

参考資料

On this page