Uh oh!
There was an error while loading. Please reload this page.
build: put .NET inside the local gates instead of one trailing CI step - #68
Merged
Conversation
🦋 Changeset detectedLatest commit: bf172c6 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
`package.json` had no `dotnet:*` scripts at all, so `pnpm test`, `pnpm build`, `pnpm format:check` and `pnpm check-all` — the last of which CLAUDE.md calls "full CI parity" — every one of them silently skipped a fifth of the codebase. The husky pre-commit chains those same scripts, so it skipped it too. The only thing exercising .NET was a separate trailing step in pr-checks.yml, which means a developer could run every local gate green and still break the port. - Adds `dotnet:build` / `dotnet:test` / `dotnet:format` / `dotnet:format:check` and wires them into `build`, `test`, `format` and `format:check`. - `format:check` now chains all five languages, so the local gate and the CI step cannot disagree about what "formatted" means; pr-checks.yml's Format step becomes plain `pnpm format:check`, and its trailing .NET step goes away as a duplicate of `pnpm build` + `pnpm test`. - `check-all` gets shorter without losing coverage: `typecheck`, `lint`, `test` and `format:check` already fan out per language. - CLAUDE.md gains the .NET section it never had, and says the SDK is now a prerequisite for `pnpm test`. `dotnet format --verify-no-changes` passes as-is — C# formatting has genuinely never drifted, so there is nothing to clean up here. Verified the check is real by hand-breaking whitespace in FileMetadata.cs (exit 2) and from a clean tree with obj/ and bin/ deleted (no prior restore needed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0152bbE1veqfG1SVJdyLCBxC
brentragerforce-pushed
the
fix/dotnet-local-gates
branch
from
August 20, 2026 18:29
6d1819c to
bf172c6CompareUh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
package.jsonhad nodotnet:*scripts. So every one of these silently skipped a fifth of the codebase:pnpm testpnpm buildpnpm format:checkpnpm check-all— "full CI parity" per CLAUDE.md.husky/pre-commit(chains the above)The only thing exercising the .NET port was a separate trailing step in
pr-checks.yml. A developer could run every local gate green and still break the port; CLAUDE.md didn't even have a .NET section.Fix
dotnet:build,dotnet:test,dotnet:format,dotnet:format:check, wired intobuild,test,format,format:check.format:checknow chains all five languages. Previously it wasoxfmt --check .and CI chained the other four by hand — two definitions of "formatted" that could drift apart. The CI step is now justpnpm format:check.Build and test .NETstep inpr-checks.ymlis removed:pnpm buildandpnpm testnow cover it. (release.yml's copy is left alone — it sits next todotnet pack.)check-allcollapses totypecheck && lint && format:check && test && build. Nothing is lost: each of those already fans out per language. It just stops listing half of them twice.pnpm test.Corrected finding
The brief expected
dotnet format --verify-no-changesto surface drift ("C# formatting has never been checked in this repo"). It passes clean as-is — nothing to fix. The gap was purely that nothing ran it locally.Verification that the gate is real
FileMetadata.cs→pnpm dotnet:format:checkexits 2 witherror WHITESPACE. Restored → green.obj/andbin/and re-ran → passes with no priordotnet restore, so the CI ordering (format check before build) is safe.pnpm testnow reports the 46 .NET tests alongside TS/Python/Rust/Go.🤖 Generated with Claude Code
https://claude.ai/code/session_0152bbE1veqfG1SVJdyLCBxC