Skip to content

[finding] dispatch-gates' reconciliation line enumerates what sits OUTSIDE the runnable total and omits two blocks it printed itself — the WIDE-population block and the artifact rosters #16398

Description

@os-litant

Measured

node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack, run twice today from a worktree on claude/issue-16025-hono-auth-mount-basepath.

The Reconciliation block ends with the sentence that tells a harvester what its total does not cover:

⛔ 87 is what THIS CARD owes by path and kind — NOT a complete account of what CI runs on
the PR. The pending-changeset families, the unreachable listing and the always-runs tail
below are each OUTSIDE it, each with its own count.

It names three outside blocks. The same run prints five. The two it does not name are:

  • Artifact rosters — 37 famil(ies)
  • Declared WIDE population — 9 famil(ies) (10 on a diff that does not touch a gate script)

Both print their own count and their own heading, exactly like the three that are named.

Why this is not cosmetic — it cost a CI round trip, measured

The WIDE block's own text already says the right thing:

… so no path of yours can narrow them and their absence from the matched block above is
NOT a clearance.

But a harvester who follows the reconciliation line's enumeration never reaches that text, because the reconciliation line is the thing that says "here is what else you owe".

That is what happened on PR #16380 (round 1). The implementer reported the union derived twice, Reconciliation — 68 famil(ies), all 68 green, plus the 37 artifact rosters, plus a whole-repo pnpm lint at exit 0. CI then failed on Lint & Repo Gatescheck:wildcard-fallthrough, on a defect that diff introduced (it renamed a wildcard mount and left the MOUNTS ledger declaring the old spelling).

Re-derived on that diff's paths: check:wildcard-fallthrough was not in the 68. It was printed, in the Declared WIDE population block — one of the two the reconciliation line omits. The derivation was not blind to the gate; the line that tells you where else to look did not point at the block that named it.

The rosters block is in the same position and is only saved today by seats hand-carrying the instruction ("the Artifact rosters block sits outside that total and must be run, not read as silence") in their dispatch briefs — i.e. by prose outside the tool.

Shape of the class

#13642 fixed the inside-the-total version of this: a harvest that stopped at one of the two sections that make up the total. The reconciliation line now enumerates those explicitly and it works. This is the same failure one level out — the enumeration of what sits outside the total is itself incomplete.

Not measured here

Suggested remedy (not prescriptive)

Add both blocks to that sentence's enumeration, with their counts, in the same shape as the three already there. The blocks themselves need no change.

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