Skip to content

feat: an attribution check seven repositories were each carrying - #4

Merged
toastygm merged 2 commits into
mainfrom
feat/3_no-attribution-action
Aug 23, 2026
Merged

feat: an attribution check seven repositories were each carrying#4
toastygm merged 2 commits into
mainfrom
feat/3_no-attribution-action

Conversation

@toastygm

Copy link
Copy Markdown
Contributor

Every HeroicLands repository already failed a pull request whose title, body, or commit messages credit an AI assistant. Each did it with its own embedded copy of the same 60 lines of bash and gh — seven copies, already in two variants that differ only in indentation. Nothing about the rule varies by repository, so there was nothing for an input to capture, and nothing the copies could do but drift.

actions/no-attribution reads the three subjects attribution reaches a pull request through: the title and body, which a human edits, and the commit messages, which survive the merge. All three are reported in one run, so a two-line fix is not two round trips.

The detection pattern is unchanged, anchored to the start of a line — real attribution stands at column zero, so a pull request can describe the rule without tripping it. That property is load-bearing and was checked against this repository`s own history: the pull request that first introduced the guard, whose prose mentions both forbidden phrases, still passes.

Findings gain a position they did not have: pull/123/body:5:3: error: … rather than a bare message. The address is not a file path, because none of these subjects is a file — it is the subjects own address, pull/123/bodyorcommit/, so a finding names something you can open or git show, and the column is the trailers own rather than the start of the line.

This repository was the only one with no such check at all. It now runs one, addressing the action by local path rather than by HeroicLands/.github@main, so a pull request that changes the action is checked by its own version of it — and so the check could be introduced here without failing the pull request introducing it.

Verified against real data before shipping: a clean pull request passes and counts the commits it read; a title, an indented trailer, and an emoji-prefixed signature are each found at the right line and column; a mid-sentence mention is not; and a commit-message trailer is reported against its own sha.

The seven repositories move onto this action in follow-up pull requests, once it exists on main for them to address.

Closes #3

Tom Rodriguez added 2 commits August 23, 2026 00:43
Every repository failed a pull request that credits an AI assistant, using
its own embedded copy of the same 60 lines of bash. Nothing about the rule
varied by repository, so the copies could only drift — and two variants had
already appeared, differing in indentation alone.

The pattern stays anchored to the start of a line, which is what lets a pull
request describe the rule without tripping it. Findings gain a position:
pull/123/body:5:3 rather than a bare error, addressing the subject itself
since none of the three is a file.

This repository, the only one that had no such check, now runs it on its own
pull requests by local path, so a change to the action is checked by the
version that changes it.

Closes #3
The token input's description cited the expression a caller passes, braces
and all. A manifest is evaluated wherever those braces appear, description
included, and `github` is not a context an action manifest has — so every
workflow calling the action failed to load it, this repository's own among
them. The description now names the context without writing an expression,
and says why.
@toastygm
toastygm merged commit 525f304 into main Aug 23, 2026
1 check passed
@toastygm
toastygm deleted the feat/3_no-attribution-action branch August 30, 2026 00:26
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.

The no-attribution check is copied into seven repositories

1 participant