RUL-007 — No AI attribution in commits, tags, or PRs
Ruling
Do not add Co-Authored-By: Claude ... (or any equivalent attribution to any AI assistant) to git commits, tags, PR bodies, or any other artifact. Every commit/tag carries Mohamed's identity only.
Evidence
- Global
~/.claude/CLAUDE.md"Commit attribution" section (standing instruction, loaded every session). - Project memory
user-mohamed: "he insists every commit/tag/PR carry only his identity, no AI attribution."
Enforcement
- hook scripts/hooks/commit-msg
- gate scripts/check_ai_attribution.py RUL-007
Verification
Two layers, both live. The earlier text on this page — "no commit-msg git hook exists in this repo … no mechanism currently strips a stray Co-Authored-By trailer automatically" — is now false, and is superseded by:
scripts/hooks/commit-msg(tracked, executable) execsscripts/check_ai_attribution.py --message-file "$1".git config core.hooksPath=scripts/hooks, so it is live for every commit in every worktree the moment it exists;scripts/hooks/install-git-hooks.shnames it in both its existence check and itschmod +xline. Proven end-to-end against a real git repo:git commit -m $'fix: …\n\nCo-Authored-By: Claude …'returns non-zero and HEAD is unchanged (the commit object is never created); the same commit without the trailer succeeds. Becausecommit.verbose=truewrites the full diff intoCOMMIT_EDITMSG,--message-fileblanks git comment lines and truncates at the--- >8 ---scissors marker (line numbering preserved), so the gate scans the message, never file content — otherwise any commit touching this gate or this page would self-trip.scripts/check_ai_attribution.pyas a repo-wide history gate, invoked fromscripts/health_check.pyas "AI attribution (RUL-007)" with--range --all --tags: 2769 commits + 167 annotated tags scanned in ~1.1s.
Detection covers Co-Authored-By:/Assisted-By: trailers naming any AI assistant (R1) and "Generated with [Claude Code]"-class markers (R2); it stays silent on Co-Authored-By: Mohamed Samy <msamy@sufigeeks.org>, Signed-off-by:, and on prose that merely mentions Claude (e.g. feat(claude): Claude Code conversation producer).
The repo has exactly one genuine violation, and it is reported on every run, not suppressed: commit b65a7a971f13 L29 carries a leaked Co-Authored-By: Claude … trailer. It is published history that cannot be rewritten, so it is pinned by full SHA in scripts/rul007-baseline.txt and printed as BASELINED on every run. The baseline provably cannot widen: --baseline /dev/null over live history exits 1, short-SHA entries are rejected, and a test pins that the baseline may not absorb a new violation.