Skip to content

build(ci): pin ruff <0.16 and make shebanged entry points executable - #293

Merged
AVADSA25 merged 2 commits into
mainfrom
fix/exe-bits
Jul 24, 2026
Merged

build(ci): pin ruff <0.16 and make shebanged entry points executable#293
AVADSA25 merged 2 commits into
mainfrom
fix/exe-bits

Conversation

@AVADSA25

@AVADSA25 AVADSA25 commented Jul 24, 2026

Copy link
Copy Markdown
Owner

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, and ruff check . went from clean to 3117 errors.

Two distinct regressions in 0.16

  1. Default rule selection widened enormously — BLE001 ×1028, I001 ×402, UP006 ×308, plus S110, DTZ005, PLW1510… none of which this repo ever selected. ruff.toml says "Ruff's default selection is E4/E7/E9 + F. Keep it" and only sets ignore, so a wider default is inherited wholesale.
  2. ruff.toml stopped being honoured in CI — E402 fired 535 times despite being in the ignore list.

Pinned <0.16 at the workflow's own install line — my first attempt pinned requirements-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 runs codec.py and codec_watchdog.py; tools/generate_skill_manifest.py and scripts/tag_releases.py are invoked directly. The correct fix is the exec bit, not deleting the shebang. Done via git update-index --chmod=+x.

Verified

ruff result
0.15.22 All checks passed
0.16.0 3117 errors

Same tree both times.

Mikarina13 and others added 2 commits July 24, 2026 17:09
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>
@AVADSA25
AVADSA25 merged commit d558de1 into main Jul 24, 2026
1 check passed
@AVADSA25
AVADSA25 deleted the fix/exe-bits branch July 24, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants