Open the local gate chain with a dotnet tool restore - #44
Merged
Conversation
CSharpier and Husky.Net are local tools declared in .config/dotnet-tools.json, so on a clone whose package cache does not already hold them the documented chain failed on its first command with "Run dotnet tool restore to make the csharpier command available" and exit 1. CI already restored before its CSharpier step, and the prose called that out as a difference between the two. It is no longer one, so that clause is dropped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #44 +/- ##
========================================
Coverage 43.37% 43.37%
========================================
Files 28 28
Lines 3896 3896
Branches 306 306
========================================
Hits 1690 1690
Misses 2154 2154
Partials 52 52 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Updates the operational runbook so a fresh clone can run the local “gate” command chain by restoring local .NET tools before invoking dotnet csharpier / dotnet husky.
Changes:
- Add
dotnet tool restoreas the first step in the local gate snippet inOPERATIONS.md. - Update surrounding prose to remove the now-outdated claim that CI uniquely performs tool restore.
The paragraph introduces the chain as the `.NET Format` task, so saying the chain opens with a restore read as a claim about that task. It is not one: `.NET Format` depends on `CSharpier Format` and `.NET Build`, and none of the three restores, so the task fails on a fresh clone exactly as the shell chain did. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Aug 3, 2026
Merged
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 free
to 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.
Answers a suppressed Copilot finding from #37 that was raised on that PR's merged head (
78581a2) and never answered. It was found while auditing every constituent PR ahead of thedeveloptomainpromotion, since a suppressed finding carries no thread and so shows as nothing to resolve.The finding
Correct. CSharpier, Husky.Net and dotnet-outdated are local tools declared in
.config/dotnet-tools.jsonwithisRoot: true, andvalidate-task.yml:75restores them before its CSharpier step. The runbook chain did not.Verified rather than taken on faith
A warm package cache hides this, so the check needs a cold one. Against a clone with
NUGET_PACKAGESandDOTNET_CLI_HOMEpointed at empty directories:Run "dotnet tool restore" to make the "csharpier" command available., exit1.dotnet tool restorereportsRestore was successful.and CSharpier then formats all 54 files, exit0.So the reader who follows the runbook on a machine that has not built this repo before hits a hard failure on line one.
Scope
OPERATIONS.mdis the only affected command path. The.NET Toolssection ofREADME.mdalso names these tools, but it documents building the manifest from scratch (dotnet new tool-manifest, thendotnet tool install ...), where a restore would be wrong.CODESTYLE.mdnames the commands in prose rather than offering a runnable chain.The prose in the paragraph below the snippet listed the CI-side restore as a difference between local and CI. It is no longer one, so that clause is dropped rather than left asserting the old behavior.
OPERATIONS.mdcarries nofidelityfield in the hubspec/files.jsonbaseline, so it is presence-checked only and its content is repo-owned. This fix will not be reverted by a re-vendor. That is what separates it from the four suppressed findings on #38, which were equally correct but landed on fleet-carried YAML and so went upstream instead.Verification
CSharpier Format,.NET Build,dotnet format style --verify-no-changes: clean, 0 of 57 files formatted, 0 warnings.dotnet husky run: pass.dotnet test: 372 passed, 0 failed, 0 skipped.**/*.md: 0 issues in 11 files. editorconfig-checker: clean. Hubprose_lint.py --diff origin/develop: clean.