Commit 900334a
fix(devx): dispatch-gates emits the REAL check where the script declares its argv default, and its self-test harness prints the readings its call sites pass (#15570)
The `notRunnable` rule asked whether the WORKFLOW supplies a value and never
whether the SCRIPT needs it supplied. For the three `--base` gates the two
answers differ, so the only member `--commands` offered for
check-adr-0087-registration was that script's `--self-test`: a zero from a
command that cannot answer the question, sitting in the runnable union where
nothing distinguishes it from a green.
The class was enumerated by predicate before anything was repaired, read from
the workflow text rather than recalled — 15 value-bearing invocation keys across
7 scripts. 6 keys / 3 scripts declare a default for the flag CI pins
(check-adr-0087-registration.mjs:8, check-changeset-no-major.mjs:7,
check-empty-changeset.mjs:7, each implemented at :5141 / :760 / :1627). 9 keys /
4 scripts are genuinely unrunnable: a runner temp path, a matrix shard, step
results and a provenance string this tool cannot invent.
- declaredArgvDefaults reads the declaration out of the script's own LEADING
usage block, so no table here can drift from it; a script that stops
documenting its default returns its family to NOT RUNNABLE LOCALLY on the
next run, with no edit in this file.
- defaultedArgv renders the invocation as it runs here, with the default spelled
out where CI writes the variable, and it is all-or-nothing: a partially
covered argv stays unrunnable, because a command that runs with one real value
and one invented one answers a question CI never asked.
- The derivation KEY is untouched. Only the rendered runnable member moves.
- Every family that genuinely cannot run now prints NOT MEASURED by name, in the
human block and on --commands stderr, and says that a sibling invocation of
the same script in the list above grades the script and not your diff.
- The pasted block deduplicates on the command, so two keys that render one
command cannot repeat in the published harvest.
- The self-test harness `t` takes the third argument six call sites were already
passing; it prints on a RED only, so a passing run's log is byte-identical to
what it has always been.
One existing case's EXPECTATION moves with the rendering it pins (the
empty-changeset family in the matched block); its subject and its invariant are
unchanged, the reason is written at the case.
check:pm-dispatch-gates: 1415 cases before, 1445 after.
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
Co-authored-by: Claude <noreply@anthropic.com>1 parent 954cb0b commit 900334a
1 file changed
Lines changed: 597 additions & 16 deletions
0 commit comments