Repository navigation
Say so when an absent input narrows a check to nothing - #31
Merged
Merged
Conversation
Four places where an input going missing narrowed what a check examined and the narrowed result was still reported as a pass. ci-dataset-tests warns when the changed-file count and the list file disagree, rather than skipping every fixture silently. resolve-dependencies separates an absent _shas.txt, which means the step that creates it never ran, from an empty one, which means no dependency was declared; both used to produce an empty cache key, and an empty key skips the restore and the build alike. prepare-runner fails when its source tree is empty, because hashing nothing yields a constant and the cache key stops discriminating between runner versions. The three dotnet sln list call sites check the exit code, because a failed enumeration and a solution with no projects both clear the non-SDK gate once stderr is discarded.
sakanni
marked this pull request as ready for review
October 16, 2026 10:34
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.
Issues addressed by this PR
Closes #30
Four places where an input going missing narrowed what a check examined and the narrowed result was still reported as a pass. Each now says which of the two happened, following the pattern
ci-versioningalready uses for its subject assembly list.ci-dataset-testswarns when the changed-file count and the list file disagree instead of skipping every fixture silently.resolve-dependenciesseparates an absent_shas.txt, which means the step that creates it never ran, from an empty one, which means no dependency was declared.prepare-runnerfails when its source tree is empty, because hashing nothing yields a constant and the cache key stops telling runner versions apart. The threedotnet sln listcall sites check the exit code, because a failed enumeration and a solution with no projects both clear the non-SDK gate once stderr is discarded.ci-dataset-testswarns and the other three fail, because only the first leaves a usable run.Test files
13 new Pester cases in
.github/scripts/tests/fail-open-guards.Tests.ps1, asserting each guard exists, carries the right severity and runs before the thing it protects. No existing test is modified. The .NET suites are untouched by this change and still pass: 100, 70, 75 and 135.Changelog
Additional comments
The guards are structural rather than behavioural: the failure paths need a broken
dotnetor a step that did not run, so the tests buy regression cover rather than proof. None of the four is live or gating today, since noci-context is required anywhere yet.