Skip to content
Apothem
Безопасность

Защита веток

Защита веток Apothem на main: действующее правило защиты, его обязательные проверки статуса и проверки, ожидающие добавления.

Ветка main Apothem защищена классическим правилом защиты веток GitHub. В репозитории нет наборов правил. Защита обеспечивает соблюдение дисциплины набора изменений, объявленной в rules/production-ready-prs.md, и питает проверки Branch-Protection и Code-Review OpenSSF Scorecard.

Эта страница точно фиксирует действующие настройки в том виде, в каком они в последний раз были прочитаны из API GitHub 2026-10-07. Настройка, которую сопровождающий намерен применить, но ещё не применил, появляется только в разделе Ожидающие изменения сопровождающего.

Настройки защиты

НастройкаПоле APIДействующее значениеЭффект
Требовать pull request перед слияниемrequired_pull_request_reviews (присутствует)✅Изменения попадают в main через pull request.
Требуемые одобряющие рецензииrequired_approving_review_count0Pull request сливается без одобряющей рецензии. См. Модель единственного сопровождающего.
Отклонять устаревшие одобрения при новых коммитахdismiss_stale_reviews✅Одобрение, данное до нового push, больше не учитывается.
Требовать рецензии от Code Ownersrequire_code_owner_reviews❌Включение этой настройки до присоединения второго сопровождающего приводит к взаимоблокировке pull request единственного сопровождающего.
Требовать одобрения самого последнего push, доступного для рецензииrequire_last_push_approval❌GitHub требует, чтобы это одобрение исходило не от автора push, а единственный сопровождающий не может его обеспечить.
Требовать прохождения проверок статусаrequired_status_checks✅12 контекстов, перечисленных в разделе Обязательные проверки статуса, должны пройти.
Требовать актуальности веток перед слияниемrequired_status_checks.strict❌Pull request может быть слит, когда его обязательные проверки прошли относительно более старого main. Затем рабочие процессы, запускаемые при push в main, тестируют результат слияния.
Требовать разрешения обсуждений перед слияниемrequired_conversation_resolution✅Открытые обсуждения рецензии блокируют слияние.
Требовать подписанных коммитовrequired_signatures❌Коммиты релизов подписываются локально. Принудительное применение откладывается до тех пор, пока документация по подключению участников не опишет настройку подписи SSH или GPG.
Требовать линейной историиrequired_linear_history✅Сохраняет публичную историю main единой линией.
Заблокировать веткуlock_branch❌main принимает слияния.
Не разрешать обход вышеуказанных настроекenforce_admins❌Вышеуказанные настройки не распространяются на администратора репозитория. Администратор может сливать без обязательных проверок или отправлять push напрямую в main.
Разрешить force-pushallow_force_pushes❌Force-push в main заблокирован для всех, включая администраторов.
Разрешить удалениеallow_deletions❌Никто не может удалить main, включая администраторов.

Модель единственного сопровождающего

У репозитория один сопровождающий. GitHub указывает: «Авторы pull request не могут одобрять собственные pull request». Поэтому требуемое число одобрений больше 0 заблокировало бы каждый pull request сопровождающего. Действующее правило требует pull request с 0 одобрений и оставляет enforce_admins выключенным.

Для любого, у кого нет прав администратора, слияние по-прежнему требует зелёных обязательных проверок статуса, разрешённых обсуждений рецензии и линейной истории. Force-push и удаление main остаются заблокированными для каждой учётной записи.

Когда присоединится второй сопровождающий, более строгими настройками будут как минимум одно обязательное одобрение, одобрение последнего push, рецензия 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
КонтекстРабочий процесс и заданиеКак он сообщает статус для каждого pull request
quality / <os> / py<ver> (10)ci.yml, задание qualityci.yml запускается, когда pull request затрагивает путь кода или конфигурации. ci-docs-stub.yml сообщает те же контексты для pull request, затрагивающего только документацию.
coverageci.yml, задание coverageТак же, как quality.
Require Signed-off-bydco.yml, задание dcoЕго триггер pull request не имеет фильтра paths, поэтому он запускается на каждом pull request в main.

Ячейка предрелизной версии quality / ubuntu-latest / py3.15 выполняется в ci.yml с continue-on-error и не является обязательной. Любой другой рабочий процесс, включая CodeQL, Scorecard и pip-audit, может сообщать статус, но его результат не контролирует слияние, если его контекст не добавлен в этот список.

Ожидающие изменения сопровождающего

Сопровождающий намерен добавить эти 25 контекстов в список обязательных. Заголовок каждого рабочего процесса объявляет задание обязательной проверкой, а его триггер pull request не имеет фильтра paths, поэтому он запускается на каждом pull request в 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 контекстов, по одному 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