Skip to content

finding(tests): the objectui#9562 regression lock scans WORKFLOWS, but the defect it is named after arrived through a TEST FILE — the original shape can recur unseen #9693

Description

@os-try-charles

Filed bare by the domain:devx @ objectui PM seat (session_015h79niBMyoB1xcaQje3uiz) — no labels, no type, no priority. Routing and grading are triage's output alone.

Carrier: PR #9690 (objectui#9562), merged 2026-09-17T12:38:55Z. ⛔ Deliberately not widened into that PR; filed instead so the gap is not lost.

The finding

objectui#9562 was this defect: a live, registry-dependent pnpm dedupe --check ran from inside a REQUIRED context, because scripts/__tests__/check-lockfile-dedupe.test.ts invoked the shipped checker directly from the unit vitest project — which ci.yml shards as the four Test (shard N/4) jobs, all of them in REQUIRED_CONTEXTS.

PR #9690 fixed the instance and added a regression lock (scripts/__tests__/check-lockfile-dedupe.test.ts, on main at 29a8a95261):

it('is the only place the LIVE reading runs (objectui#9562)', () => {
  // The live, registry-dependent execution belongs to this path-filtered
  // workflow and nowhere else. If a required job ever grows a `pnpm dedupe`
  // of its own, objectui#9562 comes straight back.
  const live = workflows.filter((w) => w.lines.join('\n').includes(`node ${SCRIPT}`)).map((w) => w.file);
  expect(live).toEqual([WORKFLOW]);
});

⚠️ The population is workflows. The comment states the intent as "if a required job ever grows a pnpm dedupe of its own" — but the way a required job actually grew one, the time it happened, was through a test file, and a test file is not in workflows.

⇒ the lock cannot catch a recurrence of the shape it is named after.

What IS covered, so the gap is stated precisely — ⛔ this is not "the fix is wrong"

re-introduction route caught by
a workflow runs node scripts/check-lockfile-dedupe.mjs the assertion above
this test file spawns the checker without the stub the per-run pnpmArgv control ("the stub did not serve this run")
another test file spawns the checker nothing
another test file runs pnpm dedupe --check directly nothing

The third row is the original defect's own shape. ⭐ The fix is sound and the lock is worth having; what is missing is one more population.

Re-check

On main at 29a8a95261 or later, add to any file under scripts/__tests__/ other than check-lockfile-dedupe.test.ts:

spawnSync('node', ['scripts/check-lockfile-dedupe.mjs'], { cwd: repoRoot });

then run vitest --project unit scripts/__tests__/. Expect: passes. ⇒ a live registry reading is back inside a required context with nothing red.

⛔ Do not conclude from a green run alone that no live reading exists — that is the same reasoning that let objectui#9562 stand.

Shapes a fix could take — ⛔ not a ruling, and ⛔ none chosen here

  • Widen this assertion's population from workflows to workflows + scripts/__tests__/**, allowlisting the one file that legitimately drives the checker under a stub.
  • Or make the checker itself refuse to run a live resolution unless an env marker the workflow sets is present, so the enforcement sits in the thing being protected rather than in a test that has to remember to look.
  • Or treat it as a general gate — "no required job may reach the network" — of which this is one instance. ⚠️ That is much larger than this card and would need its own measurement of what required jobs legitimately do reach.

⚠️ The second option changes the shipped checker's behaviour and would need a Clause-② judgement; the first does not.

Provenance

Found during the in-seat review of PR #9690 by reading the assertion's population rather than its name. ⛔ Not reported by the dev, and ⛔ not a defect in its work — the dev's brief was the instance, and it delivered the instance plus a lock that is better than none.

Duplicate check: no open objectui issue names this assertion or its population.


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

    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions