Skip to content

Commit a8dd48e

Browse files
authored
docs: correct branch protection status and the frontend CI steps (#24)
The repository is public and main carries an active 'protect main' ruleset, so both CLAUDE.md and README.md were describing a state that no longer exists. Both said protection could not be enforced because a private repo on the Free plan cannot have required status checks. The CI table also listed 'tsc -b --noEmit' as a distinct frontend step. No such step exists: the job runs 'pnpm --filter frontend build', which is 'tsc -b' followed by 'vite build', and no --noEmit is involved. Adds the consequence of strict_required_status_checks_policy to CLAUDE.md, since it is not obvious that requiring an up to date branch means every merge invalidates every other open PR.
1 parent ef9733e commit a8dd48e

2 files changed

Lines changed: 26 additions & 21 deletions

File tree

CLAUDE.md

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,10 @@ lowercase subject, no trailing period. Types: `feat` `fix` `refactor` `perf`
108108
`.github/workflows/ci.yml` runs on every PR into `main` and must be green to
109109
merge. Two parallel jobs:
110110

111-
| Job | Steps |
112-
| ---------- | ---------------------------------------------------------------------------------------- |
113-
| `backend` | restore → `dotnet format --verify-no-changes` → build (Release) → `dotnet test` |
114-
| `frontend` | `pnpm install --frozen-lockfile``format:check``lint``tsc -b --noEmit``build` |
111+
| Job | Steps |
112+
| ---------- | ------------------------------------------------------------------------------------------------- |
113+
| `backend` | restore → `dotnet format --verify-no-changes` → build (Release) → `dotnet test` |
114+
| `frontend` | `pnpm install --frozen-lockfile``format:check``lint``build` (`tsc -b` then `vite build`) |
115115

116116
Run the same checks locally before pushing:
117117

@@ -121,17 +121,24 @@ dotnet test backend/VoxLib.slnx
121121
pnpm format:check && pnpm lint && pnpm build
122122
```
123123

124-
**Branch protection is not currently enforced.** `vox-lib` is a private repo on
125-
the GitHub Free plan, where both the rulesets API and the Settings → Branches UI
126-
refuse with `Upgrade to GitHub Pro or make this repository public`. CI still runs
127-
and still reports on every PR. It just cannot be made a required check, so
128-
nothing mechanically blocks a direct push to `main`. Until the repo goes public
129-
or the account goes Pro, the PR workflow above holds by discipline.
130-
131-
If that changes, protect `main` with: require a PR, require the
132-
`backend (build + test)` and `frontend (lint + build)` checks (the job `name:`
133-
values in `ci.yml` are the status-check contexts), and require the branch to be
134-
up to date.
124+
**Branch protection is enforced.** The repository is public, and `main` carries a
125+
`protect main` ruleset that requires a pull request, requires the
126+
`backend (build + test)` and `frontend (lint + build)` checks to pass, requires
127+
the branch to be up to date with `main` before merging, and blocks force-push and
128+
deletion.
129+
130+
The job `name:` values in `ci.yml` are what GitHub matches as status-check
131+
contexts. Renaming a job silently stops satisfying the rule, so the ruleset has to
132+
be updated in the same change.
133+
134+
`required_approving_review_count` is 0 by design. GitHub does not allow approving
135+
your own pull request, so requiring a review on a solo project would make every PR
136+
permanently unmergeable.
137+
138+
Requiring the branch to be up to date has a cost worth knowing: every merge into
139+
`main` invalidates every other open PR, which then needs a rebase and a fresh CI
140+
run. With several dependency PRs open at once, group them into one rather than
141+
merging them one at a time.
135142

136143
## Tests
137144

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,10 @@ full convention.
9999

100100
## Repository
101101

102-
The remote is `github.com/unxwn/vox-lib` (private). Branch protection is **not**
103-
enforced: on the GitHub Free plan a private repo cannot have required status
104-
checks. The API and the Settings UI both answer `Upgrade to GitHub Pro or make
105-
this repository public`. CI still runs on every PR and reports its result; it
106-
simply is not a merge gate. The PR workflow above therefore holds by convention,
107-
not by enforcement.
102+
The remote is `github.com/unxwn/vox-lib` (public). Branch protection is enforced
103+
by the `protect main` ruleset: a pull request is required, both CI checks must
104+
pass, the branch must be up to date with `main` before it can merge, and
105+
force-push and deletion are blocked. CI is a merge gate, not a report.
108106

109107
## Licence
110108

0 commit comments

Comments
 (0)