Repository navigation
Commit c618568
committed
fix(scripts): close two measured blind spots in check:optional-error-sink
Both were narrowings the gate neither argued nor counted, so its own census
line overstated what it had read.
1. A sink spelled with bare `Function` set `fn = false`, which hid its `error`
from the population lookup AND made the shape impure, so it landed in no
bucket at all — not the population, not `impure`, not `noErrorMember`.
`isFunctionTyped` now reads `Function` as a channel: population 38 -> 41,
red 2 -> 5. All three newly visible sinks are pre-existing reds in
plugin-sharing whose options types are publicly exported, so they are
recorded in the shrink-only ledger rather than flipped; tightening `warn`
there is #10556's contract call.
2. The file prefilter matched on `error` alone — sound for the enforced
population, unsound for the `noErrorMember` census line, which counts sinks
declaring NO `error`. It is now derived from the whole channel vocabulary,
so the tally is a count rather than a lower bound of unknown slack: 57 -> 95
on an unchanged tree.
The reject side of (1) gets its own counted bucket, `unreadable`: a shape whose
members are all channel names but whose member type is a named type this
syntactic matcher cannot resolve. Measured cost today is zero missed reds.
Gate exit code on a clean tree is unchanged (0).1 parent cd93277 commit c618568
2 files changed
Lines changed: 357 additions & 11 deletions
0 commit comments