fix(ci): the Ghostty Zig workflow guard reads feat-cmux-next's ghostty-next jobs
Merged
TE
16d ago+91+91+01234567890123456789-2-2-0123456789
Summary
ci-guards.yml's "Validate Ghostty Zig version synchronization" step (./tests/test_ghostty_zig_version_sync.sh, release-tooling group) is red on feat-cmux-next. It runs tests/check_ghostty_zig_workflows.py --require-setup-zig .github/workflows, and that checker misreads feat's cmux-tui jobs. The workflows are fine; the checker had three gaps:
- ghostty-next init.
bash scripts/ci/init-submodule.sh ghostty-nextwas not counted as a Ghostty init. Onlyinit-submodule.sh ghosttyandgit submodule update --init ghostty|ghostty-nextwere. As a result, 13 jobs that init ghostty-next beforeinstall-zig-ci.sh(cmux-next.yml, cmux-tui.yml, cmux-tui-spec.yml, rust-workspaces.yml, cmux-next-car-guards.yml, ...) were reported as "executes ... before Ghostty submodule init". The script now accepts either Ghostty source, the same as the git form. - nightly.yml. The bundle-check step in
sign-nightly-identity-legacycontains acasethat bashlex cannot parse. A step that names no Zig consumer is now skipped when its shell does not parse. Skipping it can only miss an init, which would show up as a consumer reported before init. It can never hide a consumer. - One init step. With the first fix,
cmux-tui-build-package.ymlinits ghostty and ghostty-next in one step, and the TUI setup-zig rule ("exactly one Ghostty submodule initialization") counted that as two. The rule now counts init steps, not commands.
Changelog
none
Testing
- Focused command:
./tests/test_ghostty_zig_version_sync.sh, which runstests/test_check_ghostty_zig_workflows.pyand the checker. - Red on base: "Validate Ghostty Zig version synchronization" in https://github.com/manaflow-ai/cmux/actions/runs/39634548627/job/119341421946 lists the same 13 "before Ghostty submodule init" findings, test-windows "expected exactly one Ghostty submodule initialization", and the nightly.yml "cannot parse relevant run step" finding.
- Head, run locally (the checker only):
python3 tests/check_ghostty_zig_workflows.py --require-setup-zig .github/workflowsexits 0 with no output. On base it printed the findings above. - Commits: the red fixtures are commit 216c3af328bd and the fix is 94dce1090b65. The fix adds one more fixture, for the both-sources init step, which is not red on base.
Feat pull requests do not run the release-tooling group until #23534 lands. After that, this PR's CI routes the group by path.
Observed / Not run
- Observed: the checker's local output on the base and on the head (above), ast parse of both files, and the prepush gate.
- Not run: the test files themselves. Python and shell tests run only on CI from this machine.
Agent session: cosmic-gray
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Fixes the Ghostty Zig version synchronization guard so it correctly validates feat-cmux-next workflows, where it was failing.
- Counts
init-submodule.sh ghostty-nextas a Ghostty init, matching how the git form already worked; previously 13 cmux-tui jobs reported as running Zig before init. - Skips steps that hook bashlex cannot parse when they name no Zig consumer; this can only miss an init, never hide one.
- Counts init steps rather than init commands, so one step initializing both Ghostty sources (ghostty and ghostty-next) counts as a single init.