Skip to content

feat: the attribution gate refuses an AI git identity - #222

Merged
REPPL merged 1 commit into
mainfrom
feat/attribution-identity-gate
Aug 11, 2026
Merged

feat: the attribution gate refuses an AI git identity#222
REPPL merged 1 commit into
mainfrom
feat/attribution-identity-gate

Conversation

@REPPL

@REPPL REPPL commented Aug 11, 2026

Copy link
Copy Markdown
Owner

Why

The contributor graph showed an AI at #2. Investigation traced it to one commit authored and committed as Claude <noreply@anthropic.com> — with a fully compliant message — plus the two squash merges of that identity's branch commits, where the forge auto-appended Co-authored-by: trailers. The gate read only messages and bodies, so a compliant message under an AI identity passed clean. The history has been rewritten out of main; this gate change is what keeps it out.

What

  • scripts/check-attribution.sh commits half now refuses an AI author or committer identity: whole-name match on the assistant names AI tools stamp by default (claude, chatgpt, copilot, gemini, codex, devin), plus the vendors' address space (@anthropic.com, @openai.com). Vendor-agnostic in intent like the co-authorship ban (iss-215); an identity ban can only enumerate, and both lists say to extend them as new defaults appear.
  • The bot exemption is untouched (it runs first), and a human whose name merely contains an assistant's name (Claudette) still passes.
  • scripts/check-attribution-cases.sh grows a commits-mode section: a scratch repository proving the four refusals, the two acceptances, and the bot exemption. Watched fail (4 cases) before the check existed; 22/22 after.
  • CHANGELOG entry under Unreleased.

make preflight clean; gofmt -l . empty.

Assisted-by: Claude:claude-fable-5

A commit authored and committed as Claude <noreply@anthropic.com>
carried a fully compliant message — Assisted-by: trailer, no banned
footer — and sailed through the gate, because the gate read messages and
bodies only. The contributor graph is built from commit authorship plus
Co-authored-by trailers, so that identity put an AI at #2 in the graph
twice over: once for the commit itself, and again on each squash merge,
where the forge auto-appends a Co-authored-by for any branch author who
is not the PR author. (That history was rewritten out of main today; the
gate is what keeps it out from here.)

The commits half now checks the author and committer identity before the
message: a whole-name match on the assistant names AI tools stamp by
default, plus the vendors' address space. Vendor-agnostic in intent like
the co-authorship ban, though an identity ban can only enumerate — both
lists say to extend them as new defaults are met in the wild. A human
whose name merely contains an assistant's name still passes, and the bot
exemption is untouched. The corpus grows a commits-mode section proving
all of it against a scratch repository — watched fail before the check
existed, pass after.

Assisted-by: Claude:claude-fable-5
@REPPL
REPPL merged commit 6ddd050 into main Aug 11, 2026
13 checks passed
@REPPL
REPPL deleted the feat/attribution-identity-gate branch August 11, 2026 14:24
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