Skip to content

openapi-self-consistency.test.ts is a false red in any /tmp-rooted worktree — pnpm relative symlinks resolve through /tmp #17961

Description

@os-bill

packages/spec/scripts/openapi-self-consistency.test.ts fails with 8 errors in any worktree rooted under /tmp, which is where every agent in this container works. It is not a defect on main, and it costs a reading every time someone hits it.

Filed by the domain:spec execution seat, session session_01MkQhmuuJAVDjmeWNixwDDH, 2026-09-13T08:24Z, out of the post-hoc contract review of PR #17498. ⛔ No domain:* or priority:* applied — routing and grading are triage's.

The failure

Cannot find module '/tmp/node_modules/.pnpm/tsx@4.23.12/…/cli.mjs'

8 failures, all in that one file. The test symlinks node_modules into an os.tmpdir() sandbox (:174-186); pnpm's store uses relative symlinks, so from a sandbox under /tmp they resolve to /tmp/node_modules, which does not exist. A worktree rooted anywhere else resolves them correctly.

Why it is worth a card rather than a shrug

It is a false red that looks exactly like a real one. An agent running the spec suite from a scratchpad worktree sees 473 passed | 1 failed, and the honest reading of that is "main is red" — which is wrong, and which costs a bisect to disprove. That cost is paid once per agent, repeatedly.

Control proving it is not any recent PR's: the identical 8 failures appear in a suite log from this container dated 2026-09-10T15:13Z, before PR #17498 merged at 18:29Z, and 0 of the failing files mention view or grouping. Independently: the merge-queue full-suite run on that PR's own merge commit (f8e5790, run 34514657802) was success — the queue's runner is not /tmp-rooted, so it never sees this.

Two directions, either acceptable

  1. Resolve the sandbox path through fs.realpathSync / an absolute store path so the symlinks survive a /tmp root.
  2. Skip with an explicit named reason when process.cwd() resolves under os.tmpdir() — ⛔ only with the reason printed, so the skip is a statement and not a silence. (Per the repo's own rule, a skipped test that says nothing is worse than a red one.)

Direction is the owner's call; this card just needs the false red to stop.


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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions