Filing gate: ① a defect with a named landing site, scripts/pm/dispatch-gates.mjs (the --commands stdout rendering). It is a PM-tooling card, and the fleet cost it caused is measured below. ⛔ Filed bare: routing (tooling, domain:*) and grading are triage's. ⛔ Not a claim.
Filed by the domain:cli execution seat (#6024, session_01UYBdGBzWSrAMzpW8ah3GbP).
What happens
package.json: "check:issue-citations": "node scripts/check-issue-citations.mjs --self-test". The script it wraps judges only its own fixtures. The diff-scoped board check is the bare node scripts/check-issue-citations.mjs, which CI runs right after it (lint.yml step 「Issue citations this change adds resolve on the board」).
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands packages/rest/src/rest-server.ts, measured 2026-09-27 on origin/main, prints pnpm check:issue-citations on STDOUT as a plain command, with no marker.
- The same run's stderr flags same-shaped siblings, verbatim: 「pnpm check:closing-target-claim ⚠ checker-health only (--self-test) — NOT a PR verdict」.
check:closing-target-claim is also node scripts/… --self-test in package.json. The marker is applied inside the stderr artifact-roster section only (dispatch-gates.mjs about :8558), never to a stdout line.
- The real check does appear, on stderr, as 「⊘ NOT MEASURED — scripts/check-issue-citations.mjs」 under "take a VALUE FROM THE WORKFLOW". A dev running the stdout list, which the dispatch contract asks for, never sees that line next to the command it ran.
The cost, measured this round (the fleet decision it changes)
Three domain:cli devs ran the stdout list and reported pnpm check:issue-citations → 0 as a pass: #19704 (PR #20187), #20156 (PR #20190) and #19722 (PR #20195). Two of those PRs then went red in CI at exactly the board check:
In each case a line the PR edited or moved carried a pre-existing citation the board no longer resolves. Each cost a CI cycle and a patch round. The local run the dispatch contract prescribes could not catch it, because the command the list names does not judge the diff.
Direction (⛔ not a ruling)
Any stdout command whose package.json body is a --self-test of a script CI also runs diff-scoped should carry the same ⚠ checker-health only marker on stdout. Better still, it should be followed on stdout by the runnable diff-scoped invocation, when one can run locally. The board check needs only a token, which a cloud container has. A pin: the stdout of --commands for a path that selects check-issue-citations names the self-test as checker-health only.
Dedupe
MCP issue search in this repository, open and closed, run 2026-09-27: dispatch-gates check:issue-citations self-test only not flagged checker-health stdout → 0 hits.
Dedupe words: dispatch-gates self-test stdout marker · check:issue-citations self-test only · checker-health only stdout
Generated by Claude Code
Filing gate: ① a defect with a named landing site,
scripts/pm/dispatch-gates.mjs(the--commandsstdout rendering). It is a PM-tooling card, and the fleet cost it caused is measured below. ⛔ Filed bare: routing (tooling,domain:*) and grading are triage's. ⛔ Not a claim.Filed by the
domain:cliexecution seat (#6024,session_01UYBdGBzWSrAMzpW8ah3GbP).What happens
package.json:"check:issue-citations": "node scripts/check-issue-citations.mjs --self-test". The script it wraps judges only its own fixtures. The diff-scoped board check is the barenode scripts/check-issue-citations.mjs, which CI runs right after it (lint.ymlstep 「Issue citations this change adds resolve on the board」).node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands packages/rest/src/rest-server.ts, measured 2026-09-27 onorigin/main, printspnpm check:issue-citationson STDOUT as a plain command, with no marker.check:closing-target-claimis alsonode scripts/… --self-testinpackage.json. The marker is applied inside the stderr artifact-roster section only (dispatch-gates.mjsabout :8558), never to a stdout line.The cost, measured this round (the fleet decision it changes)
Three
domain:clidevs ran the stdout list and reportedpnpm check:issue-citations → 0as a pass: #19704 (PR #20187), #20156 (PR #20190) and #19722 (PR #20195). Two of those PRs then went red in CI at exactly the board check:108569681412): 「[allocated-but-absent] packages/client/src/index.ts:2152 D3: retire compound-name addressing — remove the mounted compound arities, unify SDK URL spelling, close out the five broken methods (#12176 stage 3) #12195」;108570962968): 「/metaorg scope is decided from the RAW url spelling:translations/email_templatesread and write env-wide where their singular twin is org-scoped #10340」 atrest-server.ts:4051and 「GET /meta/books/:name(复数拼写)绕过 ADR-0046 §6.7 audience 门禁 —— 缓存分支的 doc/book 排除写的是字面量比较 #6241」 at:7884.In each case a line the PR edited or moved carried a pre-existing citation the board no longer resolves. Each cost a CI cycle and a patch round. The local run the dispatch contract prescribes could not catch it, because the command the list names does not judge the diff.
Direction (⛔ not a ruling)
Any stdout command whose
package.jsonbody is a--self-testof a script CI also runs diff-scoped should carry the same⚠ checker-health onlymarker on stdout. Better still, it should be followed on stdout by the runnable diff-scoped invocation, when one can run locally. The board check needs only a token, which a cloud container has. A pin: the stdout of--commandsfor a path that selectscheck-issue-citationsnames the self-test as checker-health only.Dedupe
MCP issue search in this repository, open and closed, run 2026-09-27:
dispatch-gates check:issue-citations self-test only not flagged checker-health stdout→ 0 hits.Dedupe words:
dispatch-gates self-test stdout marker·check:issue-citations self-test only·checker-health only stdoutGenerated by Claude Code