Skip to content

Commit 8f68e50

Browse files
claude[bot]claude
andauthored
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

File tree

0 commit comments

Comments
 (0)