Skip to content

deps: bump dependencies to latest, hold YamlDotNet and FluentAssertions - #327

Merged
amis92 merged 1 commit into
mainfrom
deps/holistic-bump
Jul 31, 2026
Merged

deps: bump dependencies to latest, hold YamlDotNet and FluentAssertions#327
amis92 merged 1 commit into
mainfrom
deps/holistic-bump

Conversation

@amis92

@amis92 amis92 commented Jul 31, 2026

Copy link
Copy Markdown
Member

One reviewed pass over Directory.Packages.props instead of merging the open dependabot PRs piecemeal.

Supersedes #270, #272, #303 and #307 — all were based on the February commit 4b7889a and are now behind main.

Bumped

Package From To
Microsoft.CodeAnalysis.CSharp 5.0.0 5.6.0
Microsoft.CodeAnalysis.Analyzers 3.11.0 5.6.0
Serilog 4.3.1 4.4.0
System.CommandLine 2.0.3 2.0.10
Microsoft.NET.Test.Sdk 18.3.0 18.8.1
NSubstitute 5.3.0 6.0.0
coverlet.collector 8.0.0 10.0.1
Nerdbank.GitVersioning 3.9.50 3.10.91
FluentAssertions 7.2.0 7.2.2

Already at latest: Newtonsoft.Json, Serilog.Sinks.Console, Handlebars.Net, NaturalSort.Extension, NSubstitute.Analyzers.CSharp, XmlDiffPatch.Core, xunit.v3, xunit.runner.visualstudio.

Two deliberate holds

Both are documented inline in Directory.Packages.props so they are not silently undone later.

FluentAssertions stays on 7.x — licensing

8.0.0 relicensed from Apache-2.0 to the commercial Xceed Community Licence, which is free only for non-commercial use. 7.2.2 is the latest Apache-2.0 release. .github/dependabot.yml now ignores FluentAssertions >=8.0.0 so this does not return as a routine bump.

If you'd rather not stay on a frozen line indefinitely, migrating to Shouldly or xunit's built-in asserts would be a separate PR — happy to do it on request.

YamlDotNet stays on 17.1.0 — breaks the conformance suite

18.1.0 is not viable yet. BattleScribeSpec.SpecLoader's static initializer throws under it, and all 362 passing conformance specs stop loading:

Spec constraint.constraint-forces-field-on-forceentry cannot be parsed by the
pinned battlescribe-spec TestKit: The type initializer for
'BattleScribeSpec.SpecLoader' threw an exception.

Central package management applies our version to the lib/battlescribe-spec submodule's projects too, and its TestKit is compiled against the 17.x API. This needs battlescribe-spec to move to 18.x first.

Worth noting this was only visible because the conformance harness now reports unloadable specs as skipped rather than dropping them silently — otherwise the suite would still have looked green while testing almost nothing.

Verification

  • Release build: 0 errors (2 pre-existing CS0109 warnings in Concrete.Extensions, unchanged)
  • Full suite: 802 passed, 48 skipped, 0 failed
  • Conformance unchanged at 362 passing / 48 skipped

🤖 Generated with Claude Code

One reviewed pass over `Directory.Packages.props` instead of merging the open
dependabot PRs piecemeal. Supersedes #270, #272, #303 and #307, all of which
were based on the February commit and are now behind `main`.

Bumped:
- Microsoft.CodeAnalysis.CSharp      5.0.0  -> 5.6.0
- Microsoft.CodeAnalysis.Analyzers   3.11.0 -> 5.6.0
- Serilog                            4.3.1  -> 4.4.0
- System.CommandLine                 2.0.3  -> 2.0.10
- Microsoft.NET.Test.Sdk             18.3.0 -> 18.8.1
- NSubstitute                        5.3.0  -> 6.0.0
- coverlet.collector                 8.0.0  -> 10.0.1
- Nerdbank.GitVersioning             3.9.50 -> 3.10.91
- FluentAssertions                   7.2.0  -> 7.2.2

Already current: Newtonsoft.Json, Serilog.Sinks.Console, Handlebars.Net,
NaturalSort.Extension, NSubstitute.Analyzers.CSharp, XmlDiffPatch.Core,
xunit.v3, xunit.runner.visualstudio.

Two deliberate holds, both documented inline so they are not silently undone:

**FluentAssertions stays on 7.x.** 8.0.0 relicensed from Apache-2.0 to the
commercial Xceed Community Licence, free only for non-commercial use. 7.2.2 is
the latest Apache-2.0 release. `.github/dependabot.yml` now ignores
FluentAssertions >= 8.0.0 so this does not come back as a routine bump.

**YamlDotNet stays on 17.1.0.** 18.1.0 breaks the conformance suite outright:
`BattleScribeSpec.SpecLoader`'s static initializer throws, and all 362 passing
specs stop loading. Central package management applies our version to the
`lib/battlescribe-spec` submodule's projects as well, and its TestKit is built
against the 17.x API. This has to wait until battlescribe-spec moves to 18.x.

Verified: Release build clean, full suite green (802 passed, 48 skipped, 0
failed), conformance unchanged at 362 passing / 48 skipped.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@amis92
amis92 force-pushed the deps/holistic-bump branch from 52543ae to a705dbc Compare July 31, 2026 06:12
@amis92
amis92 merged commit 4fd46c3 into main Jul 31, 2026
2 checks passed
@amis92
amis92 deleted the deps/holistic-bump branch July 31, 2026 06:17
amis92 added a commit that referenced this pull request Jul 31, 2026
`[Unreleased]` had been empty since 0.14.0 (28 Feb) even though several
changes had landed. Brings it up to date with everything currently on `main`:

- the roster-engine stack (#315-#322) and the YAML reader (#325)
- the NewRecruit format additions (#308) and the MSBuild targets file (#313)
- the zipped-datafile fix (#324) and the dependency bump (#327)
- the `prepend` documentation and tests (#326), crediting @The4D6 for the
  original contribution in #221

The `NodeFactory.Force` breaking change is called out explicitly with the
migration, since it lands in the shipped `WarHub.ArmouryModel.Source` package.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
amis92 added a commit that referenced this pull request Jul 31, 2026
Dependabot opened #339 to take YamlDotNet from 17.1.0 to 18.1.0 within minutes
of #327 landing. That bump is not viable and #327 documented why inline, but a
comment in `Directory.Packages.props` does not stop the bot re-proposing it.

18.1.0 breaks `BattleScribeSpec.TestKit` in the `lib/battlescribe-spec`
submodule: its `SpecLoader` static initializer throws, and all 362 passing
conformance specs stop loading. Central package management applies our version
to the submodule's projects too, and the TestKit is built against the 17.x API.

Ignoring `>=18.0.0` until battlescribe-spec itself moves to 18.x, mirroring the
existing FluentAssertions rule. Tracked in #330.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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