We don't believe this is caused by our AST-cloning refactor: the 10 failures span unrelated React/Solid/Vue e2e apps with three distinct pre-existing causes (a Babel-loader config error, a missing generated RSC virtual module, and unrelated snapshot/timing assertions), none of which reference the two files this PR actually touches. This looks like pre-existing infrastructure breakage rather than something this PR introduced.
Self-Healing CI
An empty commit was applied to the branch to trigger a new CI pipeline execution to resolve the environment issue.
All 10 failing tasks had present, non-empty output, so there was real evidence to work from rather than a bail-out situation.
Reading through each failure showed the same pattern: the errors are scattered across many unrelated e2e example projects (solid-start-basic, vue-start-basic, react-start-rsc, react-start-rsc-rsbuild, solid-start-deferred-hydration, react-start-rsbuild, solid-start-start-manifest, react-start-rsc-deferred-hydration, react-start-rsc-query), and they fall into three distinct, unrelated root causes:
A Babel config validation error (".inputSourceMap must be a boolean, object, or undefined") thrown deep inside @babel/core's config loader, surfaced through the rsbuild/webpack babel-loader chain on the Solid and Vue basic apps.
An ENOENT for a missing generated file ('.../node_modules/.virtual/virtual_tanstack-rsc-runtime.js'), with downstream browser errors referencing the same missing '\x00virtual:tanstack-rsc-runtime' module — a virtual-module generation problem in the RSC build pipeline.
Assertion/snapshot-text mismatches with no connection to AST content at all: an error-overlay test expecting an older SyntaxError wording versus a newer parser's wording, and a CSS border-color check that received an empty string during a hydration/navigation timing window.
None of these errors name or trace into cloneAst, cloneModuleAst, cloneGeneratedNode, originalNodes, copiedNodes, or createOutput — the exact functions this PR modifies in packages/router-utils/src/ast.ts and packages/router-plugin/src/core/code-splitter/compilers.ts. The touched_projects list (root, @tanstack/router-plugin, @tanstack/router-utils) also doesn't include any of the failing e2e app projects.
A narrow, two-file clone/provenance refactor — backed by the PR's own validation evidence of 567/567 byte-identical splitter outputs, zero bundle-size deltas across 18 scenarios, and 139 passing production browser tests — would not plausibly produce a Babel-loader config crash, a missing RSC virtual-module file, and unrelated snapshot-wording drift simultaneously across three different UI frameworks. That combination is a much stronger signal of shared, pre-existing infrastructure problems than of a regression from this change.
A background similar-task-failure-detector check was run to try to corroborate this against another branch, but it returned an empty result set (no comparison branch had actually been supplied for this task), so it neither confirmed nor contradicted the conclusion. The classification therefore rests on direct log analysis — the failure content never touches the changed code paths, and the changed projects exclude every failing task's project — rather than on inferring root cause from the diff alone.