Tighten the ruff lint config
[tool.ruff.lint] selects F (pyflakes) but globally ignores F401 (unused imports) and F841 (unused local variables) in pyproject.toml. That's why dead locals and stray imports aren't caught in CI.
F401 is only justified for __init__.py re-exports — move it from the global ignore to [tool.ruff.lint.per-file-ignores] for **/__init__.py so real unused imports elsewhere are flagged.
F841 has no good reason to be ignored — enable it (remove from ignore).
Acceptance
F841 enabled, F401 scoped to __init__.py.
- Fix any violations that surface (a handful of unused imports + the dead locals — coordinate with the dead-code removal issue).
ruff check src/ tests/ clean; CI green.
Tighten the ruff lint config
[tool.ruff.lint]selectsF(pyflakes) but globally ignoresF401(unused imports) andF841(unused local variables) inpyproject.toml. That's why dead locals and stray imports aren't caught in CI.F401is only justified for__init__.pyre-exports — move it from the globalignoreto[tool.ruff.lint.per-file-ignores]for**/__init__.pyso real unused imports elsewhere are flagged.F841has no good reason to be ignored — enable it (remove fromignore).Acceptance
F841enabled,F401scoped to__init__.py.ruff check src/ tests/clean; CI green.