Skip to content

[finding] Two repo-wide corpus gates walk .cache/objectui-*, so every console pin bump goes red on objectui's files — and one of them tells the operator to fix js-comment-mask.mjs #15557

Description

@claude

Found while bumping the console pin (#15422 / PR #15554). ⛔ Unassigned, unlabeled — awaiting triage first-touch grading. Filed rather than fixed: a pin bump takes no riders, and which of the directions below is right is the gate owner's call.

The behaviour, measured in both directions on 2026-09-04

scripts/build-console.sh materialises objectui at the pinned SHA into .cache/objectui-SHA/ — a full checkout with node_modules, gitignored (.gitignore:42), created by every pin bump because the console cannot be built without it. Two repo-wide corpus gates walk it and go red on objectui's files:

gate with the build worktree present after git worktree remove of it
node scripts/check-comment-mask-corpus.mjs exit 1 — 10205 files, 1 disagrees: .cache/objectui-SHA/apps/console/src/pages/DocsIndex.tsx, fabricates=0 over-masks=1517, first at line 63 exit 0 — 5936 files, 0 disagree, 0 unparseable
pnpm check:agent-test-spelling exit 1 — 1 violation at .cache/objectui-SHA/AGENTS.md:188 (objectui's own doc teaching pnpm --filter (pkg) test -- --run) exit 0 — 0 violations, 447 files, 9 separators judged

Same tree, same commit, nothing else changed between the two columns.

Why it is worth a card

  1. It lands on whoever bumps the pin, every time. The two reds appear in the derived gate set of a diff whose four paths are .objectui-sha, a changeset and two JSON provenance records — a change set that cannot cause either finding. An operator who does not happen to know the cache is there reads two reds against their own PR.
  2. One of them instructs the reader to change the wrong thing. check-comment-mask-corpus states, correctly for its own domain: "A disagreement is a defect in scanSource, not in the file … Pin the shape in js-comment-mask.mjs's --self-test". Sourced from a foreign tree, that instruction sends a pin-bumping agent to edit this repo's masker on the strength of an objectui page it has no stake in. (Whether the over-mask on that page IS a real scanSource shape worth pinning is a separate question this card does not answer — it may well be, and that would be a second card, not a reason to keep walking .cache/.)
  3. CI never sees it, which is why it has survived: the lint job does not build the console, so .cache/ is absent there. Every instance is local, on the one workflow that must create the directory.

Direction candidates (⛔ not deciding here)

  1. Exclude .cache/** in the corpus walkers themselves (they already exclude node_modules; the same class of "not our source").
  2. Make the walkers honour .gitignore — wider, and it would cover the next vendored tree nobody has thought of yet.
  3. Leave the walkers and document the deletion step in the pin-bump procedure — the weakest, since it relies on the operator reading a doc while looking at a red gate.

Direction 1 or 2 also removes ~4300 foreign files from a sweep that takes 103.7s with them and 85.2s without.

Dedup

Read 2026-09-04 over all 568 open issues (REST list endpoints; /search/issues is 403 on this seat), grepping title + body for .cache/objectui, comment-mask-corpus, agent-test-spelling, js-comment-mask. Twelve cards mention one of those tokens; none describes a gate walking the pin-bump build worktree — the nearest, #15341, is about gates that declare no path being scored silent by dispatch-gates, a different question. Control leg on the same corpus: "corpus" appears in 41 open issues.

Refs: #15422 · PR #15554 · scripts/build-console.sh · scripts/check-comment-mask-corpus.mjs · scripts/check-agent-test-spelling.mjs.


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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions