diff --git a/.github/workflows/gate.yml b/.github/workflows/gate.yml index df5d1fdb..955e6c30 100644 --- a/.github/workflows/gate.yml +++ b/.github/workflows/gate.yml @@ -76,12 +76,22 @@ concurrency: jobs: # Dynamic matrix for build-and-test: pre-merge events (pull_request - # and merge_group) get Linux-only (production build path, fast — - # keeps PR checks and merge-queue runs short). Push-to-main / - # workflow_dispatch get the full set including macos-26 - # (developer-experience verification) and the Windows experimental + # and merge_group) get Linux production legs + macos-26 + # (developer-experience verification). Push-to-main / + # workflow_dispatch additionally include the Windows experimental # legs. Standard GitHub-hosted runners are free for public repos so - # the post-merge run has no cost downside. + # all PR cadence has no cost downside. + # + # Duration check (maintainer 2026-04-28): the original 25-min + # concern that pushed macos-26 to per-merge was an outlier. + # Recent build-and-test job durations are typically 1-3 min on + # cached runners — comfortably within PR-cadence budget. + # + # Maintainer 2026-04-28: "mac is less than that too so we might as + # wel move that back form per merge to per pr, i think that means + # only low memory is per merge now." → macos-26 moves to PR cadence; + # only ubuntu-slim (low-memory.yml) + Windows experimental remain + # on per-merge. matrix-setup: name: matrix setup runs-on: ubuntu-24.04 @@ -93,20 +103,15 @@ jobs: shell: bash run: | # Pre-merge (pull_request + merge_group): Linux production - # legs only (~3 min wall clock). - # Push-to-main / workflow_dispatch: full surface incl. - # macos-26 (developer-experience) + Windows legs - # (peer-harness milestone seeding per maintainer 2026-04-27 — - # "start the windows one as a per push to main too/merge to - # main, you can start slowly building that out before I get - # my windows laptop running the peer-mode agent, windows - # will be mostly ready and they can just clean it up"). + # legs + macos-26 dev-experience leg (~3-4 min total). + # Push-to-main / workflow_dispatch: pre-merge legs + Windows + # experimental legs (peer-harness milestone seeding). # Windows legs are gated by `continue-on-error: true` at the # build-and-test job level so initial failures (e.g. missing # tools/setup/install.ps1) don't block per-merge runs while # the peer-agent polishes the path. if [ "${GH_EVENT}" = "pull_request" ] || [ "${GH_EVENT}" = "merge_group" ]; then - echo 'os=["ubuntu-24.04","ubuntu-24.04-arm"]' >> "$GITHUB_OUTPUT" + echo 'os=["ubuntu-24.04","ubuntu-24.04-arm","macos-26"]' >> "$GITHUB_OUTPUT" else echo 'os=["ubuntu-24.04","ubuntu-24.04-arm","macos-26","windows-2025","windows-11-arm"]' >> "$GITHUB_OUTPUT" fi @@ -141,30 +146,31 @@ jobs: # Reference: # https://github.blog/changelog/2026-01-22-1-vcpu-linux-runner-now-generally-available-in-github-actions/ # - # Per-merge experimental legs (maintainer 2026-04-27 — replaces - # the prior 2026-04-24 deferral so Windows infrastructure is - # mostly-ready when the peer-mode agent comes online): + # Per-merge experimental legs (maintainer 2026-04-27): # - windows-2025 Windows Server 2025 x64 (4 CPU, 16 GB) # - windows-11-arm Windows 11 arm64 (4 CPU, 16 GB) - # These run only on push-to-main / schedule / workflow_dispatch - # (not on PR — same cadence as macos-26). They carry - # `continue-on-error: true` because no PowerShell install script - # exists yet (`tools/setup/install.ps1` TBD); failures are - # visible-but-not-blocking until the peer-agent polishes the - # path. + # These run only on push-to-main / workflow_dispatch (not on PR). + # They carry `continue-on-error: true` because no PowerShell + # install script exists yet (`tools/setup/install.ps1` TBD); + # failures are visible-but-not-blocking until the peer-agent + # polishes the path. # # fail-fast: false so one leg's failure doesn't cancel the # others — we want the full signal across the matrix. # - # Per-PR / per-merge cadence split (maintainer 2026-04-27): - # - macos-26: developer-experience verification, NOT prod build. - # Runs only on push-to-main + schedule + workflow_dispatch. - # Same rationale as the Analyze (csharp) move below. + # Per-PR / per-merge cadence split (maintainer 2026-04-28): + # - macos-26: developer-experience verification. Runs on every + # PR + merge_group + push-to-main. Originally moved to + # per-merge over a 25-min duration concern; verified 2026-04-28 + # that recent gate.yml runs are well under that (typical + # build-and-test job is 1-3 min on cached runners), so back to + # PR cadence per maintainer ask. # - ubuntu-24.04 + ubuntu-24.04-arm: production build path; runs - # on every PR + push-to-main. - # The matrix is built dynamically by `matrix-setup` so PR runs - # only get the Linux legs while push-to-main / schedule / - # workflow_dispatch run all three. + # on every PR + merge_group + push-to-main. + # The matrix is built dynamically by `matrix-setup` so PR + + # merge_group runs include macos-26, while push-to-main / + # workflow_dispatch additionally include the Windows experimental + # legs. name: build-and-test (${{ matrix.os }}) timeout-minutes: 45 needs: matrix-setup diff --git a/tools/hygiene/github-settings.expected.json b/tools/hygiene/github-settings.expected.json index 79c36be6..3eaf7737 100644 --- a/tools/hygiene/github-settings.expected.json +++ b/tools/hygiene/github-settings.expected.json @@ -131,6 +131,7 @@ "required_signatures": false, "required_status_checks": { "contexts": [ + "build-and-test (macos-26)", "build-and-test (ubuntu-24.04)", "build-and-test (ubuntu-24.04-arm)", "lint (actionlint)",