diff --git a/AGENTS.md b/AGENTS.md index 73020bf..821566c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,3 +1,4 @@ + # AGENTS.md ## Scope @@ -46,10 +47,15 @@ Record the exact commands and their results in the pull request description. ## Branch and Merge Policy -- Branch from the current `main` and target pull requests to `main`. -- Use `dev` only when an explicitly approved release plan reactivates it. +- Follow `CONTRIBUTING.md` for branch naming, pull request content, and the + contributor workflow. +- Branch from the current `dev` using `feature/` or `fix/`, and + target pull requests to `dev`. - Keep pull requests in draft until local validation is complete and recorded. -- Merge with a merge commit only after CI passes and review feedback is resolved. +- Squash-merge feature and fix pull requests into `dev` only after CI passes and + review feedback is resolved. +- Promote a verified `dev` branch to `main` with a merge commit. Do not squash + the `dev` to `main` release promotion. - Never merge or enable auto-merge without explicit maintainer approval. ## Compatibility and Architecture diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27dbd9a..bac4009 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,4 @@ + # Contributing Pythonlings is actively developed and **open to contributors** — beginners welcome. @@ -39,8 +40,21 @@ reference solution** (`tests/integration/test_solution_verify.py` enforces this) ## Pull Requests -- Use focused branches named `feature/` or `fix/`. +- Create focused branches from the current `dev` branch, named + `feature/` or `fix/`. +- Open pull requests against `dev`. Feature and fix pull requests are + squash-merged after CI passes and review feedback is resolved. - Reference the issue you're closing (`Closes #NN`). - Include a short description, test output (`python -m pytest -q`), and screenshots/GIFs for TUI changes. - Keep PRs scoped to one issue where possible. + +## Release Flow + +```text +feature/ or fix/ -> dev -> main -> vMAJOR.MINOR.PATCH +``` + +Maintainers promote a verified `dev` branch to `main` with a merge commit, not +a squash merge. The release tag is created from the exact promoted commit on +`main`; see [RELEASE.md](RELEASE.md) for the release checklist.