- pyproject.toml: pin tool.ruff.lint select to [E4, E7, E9, F, I] explicitly,
BEFORE running any autofix. Without an explicit select, an unpinned
'ruff>=0.1.0' silently picks up its current default rule set, which now
includes plugin categories (datetimez, simplify, pyupgrade, bugbear, etc.)
never intended by this repo's ignore list (which only ever suppressed
E402/F841). This made 'ruff check' in CI fail with thousands of findings
unrelated to any recent change.
- ruff check --fix: sort/organize imports across src/ and tests/ (103 files),
scoped strictly to E4/E7/E9/F/I — purely mechanical import reordering.
No pyupgrade (Optional[X] -> X | None) or RUF (f-string conversion,
__all__ sorting) rewrites, since those categories were never selected.
Verified: ruff check clean, black --check clean (no drift found on main),
full unit suite (321 tests) passes unchanged.