Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/.hyperhive/review-classifier.yml
argus daea7a56be add classifier rule: no binary blobs
Fixes #5708. A negative rule on the repo's own review-classifier rules: binary
files and text that encodes them (base64, hex, PEM, byte arrays, data URIs)
are refused, test fixtures included. Hashes, lockfile pins, commit ids, short
tokens and text assets are not blobs.
2026-10-25 18:43:39 +01:00

84 lines
3.9 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