Skip to content

ci: prioritize required checks before long advisory suites - #2356

Merged
dnlrsls merged 1 commit into
Gentleman-Programming:mainfrom
dnlrsls:ci/queue-required-priority
Nov 11, 2026
Merged

dnlrsls merged 1 commit into
Gentleman-Programming:mainfrom
dnlrsls:ci/queue-required-priority

Conversation

@dnlrsls

@dnlrsls dnlrsls commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

Delivery status: Integrated as f2c04d0bb5c04a7a0d281f0fef070824591d28b9; #2355 is closed. All required queue contexts passed. Its observational Windows queue run had hook timeouts; the separate main CI43057992044 on the same SHA passed. Occurrence and scope; no timing root cause or quantified speedup is inferred.

Problem and result

Required merge queue jobs can wait for runners while long advisory suites occupy capacity. Unit, E2E and Plugin now finish before Race, full Windows and native macOS Go suites are admitted to runners. All suites retain their events, commands, prerequisites, source revision, failures and timeouts.

Closes #2355 — approved scheduling design and observed queue waits. This preserves the Race cadence accepted in #2020.

flowchart TD
    A[PR / merge group / main push] --> B[Unit / E2E / Plugin]
    A --> C[Other existing independent checks]
    B --> D{Run cancelled?}
    D -->|No, including failed or skipped prerequisites| E[Race / Windows full / macOS native Go]
    D -->|Yes| F[Cancel diagnostic suites]
Loading

Verification

Node 24 on WSL/Linux: all 838 policy tests completed, 832 PASS and six platform skips. Actionlint PASS with external shellcheck/pyflakes disabled. Hosted CI and review receipt status are recorded below; actual post-merge queue latency remains unmeasured.

Risk

This orders jobs within each run; it does not provide priority across runs or change runner quotas. Advisory PR feedback and overall workflow completion can arrive later, including on platforms with separate capacity. Other jobs still compete for runners. Required contexts and repository settings are unchanged. !cancelled() preserves diagnostic execution after failed/skipped prerequisites; no successful fallback is introduced. Rollback reverts this scheduling unit and its owning tests/docs.

