[CI/CD] Gate every release on the exact commit that passed CI#244
Open
fettpl wants to merge 1 commit into
Open
[CI/CD] Gate every release on the exact commit that passed CI#244fettpl wants to merge 1 commit into
fettpl wants to merge 1 commit into
Conversation
fettpl
force-pushed
the
p1/issue-220-release-gating
branch
from
July 17, 2026 19:08
9b595b8 to
15a314c
Compare
9 tasks
Author
|
@0xSero PR #244 is the independently approved foundation for the P1 audit PR wave. Exact rebased head |
fettpl
force-pushed
the
p1/issue-220-release-gating
branch
from
July 17, 2026 22:00
15a314c to
3d0270f
Compare
fettpl
marked this pull request as ready for review
July 18, 2026 04:59
This was referenced Jul 18, 2026
fettpl
force-pushed
the
p1/issue-220-release-gating
branch
from
July 19, 2026 00:59
3d0270f to
3068963
Compare
fettpl
force-pushed
the
p1/issue-220-release-gating
branch
from
July 20, 2026 07:27
3068963 to
3cdd3a6
Compare
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.
Summary
Make release publication a downstream job of the same CI workflow and commit that passed every configured gate. The reusable release workflow checks out the tested SHA explicitly, fetches authoritative
origin/mainimmediately before publication, and proceeds only when the tested SHA, checked-outHEAD, and current remotemainare identical.Release concurrency retains every validated pending revision with
queue: max. This prevents an older, slower gate completion from replacing the newer pending tip; stale revisions remain queued only long enough to fail the remote-main guard without publishing.Closes #220
Review exact commit
3cdd3a6402308c1d7a25816205cdedd7e73688f6.Root cause
The audited release workflow reacted independently to
mainpushes, so semantic-release could start before validation for that SHA completed. Simple non-cancelling concurrency was also insufficient: GitHub's default concurrency retains only one pending run, allowing a third run to replace the current pending tip.Current main additionally required controller dependencies for contract validation, and its redundant direct
playwrightdeclaration failed dependency cleanup.Solution design
release.ymlto a reusableworkflow_callworkflow.mainpushes aftergates,controller, andfrontendsucceed.${{ github.sha }}and rejects publication unless tested SHA =HEAD= freshly fetchedorigin/main.cancel-in-progress: falsewithqueue: maxso validated release candidates remain FIFO instead of replacing the pending tip.Acceptance evidence
main; older or mismatched revisions fail closed.concurrency.queue: max; the repository test asserts the exact concurrency contract.Validation
origin/mainat08bcba27f137f9c3d0206ea811d0aa7548a2dfa6completed with the branch zero commits behind main.ci.ymlandrelease.ymlpassed.npm ci --legacy-peer-depsinfrontend: passed with 0 vulnerabilities.bun install --frozen-lockfileincontroller: passed.npm --prefix frontend run check:quality: passed.npm run check: passed.git diff --check: passed.npm --prefix frontend run desktop:dist: passed./Applications/Local Studio.appinstall reported bundle IDorg.local.studio.desktop, launched successfully, and returned HTTP 200 from/api/desktop-health.3cdd3a6402308c1d7a25816205cdedd7e73688f6.The exact main revision has no frontend
testor roottest:integrationscript, so both required command invocations were recorded as unavailable rather than represented as passing.UI changes
None.
Risks / rollout notes
@action-validator/cli@0.6.0embeds a 2024 schema and falsely rejects the officially supportedqueuefield.