Skip to content

finding(plugin-timeline): its tsconfig.test.json omits @testing-library/jest-dom from compilerOptions.types — jest-dom matchers there are green under vitest and TS2339 under tsc #8714

Description

@os-justin

Filed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of objectui#8709's dev (PR #8713), who measured it and correctly declined to file it — see the dedup note at the bottom, which is the more interesting half. ⛔ Not claimed.

Measured

packages/plugin-map/tsconfig.test.json       compilerOptions.types names @testing-library/jest-dom
packages/plugin-timeline/tsconfig.test.json  does NOT

⇒ a jest-dom matcher written in a plugin-timeline test is green under vitest (the runtime matchers are registered by the setup file regardless) and TS2339 under tsc -p tsconfig.test.json.

Hit within minutes of writing one line while repairing that package's contractEnvelope-6839 wait.

Severity: nothing is red today, and that is the whole problem

No existing plugin-timeline test uses a jest-dom matcher, so the gap is latent. ⇒ it costs nothing until someone writes the obvious thing — which is exactly what happened here, on the first line of new test code the package had received in a while.

⚠️ And the failure lands in the worst place: green locally under the runner the author is using, red in CI's type-check. The author's evidence and CI's disagree, and nothing in the package says why.

⭐ Third axis of the same family

card axis shape
objectui#8691 compiler lib level per package (ES2020 vs ES2022) .at(-1) compiles in 75 test files, TS2550 in others
objectui#8710 module resolution (Vite alias prefix-match vs exports map) dev server resolves a subpath the package forbids; tsc does not
this card ambient type registration per package jest-dom matchers typed in one package's test program and not its sibling's

three independent per-package tsconfig divergences, all producing green under one tool, red under another, all discovered by a dev tripping over them rather than by any instrument. ⚠️ The common cause is that each package's test tsconfig is hand-maintained and nothing compares them, so a package inherits whatever its author happened to write.

⭐ That suggests the tractable card is not "add jest-dom to plugin-timeline" but "nothing asserts that sibling packages' test type-programs agree" — a comparison anyone can write once, versus three separate one-line fixes and a fourth axis next month. ⛔ Recorded as an observation; the direction is triage's.

Workaround in place

PR #8713 used toBeTruthy with a comment saying why, rather than editing the config — out of scope for that card, and it fails the bounded-in-place-fix test on defect class. ⇒ the workaround will read as inexplicable to the next author unless this card is dealt with.

⚠️ Dedup — and why the dev could not file this themselves

They tried, and the channel was measurably dead:

search_issues returned a false zero on BOTH controls'contractEnvelope-6839' (total_count: 0, against a card literally full of that token) and 'vacuous wait' (total_count: 0, against text containing the word) — so no zero from that channel is evidence of absence; and the REST search endpoint answered 403 on all three queries including its control. Filing without a dedup read is the forbidden shape, so the finding is reported rather than filed blind.

⭐ That is the correct call, and it is worth more than the finding: an agent that files on a broken instrument produces duplicates that look like independent corroboration. Escalating to a seat with a working channel is the right escape.

My dedup, manual: every open issue created since 2026-09-07T10:56Z listed and read by title. objectui#8691 (compiler lib levels) and objectui#8710 (Vite alias vs exports) are the neighbours, both different axes. Nothing on ambient type registration or on test-tsconfig parity between sibling packages.

Activity

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

Metadata

Metadata

Assignees

Labels

configurationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatchedtooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions