You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: repo-scanning tests move out of the heavy packages' test tasks into one repo-conformance task so package suites become cacheable again (maintainer-directed, measure-first) #16466
Filed by the skills lane seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on the maintainer's direction, 2026-09-07T02:5xZ, and dispatched by the same seat on that direction. Surface owner stays domain:devx.
Authority (maintainer, verbatim, live PM chat 2026-09-07): 「同意你的建议,你负责执行派发所有可行的优化」, after the seat measured why docs-only merges still run 15–20-minute shards in the queue.
What
The repo-scanning tests — the ones whose declared inputs are the whole repository — leave the heavy packages' test tasks and run once per CI run as their own task, so @objectstack/spec, core, types, runtime, objectql and rest become cacheable again and a change outside a package no longer re-runs that package's whole suite.
Measured
turbo.json declares $TURBO_ROOT$ inputs 169 times. @objectstack/spec#test lists packages/**/*.ts, content/**, skills/**, scripts/** and more; core#test, types#test, runtime#test, objectql#test list packages/**/*.ts; rest#test lists content/**, docs/**, skills/**. Any .ts or docs change anywhere invalidates those five or six suites — the largest in the repo (spec alone 11,420 cases).
If the scanning files are at most ~60 and separable (they import from their package's public entry or from the repo, not from private internals), move them into one task — a repo-conformance vitest project (home to be measured: packages/qa or a root-level project) that owns the wide inputs and runs once per CI run as its own Test Core item; the packages' test tasks then keep package-local inputs plus their dependency graph, and the cross-package registry keeps its gate over the new home. If the files are more numerous or entangled with package internals, stop after the table and report options with a recommendation on the four axes.
Nothing about what the tests assert changes; no test is deleted; the registry gate stays green under the new layout.
Clause-②: yes — what CI verifies per package at merge time changes shape. Contract tier.
Acceptance
The table from step 1 in the PR body; turbo cache hit rates before/after for a docs-only change and a leaf change, measured locally (turbo run test --dry-run=json shows the cache status per task).
check-cross-package-test-inputs green; partition-test-shards --self-test green with the new item present.
Filed by the skills lane seat (session
session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on the maintainer's direction, 2026-09-07T02:5xZ, and dispatched by the same seat on that direction. Surface owner staysdomain:devx.Authority (maintainer, verbatim, live PM chat 2026-09-07): 「同意你的建议,你负责执行派发所有可行的优化」, after the seat measured why docs-only merges still run 15–20-minute shards in the queue.
What
The repo-scanning tests — the ones whose declared inputs are the whole repository — leave the heavy packages'
testtasks and run once per CI run as their own task, so@objectstack/spec,core,types,runtime,objectqlandrestbecome cacheable again and a change outside a package no longer re-runs that package's whole suite.Measured
turbo.jsondeclares$TURBO_ROOT$inputs 169 times.@objectstack/spec#testlistspackages/**/*.ts,content/**,skills/**,scripts/**and more;core#test,types#test,runtime#test,objectql#testlistpackages/**/*.ts;rest#testlistscontent/**,docs/**,skills/**. Any.tsor docs change anywhere invalidates those five or six suites — the largest in the repo (spec alone 11,420 cases).scripts/cross-package-test-inputs.mjsis the registry of tests that read outside their package (117 rows), andcheck-cross-package-test-inputs.mjskeeps turbo's inputs equal to it (mainis red for every PR that touchespackages/spec: #7769 gavesys_api_keyupdatewithoutbulk, and the conformance scan that catches it lives in a package #7769 never touched #7802). The cost is structural, not a mistake: package-scoped caching cannot work while repo-scanning tests live inside package suites.Ruling — measure first
vitest runof those files, or the per-file report from ci: every Test Core run publishes the slowest test files and packages beside their pinned weights (maintainer-directed, part B measurement) #16454 once it exists) and the share of its package's suite time. Report the table before any edit.repo-conformancevitest project (home to be measured:packages/qaor a root-level project) that owns the wide inputs and runs once per CI run as its own Test Core item; the packages'testtasks then keep package-local inputs plus their dependency graph, and the cross-package registry keeps its gate over the new home. If the files are more numerous or entangled with package internals, stop after the table and report options with a recommendation on the four axes.Acceptance
turbo run test --dry-run=jsonshows the cache status per task).check-cross-package-test-inputsgreen;partition-test-shards --self-testgreen with the new item present.Refs #16173, #16453.
Generated by Claude Code