Commit 2ed1212
fix(tooling): attribute a gate's declared hints per ROW, not per FILE (#19204)
**Attributing a declared hint to a CONSTANT rather than to a FILE is
information the `ROOT_DIR_WATCH_HINTS` idiom does not carry today.**
Hints are declared per FILE — one array beside the constants — so a
file-level read cannot tell two rows at one root apart, and
`check-driver-conformance` carries exactly two at `packages`:
`DRIVERS_DIR`, which owns `packages/drivers/**`, and `CASE_SETS_DIR`,
which owns nothing there. That is why the obvious pin reds a correct row
on day one, and it is the finding this card produced rather than the
patch.
Part of #15926.
## The gap, re-verified on the base of this branch
`scripts/pm/bare-root-worklist.mjs` compared a recorded refusal against
what a gate declares in exactly three places, and all three missed the
same shape:
- the declaration pin was scoped by **verdict** (`v.verdict !==
'DECLARED-NARROWER'` then `continue`),
- `contradictedRows` is scoped by **reachability** (`r.covered`), which
a strictly narrower declaration never makes true,
- every remaining pin asks the **tree**, which a declaration does not
move.
So a `REFUSE-*` row whose gate declares a genuinely narrower hint at
that row's root fell between all three, forever, with `--self-test`
green. #15602 measured that happening: `check-declaration-mirrors`
declared both sides of its mirror, the row went on recording
`REFUSE-UNSPELLABLE`, and nothing anywhere reddened.
## 1 parent 4cb3b15 commit 2ed1212
1 file changed
Lines changed: 347 additions & 37 deletions
0 commit comments