- MSBuild turns environment variables into properties, so PLATFORM=x64 made
dotnet test look under bin/x64/ while the solution build mapped test projects
to AnyCPU (bin/Debug/). SOLUTION, PLATFORM, and VERSION are now K22_-prefixed.
- The release title step still read $VERSION after the rename; fixed.
- dotnet format runs without XAML compilation, so XAML event handlers looked
unused (IDE0051); the format job now builds first.
Found by AppKit's adoption PR, the first real run of these workflows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
- dotnet.yml: locked restore, zero-warning build, tests with a per-package
coverage gate, Kingsrook format check (--severity warn), optional FlaUI UI
tests and pack; contexts ci / build-test, ci / format, ci / ui-tests.
- release-nuget.yml: tag validation, Release gates, pack, CycloneDX 1.6 SBOM per
package from its lock file (Syft, digest-pinned), SHA256SUMS, SLSA build
provenance and SBOM attestations, draft-then-publish GitHub release.
- nuget.org trusted publishing validates job_workflow_ref against the package's
own repository, so the push runs in a caller job (template) that first
verifies the attestations with --signer-repo KofTwentyTwo/standards.
- Caller templates, docs (ci-cd, releases, README, configs/dotnet), and the
conformance checker: CI-30 requires a SHA-pinned standards release-*.yml call,
CI-01 expects the .NET contexts when a solution exists.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>