You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
perf(ci): collapse the per-file and per-test Zsh jobs and gate next on them #598
zsh-n.yml is about 82% of this repository's runner time and shapes every pull request's time to green.
Each run starts about 126 jobs: one zsh -n plus zcompile job per source file (about 86) and one job per focused test (about 37).
Every job installs Zsh with apt (10 to 22 s) to run a check that takes under a second. On PR fix(light): load classic zi light without tracking #594 (run 37629187706) the 128 jobs waited a median 86 s and up to 167 s for a runner, which also delays the required checks queued behind them.
promotion-readiness.yml already runs the same syntax and compile pass over every source in one job.
Separately, the next ruleset requires only Validate Commits, Validate PR Title, Validate Branch Name, check, Public contract impact and Analyze (actions). No functional test gates a merge into next: the Zsh jobs and ZD Integration are not required, and both are path-filtered, so they could not be required as they stand. A red test job does not block the merge button.
tests/ci-registration.zsh exists because a test that is not wired into CI never runs and nobody notices (#549). Any consolidation has to keep that guarantee.
Change
Run the syntax and compile pass over all sources in one job, as promotion-readiness.yml does.
Run the focused tests in a small number of jobs, each installing Zsh once and running its tests in sequence with a per-test result, instead of one job per test.
Keep tests/ci-registration.zsh meaningful by checking the new registration shape.
Add an always-running aggregate job (no workflow-level path filter) that succeeds only when the syntax and test jobs succeeded or were legitimately skipped, so it can become a required check for next. Changing the ruleset itself is a separate maintainer action.
Measurements come from the Actions API for runs between 2026-10-01 and 2026-10-07.
Item Type: CI. Workflow restructuring with the type:maintenance label.
Impact: Medium. The Zsh workflow was most of the repository's runner time, and no functional test gated a merge into next.
Effort: M. One workflow is restructured and tests/ci-registration.zsh must keep its guarantee.
Priority: P2 - Medium. It shapes every pull request's time to green.
Workstream: Human delivery.
Status: In Review. PR ci(zsh): run checks in two jobs and add an always-on gate #601 is merged into next (bf9e150): zsh-n.yml runs a syntax job, a tests job and an always-running Zsh Gate that needs both, with no workflow-level path filter. The issue closes when next is promoted to main. Adding Zsh Gate to the next ruleset's required checks is a separate maintainer action; the ruleset does not list it yet.
Activity
ci(zsh): run checks in two jobs and add an always-on gate
ci(zsh): run checks in two jobs and add an always-on gate
ss-o commentedon Oct 8, 2026
Project 28 triage. Values set on this issue:
CI. Workflow restructuring with thetype:maintenancelabel.Medium. The Zsh workflow was most of the repository's runner time, and no functional test gated a merge intonext.M. One workflow is restructured andtests/ci-registration.zshmust keep its guarantee.P2 - Medium. It shapes every pull request's time to green.Human delivery.In Review. PR ci(zsh): run checks in two jobs and add an always-on gate #601 is merged intonext(bf9e150):zsh-n.ymlruns asyntaxjob, atestsjob and an always-runningZsh Gatethat needs both, with no workflow-level path filter. The issue closes whennextis promoted tomain. AddingZsh Gateto thenextruleset's required checks is a separate maintainer action; the ruleset does not list it yet.github-actions commentedon Oct 8, 2026
Released to
mainby promotion #617; the fix merged intonextin #601.