What
The rainix-sol / static job fails on every PR, for reasons unrelated to the PR.
Its pre-commit run --all-files step reformats four committed files, so the hook
reports "files were modified by this hook" and the job exits 1.
This is repo-wide drift, not a property of any change: the affected files are the
same on main.
Evidence
Observed on PR #37, whose diff adds three files and touches no TOML, YAML or
JSON config. Running the same hooks locally on that branch:
$ pre-commit run --all-files
prettier-rainix..........................................................Failed
- files were modified by this hook
.vscode/settings.json
slither.config.json
taplo....................................................................Failed
- files were modified by this hook
found files total=2 files=["REUSE.toml", "foundry.toml"]
yamlfmt..................................................................Failed
- files were modified by this hook
$ git status --porcelain
M .coderabbitai.yaml
M .vscode/settings.json
M REUSE.toml
M slither.config.json
None of those four is in the PR's diff. slither . and forge fmt --check both
pass; the whole failure is the pre-commit step.
Why it appeared without a commit causing it
The workflows are consumed at @main
(rainlanguage/rainix/.github/workflows/rainix-sol.yaml@main) and the hook set
comes from the pinned rainix devshell, so the formatters can change under a repo
that has not changed. This repo's last green static run was 2026-09-10; the
drift is between the committed formatting and what the current hooks produce.
Effect
static is a required-looking check that is red regardless of content, so it
carries no signal: a PR that genuinely breaks static analysis looks exactly like
one that does not. Any real slither or forge fmt regression would now land
unnoticed behind an already-red job.
Fix
Run pre-commit run --all-files and commit the result. That is a formatting-only
commit touching .coderabbitai.yaml, .vscode/settings.json, REUSE.toml and
slither.config.json, deliberately kept out of PR #37 so that a test-coverage
change is not carrying unrelated reformatting.
Found by adversarial mutation testing (skill 0.35.0), incidentally, while
checking that PR #37's own CI was green.
What
The
rainix-sol / staticjob fails on every PR, for reasons unrelated to the PR.Its
pre-commit run --all-filesstep reformats four committed files, so the hookreports "files were modified by this hook" and the job exits 1.
This is repo-wide drift, not a property of any change: the affected files are the
same on
main.Evidence
Observed on PR #37, whose diff adds three files and touches no TOML, YAML or
JSON config. Running the same hooks locally on that branch:
None of those four is in the PR's diff.
slither .andforge fmt --checkbothpass; the whole failure is the pre-commit step.
Why it appeared without a commit causing it
The workflows are consumed at
@main(
rainlanguage/rainix/.github/workflows/rainix-sol.yaml@main) and the hook setcomes from the pinned rainix devshell, so the formatters can change under a repo
that has not changed. This repo's last green
staticrun was 2026-09-10; thedrift is between the committed formatting and what the current hooks produce.
Effect
staticis a required-looking check that is red regardless of content, so itcarries no signal: a PR that genuinely breaks static analysis looks exactly like
one that does not. Any real
slitherorforge fmtregression would now landunnoticed behind an already-red job.
Fix
Run
pre-commit run --all-filesand commit the result. That is a formatting-onlycommit touching
.coderabbitai.yaml,.vscode/settings.json,REUSE.tomlandslither.config.json, deliberately kept out of PR #37 so that a test-coveragechange is not carrying unrelated reformatting.
Found by adversarial mutation testing (skill 0.35.0), incidentally, while
checking that PR #37's own CI was green.