You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found while implementing #13774 (the --ran run-reconciliation mode) in scripts/pm/dispatch-gates.mjs. ⛔ Filed unassigned, out of scope for that PR, and deliberately not fixed there. Lane domain:devx.
The shape
The CLI refuses a blend of the two machine-readable stdout shapes, out loud:
}elseif(process.argv.includes('--commands')&&process.argv.includes('--json')){console.error('dispatch-gates: --commands and --json are two spellings of stdout — pass one.');process.exit(2);
with the stated reason that "two answers to 'what shape is stdout' is no answer. Blending them — or silently preferring one — is the class of failure this whole file is about."
--tier is a third stdout shape and is not in that rule. At the bottom of the same block:
⇒ --tier --commands computes mode = 'commands', then discards it and prints tier PROSE on stdout. A consumer that redirected stdout because --commands promises "one runnable command per line, nothing else on stdout" gets the tier verdict in that file, exit 0, no word anywhere that the flag it passed was dropped. Same for --tier --json: the stream is not JSON and nothing says so.
⛔ No claim that anyone has hit it. Found by reading the argv chain while adding a fourth stdout shape to it, not from an incident. Severity is on that basis alone.
⛔ No remedy recommended, because there are two defensible ones and choosing between them is not mechanical: refuse the combination the way --commands --json is refused, or send the tier verdict to stderr whenever a machine-readable mode is asked for, so a caller gets both answers in the two streams that already carry them. The second is arguably better — --tier's own docblock says the tier half answers a different question and needs no tree — but it changes what --tier means when combined, and that is a design call.
Found while implementing #13774 (the
--ranrun-reconciliation mode) inscripts/pm/dispatch-gates.mjs. ⛔ Filed unassigned, out of scope for that PR, and deliberately not fixed there. Lanedomain:devx.The shape
The CLI refuses a blend of the two machine-readable stdout shapes, out loud:
with the stated reason that "two answers to 'what shape is stdout' is no answer. Blending them — or silently preferring one — is the class of failure this whole file is about."
--tieris a third stdout shape and is not in that rule. At the bottom of the same block:⇒
--tier --commandscomputesmode = 'commands', then discards it and prints tier PROSE on stdout. A consumer that redirected stdout because--commandspromises "one runnable command per line, nothing else on stdout" gets the tier verdict in that file, exit 0, no word anywhere that the flag it passed was dropped. Same for--tier --json: the stream is not JSON and nothing says so.Reproduce
⛔ Not claimed
--commands --jsonis refused, or send the tier verdict to stderr whenever a machine-readable mode is asked for, so a caller gets both answers in the two streams that already carry them. The second is arguably better —--tier's own docblock says the tier half answers a different question and needs no tree — but it changes what--tiermeans when combined, and that is a design call.--randefect. The mode added in [finding] Nothing reconciles the gate families a dev DERIVED against the ones it RAN — measured at 19 of 62 on a PR that reported green, and the escaping red was luck #13774 refuses both--ran --commands/--ran --jsonand--ran --tierexplicitly, so the new flag does not extend this hole. This card is about the pre-existing pair.Refs