Main is currently red against the gate #813 just landed — not because either PR was wrong, but because they were green separately and are red together. #813's branch predated scripts/check-doc-narrative.py, so its CI never ran ruff over that file. Without this, the next PR to open would have failed Script lint and tests (ruff + pytest) on a file it did not touch.
RUF100 × 2 on # noqa: BLE001 in scripts/check-doc-narrative.py. BLE is not in this repo's select, so those directives suppress nothing — which is exactly what RUF100 exists to say. Enabling BLE instead was measured and rejected: it fires 6 more times in decisions_validate.py, whose broad catches are deliberate, and picking that fight belongs in its own PR rather than in an unbreak-main commit. The non-enabled code is dropped; S110 on the first site stays (Sis selected) and both explanatory comments stay intact.
scripts/tests/test_check_doc_narrative.py was not ruff-formatted. Formatted; suite still 807 passed, 2 skipped.
Verified locally with the exact shipped invocation (git ls-files population, --no-force-exclude): 35 files, All checks passed!, 35 files already formatted.
The generalisable bit: a gate whose population is "everything tracked" is only as green as its base. Neither PR's CI could have caught this; it is visible only after both merge.
refs #780, refs #784
**Main is currently red against the gate #813 just landed** — not because either PR was wrong, but because they were green separately and are red together. #813's branch predated `scripts/check-doc-narrative.py`, so its CI never ran ruff over that file. Without this, the next PR to open would have failed `Script lint and tests (ruff + pytest)` on a file it did not touch.
Two findings, both in #784's files:
- **`RUF100` × 2** on `# noqa: BLE001` in `scripts/check-doc-narrative.py`. `BLE` is not in this repo's `select`, so those directives suppress nothing — which is exactly what `RUF100` exists to say. Enabling `BLE` instead was *measured* and rejected: it fires 6 more times in `decisions_validate.py`, whose broad catches are deliberate, and picking that fight belongs in its own PR rather than in an unbreak-main commit. The non-enabled code is dropped; `S110` on the first site stays (`S` **is** selected) and both explanatory comments stay intact.
- **`scripts/tests/test_check_doc_narrative.py` was not ruff-formatted.** Formatted; suite still `807 passed, 2 skipped`.
Verified locally with the exact shipped invocation (`git ls-files` population, `--no-force-exclude`): 35 files, `All checks passed!`, `35 files already formatted`.
The generalisable bit: a gate whose population is "everything tracked" is only as green as its base. Neither PR's CI could have caught this; it is visible only after both merge.
#780 and #784 were green separately and red together: the gate landed with a base
that predated `scripts/check-doc-narrative.py`, so nothing ever ran ruff over it.
On merged main the shipped invocation is RED, which would have surfaced as a
mystery lint failure on whichever PR opened next.
Two findings, both in #784's files:
- `RUF100` on `# noqa: BLE001` twice — `BLE` is not in this repo's `select`, so
those directives suppress nothing. Enabling `BLE` instead was measured and
rejected: it fires 6 more times in `decisions_validate.py`, whose broad catches
are deliberate, and that is a ruleset decision for its own PR rather than a
side effect of unbreaking main. The non-enabled code is dropped; the `S110` on
the first site stays (S IS selected), and both explanatory comments stay.
- `scripts/tests/test_check_doc_narrative.py` was not ruff-formatted. Formatted;
suite still 807 passed, 2 skipped.
The general shape, for the next time two PRs touch disjoint files: a gate whose
population is "everything tracked" is only as green as its base. #813's CI could
not have caught this and neither could #811's.
Refs: #780, #784
Independent review deliberately skipped per process.independent-review-rubric: 2 files, no C#, no locks/auth/migrations/API write paths — the change deletes two rule codes RUF100 proved inert and runs the formatter. Verified by execution rather than reading: the shipped invocation over the merged tree goes from 2 errors + 1 unformatted file to 35 files clean, and the suite is 807 passed / 2 skipped. The rejected alternative (enabling BLE) was measured too: 6 further sites in decisions_validate.py.
Review-verdict: MERGEABLE @ eda2fac
Independent review deliberately skipped per process.independent-review-rubric: 2 files, no C#, no locks/auth/migrations/API write paths — the change deletes two rule codes RUF100 proved inert and runs the formatter. Verified by execution rather than reading: the shipped invocation over the merged tree goes from 2 errors + 1 unformatted file to 35 files clean, and the suite is 807 passed / 2 skipped. The rejected alternative (enabling BLE) was measured too: 6 further sites in decisions_validate.py.
timothy
merged commit eb5c74b4b2 into main2026-08-22 11:34:05 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
refs #780, refs #784
Main is currently red against the gate #813 just landed — not because either PR was wrong, but because they were green separately and are red together. #813's branch predated
scripts/check-doc-narrative.py, so its CI never ran ruff over that file. Without this, the next PR to open would have failedScript lint and tests (ruff + pytest)on a file it did not touch.Two findings, both in #784's files:
RUF100× 2 on# noqa: BLE001inscripts/check-doc-narrative.py.BLEis not in this repo'sselect, so those directives suppress nothing — which is exactly whatRUF100exists to say. EnablingBLEinstead was measured and rejected: it fires 6 more times indecisions_validate.py, whose broad catches are deliberate, and picking that fight belongs in its own PR rather than in an unbreak-main commit. The non-enabled code is dropped;S110on the first site stays (Sis selected) and both explanatory comments stay intact.scripts/tests/test_check_doc_narrative.pywas not ruff-formatted. Formatted; suite still807 passed, 2 skipped.Verified locally with the exact shipped invocation (
git ls-filespopulation,--no-force-exclude): 35 files,All checks passed!,35 files already formatted.The generalisable bit: a gate whose population is "everything tracked" is only as green as its base. Neither PR's CI could have caught this; it is visible only after both merge.
Review-verdict: MERGEABLE @
eda2facIndependent review deliberately skipped per process.independent-review-rubric: 2 files, no C#, no locks/auth/migrations/API write paths — the change deletes two rule codes RUF100 proved inert and runs the formatter. Verified by execution rather than reading: the shipped invocation over the merged tree goes from 2 errors + 1 unformatted file to 35 files clean, and the suite is 807 passed / 2 skipped. The rejected alternative (enabling BLE) was measured too: 6 further sites in decisions_validate.py.