feat: gate stable promotion on security qualification instead of pre-release publication
@purp ci sta già lavorando.
Dal 22/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
User Story
As a maintainer running the weekly release train, I want security scan findings
to gate promotion to stable rather than building and publishing a
pre-release, so that a static-analysis backlog cannot stop the release
pipeline from producing artifacts to qualify.
Problem Statement
release-tag.yml calls the aggregate Security Scan as a precondition for
publication. Any blocking finding from Codex Security, CodeQL, Trivy, Zizmor, or
Cargo Deny fails the workflow before artifacts are published.
RFC 0014 specifies the opposite ordering. In
rfc/0014-release-stability/README.md (Pre-release qualification and stable
publication), every pre-release is tagged and built first, and the four
qualification suites — including Security review, which "verifies security
scan results, reviews changes to security-sensitive boundaries, and confirms
that every finding has the required disposition" — run against the published
artifacts. Qualification determines eligibility for stable promotion; it is not
a precondition for the pre-release existing.
The current wiring conflates the two. A finding backlog unrelated to the
candidate commit stops artifact production entirely.
Impact / Why This Matters
Observed on release-tag run 35725722342 (2026-09-22): the nightly failed with
8 HIGH/CRITICAL CodeQL findings, 27 HIGH Zizmor findings, 1 HIGH Trivy finding,
and one Cargo Deny advisory (RUSTSEC-2026-0295). No pre-release artifacts were
produced, so nothing was available to qualify, and the release train stalled.
The current workaround is the temporary fail-on-static-findings: false
override added in #3552, which makes CodeQL, Trivy, and Zizmor informational on
the release path. That unblocks the train but removes the signal entirely rather
than relocating it — there is no gate anywhere that stops a stable promotion on
those findings, and the override is documented only in prose in CI.md and
architecture/build.md.
The workaround is insufficient because it trades a false blocker for no blocker.
RFC 0014's model keeps the signal and puts it where it belongs.
Proposed Design
User-facing workflow
- A pre-release tag always builds and publishes its artifacts. Scanner
execution errors still fail the build, because a scan that did not run
produces no evidence. - Security scans run as a qualification suite against the published
pre-release, alongside conformance, upgrade, and breaking-API review. - The suite's result — per-scanner counts and the disposition of each finding —
is recorded in the pre-release manifest described in RFC 0014. - Stable promotion requires the security suite to pass. A pre-release with
undisposed blocking findings is ineligible for promotion and is reported as
such, rather than silently skipped. - Maintainers dispose of findings (fix, accept with justification, or mark
false positive) against a pre-release, and that disposition is what the
promotion gate reads.
Externally observable behavior
- A finding backlog delays stable promotion; it never prevents a pre-release
from being built or published. - The reason a pre-release was not promoted is visible in its manifest and
qualification result, not only in a failed workflow log. fail-on-codex-findingsandfail-on-static-findingsonsecurity-scan.yml
are no longer needed on the release path once the qualification gate exists,
and the temporary override inrelease-tag.ymlis removed.
Internal implementation — where the suite runs, how dispositions are stored, and
the manifest schema — is deliberately left open.
Acceptance Criteria
- Pre-release tags build and publish artifacts regardless of scanner
findings; only scanner execution failures block the build. - Security scan results are attached to the pre-release manifest with
per-scanner finding counts. - Stable promotion is blocked when the security qualification suite has
undisposed blocking findings, and the block is reported with the specific
findings responsible. - The temporary
fail-on-static-findings: falseoverride is removed from
release-tag.yml. -
CI.md,architecture/build.md, and the RFC 0014 release qualification
supplement describe the enforcement point consistently. - A pre-release with a known backlog is demonstrated publishing successfully
and being correctly withheld from stable promotion.
Alternatives Considered
- Baseline/delta enforcement inside
release-tag.yml. Keep publication
gated, but only fail on findings new since the previous stable tag. This is
the removal condition currently documented for the #3552 override. It fixes
the immediate backlog problem but keeps enforcement in the publication path,
so it still contradicts RFC 0014 and still lets a single new finding block
artifact production. - Keep blocking and burn down the backlog. Triage the 8 CodeQL, 27 Zizmor,
and 1 Trivy findings to zero, then restorefail-on-static-findings: true.
This does not change the structural problem: the next backlog stalls the train
again, and it couples release cadence to triage capacity. - Leave the override in place indefinitely. Rejected — it removes the signal
with no compensating gate before stable promotion.
Agent Investigation
Related material:
- RFC 0014 —
rfc/0014-release-stability/README.md,
rfc/0014-release-stability/release-qualification.md - #3552 — introduced the temporary observation mode this issue supersedes
- Lingua principale
- Rust
- Stelle
- 8.7k
- Fork
- 1.3k
- Merge medio
- 2g 8h
- PR unite (30g)
- 271
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NVIDIA/OpenShell
-
area:docs
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
state:triage-needed
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
area:cli state:validated
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
state:triage-needed
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
area:build spike state:review-ready state:stale
Difficoltà 2/5 Mezza giornata Idoneità per principianti 68/100
Tutte le issue di NVIDIA/OpenShell
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
web-infra-dev/rspack#15847 ·