Skip to content

fix: account for effective global.json in release planning - #35

Merged
ScottishTapWater merged 5 commits into
mainfrom
fix/effective-global-json
Oct 29, 2026
Merged

ScottishTapWater merged 5 commits into
mainfrom
fix/effective-global-json

Conversation

@ScottishTapWater

@ScottishTapWater ScottishTapWater commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Find the global.json that can select the SDK for the solution's build working directory.
  • Treat changes to that file, or additions and removals of a nearer file, as shared changes that bump every package by at least Patch.
  • Evaluate the effective global.json at each commit so a later nested file cannot hide an earlier ancestor SDK change; keep shadowed ancestor changes from triggering shared bumps.
  • Match tracked global.json paths using the platform's case rules, so valid Windows solution paths retain the correct SDK selection.
  • Update the README to describe the rule.
  • Expand CoreOnly planning coverage to 36 cases across initial, patch, minor and major releases; chains including six packages; diamonds; disconnected graphs; mixed direct and dependency bumps; and repository configuration.
  • Add a CoreOnly planner-to-executor journey and representative CLI diamond and consumer-only releases, including an empty re-plan/apply phase. Each new test invocation owns an isolated repository fixture with its scenario declared in the test.

Verification

  • Built PackageCascade.Tests.Unit with --no-restore and passed 65 focused planning tests for SDK selection and release planning.
  • Built PackageCascade.Tests.Integration and passed the focused historical global.json regression after merging the expanded test fixtures.
  • Passed all 60 integration tests on the earlier PR head with normal parallel execution, including the new release journeys. The historical regression and combined PR head passed hosted CI, including the Windows casing follow-up.
  • Independently ran the six-package chain and conditional-reference cases during development.
  • Passed focused dotnet format --verify-no-changes checks and git diff --check.
  • Independent C# review completed with no outstanding findings.

Some local restores and builds reported NU1900 because the sandbox could not reach NuGet's vulnerability feed; the focused builds and tests still succeeded.

@greptile-apps

greptile-apps Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; the previous path-casing issue is fixed and no new blocking issues were found.

Summary

The planner checks which global.json applied before and after each commit, so later files cannot hide earlier SDK changes.

  • Changes to a solution’s selected SDK file now bump every package it governs.
  • Release-planning checks now cover mixed package graphs and bump histories.
  • Release journeys now check package plans, archives, and tags from end to end.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Commit since package release] --> B[Find nearest global.json before commit]
  A --> C[Find nearest global.json after commit]
  B --> D{Did either selected file change?}
  C --> D
  D -->|Yes| E[Give every package at least Patch]
  D -->|No| F[Use ordinary file-based rules]
  E --> G[Keep strongest bump and update dependants]
  F --> G
Loading

Reviews (4) · Last reviewed commit: "Match tracked global.json paths with pla..." · Reviewed by Greptile

@ScottishTapWater
ScottishTapWater merged commit c2bd3c3 into main Oct 29, 2026
9 checks passed
@ScottishTapWater
ScottishTapWater deleted the fix/effective-global-json branch October 29, 2026 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant