Skip to content

Commit c618568

Browse files
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

File tree

0 commit comments

Comments
 (0)