Skip to content

Run CI on pushes to main - #38

Merged
m96-chan merged 2 commits into
mainfrom
ci-on-main-push
Sep 14, 2026
Merged

m96-chan merged 2 commits into
mainfrom
ci-on-main-push

Conversation

@m96-chan

Copy link
Copy Markdown
Owner

main's required status check was removed so pull requests would stop waiting on a 45-minute run. That also removed the only thing verifying what reaches main: a merge can now land with nothing having reported on it.

This does not restore the gate — a push runs after the fact. It restores attribution: a break on main is reported against the commit that caused it, rather than discovered by whoever opens the next pull request.

Two details a push trigger needs:

  • cancel-in-progress is now conditional. A pull request superseding its own earlier run is what that setting is for. main superseding its own is not — if a merge cancelled the run verifying the merge before it, a break could land with nothing ever reporting on it, which is exactly the case this exists to cover.
  • The concurrency group keys on the pull request number where there is one and the commit otherwise, so two pushes to main never share a group.

It also fixes the cache scoping

A pull_request run writes its cache into refs/pull/N/merge, which no other pull request can read. Five identical ghostty-vt-… entries existed under five different pull requests, none of them reachable — so every pull request was installing Zig and compiling the same pinned revision from scratch, about four minutes each time. A run on main writes where they can all restore from.

This makes cache-ghostty.yml in #37 redundant, since this run warms the same cache. Worth dropping from that branch when it rebases.

Note on #37

#37 rewrites this file into four parallel jobs, so the two will conflict textually. This is the smaller and more urgent of the two — it is against the file as main has it today, and the trigger carries over to #37's shape unchanged.

🤖 Generated with Claude Code

m96-chan and others added 2 commits September 15, 2026 00:21
…erging

main's required status check was removed to stop pull requests waiting on a
45-minute run. That also removed the only thing verifying what reaches main, so
a merge can now land with nothing having reported on it at all.

This does not restore the gate — it cannot, a push is after the fact. What it
restores is attribution: a break on main is reported against the commit that
caused it rather than discovered by whoever opens the next pull request.

Two details that matter for a push trigger:

`cancel-in-progress` is now conditional. A pull request superseding its own
earlier run is what that setting is for; main superseding its own is not. If a
merge cancelled the run verifying the merge before it, a break could land with
nothing ever having reported on it, which is the case this exists to cover.

The concurrency group keys on the pull request number where there is one and the
commit otherwise, so two pushes to main never share a group.

It also warms the caches, which is worth more here than it looks. A
`pull_request` run writes its cache into `refs/pull/N/merge`, and no other pull
request can read that scope — five identical libghostty-vt entries existed under
five different pull requests, none of them reachable, so every pull request was
installing Zig and compiling the same pinned revision from scratch. A run on main
writes where they can all restore from.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@m96-chan
m96-chan merged commit 881edb7 into main Sep 14, 2026
6 checks passed
m96-chan added a commit that referenced this pull request Sep 15, 2026
… not there (#42)

main has been red on every push since #38. The `scope` job reads the changed
files from `repos/OWNER/REPO/pulls/NUMBER/files`, and on a push event
`github.event.pull_request.number` is empty, so the request goes to `/pulls//files`
and comes back 404. `scope` fails, every job that needs it is skipped, and the
`ios` check reports the failure.

#37 added `scope` for pull requests and #38 added the push trigger. Each was
green on its own; the combination was never run before it was on main.

A push has nothing to skip anyway. What reached main is worth building, and that
run is the only thing that reports on it now that the required check cannot.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant