test(code-splitting): cover entries-aware strict init cycle#10307
Merged
graphite-app[bot] merged 1 commit intoJul 17, 2026
Merged
Conversation
This was referenced Jul 15, 2026
Member
Author
How to use the Graphite Merge QueueAdd the label graphite: merge-when-ready to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Member
|
I guess you should swap the order of impl and test ? Or is it intentional? |
Member
Author
Intentional. There're here to verify that the new implementation solve these issues. |
IWANABETHATGUY
approved these changes
Jul 17, 2026
Member
Author
Merge activity
|
graphite-app
Bot
changed the base branch from
codex/vite-chunk-execution-order-plan
to
graphite-base/10307
July 17, 2026 08:41
graphite-app Bot
pushed a commit
that referenced
this pull request
Jul 17, 2026
## Summary - Add a three-entry regression fixture for the `strictExecutionOrder` failure caused by entries-aware manual code splitting. - Exercise both strict modes: on-demand planning and the wrap-all control. - Execute the generated `admin`, `theming`, and `personal` entries and assert entry isolation, dependency side-effect order, and the imported `PaletteIcon` value. ## What this proves The source module graph is acyclic: ```text personal -> app-personal -> palette-icon admin -> app-admin theming -> app-theming ``` The manual group selects only the three `app-*` modules. `entriesAware` first separates them by entry reachability, then the large merge threshold combines those small subgroups into one common chunk. `palette-icon` remains in the personal entry implementation chunk because recursive dependency capture is disabled. That placement creates a static output cycle: the common app chunk imports `PaletteIcon` from the personal chunk, while the personal chunk imports `app-personal` from the common chunk. Starting with `admin` or `theming` therefore enters the personal chunk before the common chunk has finished evaluating. The previous strict wrapper form assigned `init_app_personal` from a `var` initializer, so the cycle could call it while it was still `undefined`. The new strict implementation emits a callable declaration-form wrapper. This fixture keeps the output cycle intact and verifies that both on-demand and wrap-all execute all three entries with the original source semantics. ## Validation - `CARGO_TARGET_DIR=/tmp/codex-rolldown-pr10104-target just t-run crates/rolldown/tests/rolldown/issues/10259/_config.json` (twice; snapshot-stable) - The same fixture fails on the pre-implementation `main` baseline in both strict modes with `init_app_personal is not a function` - `just lint-node` - `just lint-repo` - `git diff --check` Closes #10259.
graphite-app
Bot
force-pushed
the
codex/issue-10259-entries-aware-strict-init-cycle
branch
from
July 17, 2026 08:57
2f754b0 to
5f93fce
Compare
graphite-app
Bot
changed the base branch from
graphite-base/10307
to
codex/issue-10265-circular-init-order-test
July 17, 2026 08:57
graphite-app
Bot
changed the base branch from
codex/issue-10265-circular-init-order-test
to
main
July 17, 2026 09:32
## Summary - Add a three-entry regression fixture for the `strictExecutionOrder` failure caused by entries-aware manual code splitting. - Exercise both strict modes: on-demand planning and the wrap-all control. - Execute the generated `admin`, `theming`, and `personal` entries and assert entry isolation, dependency side-effect order, and the imported `PaletteIcon` value. ## What this proves The source module graph is acyclic: ```text personal -> app-personal -> palette-icon admin -> app-admin theming -> app-theming ``` The manual group selects only the three `app-*` modules. `entriesAware` first separates them by entry reachability, then the large merge threshold combines those small subgroups into one common chunk. `palette-icon` remains in the personal entry implementation chunk because recursive dependency capture is disabled. That placement creates a static output cycle: the common app chunk imports `PaletteIcon` from the personal chunk, while the personal chunk imports `app-personal` from the common chunk. Starting with `admin` or `theming` therefore enters the personal chunk before the common chunk has finished evaluating. The previous strict wrapper form assigned `init_app_personal` from a `var` initializer, so the cycle could call it while it was still `undefined`. The new strict implementation emits a callable declaration-form wrapper. This fixture keeps the output cycle intact and verifies that both on-demand and wrap-all execute all three entries with the original source semantics. ## Validation - `CARGO_TARGET_DIR=/tmp/codex-rolldown-pr10104-target just t-run crates/rolldown/tests/rolldown/issues/10259/_config.json` (twice; snapshot-stable) - The same fixture fails on the pre-implementation `main` baseline in both strict modes with `init_app_personal is not a function` - `just lint-node` - `just lint-repo` - `git diff --check` Closes #10259.
graphite-app
Bot
force-pushed
the
codex/issue-10259-entries-aware-strict-init-cycle
branch
from
July 17, 2026 09:33
5f93fce to
2db2079
Compare
✅ Deploy Preview for rolldown-rs canceled.
|
graphite-app
Bot
deleted the
codex/issue-10259-entries-aware-strict-init-cycle
branch
July 17, 2026 09:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
strictExecutionOrderfailure caused by entries-aware manual code splitting.admin,theming, andpersonalentries and assert entry isolation, dependency side-effect order, and the importedPaletteIconvalue.What this proves
The source module graph is acyclic:
The manual group selects only the three
app-*modules.entriesAwarefirst separates them by entry reachability, then the large merge threshold combines those small subgroups into one common chunk.palette-iconremains in the personal entry implementation chunk because recursive dependency capture is disabled.That placement creates a static output cycle: the common app chunk imports
PaletteIconfrom the personal chunk, while the personal chunk importsapp-personalfrom the common chunk. Starting withadminorthemingtherefore enters the personal chunk before the common chunk has finished evaluating.The previous strict wrapper form assigned
init_app_personalfrom avarinitializer, so the cycle could call it while it was stillundefined. The new strict implementation emits a callable declaration-form wrapper. This fixture keeps the output cycle intact and verifies that both on-demand and wrap-all execute all three entries with the original source semantics.Validation
CARGO_TARGET_DIR=/tmp/codex-rolldown-pr10104-target just t-run crates/rolldown/tests/rolldown/issues/10259/_config.json(twice; snapshot-stable)mainbaseline in both strict modes withinit_app_personal is not a functionjust lint-nodejust lint-repogit diff --checkCloses #10259.