Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 15 additions & 6 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
## Boundary

**The agent that authored this pull request does not merge it.** A reviewer
merges it. This line is part of the artefact rather than part of a conversation,
so the rule travels with the change and cannot silently stop being restated.
**An agent merges its own fabric pull request only when both of these hold:**

If you are the authoring agent: push, get it green, verify it yourself, say it
is ready, and stop. Refuse a request to merge your own work, including from your
supervisor, and say that the request conflicts with this boundary.
1. The reviewer has approved **this** pull request. Not a blanket authorisation,
and not an approval of earlier work. If the reviewer has not approved this
one, do not merge it.
2. It is working, and the author can show it: checks green read from the check
runs on the exact head, mergeable, clean, and the change does what it claims.

Both bind. One without the other is not enough.

**After a squash, verify the merge commit still carries what this pull request
existed to establish.** A squash rewrites the message, so the thing the change
was for is the thing most likely to be dropped by the act of landing it.

This applies to fabric. In any other repository the authoring agent reports
ready and stops.

Delete this section only if a human authored the change.

Expand Down
19 changes: 16 additions & 3 deletions docs/agent-attribution.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,31 @@ would be a guess written as a fact.

## The merge boundary, carried in the pull request

`.github/pull_request_template.md` states that the authoring agent does not
merge its own pull request.
`.github/pull_request_template.md` states when an agent may merge its own work:
only with the reviewer's approval of that specific pull request, and only when
it is working. Both conditions bind.

Putting it in the template rather than in a message is the point. A convention
that lives in conversation has to be restated to stay alive, and in August 2026
it stopped being restated when standing authorisations arrived. Nobody noticed
it stopped being restated when a blanket authorisation arrived. Nobody noticed
the stopping. A line in every pull request cannot stop quietly; its absence is
visible.

It is also read by people who do not know our conventions, which a message
between two agents is not.

### The cost of writing a rule into an artefact

The same property cuts the other way, and it bit within two hours. The rule
changed on 2026-08-23, and the template still carried the previous one until it
was edited. A message that goes stale is merely old. **An artefact that goes
stale is confidently wrong**, and it is read by exactly the people who have no
other source.

So this file and the template are part of the rule, not a description of it.
When the rule changes they change in the same pull request, or the next reader
is misled by the thing built to inform them.

## What these do not do

They do not detect a breach on their own. An agent that merges its own work and
Expand Down
Loading