Skip to content

Merge Policy

Merge Requirements

Every PR must meet these conditions before merging:

  1. CI green — all checks pass (tests, lint, type-check, build)
  2. At least 1 approval from a maintainer
  3. No unresolved conversations — all review comments addressed
  4. Branch up to date with target branch (rebase or merge from target)
  5. CHANGELOG updated — if the change is user-facing

Merge Strategy

Branch type Merge method Why
feature/*main Squash merge Clean history — one commit per feature
fix/*main Squash merge Clean history — one commit per fix
fix/*release/* Squash merge Same rationale
release/*main Merge commit Preserves the release branch history
hotfix/*main Squash merge One atomic fix

Squash merge commit message

When squashing, the final commit message should follow Conventional Commits:

feat(chunking): add page filtering in Prepare mode (#87)

The PR number is appended automatically by GitHub.

Stale PR Policy

Condition Action
No activity for 14 days Maintainer pings the author
No activity for 30 days PR labeled stale
No activity for 45 days PR closed with comment (can be reopened)

Draft PRs are exempt from the stale policy.

Conflict Resolution

  • Rebase preferred over merge commits for feature/fix branches
  • If conflicts are complex, merge from target branch into the PR branch
  • Never force-push a branch that has active reviewers without warning them

Branch Cleanup

  • Feature and fix branches are deleted after merge (GitHub auto-delete enabled)
  • Release branches are kept until the next minor release
  • Tags are never deleted