Skip to content

[finding] dispatch-gates --commands prints pnpm check:issue-citations (a --self-test-only script) on stdout with no checker-health marker; 3 devs read it as a diff pass this round and 2 PRs went red in CI #20198

Description

@objectstack-fleet

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions