Sub-task of #83 (Newtonsoft.Json → System.Text.Json migration). Blocked on STJ-3 (utility-lib rewrite).
Scope
Migrate Fallout.Tooling's JSON serialization machinery from Newtonsoft to System.Text.Json. This is the layer that handles tool-options ↔ command-line arguments and tool-options ↔ JSON files, used by every generated tool wrapper.
Files (≈7)
src/Fallout.Tooling/Options.cs — main option-set abstraction with JsonConvert-based round-tripping
src/Fallout.Tooling/Options.Modify.cs
src/Fallout.Tooling/ObjectFromFieldConverter.cs — custom Newtonsoft JsonConverter that has no direct STJ equivalent; needs rewrite as JsonConverter<T> in the STJ shape
src/Fallout.Tooling/ToolOptions.Arguments.cs
src/Fallout.Tooling/ToolOptions.Secrets.cs
src/Fallout.Tooling/NpmVersionResolver.cs
src/Fallout.Tooling/NuGetVersionResolver.cs
src/Fallout.Tooling/NuGetPackageResolver.cs
src/Fallout.Tooling/ProcessExtensions.cs
- Plus test file
tests/Fallout.Tooling.Tests/OptionsTest.cs which has Newtonsoft-typed assertions
Risk
This affects how every tool wrapper serializes its options. Subtle differences between Newtonsoft and STJ (default property naming, null handling, enum serialization, etc.) can produce wrong CLI args at runtime. Heavy testing required.
Acceptance
Sub-task of #83 (Newtonsoft.Json → System.Text.Json migration). Blocked on STJ-3 (utility-lib rewrite).
Scope
Migrate
Fallout.Tooling's JSON serialization machinery from Newtonsoft to System.Text.Json. This is the layer that handles tool-options ↔ command-line arguments and tool-options ↔ JSON files, used by every generated tool wrapper.Files (≈7)
src/Fallout.Tooling/Options.cs— main option-set abstraction with JsonConvert-based round-trippingsrc/Fallout.Tooling/Options.Modify.cssrc/Fallout.Tooling/ObjectFromFieldConverter.cs— custom NewtonsoftJsonConverterthat has no direct STJ equivalent; needs rewrite asJsonConverter<T>in the STJ shapesrc/Fallout.Tooling/ToolOptions.Arguments.cssrc/Fallout.Tooling/ToolOptions.Secrets.cssrc/Fallout.Tooling/NpmVersionResolver.cssrc/Fallout.Tooling/NuGetVersionResolver.cssrc/Fallout.Tooling/NuGetPackageResolver.cssrc/Fallout.Tooling/ProcessExtensions.cstests/Fallout.Tooling.Tests/OptionsTest.cswhich has Newtonsoft-typed assertionsRisk
This affects how every tool wrapper serializes its options. Subtle differences between Newtonsoft and STJ (default property naming, null handling, enum serialization, etc.) can produce wrong CLI args at runtime. Heavy testing required.
Acceptance
Newtonsoft.JsonPackageReference removed fromFallout.Tooling.csproj./build.ps1 Testgreen