chore: adopt the standard CI shape and fold release.yml into ci.yml - #25
Merged
Conversation
STANDARD.md sections 3.0, 3.1, 3.5, 3.6, 3.7, 4.4 and 4.6. Copied from Auth, the 25/25 reference implementation, rather than re-derived. The `ci` gate is the substantive change. `build` and `test` were required status checks directly, which couples the ruleset to the matrix shape — `test`'s check names carry its matrix values, so touching the platform list breaks branch protection. The gate's name never changes. `if: always()` on it is load-bearing: without it the gate is *skipped* when an upstream job fails, and branch protection reads a skipped check as satisfied, so it would pass precisely when it must fail. It treats `skipped` as failure for the same reason. Folding release.yml into ci.yml (3.0) means `publish` downloads the artifact this run's `build` produced, so what reaches nuget.org is what the gate tested; the tag-triggered workflow rebuilt from the tag and published bytes no gate had seen. It also fixes a live bug: the old upload globbed `*.nupkg`, so the .snupkg was packed and then never published. The glob is now `*nupkg`. The nuget.org Trusted Publishing policy for this package has been repointed from release.yml to ci.yml — the policy binds to a workflow filename, and without that the next publish fails to authenticate. dependabot.yml now groups minor+patch and leaves majors ungrouped, and ignores majors for the two per-TFM-floored packages (4.10) — an 8.x -> 10.x bump on the net8 floor is never mergeable. It names those two and not Auth's third; 4.6 is a structural clause precisely so a repo does not inherit an ignore entry for a package it never references. No change to the library, its public surface, or the package contents. Local verification before this branch: Release build at 0 warnings, 392 tests passing across net8.0 and net10.0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
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.
What changed
Adopts the canonical CI shape from NextIteration.Standards — §3.0, §3.1, §3.5, §3.6, §3.7, §4.4, §4.6. Copied from
NextIteration.SpectreConsole.Auth, the 25/25 reference implementation, rather than re-derived.release.ymlfolded intoci.yml(§3.0).publishnow downloads the artifact this run'sbuildjob produced, so the bytes pushed to nuget.org are the bytes the gate tested. The tag-triggered workflow rebuilt from the tag and published an artifact no gate had ever seen.ci(§3.1),needs: [build, test],if: always(), failing on any upstream result that is not success —skippedincluded.concurrency+cancel-in-progress(§3.5, never on tags), per-jobtimeout-minutes(§3.6), NuGet restore cache (§3.7).codeql.ymladded (§4.4) —security-and-quality, explicit build rather thanautobuild.dependabot-auto-merge.ymladded (§4.7/§4.8) — minor+patch only, queued behindci..github/dependabot.ymlrewritten (§4.6/§4.10).Why
Two of these fix live defects rather than merely conforming:
*.nupkg. The.snupkgwas packed on every release and then silently never published. The glob is now*nupkg.buildandtestwere required status checks directly.testis a matrix, so its check names carry the matrix values — editing the platform list breaks branch protection. Thecigate's name never changes, sobuildandtestcan be renamed, split or re-platformed freely.if: always()on the gate is load-bearing. Without it the gate is skipped when an upstream job fails, and branch protection reads a skipped check as satisfied — it would pass precisely when it must fail.Sequencing — two things outside this diff
release.ymltoci.yml. The policy binds to a workflow filename; without this the next publish fails to authenticate. Being done before this merges.[ci]. Cannot be set before this PR reports acicheck. Onceciis green here,apply-repo-settings.sh --repo NextIteration.SpectreConsole.SelfUpdate --with-required-checkssets it and this PR becomes mergeable. PerADOPTING.md, no interim relaxation to[build]is needed —pull_requestruns the workflow from the PR's own head, so the PR that addscireportsci.Checklist
TreatWarningsAsErrorsis on)CHANGELOG.mdupdated under[Unreleased]Consumer impact
None. No change to the library, its public surface, or the package contents.
<Version>is untouched and no tag is pushed, so nothing publishes.🤖 Generated with Claude Code