chore: protected-file split for 0.22.0 (release.yaml, coyote.yaml, Directory.Build.props) - #366
Merged
Merged
Conversation
Extracts the three protected configuration files from #357 so that PR can pass the `Detect .NET Projects` guard without an admin bypass on all 100 of its files. Contents are byte-identical to chore/fold-testkit; this PR adds no changes of its own. - Directory.Build.props: version centralization for the TestKit fold -- Version/AssemblyVersion/FileVersion/PackageProjectUrl/LangVersion/ SignAssembly/License moved here and removed from the individual csprojs. - .github/workflows/release.yaml: version-check reads Directory.Build.props via the scoped XPath /Project/PropertyGroup/Version. Depends on the above -- the two are one logical change and must land together. - .github/workflows/coyote.yaml: excludes Dispose_racing_enumeration_never_deadlocks, which crashes Coyote 1.7.11's own instrumentation on the ConfiguredCancelableAsyncEnumerable awaiter introduced by #363. See #364. After this merges to main, main merges back into chore/fold-testkit and #357 goes bypass-free. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Protected-file split for the 0.22.0 TestKit fold (#357), per the
protected-file-pr-splitrecipe.#357 carries 100 files, exactly three of which are protected configuration:
Directory.Build.propsVersion/AssemblyVersion/FileVersion/PackageProjectUrl/LangVersion/SignAssembly/ License moved here and removed from the individual csprojs..github/workflows/release.yamlDirectory.Build.propsvia the scoped XPath/Project/PropertyGroup/Version. Depends on the above — the two are one logical change..github/workflows/coyote.yamlDispose_racing_enumeration_never_deadlocks, which crashes Coyote 1.7.11's own instrumentation. See #364.Extracting them here lets #357 pass
Detect .NET Projectson its own rather than admin-bypassing a 100-file PR.Verification
origin/main;git diff origin/main --name-onlylists only these three files.chore/fold-testkit(git diff origin/chore/fold-testkit -- <files>is empty). This PR introduces no changes of its own — it is purely a lift.pr.yaml(theexact_filesarray plus the.globalconfig/.ruleset/.github/workflows/*.ya?mlpattern), not from memory.Note on the Coyote change
Dispose_racing_enumeration_never_deadlocksis excluded, not deleted — the test body and its attribute stay in the source file, and #364 tracks restoring it.The trigger was PR #363, which added the missing
ConfigureAwait(false)to theawait foreachsites inExtractorBaseandTransformerBase. That is a real fix: those packages shipnet462/netstandard2.0, where a consumer with a sync context can deadlock, and every extract and transform stage inherits those two methods. CA2007 is enabled but structurally blind toawait foreach, which is why it went unnoticed.The fix changes the awaiter to
ConfiguredCancelableAsyncEnumerable<T>, which Coyote 1.7.11 cannot classify — it throws aNullReferenceExceptioninsideCoyoteRuntime.IsTaskUncontrolled. It is an instrumentation crash, not a race: "Found 1 bug" on iteration #1, 1 execution path explored, 0.096 sec. 1.7.11 is the newest release on nuget.org and upstream's last commit was 2024-12-11, so there is no version to upgrade to. Reverting #363 to satisfy a dormant test tool was rejected.Verified on
chore/fold-testkitbefore this split was cut:Coyote systematic explorationnow passes, leavingDetect .NET Projectsas the only failure on #357.This PR expects an admin bypass
It exists solely to move protected files, so it will trip the same guard by design. Merge with admin bypass, then merge
mainback intochore/fold-testkit; #357 should then showfailing=[].Note that admin bypass waives all ruleset rules, not just the protected-file guard — worth a glance at the other checks before merging.