ci: make the staging gate work end to end (status token, required check, stuck-pending timeout) #13

Open
opened 2026-10-19 17:56:57 -04:00 by jfraeys · 0 comments
Owner

The staging check dispatched jfraeys/infra's staging-validate.yml and polled for it. Infra has one runner, so the waiting job starved the validation, and the run-lookup used a Forgejo endpoint that 404s (/actions/workflows/<wf>/runs). The fix is fire-and-forget: the app job posts staging/validate = pending and dispatches; infra's report job posts the final state. Infra side merged (jfraeys/infra#288); app side is PR #10 (and commit 77e77ad on PR #9's branch).

Still open:

  • staging-check failed after 1s on 77e77ad with no staging/validate status posted and no new infra dispatch. Likely cause: INFRA_DISPATCH_TOKEN can dispatch on infra but can't write commit statuses on this repo (needs write:repository). Not confirmed; the job log has the HTTP code.
  • CI_FORGEJO_COMMENT_TOKEN (used by infra's report job) also needs permission to write statuses on this repo.
  • Add staging/validate as a required status check in main branch protection, otherwise nothing gates merges.
  • No timeout on the caller side: if infra dies before its report job, the status stays pending forever. Decide on a stale-pending sweep or a re-dispatch path.
  • Infra run 855 (the first real staging validation, dispatched before the redesign) failed after about 32 minutes; cause not read. Infra's push-triggered validation on main passed afterward (run 1082), so re-test once the status path works.

🤖 Generated with Claude Code

https://claude.ai/code/session_01B1FuEx3w8ax6P8QvdxxADM

The staging check dispatched `jfraeys/infra`'s `staging-validate.yml` and polled for it. Infra has one runner, so the waiting job starved the validation, and the run-lookup used a Forgejo endpoint that 404s (`/actions/workflows/<wf>/runs`). The fix is fire-and-forget: the app job posts `staging/validate` = pending and dispatches; infra's `report` job posts the final state. Infra side merged (jfraeys/infra#288); app side is PR #10 (and commit `77e77ad` on PR #9's branch). Still open: - [ ] `staging-check` failed after 1s on `77e77ad` with no `staging/validate` status posted and no new infra dispatch. Likely cause: `INFRA_DISPATCH_TOKEN` can dispatch on infra but can't write commit statuses on this repo (needs `write:repository`). Not confirmed; the job log has the HTTP code. - [ ] `CI_FORGEJO_COMMENT_TOKEN` (used by infra's `report` job) also needs permission to write statuses on this repo. - [ ] Add `staging/validate` as a required status check in `main` branch protection, otherwise nothing gates merges. - [ ] No timeout on the caller side: if infra dies before its `report` job, the status stays pending forever. Decide on a stale-pending sweep or a re-dispatch path. - [ ] Infra run 855 (the first real staging validation, dispatched before the redesign) failed after about 32 minutes; cause not read. Infra's push-triggered validation on `main` passed afterward (run 1082), so re-test once the status path works. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01B1FuEx3w8ax6P8QvdxxADM
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jfraeys/coaching-site#13
No description provided.