Skip to content

test(lint): compute the SYSTEM_FIELDS live census once per file, under its own hook timeout - #19813

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-19807-lint-census-timeout
Sep 23, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-19807-lint-census-timeout

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #19807

Clause-②: no

What is red and why

The hourly full run on main (run 35829772446, Test Core (2/6) on de4ed33f) failed on exactly one test: packages/lint/src/system-fields-consumers.test.ts:586 (the #8999 SYSTEM_FIELDS consumer census, 「the live population › is anchored to a real export…」) — Error: Test timed out in 5000ms. The shard then stopped and six scheduled packages never ran. The same failure, same shard, same test, is the only red in the last 100 hourly runs (09-21 04:01Z, 09-21 16:00Z, 09-23 07:03Z); no commit between the last green run (fae870352) and the red head touches packages/lint/**, and the file is green on PR shards, where @objectstack/lint runs with few neighbours.

Cause, read from the file: liveSources() reads every .ts under packages/lint/src (201 files) and censusUnionConsumers parses each with the TypeScript compiler (setParentNodes: true); the six live tests each recomputed that whole census under vitest's default 5,000 ms per-test wall, and the cold run crossed it on a loaded full-battery shard (13 packages, --concurrency=4 on 4 vCPUs).

What changed

One file, test-only: the live census is computed ONCE per file in a beforeAll that carries its own explicit timeout (60,000 ms, sized from the measured cold run of ~1 s on a quiet box with headroom for a contended shard), and the six live tests read that one result. censusUnionConsumers, liveSources(), the LEDGER rows, the PROVENANCE_API pin and every assertion are unchanged; no walk is narrowed, no test skipped, no file-wide or package-wide testTimeout raised.

Verification

  • Branch pushed by the dispatched dev (session_01XPUwWGnmky4PXPofNsf2w7); its report with the measured before/after durations follows on hourly full run: red on main (CI) #19807.
  • CI on this head is the judge: Test Core shards (the @objectstack/lint package suite), Lint & Repo Gates, type checks.
  • Not governed (packages/lint/src/** is on no register surface); ordinary queue landing after the dispatching seat's ACCEPT.

Related, not changed here: #16465 / #16468 (shard-duration alarm and per-package suite-duration ratchet, pm:queue in domain:devx), and ten other test files that walk directories or parse with the TypeScript compiler under the default wall (cli ×5, spec ×4, service-analytics ×1) — none has gone red; the same one-computation shape applies if one does.

🤖 Generated with Claude Code

https://claude.ai/code/session_0129ZpnaBcYZZ51rCvQiXg6C

…r its own hook timeout

`liveSources()` reads every `.ts` under `packages/lint/src` (200 at this
head) and `censusUnionConsumers` parses each one with the TypeScript
compiler; the file recomputed that census inside each of its six live
tests, so the cold computation ran under vitest's default 5,000 ms
per-test wall and crossed it on a loaded CI shard.

One `beforeAll` at the top of the file's describe now fills a
module-level `live` census once, with an explicit 60 s hook timeout
sized from the measured cold run (about 1 s on a quiet box), and the
six tests read that one result. The walk, the analyzer, the LEDGER
rows, the PROVENANCE_API pin and every assertion are unchanged.

Claude-Session: https://claude.ai/code/session_01XPUwWGnmky4PXPofNsf2w7
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 23, 2026
@github-actions github-actions Bot added the tests label Sep 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 502f179cc70f82c5a5c54783100736e7d4da8d44 → packageMentionDocs.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review September 23, 2026 08:18
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Sep 23, 2026
Merged via the queue into main with commit 492598e Sep 23, 2026
40 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-19807-lint-census-timeout branch September 23, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

hourly full run: red on main (CI)

1 participant