All checks were successful
CI / lint (push) Successful in 1m1s
CI / test (push) Successful in 3m6s
CI / notebooks-smoke (push) Successful in 1m49s
Deploy / changes (push) Successful in 19s
Deploy / notebooks (push) Has been skipped
Deploy / zotero (push) Has been skipped
Deploy / docs (push) Has been skipped
Deploy / api (push) Has been skipped
Deploy / bcda (push) Has been skipped
Deploy / llm (push) Has been skipped
Deploy / mc (push) Has been skipped
Deploy / report (push) Successful in 25s
The changes job diffed github.event.before..SHA, so a re-push that cancelled the run in flight dropped that push's paths for good: the notebooks image never rebuilt for9cba4fd(Dockerfile) or409fc6f(notebooks/), and the registry stayed on thea4b4110Harden build. A new base step asks Gitea for the newest successful deploy.yml run on main and the detector diffs from its head_sha. Cancelled or failed runs stay in the next run's range until they land. No successful run or an API error leaves the base empty, which builds everything. The runner image has no python or jq, so the run JSON is paired with grep + awk; awk reads to EOF so grep never takes a SIGPIPE under pipefail. workflow_dispatch added so a catch-up run needs no push.