fix(ci): the Ghostty Zig workflow guard reads feat-cmux-next's ghostty-next jobs

Merged
TE
16d ago
+91-2

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-next was not counted as a Ghostty init. Only init-submodule.sh ghostty and git submodule update --init ghostty|ghostty-next were. As a result, 13 jobs that init ghostty-next before install-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-legacy contains a case that 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.yml inits 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 runs tests/test_check_ghostty_zig_workflows.py and 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/workflows exits 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


View with [code]smith Autofix with [code]smith
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-next as 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.