mainis production-only.v2.2is the active integration branch for the v2.2.0 development cycle.- Never commit feature, fix, test, or chore work directly to
mainorv2.2.
- Create short-lived
feat/*,fix/*,test/*, orchore/*branches fromv2.2. - Sprint and routine development pull requests target
v2.2, notmain. - After a successful merge, delete only the merged short-lived branch when cleanup is authorized.
- Use exactly
<Gitmoji>[<Action>] <imperative subject>for every human-authored commit. There is no space before[Action], square brackets are mandatory, and exactly one space follows]. - Use one fixed pair:
β¨[Feat],β[Add],π[Deploy],β [Test],π[Data],π[Fix],β»οΈ[Refactor],π§[Config],π¨[Hotfix],βοΈ[Chore],π[Init],π[Docs],π[Style], orπ[Rename]. - Write a concise imperative subject for one logical change. Split unrelated changes into separate commits.
- Plain Conventional Commit prefixes such as
feat:, mismatched pairs such asπ[Feat], and spaced forms such asβ¨ [Feat]are prohibited. - Good:
β¨[Feat] Add Image to Text OCR,β [Test] Cover OCR cancellation,π[Docs] Document release workflow. - Bad:
feat: add OCR,β¨ [Feat] Add OCR,β¨[Fix] Add OCR. - Inspect recent conforming history if uncertain. Do not create a commit until its message satisfies this convention.
- Commit creation does not authorize merging; the merge-authority policy below still applies.
- Creating a pull request and merging it are separate operations.
- An agent must not merge its own pull request automatically. Passing CI does not authorize a merge.
- Merge only when the user explicitly requests that specific merge after review. Never enable auto-merge without an explicit request.
- Normal development reaches
mainonly through a dedicated release or hardening pull request fromv2.2. - Creating the v2.2.0 tag or release requires separate explicit authorization after final verification.
- Production hotfixes use a dedicated
hotfix/*branch and pull request intomain. - Never push a hotfix directly to
main.