Skip to content

REQ 039

sergio velderrain edited this page Nov 9, 2026 · 1 revision

REQ-039: Release gate: release.yml fails closed before tagging unless 6 checks pass for the exact resolved release commit (both LUnit gates re-validated + both VM-creation phases + both register-runner phases)

Requirement

release.yml shall fail closed before tagging/publishing any release unless, for the exact resolved release-candidate commit SHA: both LUnit gates (Windows/Linux) have a passing workflow_dispatch run whose uploaded gate-result.json independently re-validates (outcome, engineCommit, suiteCommit, totalTests, vipmPresence, waiver subset); AND both VM families have a passing workflow_dispatch run of their VM-creation phase (Windows create-vm, Ubuntu provision-public) AND a separate passing run of their register-runner phase -- six checks total, none satisfied by a historical run against a different commit or an expired (>90-day) LUnit artifact.

Rationale

Fixes two independently-found gaps: REQ-033's LUnit requirement was never actually enforced by any code (release.yml checked nothing before this), and nothing ever verified VM-creation or runner-registration success before a release shipped at all. A first drafted version of this requirement was corrected by 3 independent pre-implementation consensus reviews that found register-runner alone does not prove VM creation (both phases operate on an already-existing VM) and found Windows register-runner had never itself been live-dispatch-proven -- both fixed per ADR-0006's revision.

Fit Criterion

A release candidate commit missing any of the 6 checks fails release.yml's new verify-release-preconditions job before Create Release runs, with a message naming exactly which check failed. release.yml's own inputs.target (a mutable branch/SHA) is resolved to a full immutable SHA exactly once (a new resolve-release-sha job), and every check plus the actual gh release create --target consumes that same resolved SHA -- not the original mutable input -- closing the exact-SHA binding gap the first draft had.

Verification

Planned. Implementation held pending #110 (Windows register-runner's own live-proof, a hard prerequisite -- a release gate leaning on an unproven capability as if proven would be worse than no gate at all). Per ADR-0006.

Source

Software-Requirements-Specification

Priority

High

TestID

TEST-039

TestArtifact

Not yet implemented, held pending #110

CodeRef

docs/architecture/adr/ADR-0006-release-gate-vm-creation-and-lunit-enforcement.md; implementation tracked alongside #110

Status

Planned

Clone this wiki locally