build(ci): pin ruff <0.16 and make shebanged entry points executable - #293
Merged
Conversation
CI went red on every PR with no code change. ruff 0.16.0 released, and
requirements-dev pinned only `ruff>=0.15.22`, so CI drifted onto a breaking
major: `ruff check .` went from clean to 3117 errors.
Two distinct regressions in 0.16:
* default rule selection widened enormously (BLE001 x1028, I001 x402,
UP006 x308, S110, DTZ005 … none of which this repo ever selected)
* our ruff.toml stopped being honoured in CI — E402 fired 535 times despite
sitting in the ignore list
Pinned <0.16. Adopting 0.16 is a real migration and deserves its own PR, not a
silent dependency drift on a Friday.
Also fixed the one genuine finding 0.16 surfaced: 16 entry-point scripts carry
`#!/usr/bin/env python3` but were committed 100644, so the shebang was
decorative (EXE001). These are actually executed — PM2 runs codec.py and
codec_watchdog.py, and the tools/ + scripts/ ones are invoked directly — so the
correct fix is the exec bit, not removing the shebang.
Verified: ruff 0.15.22 → "All checks passed"; 0.16.0 → 3117 errors, unchanged
tree either way.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The workflow installs its own dependency set with a bare `ruff`, ignoring requirements-dev.txt entirely — so the earlier pin there had no effect and CI stayed on 0.16. Pinned at the actual install site. The comment directly above that line already warns that CI must not drift from what production runs; this is that same lesson, one dependency over. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI is red on every PR with no code change. Not a regression in anyone's work — a dependency drift.
The workflow installs a bare, unpinned
ruff. Ruff 0.16.0 released, CI picked it up, andruff check .went from clean to 3117 errors.Two distinct regressions in 0.16
ruff.tomlsays "Ruff's default selection is E4/E7/E9 + F. Keep it" and only setsignore, so a wider default is inherited wholesale.ruff.tomlstopped being honoured in CI — E402 fired 535 times despite being in the ignore list.Pinned
<0.16at the workflow's own install line — my first attempt pinnedrequirements-dev.txt, which CI never reads (it installs its own set). The comment directly above that line already warns CI must not drift from production; this is the same lesson one dependency over.Adopting 0.16 is a genuine migration — it deserves its own PR with the rule surface deliberately chosen, not a silent drift.
The one real finding, kept
0.16 did surface something legitimate: 16 entry-point scripts carry a shebang but were committed
100644, making it decorative (EXE001). These are genuinely executed — PM2 runscodec.pyandcodec_watchdog.py;tools/generate_skill_manifest.pyandscripts/tag_releases.pyare invoked directly. The correct fix is the exec bit, not deleting the shebang. Done viagit update-index --chmod=+x.Verified
Same tree both times.