Skip to content

[Fusion] Fix an unconditional nested defer being dropped when its enclosing conditional defer is disabled - #45

Open
michaelstaib wants to merge 1 commit into
mst/fusion-executor-eviction-time-providerfrom
mst/fusion-nested-defer-delivery
Open

michaelstaib wants to merge 1 commit into
mst/fusion-executor-eviction-time-providerfrom
mst/fusion-nested-defer-delivery

Conversation

@michaelstaib

Copy link
Copy Markdown
Owner

Ticket: hc-fork-2-sq8

Stacked on the TimeProvider PR. This PR's diff is against mst/fusion-executor-eviction-time-provider.

Fix: an unconditional @defer nested inside @defer(if: $d) was never delivered when d is false. When the outer defer is disabled, its selection set is inlined, but the inner deferred fragment must still arrive as its own incremental payload.

The defect was reproduced without authorization first. An incremental plan now runs when one of its delivery groups is active and the plan that owns its nearest active enclosing delivery group also runs. Previously it required its direct parent plan to run. The single activation rule shared by the executor and the evaluator is kept.

Verified at the top of this four-PR stack (0755da7, on #40): dotnet build src/All.slnx 0 errors; on net10, Fusion.Execution.Tests 1418 passed and 2 skipped, Fusion.AspNetCore.Tests 637 passed and 48 skipped, Fusion.Diagnostics.Tests 65 passed and 3 skipped, Fusion.Composition.Tests 915 passed. Other target frameworks were built but not tested.

Related defect, not fixed here and ticketed as hc-fork-2-d62: a conditional @defer(if: $d) nested inside another enabled @defer loses its fields when d is false.

Copilot AI balanced review requested due to automatic review settings October 8, 2026 11:22

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@michaelstaib
michaelstaib force-pushed the mst/fusion-executor-eviction-time-provider branch from 36dd798 to 970a0a7 Compare October 9, 2026 04:57
@michaelstaib
michaelstaib force-pushed the mst/fusion-nested-defer-delivery branch from bd475d4 to 6f8c636 Compare October 9, 2026 04:57
@michaelstaib
michaelstaib force-pushed the mst/fusion-executor-eviction-time-provider branch from 970a0a7 to eff3433 Compare October 9, 2026 04:59
@michaelstaib
michaelstaib force-pushed the mst/fusion-nested-defer-delivery branch from 6f8c636 to 8d4621c Compare October 9, 2026 04:59
@michaelstaib
michaelstaib force-pushed the mst/fusion-executor-eviction-time-provider branch from eff3433 to a3ff567 Compare October 12, 2026 21:25
@michaelstaib
michaelstaib force-pushed the mst/fusion-nested-defer-delivery branch from 8d4621c to b38f2bf Compare October 12, 2026 21:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants