fix(ci): canary alerting — drop Gitea-incompatible actions API call #130
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/canary-staging-gitea-compat-alerting"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes one-third of #129
The canary's
Open issue on failurestep was failing on every cron run because Gitea 1.22.6 doesn't expose/api/v1/actionsendpoints. The 3-strike threshold check calledgithub.rest.actions.listWorkflowRuns()to count prior failures — that call always 404'd on Gitea, breaking the entire alerting step.Net effect: the canary's self-alerting was broken, so the underlying staging regression went unflagged for 38h+ (2026-05-07 02:30 UTC → 2026-05-08 17:34 UTC).
Fix
Drop the consecutive-failures threshold. File a sticky issue on the FIRST failure; comment-on-existing handles deduplication for subsequent failures.
Why not a Gitea-compatible threshold
The threshold's purpose was to avoid spam on transient flakes. With sticky-issue + auto-close-on-green, transient flakes get one issue + one quick close — that's fine signal. Filing on first failure is also better UX: catches the regression in 30 min instead of 90 min.
Bonus
Rewrote
runURLfrom hardcodedhttps://github.com/...tocontext.serverUrlso the link actually points at Gitea. Was always broken on Gitea but nobody noticed because the issue-filing step itself was broken first.Verification
python3 -c 'import yaml; yaml.safe_load(open(...))'clean)github.rest.actions.*calls; onlygithub.rest.issues.*(all Gitea-supported)WORKFLOW_PATH+CONSECUTIVE_THRESHOLDenv vars (no longer needed)This closes the THIRD of three failure modes in #129. The other two — A2A agent Exception (#1) and teardown leak (#2) — are tracked there for separate triage.
🤖 Generated with Claude Code
LGTM. Drops the Gitea-incompatible listWorkflowRuns call that broke alerting for 38h+. Sticky-issue + comment-on-existing handles dedup for transient flakes. Also fixes runURL to use context.serverUrl. Closes 1/3 of #129.