Skip to content

v3.5.0

@howells howells tagged this 19 Sep 20:04
A gate that lets each rule's finding count fall but never rise against a
committed baseline existed as a hand-copied script in 26 repos in diverging
variants, with the same bugs fixed repo by repo. This is it once, as
`howells-ratchet`, so consumers delete their copies.

Units and their targets come from each package's own `lint` script - the
`howells-check` segment, `!`-prefixed excludes honoured - with the repo root as
a unit when it names any, and each unit is measured from its own directory. One
baseline at the repo root, `lint-baseline.json`. `--migrate` converts the three
legacy shapes and deletes the old file.

Four failures of the copied variants are now impossible: no units or a unit
reaching no files is a failure rather than a pass over nothing; the report is
read from the resolved executable and parsed from the first brace, so stdout
noise cannot invalidate it; a write is always a full measurement; and `--write`
refuses a rise unless `--allow-rise` is given.

Measured read-only against three consumer repos, the totals are identical to
what their own scripts report today: rulework 95 across 18 units, tensile 1393,
materia 38295 errors across 39 units, unit for unit. 37 tests, and each of the
14 guards was broken on purpose and its test confirmed to fail.

Claude-Session: https://claude.ai/code/session_018L1VYzH7LX6Tq2HB5wKCov
Assets 2
Loading