Candidate and verification receipt
  • Base: 02e244f453491c5e3ba9782a232bf3f089a30eca. Frozen working candidate: f9766dc8c2619d114b85cf129ec28eac30eb21ee14459846ee34ec03afbb0cac.
  • Delivered head: a721097dbd36f0158280ed2e6e959727a3d42bb5, nine files, 71 additions/six deletions. Post-commit equivalence PASS: reconstructed original HEAD/index reproduces the reviewed fingerprint; all nine Git-normalized file blobs match the committed tree. Clean working tree.
  • Independent read-only review by validator_2920: no actionable findings; before/after frozen fingerprint identical. Reviewer inverted only the six scheduling lines to recover the exact original LF-normalized workflow, verified its protected hash and all 22 job dependencies form an acyclic graph. Independent affected-contract execution on WSL: 114 PASS/five native Windows skips out of 119, zero failures, 3.772s. Helper mutation probes retained arbitrary conditions/dependencies/duplicate blocks for rejection. Status-predicate logic checks are not hosted execution proof.
  • Workflow delta is exactly six added scheduling lines in three jobs. Every existing step, permission, cache identity, command, deadline and checkout remains unchanged; required jobs gain no dependency or event condition.
  • Baseline regression RED: the new queue contract failed on the absence of the Race dependency. Owning guards now exempt only the exact reviewed two-line preamble, while existing negative tests still reject additional dependencies and conditional test suppression. New mutations reject partial dependencies, success-only/event-filter/always guards and dependencies from required jobs back to advisory suites.
  • node --test .github/scripts/*.test.mjs on Node 24 under WSL: exit 0, 838 tests, 832 pass, six platform skips, 3.673s. This tests workflow contracts, not actual GitHub scheduling or native Go behavior.
  • actionlint -shellcheck= -pyflakes= .github/workflows/ci.yml: exit 0. Git diff whitespace check passed.
  • Initial native Windows focused run: 112 pass, two macOS reporter fixture cleanup EPERM failures. Linux focused run: 109 pass/five native Windows skips. Broader verification caught the expected protected workflow hash change and a raw-CRLF regex limitation; updated the hash only after confirming the six-line delta, and used LF workflow bytes matching the Git blob. The final full Linux run above passed. An intermediate wrapper exited incorrectly after passing tests; the corrected command was rerun with exit 0.
  • No Go production changes; full Go suites are left to normal hosted CI. No new workflow dispatch, protection-rule mutation or live queue cancellation was performed. Before/after hosted latency and failed-prerequisite scheduling are not yet runtime proof; the intended status-function behavior follows GitHub's workflow semantics.
  • All applicable executed hosted checks passed for head a721097. CodeRabbit review completed without actionable comments. The normal merge queue integrated this change as f2c04d0 on 2026-11-11; ci: prioritize required checks before long advisory suites #2355 is closed. Actual merge-group timestamps confirm the three full suites started after Unit/E2E/Plugin completed; no quantified latency improvement is claimed. Fresh local focused WSL/Linux execution: 59 PASS/four Windows-only skips (63 total, exit 0, 4.421s). Fresh native Windows execution: 61 PASS/two macOS-reporter cleanup EPERM failures, the same limitation recorded above; no green native run is claimed. Scheduling contracts passed on both.

@dnlrsls dnlrsls added the type:chore Maintenance/tooling label Nov 11, 2026
@coderabbitai

coderabbitai Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

Three full-suite CI jobs now wait for Unit, E2E, and Plugin jobs before running. They use a cancellation condition that allows execution after prerequisite failures or skips. Contract tests and CI documentation cover the scheduling rules.

Changes: CI suite scheduling

Layer / File(s) Summary
Schedule full-suite jobs after technical checks
.github/workflows/ci.yml, CONTRIBUTING.md, docs/ci-go-race.md
The Race, native macOS, and Windows suite jobs now depend on Unit, E2E, and Plugin jobs and use !cancelled(). The documentation describes this scheduling, cancellation behavior, and the race job’s execution-time budget.
Check scheduling rules and preserve job contracts
.github/scripts/ci-suite-priority.mjs, .github/scripts/merge-queue.test.mjs, .github/scripts/ci-technical-contracts.test.mjs, .github/scripts/ci-unit-node.test.mjs, .github/scripts/windows-suite.test.mjs, .github/scripts/issue-refresh-router-workflow.test.mjs
New contract checks verify the suite dependencies and cancellation condition, and reject added suite dependencies on technical-check jobs. Existing job-contract checks remove the priority declarations before validation. The workflow hash baseline is updated.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other · Severity of issue fixed: Medium

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant UnitTests
  participant E2ETests
  participant PluginTests
  participant RaceTests
  participant MacOSNativeTests
  participant WindowsSuite
  par Run prerequisite jobs
    GitHubActions->>UnitTests: Run unit tests
    GitHubActions->>E2ETests: Run E2E tests
    GitHubActions->>PluginTests: Run plugin tests
  end
  GitHubActions->>RaceTests: Schedule after prerequisites unless cancelled
  GitHubActions->>MacOSNativeTests: Schedule after prerequisites unless cancelled
  GitHubActions->>WindowsSuite: Schedule after prerequisites unless cancelled
Loading

Possibly related issues

Possibly related PRs

Suggested reviewers: gentleman-programming, alan-thegentleman

Merge Risk: Minimal · up to a7210

This change reorders CI scheduling so required checks get runner capacity before the long advisory suites. No concrete merge-blocking risk was found; queue-latency effects will be visible after merge.

Pre-merge checks: Passed 4

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: prioritizing required checks before long advisory suites.
Linked Issues check Passed The PR satisfies the coding requirements in directly linked issue #2355. ci.yml keeps pull_request, merge_group, and push events. race-tests, windows-suite, and macos-native-tests now us…
Out of Scope Changes check Passed The changes remain within issue #2355. The helper removes the scheduling declarations only for baseline contract tests. The added mutations verify rejection of invalid scheduling. The workflow changes…
Full details: Linked Issues check

Explanation

The PR satisfies the coding requirements in directly linked issue #2355. ci.yml keeps pull_request, merge_group, and push events. race-tests, windows-suite, and macos-native-tests now use needs: [unit-tests, e2e-tests, plugin-tests] and if: ${{ !cancelled() }}. The required jobs remain independent. Existing suite commands, checkout SHA, permissions, timeouts, and cache configuration remain present in the reviewed workflow evidence. Regression tests cover prerequisites, conditions, dependency direction, event coverage, source revision, steps, commands, and dependency cycles. The PR reports passing policy tests, actionlint, and independent review.

Full details: Out of Scope Changes check

Explanation

The changes remain within issue #2355. The helper removes the scheduling declarations only for baseline contract tests. The added mutations verify rejection of invalid scheduling. The workflow changes contain the requested six scheduling lines. CONTRIBUTING.md and docs/ci-go-race.md document the same scheduling behavior and its limits. No unrelated production or Go changes are reported.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 02e244f and a721097.

Files selected for processing: 9

  • .github/scripts/ci-suite-priority.mjs
  • .github/scripts/ci-technical-contracts.test.mjs
  • .github/scripts/ci-unit-node.test.mjs
  • .github/scripts/issue-refresh-router-workflow.test.mjs
  • .github/scripts/merge-queue.test.mjs
  • .github/scripts/windows-suite.test.mjs
  • .github/workflows/ci.yml
  • CONTRIBUTING.md
  • docs/ci-go-race.md

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 6 remain after this review.

@dnlrsls
dnlrsls marked this pull request as ready for review November 11, 2026 16:11
@dnlrsls
dnlrsls added this pull request to the merge queue Nov 11, 2026
Merged via the queue into Gentleman-Programming:main with commit f2c04d0 Nov 11, 2026
60 of 61 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:chore Maintenance/tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci: prioritize required checks before long advisory suites

1 participant