Repository navigation
Conversation
|
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
View your CI Pipeline Execution ↗ for commit 3335538
☁️ Nx Cloud last updated this comment at |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
🚀 Changeset Version PreviewNo changeset entries found. Merging this PR will not cause a version bump for any packages. |
Bundle Size BenchmarksThis pull request does not affect bundle size in any measured scenario. |
🎯 Changes
Run a full-cache-bust CI timing experiment without the six task-packing/assignment environment flags added in #8807. Remove their obsolete comment and set a unique
nx.jsonbust value;nx.jsonis insharedGlobalsfor cacheable targets.Compare this run with #8807 at 29be168, its current non-Ultracache head. Nx 24.0.0, task-based affected selection, application code, worker allocation,
NX_CLOUD_ACCESS_TOKEN, andSERVER_PRESETare unchanged from that commit. Ultracache remains disabled. This branch starts from that commit; the experimental delta is limited to.github/workflows/pr.ymlandnx.json.The first #8807 head (
9cd1fa67ed, run 40129619367) is a separate, confounded historical baseline: it used Ultracache and legacy affected selection. That run was green: Test 14m04s (Run Checks 11m59s, Nx startup 36s, tool setup 1m07s), Preview 5m10s. Do not use it for the controlled comparison.AI disclosure: implemented and validated with Codex assistance. This is a draft experiment; do not merge either PR as part of this comparison.
Validation: Node 26.12.1, pnpm 11.21.0; frozen-lockfile install,
pnpm format, targeted Prettier checks, parsed workflow/JSON and exact-delta assertions, shared-input coverage, andgit diff --check. Application tests do not apply to this configuration-only experiment.✅ Checklist
🚀 Release Impact
Timing comparison
Both runs use Nx 24, task-based affected selection, a fresh workspace cache bust, and the same code/worker configuration.
29be168): Test job 12m 09s, Run Checks 10m 37s, Nx execution 10m 26s; passed.122292b): Test job 11m 52s, Run Checks 10m 44s, Nx execution 10m 35s; failed.Failure:
tanstack-react-start-e2e-hmr:test:e2e--vite-ssr, “picks up latest child loader when navigating after multiple HMR saves”:page.waitForFunctionexceeded 20 seconds (tests/app.spec.ts:919, helper at line 376). The run completed 863 tasks successfully, failed one, and skipped its dependent aggregate task. No retry or test change was made, and the failure is not attributed to the environment flags.With-flags run · Without-flags run
Cache caveat: the with-flags Test run reported 41 cache hits, while the no-flags Test run reported 14. All 41 cached task names match package builds executed as cache misses by the parallel Preview job in the with-flags workflow. This is consistent with same-workflow cache warming, even though the initial hashes were busted. Therefore these are not equivalent cold-cache Test runs, and the timing comparison cannot isolate the flags. The reported task totals also differ (875 versus 865); no speedup conclusion is established.
Controlled follow-up
Fresh cache bust on both PRs, with
NX_NO_CLOUD=trueon Preview so it cannot warm the distributed Test cache. Test/Preview check out the exact PR head, and Test uses the same fixed base (6b9fe6d29552270836c511bc9b343d73541f4424) to prevent main-branch changes from altering the workload. The six task-packing flags remain the only workflow difference between the two PRs.Nx Cloud Public API investigation of the previous runs: complete lists for 2 CIPEs, 2 run groups, 4 runs, 32 workers, and 1,740 task records, scoped to 2026-10-24 20:45–20:55 UTC. Both distributed runs used 16
linux-medium-jsworkers. Recorded task intervals show ~345 aggregate worker-seconds above three simultaneous noncached tasks with flags, versus ~7 without; this is evidence of increased concurrency, not proof of scheduler configuration or a speedup. E2E tasks account for about 55%/50% of aggregate recorded task time. Local resolved e2e targets setparallelism: false, which may limit the benefit; this hypothesis needs the controlled follow-up.Clean comparison results
Both runs succeeded with zero cache hits and the same 856 unique task IDs. Checkout and Run Checks logs confirm exact branch-head checkouts and the common
NX_BASE; the CIPE VCS metadata still reports each PR’s natural merge base.9d5d9cc): Test job 12m 57s; Run Checks 11m 34s; Nx command 11m 26s. CIPE.3335538): Test job 12m 54s; Run Checks 11m 37s; Nx command 11m 18s. CIPE.The Public API returned 880/868 task execution records, with the same 856 unique task IDs. The differing totals are multiple batch records for hydration benchmark builds, not different sets of selected tasks. For concurrency analysis, exclude both hydration build IDs that have repeated records in either run, cache hits, and intervals <=0.2s. With flags, 15 of 16 workers reached 4–7 overlapping tasks and accumulated 304.2 worker-seconds above concurrency three. Without flags, every worker peaked at three, with zero worker-seconds above three. This supports packing changing execution concurrency; it does not establish a performance benefit.
E2E accounts for about half the remaining recorded task time; locally resolved E2E targets and their application builds use
parallelism: false. This is a plausible constraint on the benefit, not a proven explanation of the entire wall time. One clean run per configuration shows no meaningful improvement and is insufficient to generalize. No retries, test fixes, or further scheduler changes were applied.API coverage: CIPEs created 2026-10-24 21:00–21:25 UTC, filtered to these two PRs; returned links followed through run groups and completed distributed runs; complete task pagination (2 pages each, final cursor null), 1,748 task records total. The no-flags worker-list endpoint temporarily returned
409 not_terminalduring workflow shutdown; the task-record comparison above uses the completed runs and does not depend on that unavailable worker resource data.