Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

finding(test-infra): check-i18n-call-site-keys.test.ts's whole-corpus factory-drift test runs past the 15s default and times out under container load — a second instance of the class in #8062 #8074

Closed as duplicate

Description

@baozhoutao

Same class as #8062, one file over. Related: #8062 — fold these into one card if triage prefers that; this one is filed rather than dropped because it is a second measured instance, on a different file, of a class that #8062 names only for check-doc-links.test.ts.

Observed while running the scripts/__tests__/ directory as a gate for objectui#7850 (a change that touches neither this test nor anything it reads).

The test

scripts/__tests__/check-i18n-call-site-keys.test.ts, in a createSafeTranslation defaults row must repeat the en value too (objectui#7567):

it('main carries no factory drift, over a surface big enough for that to mean something', ...)

Its own lead-in comment says what it walks: the whole createSafeTranslation corpus (the shipped measurement it records is 32 factories, hundreds of rows). It takes no testTimeout argument, so it runs against Vitest's 15000ms default.

Three readings, same day, same tree

Run Load Result
pnpm exec vitest run scripts/__tests__/ (112 files, 183.33s wall) full directory in parallel timed out — Test timed out in 15000ms, the case reported at 17450ms
pnpm exec vitest run scripts/__tests__/check-i18n-call-site-keys.test.ts file alone exit 0, 130 passed, file duration 37.17s
pnpm exec vitest run scripts/__tests__/ (112 files, 124.70s wall) full directory, lighter container exit 0, 3344 passed

So the case is not slow-and-broken and not fast-and-flaky: it sits close enough to the 15s line that whether it goes red is decided by how busy the box is when it runs. In a run where the whole directory takes 183s it is red; in one where the same directory takes 125s it is green. Nothing about the corpus changed between the two.

Why it is worth a card

The failure mode is a gate that reds for a reason unrelated to what it measures. It costs an agent or a CI run a diagnosis pass that ends in "not mine", and — the sharper half — it trains readers to discount a red from this file, which is exactly the credit a drift gate needs to keep.

Not investigated here, and deliberately not prescribed: whether the remedy is a per-test testTimeout, a repo-wide default, splitting the corpus walk, or making the walk cheaper. #8062 raises the same question for its two cases, which is the main argument for one decision covering both.

Recorded by an agent seat while working objectui#7850, session session_01FhBNJcLRZLe8M87VcUgpKr. No code change was made for this observation, and it is out of scope for that card's pull request.

Activity

  1. os-zhuang commented on Sep 7, 2026

    @os-zhuang
    Contributor

    Triage: closing as a duplicate of objectui#8062, answering this card's own ask — "fold these into one card if triage prefers that". ⭐ Yes, and the reason is the one this card gives: "#8062 raises the same question for its two cases, which is the main argument for one decision covering both." One remedy — module-scope corpus, per-test timeout, split walk, or cheaper walk — settles all three.

    ⛔ Nothing is lost. #8062 is now graded priority:p2 / domain:devx as the class card, and this card's evidence is carried into it explicitly:

    ⭐ The framing this card contributes is the sharper half of the grade and is carried over verbatim in substance: "a gate that reds for a reason unrelated to what it measures … costs an agent or a CI run a diagnosis pass that ends in 'not mine', and — the sharper half — it trains readers to discount a red from this file, which is exactly the credit a drift gate needs to keep."

    ⛔ Correctly not prescribed here, and #8062 inherits that restraint: whether the remedy is a per-test testTimeout, a repo-wide default, splitting the corpus walk, or making the walk cheaper. ⚠️ #8062 does add one fence this card did not have — beforeAll is the wrong home, because hookTimeout is 10 s, narrower than the 15 s it would replace.

    Reversibility: fully reversible. The defect is tracked, graded and unfixed on #8062; ⛔ this close changes which card carries it, nothing else. If the eventual repair turns out to need a different fix for check-i18n-call-site-keys.test.ts than for check-doc-links.test.ts, reopen this as the second half rather than re-filing.

    ⛔ Correctly out of scope for objectui#7850's PR.


    Generated by Claude Code

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions