The image job has been red on PR #252 and green on main, and nothing in that PR touches CI. The runner is the whole difference:
run
image job ran on
result
434
mac2
success, deploy success
441
mac1
failure, "staging postgres never became ready"
Both runs were of the same branch and the same gate script. mac1 has the smaller OrbStack allocation, and the gate starts a throwaway Postgres, a Redis and the candidate relay as sibling containers on the host daemon.
Two changes:
The image job names mac2 instead of taking whichever runner is free, so the result does not depend on which machine picks the job up.
The gate prints the Postgres container's state and its log when it does not come up. "Never became ready" covered both a Postgres still starting and a container that never ran at all, and those need different fixes.
The second change is the one that matters longer term: mac1 said nothing further, so 90 seconds of waiting read as a relay bug.
The image job has been red on PR #252 and green on main, and nothing in that PR touches CI. The runner is the whole difference:
| run | image job ran on | result |
|---|---|---|
| 434 | mac2 | success, deploy success |
| 441 | mac1 | failure, "staging postgres never became ready" |
Both runs were of the same branch and the same gate script. mac1 has the smaller OrbStack allocation, and the gate starts a throwaway Postgres, a Redis and the candidate relay as sibling containers on the host daemon.
Two changes:
1. The image job names `mac2` instead of taking whichever runner is free, so the result does not depend on which machine picks the job up.
2. The gate prints the Postgres container's state and its log when it does not come up. "Never became ready" covered both a Postgres still starting and a container that never ran at all, and those need different fixes.
The second change is the one that matters longer term: mac1 said nothing further, so 90 seconds of waiting read as a relay bug.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The image job failed on PR #252 and passed on main with no code difference
between them that touches CI. The runner is the difference: run 434 built on
mac2 and passed, run 441 built on mac1 and failed at "staging postgres never
became ready", on the same two commits. mac1 has the smaller OrbStack
allocation, and the gate starts three sibling containers on the host daemon.
The job now names mac2 rather than taking whichever runner is free.
The gate also prints the container's state and log when Postgres does not come
up. "Never became ready" covered both a Postgres still starting and a
container that never ran, which need different fixes, and mac1 said nothing
further, so 90 seconds of waiting read as a relay bug.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The image job has been red on PR #252 and green on main, and nothing in that PR touches CI. The runner is the whole difference:
Both runs were of the same branch and the same gate script. mac1 has the smaller OrbStack allocation, and the gate starts a throwaway Postgres, a Redis and the candidate relay as sibling containers on the host daemon.
Two changes:
mac2instead of taking whichever runner is free, so the result does not depend on which machine picks the job up.The second change is the one that matters longer term: mac1 said nothing further, so 90 seconds of waiting read as a relay bug.
🤖 Generated with Claude Code