2026-11-11 13:59:22 +00:00
|
|
|
# CI enforces a self-declared, SHA-bound self-review for agent-assisted pull requests
|
|
|
|
|
|
|
|
|
|
Pull requests that a coding agent wrote or co-wrote must carry a `## Self-review` section in the
|
|
|
|
|
pull request body that names the full head commit SHA it reviewed. CI does not verify the review
|
|
|
|
|
itself: the project has no AI in CI, and a signing key in the sandbox would be reachable by a misled
|
|
|
|
|
agent. Instead CI detects agent assistance (an `Assisted-by:` or Anthropic `Co-Authored-By:` commit
|
|
|
|
|
trailer, an `Assisted-by:` line or a known agent footer in the pull request body, or the
|
|
|
|
|
"AI-assisted" box in the pull request template). It fails only when the declaration or its
|
|
|
|
|
`Reviewed:` SHA is missing or malformed, or names a SHA other than the current head; everything
|
|
|
|
|
else (an unticked box next to a trailer or marker, malformed optional lines) is only noted. Like a
|
|
|
|
|
DCO sign-off, this makes forgetting impossible and a false claim deliberate; the author review and
|
|
|
|
|
the maintainers' review remain the actual controls.
|
|
|
|
|
|
|
|
|
|
## Considered Options
|
|
|
|
|
|
|
|
|
|
- **AI review in CI**: rejected, the project runs no AI in CI.
|
|
|
|
|
- **Signed review attestation from the sandbox**: rejected, the agent can reach the key and sign
|
|
|
|
|
anything.
|
|
|
|
|
- **Honour system (template checkbox only)**: rejected, a declaration that is not bound to a commit
|
|
|
|
|
silently covers code pushed after the review.
|
|
|
|
|
|
|
|
|
|
## Consequences
|
|
|
|
|
|
|
|
|
|
- Every push to an agent-assisted pull request needs a fresh self-review before the push and an
|
|
|
|
|
updated pull request body right after it; rebases and squashes before merge do too.
|
|
|
|
|
- Open findings do not fail the check, so agents have no incentive to hide them.
|
|
|
|
|
- The check only blocks merging once maintainers make it a required status check.
|
|
|
|
|
- The workflow runs on `pull_request_target` with the base branch's script and never runs pull
|
|
|
|
|
request code, so a pull request cannot weaken its own check; changes to the check take effect
|
2026-11-11 21:19:00 +00:00
|
|
|
only after they are merged. Superseded by [0002](0002-self-review-check-on-pull-request.md).
|
2026-11-11 13:59:22 +00:00
|
|
|
- The workflow needs `pull-requests: write` to comment how to fix a failing check. That is safe
|
2026-11-11 21:19:00 +00:00
|
|
|
only as long as it runs no pull request code. Superseded by
|
|
|
|
|
[0002](0002-self-review-check-on-pull-request.md).
|