diff --git a/AGENTS.md b/AGENTS.md index dc16122..9e76c53 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -33,6 +33,16 @@ close the pull request as merged by that commit. This exception changes only who creates the reviewed commit; it does not waive the branch, CI, review, or clean-head gates. +## Protected master + +GitHub branch protection requires a pull request, an up-to-date passing +`portable` check, resolved conversations, and linear history on `master`. +Force pushes and deletion are disabled. Administrator enforcement remains off +only so the privacy-safe local squash procedure above can preserve the required +noreply identity. Use that bypass solely after all branch, local CI, hosted CI, +remote-diff review, feedback, and clean-head gates pass; never use it for an +ordinary direct implementation push. + ## Milestone delivery loop For every roadmap increment: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2a1574..556bdb0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,10 +7,18 @@ Telosieve welcomes narrowly scoped research, security, documentation, integratio 1. Start from current `master` with a clean worktree. 2. Create a focused branch and state atomic acceptance criteria. 3. Update implementation, behavioral tests, evidence, documentation, risks, compatibility, and roadmap state together. -4. Run `./scripts/ci-local.sh`. While the repository is private, this is the sole authoritative CI gate; absent hosted checks are policy-compliant and must not be described as passing. +4. Run `./scripts/ci-local.sh`; the complete local gate and applicable hosted + `portable` check must both pass. 5. Open a pull request describing impact, validation, limitations, and any unresolved evidence gap. 6. Address material review findings and rerun the complete local gate at the reviewed head. +The protected `master` branch requires an up-to-date passing `portable` check, +a pull request, resolved review conversations, and linear history. Force pushes +and branch deletion are disabled. Repository-administrator bypass exists only +for the documented privacy-safe local squash procedure in +[Release Strategy](docs/RELEASE.md); it does not authorize ordinary direct +pushes or omitted review. + Do not add hosted CI, publish packages, change repository visibility, weaken fail-closed behavior, introduce mutation credentials, or broaden product claims without the separately documented approval gates. ## Engineering expectations diff --git a/docs/IMPLEMENTATION_PLAN.md b/docs/IMPLEMENTATION_PLAN.md index 3e1a866..ea7300b 100644 --- a/docs/IMPLEMENTATION_PLAN.md +++ b/docs/IMPLEMENTATION_PLAN.md @@ -1179,3 +1179,16 @@ Evidence: [Public Opening Decision](PUBLIC_OPENING_DECISION.md), [Release Strategy](RELEASE.md), [GitHub Pages Website](GITHUB_PAGES.md), `.github/workflows/`, `scripts/validate-hosted-workflows.py`, `CHANGELOG.md`, and `RELEASE_NOTES_v0.2.0-rc.4.md`. + +## Post-M68 - protected default branch + +- [x] Protect `master` with mandatory pull requests, strict up-to-date portable + CI, resolved conversations, linear history, and stale-approval dismissal. +- [x] Disable force pushes and branch deletion. +- [x] Retain administrator bypass only for the documented privacy-safe local + squash path, without weakening branch, CI, review, or clean-head gates. +- [x] Verify the effective protection through the GitHub branch-protection API + and record the contributor and release procedure. + +Evidence: [Release Strategy](RELEASE.md), `AGENTS.md`, `CONTRIBUTING.md`, and +GitHub branch protection for `master`. diff --git a/docs/RELEASE.md b/docs/RELEASE.md index d1471fa..3571d6e 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -226,6 +226,26 @@ public-history, Pages, and supply-chain checks on pull requests and and reproducible-build qualifications. Release requires both applicable hosted checks and a successful clean-head local gate. +### Protected `master` + +GitHub branch protection on `master` requires: + +- a pull request, with stale approvals dismissed; +- the strict, up-to-date `portable` GitHub Actions check; +- resolved review conversations and linear history; and +- force-push and branch-deletion prevention. + +The required approval count is zero because this owner-operated research +repository does not yet have an independent maintainer quorum. This does not +remove the pull-request or complete remote-diff review requirement. + +Administrator enforcement is deliberately disabled only for the narrow +privacy-safe merge procedure in `AGENTS.md`: after the reviewed feature head +passes local and hosted CI, the owner may create the squash commit locally with +the repository noreply identity and push that reviewed commit to `master`. +Using the bypass for unreviewed implementation, failed CI, force-pushing, +deletion, or omitted pull-request evidence is prohibited. + The bundle-signature protocol authenticates exact candidate bytes against a separately supplied context, time, signer, key identifier, and public key. Test keys are ephemeral. Promotion still requires approved operational signing