Commit 8f68e50
tooling(pm): key the bare-root worklist on the gate source file, folding the invocation twins (#15127)
A recorded verdict in this worklist is about a bare-root literal written in a
gate's SOURCE, never about an invocation of it, so the row key is now
(source file, constant, root) and every family the derivation keys on
(script, args) that resolves to the same source file folds into that one row,
listed on it in `checks`.
Fifteen rows fold away: the nine `--self-test` twins the previous key minted
when CI began invoking a gate two ways, and the six value-bearing rows that
arrived once the derivation started rendering the argv a workflow fills in.
Every one of them carried its twin's verdict and spelling and, in its own
words, no measurement of its own; each folds onto the row that holds the
measurement, whose verdict, spelling and reason stand unchanged. The two
labelled twin sections are retired and the reason is recorded once beside the
new key. The class also stops growing with the workflows: a gate CI starts
invoking a third way now joins `checks` on a row that already exists instead of
landing as a FRESH row to be judged again.
`covered` is ANDed over the folded invocations — a literal is reachable only
when every invocation that reads it can be named for an arbitrary card under
the root — and the self-test pins that no folded row's invocations disagree
today, so the fold re-decides no row's reachability.
The self-test grows four pins: a gate invoked three ways (plainly, its
self-test leg, and a base a workflow fills in) owes ONE row that names all
three; two different source files still owe two rows; the shrink is asserted as
a measured identity — the invocation tuples the derivation reaches equal the
rows plus the twins folded onto them — rather than a typed number; and no
folded row's invocations may disagree about reachability. Fixture families are
spliced over files taken from the live sweep, never spelled, so this file still
declares no population of its own.
`dispatch-gates.mjs` is read and not touched: the source file behind a
(script, args) family was already on the family entry.
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Co-authored-by: Claude <noreply@anthropic.com>1 parent 57463d6 commit 8f68e50
1 file changed
Lines changed: 190 additions & 211 deletions
0 commit comments