Git Workflow¶
The repository has two long-lived branches:
mainis always release-ready.devis the integration branch for active development, agent instructions, research evidence, and operational testing guides.
Short-lived topic branches may be used for review, but they branch from dev,
target dev, and are deleted after merge. Release pull requests promote tested
code from dev to main.
Main branch standard¶
Keep on main:
- package source and public APIs
- deterministic unit, integration, fuzz-invariant, and regression tests
- regression fixtures with provenance notices
- stable user and architecture documentation
- build, release, and reproducible validation tooling
Do not keep on main:
AGENTS.md- comment research workbooks or evidence staging
- adversarial prompt packets, agent reports, or judge ledgers
- operational LLM-judge documentation
- scratch directories or editor backup files
Run the following before every release merge:
make lint
make test
make test-optional
make check-main-branch
make check-release-version
make build
Dev branch standard¶
dev contains everything on main, plus the development-only material under
docs/comment_research/ and docs/comment_testing/, the root AGENTS.md,
and the prompt-packet and LLM-judge scripts under scripts/ (with their tests
and Makefile targets). Comment extraction or cleaning changes begin on dev; confirmed
failures become deterministic tests and fixtures before promotion to main.
Generated corpora, downloaded repositories, judge transcripts, and raw failure
reports stay under ignored tmp/ or scratch/ paths. Only durable evidence,
reusable instructions, and minimized regressions are committed.
Releasing¶
- Cut a release branch from
origin/main, never fromdev, and bring over only the release paths:git checkout origin/dev -- <paths>for package source, the tests and fixtures they need, user docs, andmkdocs.yml. Keepmain's ownMakefile,requirements.txt, and policy guard. - Run the release checks above and open a pull request into
main. - After it merges, merge
mainback intodevthrough a pull request. A plain merge deletes the development-only files thatmainexcludes, so restoredev's copies of them (and of theMakefile) in that merge.
Every merge to main republishes the documentation site to GitHub Pages.
Enforcement¶
make check-main-branchrejects development-only paths onmain.- CI runs the guard on pushes to
mainand pull requests targetingmain. - Branch protection should require CI on both
mainanddevand restrict direct pushes tomain.