Blog
"Why did nothing run?" now has an answer
Every push now leaves a verdict for every workflow file, including the ones that ran nothing — and names the filter that said no.
Apex Actions engineeringengineeringproduct
The most common question in CI has the least helpful answer on GitHub. You push, you open the Actions tab, and the list is empty. Was the path filter wrong? Did the branch filter exclude it? Is the YAML broken? Is the App even installed? GitHub says nothing, so you edit the workflow, push again, and watch.
A verdict for every workflow
As of this release, every delivery Apex receives records what it decided about every workflow file in the repository. A workflow that ran has a run. A workflow that did not run has a verdict: not triggered, with the trigger and the filter that said no, as the workflow wrote it.
ci.yml ran push · refs/heads/main
deploy.yml skipped paths: ['infra/**'] matched nothing
docs.yml skipped branches-ignore: ['main'] excluded refs/heads/main
Why this took a design decision
A verdict is only useful if it is the engine's own reasoning, not a second implementation of the filter rules. So the engine reports a refusal the same way it reports a plan: a consumer can branch on it, and the filter list comes back exactly as the workflow spelled it. There is no way for the verdict and the actual behaviour to disagree, because they are the same evaluation.
Reproduce it locally
The same release records the exact invocation of every job, so a failed job prints a command that runs it on your machine, with every secret named and never carried. It is the second half of the same idea: if the system decided something, it should be able to show its working.
See it on your own pull request
Every plan starts with a 10-day trial, without a card.