Skip to content

feat(ci): vouch first-time contributors, and say the rule about understanding - #605

Merged
imran-siddique merged 1 commit into
mainfrom
feat/vouch-check
Sep 3, 2026
Merged

feat(ci): vouch first-time contributors, and say the rule about understanding#605
imran-siddique merged 1 commit into
mainfrom
feat/vouch-check

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

Pilot in one repository, deliberately not merged. There is a decision below that has to come first.

The decision blocking merge

This repository already runs contributor-check.yml, a contributor reputation check that computes a judgement about a person on pull_request_target. That is the mechanism withdrawn at CoSAI WS4 after the 20 August call, because it produced false and operationally misleading signals.

If both ship, a first-time contributor gets scored and gated. They should not both stay. This PR does not remove the old one, because retiring an existing control is not a call to make silently.

What this adds

A gate where the judgement stays human. A maintainer comments /vouch @username; vouch-command.yml appends to the list; vouch-check.yml only ever reads it. Nothing here scores anybody. Automating the enforcement of a human decision is a different thing from automating the decision, and that difference is why this shape survives contact with a community and the reputation check did not.

The list is seeded. 17 accounts, everyone with a merged PR in this repo, on a dedicated orphan vouched branch. Turning this on turns nobody away who has already contributed.

It reads the list off the vouched branch, never the PR branch. An author can edit any file in their own fork. This is the detail most worth getting right.

It fails open. An unreadable list is our problem; silently closing every PR would be worse than letting one through.

No new secret. Uses the permission API rather than org membership, so anyone who can already push is skipped without a PAT.

Nothing from the PR is checked out. It runs on pull_request_target with a write-capable token, so it must never execute code from the incoming branch, and it does not.

The half that costs nothing

CONTRIBUTING.md gains the understanding rule: use agents, a lot of this was built with them, and if you cannot explain your change with the agent closed, do not open the PR. That belongs in every repository including the spec ones, gate or no gate, and it answers the "feels vibe coded" feedback already on the record from the AAIF Technical Committee.

Scope

Not proposed for trace-spec or trace-registry. A vendor-run gate on a specification heading into foundation governance is the wrong shape, and TERMS.md in the registry says "anyone may register as a producer and submit records."

🤖 Generated with Claude Code

https://claude.ai/code/session_01Uc16CsknaQ9PTLxGj8TXXj

…standing

Two things, and the second is the one that costs nothing.

The vouch check closes a pull request from an account that has not been vouched
and comments explaining how to get vouched. The judgement stays human: a
maintainer comments /vouch @username, the command workflow appends to the list,
and the check only ever reads it. Nothing here scores anybody.

That distinction is deliberate. This repository already runs a contributor
reputation check that computes a judgement about a person, and that mechanism
was withdrawn at CoSAI WS4 after the 20 August call because it produced false
and operationally misleading signals. Automating the enforcement of a human
decision is a different thing from automating the decision. Running both would
score and gate the same contributor, so they should not both stay; that is a
separate call and this change does not make it.

The list lives on a dedicated orphan branch, seeded with the 17 accounts that
already have a merged pull request here so nobody who has contributed before
gets turned away. The check reads it from that branch rather than from the pull
request branch, because an author can edit any file in their own fork. It fails
open: an unreadable list is our problem, and silently closing every pull request
would be worse than letting one through.

CONTRIBUTING also gains the rule worth having whether or not the gate ships: use
agents, and understand what you submit. If you cannot explain a change with the
agent closed, do not open the pull request.

The pattern comes from another open-source project running the same kind of
gate. The idea worth borrowing was keeping the list off the pull request branch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Uc16CsknaQ9PTLxGj8TXXj
@imran-siddique
imran-siddique requested a review from a team as a code owner September 2, 2026 23:27
@imran-siddique
imran-siddique merged commit e55f577 into main Sep 3, 2026
12 checks passed
@imran-siddique
imran-siddique deleted the feat/vouch-check branch September 3, 2026 03:41
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