A green webhook that never built anything
Delivered and acted upon are different claims
HTTP 200 means the request was accepted, not that anything happened.
GitHub showed green checkmarks for every webhook delivery — the initial ping and both pushes. Jenkins was receiving them and returning HTTP 200.
No build ever started.
Why
Green in GitHub only means the request was accepted. Jenkins still has to match the payload to a job, and when it cannot, it drops the request silently.
I switched to Poll SCM with H/5 * * * *, which has no matching logic at all — Jenkins simply asks GitHub whether the commit hash changed.
The trap underneath
Polling compares against the last successfully built revision. Every previous build had died before finishing checkout, so there was no baseline to compare against and polling had nothing to detect.
One green build wrote that baseline, and automatic triggering started working immediately.
Takeaway
When a system reports success, ask what exactly it is claiming succeeded.