Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/.hyperhive/review-classifier.yml
argus 7aa8441aa1 review-classifier: check that a commit message's claimed changes are in the diff
message-claims-match-diff is the reverse of one-purpose: a README, doc
page, test or rename the message names must be in the diff. The rules
file then holds the ten-rule cap, so the new-rule merge test appends to
the file minus its last entry and no longer depends on how many rules the
file holds.
2026-11-01 13:44:20 +01:00

93 lines
4.3 KiB
YAML

classifications:
- name: no-ads
description: >-
A commit message contains a co-authored-by line or other advertising
for an AI model, such as a "generated with" footer.
polarity: negative
threshold: 80
- name: no-secrets
description: >-
The diff adds a secret as literal text: a password, API key, access
token or private key. A path or name that points at a secret is not
one.
polarity: negative
threshold: 60
- name: no-lint-suppression
description: >-
The diff adds a Rust `#[allow(clippy::...)]` or `#![allow(clippy::...)]`
attribute instead of fixing what the lint reports.
polarity: negative
threshold: 70
- name: no-debug-leftovers
description: >-
The diff adds leftover debugging: a `dbg!` call, a print statement
that only inspects a value, or a block of commented-out code.
polarity: negative
threshold: 70
- name: no-dead-code
description: >-
The diff adds a function, type, option or module that nothing in the
diff calls, uses or registers, and that is not a test, a trait
implementation or public API.
polarity: negative
threshold: 75
- name: no-binary-blobs
description: >-
The diff adds binary data to the repository: a binary file, or text
that encodes one, such as base64, hex or PEM-armoured data, a long
byte array, or a data URI. This holds for test fixtures too. A hash,
a lockfile pin, a commit id or a short token is not a blob, and neither
is a text asset such as SVG, CSS or JSON.
polarity: negative
threshold: 70
- name: tests-with-behaviour
description: >-
The decision-making logic a change adds or alters in Rust or
application code has a new or updated test that exercises it: pure
functions, state transitions, request and response handling, parsing,
validation. A new code path with real logic and no test does not
match, and neither does a bug fix with no regression test. Thin glue
needs no test of its own: UI component wiring, JSX or markup, a
routing table, registering an event listener, re-exporting, or
calling a function that is already tested. A diff whose changed files
are all test code (a fixture under `nix/module-eval/`,
`nix/checks.nix`, a crate's `tests/` directory, or Rust inside
`#[cfg(test)]` or a `#[test]` function) changes no behaviour: the
question is not applicable. So is a diff that changes only
documentation. A NixOS module assertion, a Grafana/alerting rule, or
the literal text of a log or tracing message is not held to this
either. A PR that changes logic and tests together matches.
polarity: positive
threshold: 65
- name: docs-updated
description: >-
A change to what an operator or user sees, such as a command, flag,
option, endpoint, service or default, updates the matching page under
docs/ or the crate's README in the same diff. For a nix option whose
own default, type or meaning changes, an updated `description` on that
option counts as the documentation. It does not cover a change in what
a service does for operators across hosts, such as what it scrapes,
serves or publishes: that needs a docs/ page or README. A nix option
declared `internal = true` or `visible = false` is not something an
operator sees, so adding or changing one needs none of these. A diff
that changes nothing an operator or user sees makes the question not
applicable: a pure internal refactor, a move between modules or
crates, a rename of private items, or an edit to comments and doc
comments.
polarity: positive
threshold: 65
- name: one-purpose
description: >-
Every change in the diff serves what the commit messages say the PR
does, and nothing unrelated is bundled in.
polarity: positive
threshold: 65
- name: message-claims-match-diff
description: >-
Everything a commit message says it changes in a file is in the diff:
a doc page, a README, a test, a rename or a removal that it names.
This is the reverse of one-purpose, which checks that the diff has
nothing the messages do not mention. A commit message that names no
such change makes the question not applicable.
polarity: positive
threshold: 65