Home / Docs / Operations / Repository protections

Rendered from docs/ops/branch-protection.md, which is the source of truth and the markdown twin of this page. Rendered at site v0.1.2.

Repository protections

secrets.sgit.ai · operations · written at v0.1.0 (2026-10-05) · section 9.5 of the brief · CC BY 4.0

Whoever controls this repository controls the code every user's browser runs, and the code is the boundary of the whole design (section 3.4 of the brief). These settings are the guard on that boundary. They are set by an organisation owner, listed here so they can be checked, and repeated on /security/ once that page exists. None of them is in place yet unless docs/ops/needs.md says so.

Branches dev and main

Settings, Branches (or Rules, Rulesets), one rule for each of dev and main:

SettingValueWhy
Require a pull request before mergingon, 1 approving reviewno direct pushes; work lands from claude/* or feature branches
Dismiss stale approvals on new commitsonan approval covers the diff it saw
Require status checks to passon, required check: validatethe gate decides, not a person
Require branches to be up to date before mergingonthe gate ran against what will be merged
Require linear historyonone release, one commit shape; no merge-of-merge
Block force pushesontags and history are the release record
Restrict deletionson
Do not allow bypassing the above settingson, including administratorsthe protection is for the admins too

The first release, v0.1.0, was pushed directly to dev before any rule existed, because the gate that the rules require did not exist until that commit. From the next release on, every change to dev arrives by pull request.

Organisation

Actions and environments

What a compromise of this repository would still get

Everything, for the users who load the malicious page while it is served. The protections above lower the odds and raise the number of people who must collude; they do not change the model. The site says so in plain words.