style: adopt the Kingsrook C# layout and the standard .NET quality gate #70

Merged
KofTwentyTwo merged 2 commits from style/kingsrook-layout into main 2026-10-09 19:39:44 +00:00
KofTwentyTwo commented 2026-10-09 15:38:55 +00:00 (Migrated from github.com)

What

Workstream 3 of #62: the standard .editorconfig and Directory.Build.props, Directory.Packages.props (central package management), LF line endings, SPDX headers, the Kingsrook layout (3-space, Allman, if(, three blank lines between members, one type per file, s_ statics), Meziantou analyzers, and the PowerShell scripts restyled under the standard PSScriptAnalyzer settings. The CI format gate moves to --severity warn and gains PSScriptAnalyzer.

Stacked on #69 (which is stacked on #68); GitHub retargets as they merge. Review tip: this is a whole-repository reformat; the behavior-relevant changes are the CLI sync command split (ParseOptions / ReportSummary), AnnouncementEventArgs, regex timeouts, and the NuGet update script's move to Directory.Packages.props.

Why

K22-CODE-01..09, 18, 24; K22-CODE-CS-01..13; K22-CODE-SH-04..06; K22-DEP-11. Closes #65.

Repository-specific .editorconfig adjustments are each commented: namespaces keep the product name gclo (the published package namespace cannot change in a patch), MA0051 flags extremes only, and the app project keeps CA1822 / IDE0051 / IDE0052 / IDE0060 off because XAML-referenced handlers are invisible to the analyzer (the IDE0051 fixer actually deleted three XAML event handlers during the first pass; they were restored and the rule disabled for that project).

How it was tested

  • dotnet build gclo.slnx -p:WindowsPackageType=None: 0 warnings, 0 errors with every rule active.
  • dotnet format gclo.slnx --verify-no-changes --severity warn --no-restore: clean.
  • Engine 422 and CLI 129 tests green; line coverage 100% on gclo.Engine, gclo.ViewModels, gclo.
  • FlaUI suite 11/11 on the restyled x64 app (smoke + table fixture).
  • PSScriptAnalyzer (1.25.0, standard settings): 0 findings; Update-PackageManifests.ps1 exercised on a scratch copy.
  • A declaration-level diff against main confirmed no member was lost by the reformat (one unused test constant removed deliberately).

Checklist

  • Commits are signed and signed off (git commit -S -s)
  • Zero build warnings; format and lint are clean
  • Tests added or updated; the coverage gate still passes
  • Docs updated for user-visible changes (CONTRIBUTING describes the style; no user-visible behavior changed)
  • No secrets, credentials, or personal data
  • New dependencies are justified: Meziantou.Analyzer 3.0.296 (build-time analyzer required by the C# profile)
  • Substantial AI assistance is noted: authored with Claude Code, reviewed by the maintainer

🤖 Generated with Claude Code

## What Workstream 3 of #62: the standard `.editorconfig` and `Directory.Build.props`, `Directory.Packages.props` (central package management), LF line endings, SPDX headers, the Kingsrook layout (3-space, Allman, `if(`, three blank lines between members, one type per file, `s_` statics), Meziantou analyzers, and the PowerShell scripts restyled under the standard PSScriptAnalyzer settings. The CI format gate moves to `--severity warn` and gains PSScriptAnalyzer. Stacked on #69 (which is stacked on #68); GitHub retargets as they merge. Review tip: this is a whole-repository reformat; the behavior-relevant changes are the CLI sync command split (`ParseOptions` / `ReportSummary`), `AnnouncementEventArgs`, regex timeouts, and the NuGet update script's move to `Directory.Packages.props`. ## Why K22-CODE-01..09, 18, 24; K22-CODE-CS-01..13; K22-CODE-SH-04..06; K22-DEP-11. Closes #65. Repository-specific `.editorconfig` adjustments are each commented: namespaces keep the product name `gclo` (the published package namespace cannot change in a patch), MA0051 flags extremes only, and the app project keeps CA1822 / IDE0051 / IDE0052 / IDE0060 off because XAML-referenced handlers are invisible to the analyzer (the IDE0051 fixer actually deleted three XAML event handlers during the first pass; they were restored and the rule disabled for that project). ## How it was tested - `dotnet build gclo.slnx -p:WindowsPackageType=None`: 0 warnings, 0 errors with every rule active. - `dotnet format gclo.slnx --verify-no-changes --severity warn --no-restore`: clean. - Engine 422 and CLI 129 tests green; line coverage 100% on `gclo.Engine`, `gclo.ViewModels`, `gclo`. - FlaUI suite 11/11 on the restyled x64 app (smoke + table fixture). - PSScriptAnalyzer (1.25.0, standard settings): 0 findings; `Update-PackageManifests.ps1` exercised on a scratch copy. - A declaration-level diff against `main` confirmed no member was lost by the reformat (one unused test constant removed deliberately). ## Checklist - [x] Commits are signed and signed off (`git commit -S -s`) - [x] Zero build warnings; format and lint are clean - [x] Tests added or updated; the coverage gate still passes - [x] Docs updated for user-visible changes (CONTRIBUTING describes the style; no user-visible behavior changed) - [x] No secrets, credentials, or personal data - [x] New dependencies are justified: Meziantou.Analyzer 3.0.296 (build-time analyzer required by the C# profile) - [x] Substantial AI assistance is noted: authored with Claude Code, reviewed by the maintainer 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.