Both were constructor-initialised value carriers with read-only
consumers. Positional record syntax replaces the class + property +
ctor boilerplate; ViewService callers updated to PascalCase named
args to match the record-generated parameter names.
Rest of item 26 descoped: XmlSerializer needs mutable public
setters (value-equality on mutable data is a footgun) and has no
source generator without changing file format. See
IMPROVEMENT_PLAN.md for the full rationale.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Three long-noted rough edges from the original analysis, each a
one-line touch:
- ClassIds becomes static class (was instantiable).
- Home.razor.cs drops the `loaded` bool guard (Blazor already runs
OnInitializedAsync exactly once per component instance).
- Move the "Claudio Schaad" mandator default out of SettingsService
into SettingsDataset.DefaultMandator, plumbed through
appsettings.Development.json.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>