Skip to content

docs: correct merge strategy to squash-only in collab spec#91

Open
JasonJarvan wants to merge 1 commit into
mainfrom
docs/fix_merge_strategy_squash
Open

docs: correct merge strategy to squash-only in collab spec#91
JasonJarvan wants to merge 1 commit into
mainfrom
docs/fix_merge_strategy_squash

Conversation

@JasonJarvan

Copy link
Copy Markdown
Contributor

Summary

The AI-collaboration spec (AGENTS.md, which CLAUDE.md symlinks to) claimed the repo uses rebase merge (not squash) and, from that, that every commit's body/trailer lands on main verbatim. GitHub is actually configured squash-only: allow_squash_merge=true, allow_rebase_merge=false, allow_merge_commit=false. Under squash-merge a PR collapses to a single commit on main, so per-commit trailers are lost — the exact opposite of what the spec assumed.

This doc-only change corrects the merge-strategy wording so the guidance matches reality:

  • 3.3 — state squash-merge (rebase / merge-commit disabled) as the integration method; the Co-authored-by trailer must live in the PR description, not only a commit body.
  • 3.7 trailer rule — promote the "if the repo ever switches to squash-merge" hypothetical into a current, unconditional rule: the PR description must end with Co-authored-by: ..., else the squash commit loses the trailer.
  • 3.5 / 3.6 — reframe sync-before-push: still recommended (avoids stale-base conflicts and merge-commit noise), but rebase is no longer required for a linear history since main squash-merges, and a plain git merge origin/<target> is an acceptable alternative. Noted that check_commit_messages.py now runs with --no-merges, so a merge commit on your branch won't fail lint.

No rule clauses were changed — only the merge-strategy framing.

Type

  • Fix
  • Feature
  • Docs
  • CI / tooling
  • Refactor
  • Other

Verification

  • Reviewed GitHub merge settings: gh api repos/EverMind-AI/Raven --jq '{rebase:.allow_rebase_merge,merge:.allow_merge_commit,squash:.allow_squash_merge}' returned {"rebase":false,"merge":false,"squash":true}.

  • Confirmed scripts/check_commit_messages.py runs git log --no-merges ... (introduced in ci: skip merge commits in commit-message lint #90).

  • grep -niE "rebase[ -]merge|verbatim" AGENTS.md — no stale wording remains.

  • Relevant tests pass locally

  • Relevant lint / type checks pass locally

  • User-facing docs or screenshots are updated when needed

Note: docs-only change, no code paths touched, so no unit tests apply. The pre-commit hooks (including the commit-message lint) passed on commit.

Risk

  • Security impact considered
  • Backward compatibility considered
  • Rollback path is clear for risky changes

Related Issues

N/A

Co-authored-by: Claude (claude-opus-4-8) noreply@anthropic.com

The collab spec claimed the repo uses rebase-merge and that per-commit
bodies/trailers land on main verbatim. GitHub is actually configured
squash-only (rebase and merge-commit are both disabled), so a PR
collapses to a single commit and per-commit trailers are lost.

- state squash-merge as the integration method
- make the PR-description Co-authored-by trailer a current rule, not a
  hypothetical future switch
- reframe sync-before-push: still recommended, but rebase is not
  required for linearity and a plain merge is acceptable
  (check_commit_messages.py now runs with --no-merges)

Co-authored-by: Claude (claude-opus-4-8) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant