REPOMATIC-CI-STATUS(1) REPOMATIC-CI-STATUS(1)

repomatic ci-status - Report which CI jobs are red, and which of them gate a merge

repomatic ci-status [OPTIONS]

Report the latest CI run of each workflow, and what is actually broken.

Reads jobs rather than runs, so a crashed allowed-failure probe cannot hide inside a green run conclusion and a run still reading "queued" cannot hide the dozen jobs of it that already finished.

A job whose name carries the unstable glyph anywhere is allowed to fail and never affects the exit code. Every other job is required, including the non-matrix ones that carry no glyph at all. A matrix job whose name still holds its template never evaluated: no cell of it ran.

A run that was cancelled, or that ran no job, is reported as such and never as green: it has no result for its commit. A workflow that ran no job on the tip is read on the last commit whose run of it was not skipped.

--wait polls in-process, at --interval, and ends on the first failed required job rather than at the end of the slowest matrix: that is the moment to act. --until-change and --state-file turn it into a watch that a scheduler re-arms, waking once per event. --failed-logs then fetches the logs to read, one file per failed job.

Branch whose latest run of each workflow to read.
Workflow file to read, repeatable. Defaults to every workflow a push can start, derived from .github/workflows/.
[values: autofix.yaml, autolock.yaml, cancel-runs.yaml, changelog.yaml, debug.yaml, docs.yaml, labels.yaml, lint.yaml, metrics.yaml, release.yaml, self-maintenance.yaml, tests.yaml, unsubscribe.yaml]
Exit non-zero when a required job failed.
Poll until a required job fails, or until every run settled and the tip has a run of its own. Each poll prints the runs whose verdict changed.
Seconds between two polls under --wait.
Under --wait, stop after the first poll reporting a verdict the state file has not seen, so a re-armed watch wakes once per event.
JSON file of the verdicts already reported: read before the first poll, written on every change.
Seconds after which --wait gives up, 0 for no limit.
Write the log of every failed required job into this directory, control sequences stripped. A settled job's log is readable while its run goes.
Also list the open pull requests of the automation, with how many commits each one lags its base.
Also report the open release pull request: its draft state, head and how many commits it lags the branch.
Sort table by this column. Repeat to set priority.
Show this message and exit.

Branch whose latest run of each workflow to read.
Workflow file to read, repeatable. Defaults to every workflow a push can start, derived from .github/workflows/.
Exit non-zero when a required job failed.
Poll until a required job fails, or until every run settled and the tip has a run of its own. Each poll prints the runs whose verdict changed.
Seconds between two polls under --wait.
Under --wait, stop after the first poll reporting a verdict the state file has not seen, so a re-armed watch wakes once per event.
JSON file of the verdicts already reported: read before the first poll, written on every change.
Seconds after which --wait gives up, 0 for no limit.
Write the log of every failed required job into this directory, control sequences stripped. A settled job's log is readable while its run goes.
Also list the open pull requests of the automation, with how many commits each one lags its base.
Also report the open release pull request: its draft state, head and how many commits it lags the branch.
Sort table by this column. Repeat to set priority.
Show this message and exit.

0
Success.
1
A runtime error, an aborted prompt (Ctrl-D), or a declined confirmation.
2
A usage error: unknown option, invalid value, missing operand, or an unparsable configuration file.
130
Interrupted with Ctrl-C: the process ends by SIGINT, reported as 130.

What is red on main right now

repomatic ci\-status

One workflow, without failing the shell

repomatic ci\-status \-\-workflow tests.yaml \-\-no\-fatal

Kevin Deldycke

2026-10-29 8.0.1.dev0