-
Notifications
You must be signed in to change notification settings - Fork 0
Scope and limits
Measured across 243 real failed jobs from 15 popular repositories:
| share | status | |
|---|---|---|
| Plain Ubuntu jobs | 63% | supported |
| Reusable workflows | 13% | supported — exact when the call is same-repo or SHA-pinned |
| macOS / Windows | 23% | refused |
| Unknown runner labels | 1% | asks you to map it |
So it helps with roughly 76% of real CI failures. That number is measured, not estimated, and the corpus it came from is committed in the repository.
A Linux container cannot run them. Windows containers exist but only on a Windows host, GitHub's
windows-2022 runner image is not published anywhere, and there is no community equivalent. The
honest options were "refuse" or "run something that is not what CI ran" — and a tool whose entire
value is fidelity cannot choose the second.
You still get the full resolution for those jobs: commit, matrix leg, which step failed, which
secrets it needed. Only the reproduction is refused, with exit code 3.
When a job calls org/repo/.github/workflows/x.yml@main, the steps live in another repository at
a ref that has moved. GitHub does not record which commit the run used, so exact fidelity is
impossible in principle. reenact reproduces it anyway — using today's file — and says so loudly.
When it can prove the file changed, it names the step that disappeared.
Three places, all deliberate:
-
Two jobs produce the same display name. Real example:
test-smokeandtestin pnpm both render asTS CI / Test / ubuntu. reenact reports both candidates instead of picking one. - A step name resolves to nothing but an expression, so its pattern would match any step.
-
The failing step cannot be mapped to a YAML step. You can override with
--step N.
Guessing wrong here means dropping you in front of the wrong step, in the wrong environment, with full confidence. That is worse than an error message.
| code | meaning |
|---|---|
0 |
reproducible (and, for reenact <url>, reproduced) |
1 |
error |
3 |
resolved, but cannot be reproduced faithfully |