CI does not run on a push to main, so a merged batch stays untested until the nightly run #648
Labels
No labels
agent-ready
bug
contract
documentation
duplicate
enhancement
good first issue
help wanted
invalid
needs-human
needs-input
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/iw-cli#648
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
.github/workflows/ci.ymlruns onpull_requestand on a nightlyschedule(03:17 UTC). It does not run onpushtomain. Thus the result of a merge is not tested until the next nightly run. This can be up to 24 hours later.Each PR's CI tests its head, and the head is based on the
mainof that time. When several PRs merge in one batch, CI tests none of the combined states onmain. Two PRs can each be green and still breakmaintogether. For example, git can merge two changes to one file with no conflict, and the result can still be wrong. Nobody sees that failure until the nightly run.Seen in
On 2026-09-26 eight final PRs merged in one batch: #624, #626, #632, #638, #645, #647, #634, #640.
core/test/ProcessTest.scala.core/test/GitTest.scala.CI did not test the result on
main(9caddfda). A manual local run did:./iw ./test unit, and the four BATS files that #647 changed. It passed.What is necessary
A merge to
mainmust get a CI result for the commit that it makes onmain. It must not wait for the nightly run. One possible fix is to addpush: branches: [main]toci.yml. Thechangesjob already setsscope=codefor any event that is notpull_request, so all jobs would run.Decide:
main, or onlycompileandtest? The nightly run also runs the contract job.main, and how.Intake: needs-input
1. On a push to main, do all code jobs run, or must the contract job also run?
The
contractjob runs only on the nightly schedule or on a PR with thecontractlabel. Itsif:does not include a push. If we addpush: branches: [main], then compile, format, lint, test and dashboard-build run, and contract does not run. The contract suite checks external tools (git, gh, glab, mill, tmux). It does not check our merged code.Link: https://code.iterative.works/iterative-works/iw-cli/src/branch/main/.github/workflows/ci.yml#L227-L233
if:of the contract job. This adds a slow run that does not check merged code, on each merge.Recommended: a) — It closes the gap in the issue with a change to one line, and the contract job keeps its purpose.
2. Who must see a red CI result on main, and how?
Each PR shows its own CI result to its author. A push run on main has no PR to show it on. The workflow does not send a message when a job fails. A red result on main is visible only in the Actions list of the repository. The nightly run has the same problem now.
Recommended: a) — It changes the least. You can add b) or c) later without a change to the trigger.
Answer in a comment on this issue, per number, for example "1: a", or in your own words; intake reads it on its next iteration.