# TODO: remaining work on the gate refactor REMOVE ME AFTER FINISH What is done, what is not, and the real numbers, re-measured 2026-08-28 after the lint campaign started. Companion to `TODO-file-length-250.md`, which parks one specific blocking decision. ## Done | Area | State | |---|---| | Vendored manifest | `gates/vendored.txt`, 8 entries, mirrored into `~/utils` | | Build artifacts | 189 untracked, `.gitignore` closed, 0 tracked-but-ignored files | | no-binaries gate | Path-scoped `.binary-allowlist`; verified blocking AND passing | | Markdown | 4 namespaces, all under 250 lines, `CLAUDE.md` written | | pre-commit | 12 hooks, green on all files | | pre-push | `pre-commit install --hook-type pre-push` via `install.sh` | | GitHub CI | `pre-commit` + `md-naming`, both green | | run.sh | Root harness + per-course runners over one shared library | | `pyproject.toml` | `select = ["ALL"]`, mypy strict, coverage config. **No hook wired up yet** | | LaTeX 250-line cap | 19 reports split, every rebuilt PDF verified identical. 1 left | | ZPOB | Fixed: builds with `--no-bibtex`, exits 0 | ## The lint campaign `select = ["ALL"]`, and by kuhy's decision on 2026-08-28 there are **no per-file-ignores at all** -- not even the `S101` block for tests that ruff's own docs and the rest of this fleet carry. A test asserts by raising. | | ruff findings | |---|---| | Baseline, before any of this | 9,281 | | After the format + safe-fix pass and excluding `TRAK/sightpy` | 3,686 | | **Now** | **0** | **Every course is at zero.** 9,281 findings to 0. What that cost, and what it bought, is in the commit messages; the standing rules for the next pass are below.