diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bd36cb3..ba47e27 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,8 +10,8 @@ main ◄── release PR ◄── develop ◄── feat/123-short-name ◄── chore/125-config-change ``` -- `main` is the release line. Protected: 15 required status checks, code-owner approval, no force pushes. -- `develop` is the integration branch. Same gates, less strict (PRs don't need rebases). +- `main` is the release line. Protected: **21 required status checks**, code-owner approval, no force pushes. (One additional non-required check, `Draft next release` from release-drafter, runs informationally on PRs to `main` and shows up in the rollup but is not gated.) +- `develop` is the integration branch. Same 21 gates, less strict (PRs don't need rebases). - Feature branches are short-lived and named `/-`. Open one issue per branch so the project board stays usable. ## Commit messages @@ -43,6 +43,18 @@ The subject is **lowercase** after the colon. Title Case prose (`Add the thing`) - **Screenshots** (UI changes only) 5. Wait for green CI + a code-owner review before merging. +### Solo-owner merge policy + +This repo runs with a single code owner (`* @constk` in `CODEOWNERS`). GitHub forbids a PR author from approving their own PR, so the standard "1 code-owner review" gate cannot be satisfied without an admin override. While in this state, the **intended workflow is**: + +```sh +gh pr merge --admin --squash --delete-branch +``` + +…for `feat:` / `fix:` / `chore:` PRs, and `--admin --merge` (preserves history) for `release:` PRs. The `enforce_admins: false` line in `.github/branch-protection/{develop,main}.json` is the documented escape hatch — admin merge here is the policy, not a deviation from it. + +When a second collaborator joins, drop the `--admin` flag and adopt standard PR review. Update this section + `CODEOWNERS` in the same PR. + ## Local pre-push gate ```sh diff --git a/pyproject.toml b/pyproject.toml index 58ab761..c1f5158 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "harness-python-react" -version = "0.2.8" +version = "0.2.9" description = "Production-quality LLM-driven coding harness — Python (FastAPI) backend, Vite + React + TypeScript frontend." readme = "README.md" requires-python = ">=3.14" diff --git a/uv.lock b/uv.lock index 9eb1613..8fe0b4f 100644 --- a/uv.lock +++ b/uv.lock @@ -328,7 +328,7 @@ wheels = [ [[package]] name = "harness-python-react" -version = "0.2.8" +version = "0.2.9" source = { virtual = "." } dependencies = [ { name = "fastapi" },