The change is small enough to review
git/changed-files-budget@v1
The build range changes few enough files that a reviewer can hold the whole change in their head.
| Id | git/changed-files-budget |
| Version | v1 |
| Category | git |
| Default severity | info |
| Interpreter | python3 |
| Timeout | 30 seconds |
| Violations tolerated | 0 |
| Collects | git |
Collectors
This guardrail doesn't gather anything itself. It relies on the collectors below, which the CLI runs once per build before any check, and reads what they found from GUARDRAIL_FACTS. If a collector collects nothing, this guardrail is skipped, not failed.
| Collector | Gathers | Inputs it is given |
|---|---|---|
git | The repository, HEAD, the remotes, and every commit between the base ref and HEAD with its message, author, parents, and the files the range changed with the lines it added and removed to each. | baseRef |
The inputs above are this guardrail's own inputs, passed straight through to the collector. Setting one in buildnote.json changes what is collected, and two guardrails configured the same way share a single collection.
Configuration
{
"guardrails": {
"failOn": "error",
"checks": [
{
"use": "git/changed-files-budget@v1",
"severity": "info",
"with": {
"baseRef": "origin/main",
"maxFiles": "50",
"ignore": ""
},
"exemptions": []
}
]
}
}Inputs
| Input | Description | Default | Environment variable |
|---|---|---|---|
baseRef | Ref the range starts at. The commits checked are <baseRef>..HEAD. | origin/main | GUARDRAIL_INPUT_BASEREF |
maxFiles | Maximum number of files the range may change. | 50 | GUARDRAIL_INPUT_MAXFILES |
ignore | Comma separated globs excluded from the count, for generated files and lock files a reviewer does not read line by line. | `` | GUARDRAIL_INPUT_IGNORE |
How to fix
Split the change. A review that can't be done properly is a control that exists on paper only, and reviewer attention drops sharply with size: an approval on a pull request touching a thousand files proves nothing.
If a large change is unavoidable (a rename, a generated file or a dependency bump), raise maxFiles for that run instead of removing the guardrail, so the exception stays visible.
More in git
git/author-identity-domain. Every commit in the build range was authored and committed with an email address on a domain your organisation controls.git/changed-lines-budget. The build range adds and removes few enough lines that a reviewer can read the whole change before approving it.git/conventional-commits. Every commit message in the build range follows the Conventional Commits specification, including the subject line, the blank line before the body, and the BREAKING CHANGE footer.git/no-merge-commits. The build range contains no merge commits.git/no-wip-commits. The build range contains no commit whose subject says it was never meant to be merged.git/work-item-reference. Every commit in the build range, or the branch it is on, references the change record it belongs to.