chore(#1351): wire determinism_check as required PR gate#1377
Merged
Conversation
…lidation.yml Closes the acceptance gap from #1297 by exposing a single, non-matrix required status check ('Fluxion Determinism Gate (Issue #1351)') that branch protection on main can reference. Workflow changes (.github/workflows/ashrae_validation.yml): - Add 'workflow_run' trigger on the 'Cross-Platform Determinism CI' workflow completion for the same SHA. - Add 'fluxion-determinism-gate' listener job that: * exits 0 on 'success' / 'neutral' / 'skipped' upstream conclusions; * exits 1 and posts a PR comment with the upstream run URL on 'failure' / 'cancelled' / 'timed_out' upstream conclusions; * uses the Python-list-of-strings PR-comment pattern already established by the in-workflow 'validate' job. - Add explicit 'needs: compare-hashes' to every isolation job (weather, solar, conduction, ventilation, zone-balance) so the whole gate blocks on cross-platform determinism, not just the ASHRAE 140 'validate' job. Configuration changes (release_gates.yaml): - Add 'Fluxion Determinism Gate (Issue #1351)' to ci.required_checks. - Add matching ci.workflow_index entry with 'observes_workflow' field documenting the cross-workflow relationship. Docs: - New .github/BRANCH_PROTECTION.md admin runbook documenting the manual branch-protection step (one-time, GitHub-side), the canonical check name, the listener behaviour, the verification procedure (synthetic broken-determinism PR), and the linked issues (#1297, #1351, #1357, #1063). - docs/CONTRIBUTING.md: new 'Cross-Platform Determinism CI Gate' subsection under 'Deterministic Testing' with the local repro recipe matching the upstream RUSTFLAGS. Manual step required (documented in .github/BRANCH_PROTECTION.md): A repo admin must add the canonical check name 'Fluxion Determinism Gate (Issue #1351)' to the GitHub branch- protection 'Required status checks' list on main. The PR cannot do this — branch protection is GitHub-side config. Fixes #1351 Closes #1297 (acceptance gap)
f5f3c30 to
67895e0
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.
fixes #1351
Summary
Wires the
Cross-Platform Determinism CIworkflow conclusion as a single, non-matrix required PR gate (Fluxion Determinism Gate (Issue #1351)) that branch protection onmaincan reference. Closes the acceptance gap from #1297.What this PR does
.github/workflows/ashrae_validation.yml— adds aworkflow_runtrigger and afluxion-determinism-gatelistener job that:Cross-Platform Determinism CIcompletes for the same SHA,success/neutral/skippedupstream conclusions,failure/cancelled/timed_outupstream conclusions.Same file — adds explicit
needs: compare-hashesto every isolation job (weather, solar, conduction, ventilation, zone-balance) so the whole gate (not just thevalidatejob) blocks on cross-platform determinism.release_gates.yaml— addsFluxion Determinism Gate (Issue #1351)toci.required_checksand a matching entry inci.workflow_indexwith the newobserves_workflowfield documenting the cross-workflow relationship. Mirrors the existing Wire strict ±15% annual-energy CI gate (un-ignore 4 tests blocked by #1323 cooling physics) #1333 strict-energy-gate pattern from PR feat(#1333): wire strict ±15% annual-energy CI gate #1368..github/BRANCH_PROTECTION.md(new) — admin runbook documenting the manual branch-protection step, the canonical check name, the listener behaviour, the verification procedure (synthetic broken-determinism PR), and the linked issues (Establish cross-platform FP determinism CI gate — close intermittent failures #1297, Wire determinism_check as required PR gate in ashrae_validation.yml — close #1297 acceptance gap #1351, fix(ci): gate ort imports + add drift-check permissions + fix MultiNodeSolver false-positive #1357, [Testing] Verify Cross-Platform Floating-Point Determinism (Windows/Mac/Linux) #1063).docs/CONTRIBUTING.md— new "Cross-Platform Determinism CI Gate" subsection under "Deterministic Testing" with the local repro recipe matching the upstreamRUSTFLAGS.Manual step required (not in this PR)
GitHub branch protection is repository-side config that cannot be modified from a PR. A repository administrator must:
mainrule → Require status checks to pass before merging.Fluxion Determinism Gate (Issue #1351).Full step-by-step is in
.github/BRANCH_PROTECTION.md. Once applied, the verification procedure in that doc walks through a synthetic broken-determinism PR to confirm the gate actually blocks a merge.Verification
python3 -c "yaml.safe_load_all(...)"parses both modified YAML files cleanly.needs: compare-hashes; new listener job has no upstreamneeds:(fires fromworkflow_run).cargo build --release --features wiring-tracingnot run (no Rust source modified).Out of scope
.github/workflows/determinism_check.ymlis unchanged (kept as the primary entry point per Wire determinism_check as required PR gate in ashrae_validation.yml — close #1297 acceptance gap #1351 scope).scripts/check_branch_protection.pyreferenced inBRANCH_PROTECTION.mdis a follow-up, not part of this PR.Linked issues
ortfeature-gate fix that unblocked the determinism check)