Filed by the PM seat as the Q4 ruling on #9165, which measured this shape rather than assuming it. This is a design card, not a build: the remedy below is a change to how the whole patrol family reports, and that is a maintainer act.
The meta-shape
A gate's recognizer is narrower than the code shapes in the repo, and the shortfall is reported as a VERDICT rather than as "unrecognised."
Seven measured instances, all from this repo, all found within about a day:
Fails toward FALSE RED — self-announcing, cost is a wasted branch
| # | gate | the shape it cannot see |
|---|
| #8897 | check-durability-degradation-log-level | receiver name |
| #9657 | same | parenthesized callee — (logger.error ?? logger.warn)(…) reads as silent-swallow |
These are survivable: someone hits one, files a card, and the truth surfaces. ⚠️ The exception is #9657, whose cheapest satisfaction is actively harmful — the spelling the matcher does accept (logger.error?.(…)) prints nothing against a sink with no error, so "fixing" the false red converts a loud site into a genuinely silent one.
Fails toward FALSE GREEN — never self-announcing, found only by luck
| # | gate | the shape it cannot see |
|---|
| #8845 | check-durability-log-level | exit shape (the criterion half) |
| #9165 A | same | publishPackageDrafts — in the census, reported "no invented answer", while its catch pushed a fabricated existedBefore: false |
| #9165 B | same | getAllObjects — never in the population at all; DRIVER_READ_CALLEES is {find, findOne, count} |
| #9680 | check-engine-double-contract | absence — deleting a pinned double's delete() member took 319 → 318 with exit 0; discovery requires the member to exist |
| #9708 | same | consumer seams — deleting one took 6 in 3 source file(s) → 5 with exit 0; SEAMS_DISCOVERED fires only at zero |
This half is the problem.#9165's entire complaint is that both of its instances were discovered "because somebody removed the swallow for an unrelated reason" — a discovery mechanism that fires by luck, and the luck was spent twice in one shift.
Why the obvious remedy is wrong
"Widen each matcher" has been separately priced and separately declined every time:
Widening is expensive, per-gate, and leaves the next unrecognised shape in the same place.
The proposal
Make "I could not recognise this shape" a reportable verdict, distinct from "clean."
The germ already exists in this repo, in check-engine-double-contract's DISCOVERED invariant, whose own comment says it best:
Zero is not a clean repo, it is a broken scan.
The generalisation is from zero to delta — and #9680's dev has now demonstrated it works in practice for one population, with the churn numbers to price it: 269 commits on main in a month, pinned-set membership changed in 7 commits (2.6%), 8 files entered per verb, 0 left. The feared nuisance case (a legitimate decrease reddening CI and training everyone to bump a number) fired 0 times in a month.
What that suggests, for the maintainer to accept or reject:
- Every gate with a discovered population declares it, and reports a shrink as its own verdict — not silence, not necessarily red.
- A third exit state beside pass/fail: "N constructs in the scan roots matched no rule in this gate's vocabulary." Not a failure. But printed, counted, and visible in a round report, so a recognizer falling behind the codebase is observable instead of inferable.
- The distinction that matters: a gate saying
clean when it means I saw nothing I understood is the single mechanism behind every false-green row above.
What this card is NOT asking for
Related, each an instance rather than a duplicate
#8897 · #9657 · #8845 · #9165 (the disposition comment carries the full measurement) · #9680 / PR #9712 · #9708 · #8901 (on hold; its restart-when is measured not met — the original cohort is shrinking 25 → 19, not gaining a second)
Generated by Claude Code
Filed by the PM seat as the Q4 ruling on #9165, which measured this shape rather than assuming it. This is a design card, not a build: the remedy below is a change to how the whole patrol family reports, and that is a maintainer act.
The meta-shape
Seven measured instances, all from this repo, all found within about a day:
Fails toward FALSE RED — self-announcing, cost is a wasted branch
check-durability-degradation-log-level(logger.error ?? logger.warn)(…)reads assilent-swallowThese are survivable: someone hits one, files a card, and the truth surfaces.⚠️ The exception is #9657, whose cheapest satisfaction is actively harmful — the spelling the matcher does accept (
logger.error?.(…)) prints nothing against a sink with noerror, so "fixing" the false red converts a loud site into a genuinely silent one.Fails toward FALSE GREEN — never self-announcing, found only by luck
check-durability-log-levelpublishPackageDrafts— in the census, reported "no invented answer", while its catch pushed a fabricatedexistedBefore: falsegetAllObjects— never in the population at all;DRIVER_READ_CALLEESis{find, findOne, count}check-engine-double-contractdelete()member took 319 → 318 withexit 0; discovery requires the member to exist6 in 3 source file(s)→ 5 withexit 0;SEAMS_DISCOVEREDfires only at zeroThis half is the problem.#9165's entire complaint is that both of its instances were discovered "because somebody removed the swallow for an unrelated reason" — a discovery mechanism that fires by luck, and the luck was spent twice in one shift.
Why the obvious remedy is wrong
"Widen each matcher" has been separately priced and separately declined every time:
return, so acatchthat degrades by FALLING THROUGH into an empty accumulator is structurally invisible #8845 declined a 15-red criterion with 7 already-correct sites; PR measure the read-seam rule's catch-fallthrough blind spot, and record the decision NOT to extend (#8845) #8898 recorded the refusal instead of taking it.catchthat hides it — twice this shift.check:engine-double-contractpins engine doubles; nothing pins registry doubles #9165's 2b (teach the read-seam rulegetAllObjects) is not a vocabulary addition but a scope change —DRIVER_READ_CALLEESis anchored toIDataDriver's read methods so those generic names mean "a storage seam", and the header prices dropping that anchor at 91 of 314 catch clauses in the scan roots.Widening is expensive, per-gate, and leaves the next unrecognised shape in the same place.
The proposal
Make "I could not recognise this shape" a reportable verdict, distinct from "clean."
The germ already exists in this repo, in
check-engine-double-contract'sDISCOVEREDinvariant, whose own comment says it best:The generalisation is from zero to delta — and #9680's dev has now demonstrated it works in practice for one population, with the churn numbers to price it: 269 commits on
mainin a month, pinned-set membership changed in 7 commits (2.6%), 8 files entered per verb, 0 left. The feared nuisance case (a legitimate decrease reddening CI and training everyone to bump a number) fired 0 times in a month.What that suggests, for the maintainer to accept or reject:
cleanwhen it meansI saw nothing I understoodis the single mechanism behind every false-green row above.What this card is NOT asking for
return, so acatchthat degrades by FALLING THROUGH into an empty accumulator is structurally invisible #8845, A partial test double is only ever discovered by deleting thecatchthat hides it — twice this shift.check:engine-double-contractpins engine doubles; nothing pins registry doubles #9165 2b, or check:engine-double-contract's CONSUMER SEAM population is unratcheted the same way the pinned population was — deleting a seam takes 6 to 5 with the gate green #9708 — each of those stays declined/open on its own terms.Related, each an instance rather than a duplicate
#8897 · #9657 · #8845 · #9165 (the disposition comment carries the full measurement) · #9680 / PR #9712 · #9708 · #8901 (on hold; its restart-when is measured not met — the original cohort is shrinking 25 → 19, not gaining a second)
Generated by Claude Code