Skip to content

🏗️🔧:keep a tool out of the author credit - #1899

Merged
openinf-commit-queue[bot] merged 1 commit into
livefrom
infra/refuse-tool-coauthor
Sep 13, 2026
Merged

openinf-commit-queue[bot] merged 1 commit into
livefrom
infra/refuse-tool-coauthor

Conversation

@DerekNonGeneric

@DerekNonGeneric DerekNonGeneric commented Sep 13, 2026

Copy link
Copy Markdown
Member

Summary

The handbook has always said Co-authored-by: is for people and that an assistant belongs in Assisted-by: instead. Nothing checked it, and a commit crediting a model as a co-author got as far as an open pull request this week.

That is not a formatting slip. Authorship is a claim only a person can make: the Developer Certificate of Origin is certified by whoever wrote the code, and a tool certifies nothing. Assisted-by: says what was used. Co-authored-by: says who is answerable, and a model cannot be.

Why a check and not a review note

An agent writing its own commit message reaches for that trailer out of habit, because most of the code it learnt from does. A reviewer reading a long message is exactly who does not notice one line at the bottom. Once it lands it is in the history for good.

What it refuses

A Co-authored-by: whose value matches an assistant's address, a [bot] account, or one of the agent product names that reach this project.

“Co-authored-by: Claude Opus 5 <noreply@anthropic.com>” credits a tool with
authorship: an assistant is disclosed with “Assisted-by:” and co-authors nothing

It refuses on three things: the [bot] suffix, which GitHub reserves so that no person can hold it; the addresses the agents commit under, which are theirs alone and not the ones their staff use; and a handful of product names. Only the last can reach a person, and realistically only claude, which is also a name people have. That is the trade, and if it ever refuses a real co-author the pattern gets narrowed rather than the credit dropped.

An agent whose integration commits as a [bot] account needs no name in the list, which is why Devin and Gemini are absent: both are ordinary names before they are products. Renovate and Dependabot are unaffected either way, since their commits are skipped whole and never reach this check.

Validation

  • six tests added: a person passes, an assistant with an address fails, one without an address fails, a [bot] account fails, and two confirming a person is not caught -- somebody at one of those companies, and somebody whose given name an agent also goes by
  • confirmed end to end against a real commit carrying the exact trailer that prompted this
  • full suite passes, 147 tests

The same change lands in OpenINF/sdk, which carries a copy of this module.

Summary by CodeRabbit

  • New Features

    • Commit-message validation now detects AI assistants and bot accounts listed in Co-authored-by trailers.
    • These attributions are rejected with guidance to use Assisted-by instead.
    • Human co-authors—including names that overlap with known assistant names—remain accepted.
  • Documentation

    • Added guidance for correctly crediting AI assistance and correcting inaccurate authorship entries.
  • Tests

    • Expanded coverage for valid human co-authors and rejected assistant or bot attributions.

@netlify

netlify Bot commented Sep 13, 2026

Copy link
Copy Markdown

Deploy Preview for gh-pages-openinf ready!

Name Link
🔨 Latest commit 976745f
🔍 Latest deploy log https://app.netlify.com/projects/gh-pages-openinf/deploys/6aa5faedc392e200080d8e09
😎 Deploy Preview https://deploy-preview-1899--gh-pages-openinf.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: 3ad23457-a8f1-4e91-b53a-af7ea93f857e

📥 Commits

Reviewing files that changed from the base of the PR and between 4949736 and b48e622.

📒 Files selected for processing (3)
  • build/shared/commit-message.mts
  • build/shared/commit-message.test.mts
  • collections/_docs/handbook/style/commit-messages.md

Included review availability: 1 review is currently available. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.


📝 Walkthrough

Walkthrough

The commit-message validator now rejects assistant and bot identities in Co-authored-by trailers. Tests cover valid human entries and rejected tool identities. Documentation directs contributors to use Assisted-by for tool disclosure.

Changes

Co-author trailer validation

Layer / File(s) Summary
Tool co-author detection and enforcement
build/shared/commit-message.mts
Adds matching for bot markers, selected AI email domains, and known assistant names. Rejects matching Co-authored-by values and directs disclosure through Assisted-by.
Validation coverage and contributor guidance
build/shared/commit-message.test.mts, collections/_docs/handbook/style/commit-messages.md
Adds tests for human, assistant, bot, and overlapping human names. Documents the validation rule and guidance for false-positive name matches.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to b48e6

The validator, tests, and contributor guidance align for the documented assistant and bot trailer cases.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title describes the main change: preventing tools from receiving author credit. It is related to the commit trailer validation changes, although it does not name Co-authored-by: or `Assisted-by:…
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch infra/refuse-tool-coauthor

Comment @coderabbitai help to get the list of available commands.

The handbook has always said `Co-authored-by:` is for people and that an
assistant belongs in `Assisted-by:` instead. Nothing checked it, and a
commit went out this week crediting a model as a co-author.

That is not a formatting slip. Authorship is a claim only a person can
make: the Developer Certificate of Origin is certified by whoever wrote
the code, and a tool certifies nothing. The trailer that discloses one
says what was used. The trailer that credits one says who is answerable,
and a model cannot be.

An agent writing its own commit message reaches for that trailer out of
habit, because that is what most of the code it learnt from does, and a
reviewer reading a long message is exactly who does not notice one line
at the bottom. Once it lands it is in the history for good.

So the check refuses it, on three things: the `[bot]` suffix, which
GitHub reserves so that no person can hold it; the addresses the agents
commit under, which are theirs alone and not the ones their staff use;
and a handful of product names. Only the last can reach a person, and
realistically only `claude`, which is also a name people have. That is
the trade, and if it ever refuses a real co-author the pattern gets
narrowed rather than the credit dropped.

Renovate and Dependabot are unaffected, since their commits are skipped
whole and never reach this. Nor does an agent that commits as a `[bot]`
account need naming, which is why Devin and Gemini are absent: both are
ordinary names before they are products.

Signed-off-by: Derek Lewis <DerekNonGeneric@inf.is>
Assisted-by: Claude-Code:claude-opus-5
@DerekNonGeneric
DerekNonGeneric force-pushed the infra/refuse-tool-coauthor branch from 122912b to 976745f Compare September 13, 2026 01:22
@DerekNonGeneric DerekNonGeneric added the 🚀 Status: Commit Queue Land this pull request when its checks pass label Sep 13, 2026
@openinf-commit-queue
openinf-commit-queue Bot merged commit aeb6317 into live Sep 13, 2026
17 checks passed
@openinf-commit-queue openinf-commit-queue Bot removed the 🚀 Status: Commit Queue Land this pull request when its checks pass label Sep 13, 2026
@openinf-commit-queue
openinf-commit-queue Bot deleted the infra/refuse-tool-coauthor branch September 13, 2026 01:36
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