You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stop the daily-AIC guardrail from calling core.setFailed when the budget is exceeded — emit a neutral/skipped conclusion instead. The agent job is already gated on the daily_ai_credits_exceeded output, so the setFailed is redundant for control flow and only serves to paint budget-blocked runs red — which dominates the failure signal and spawns per-workflow auto-failure issues.
Problem statement
In the 2026-06-13 13:17Z 6h window, 14 of 20 "failed" agentic runs were not real failures — they were scheduled reviewer workflows correctly blocked by the daily-AIC guardrail after the shared 5000 daily-AIC budget was exhausted (~11:00Z). Each blocked run exits the activation job via core.setFailed, so the run conclusion is failure even though the design intent is "skip this run." Side effects: (1) reliability/failure dashboards over-count failures, (2) auto-failure issues are filed per workflow (#39059 Test Quality Sentinel, #39050 Matt Pocock Skills Reviewer), and (3) this Failure Investigator is triggered on non-actionable noise.
Root cause
The guardrail script hard-fails the step on exceedance:
actions/setup/js/check_daily_aic_workflow_guardrail.cjs:593 → core.setFailed(\Daily workflow AIC guardrail exceeded for ${workflowName}: ${totalAIC}/${threshold}.`)`
It also already sets the control output at line 586 → core.setOutput("daily_ai_credits_exceeded", "true").
The downstream agent job is gated on that output, independent of step status:
Observed guardrail log (representative run §27465717773):
##[warning]Daily workflow AIC guardrail exceeded for Test Quality Sentinel: 5017.38/5000.
##[error]Daily workflow AIC guardrail exceeded for Test Quality Sentinel: 5017.38/5000.
Because the agent job already keys on daily_ai_credits_exceeded, the core.setFailed at line 593 is redundant for skipping the agent — its only effect is the red failure conclusion.
Representative run: §27465717773 (clearest 5017.38/5000 exceedance log). Comparator: same workflows succeeded earlier in the day before the shared budget was exhausted; no in-window successful comparator exists because every post-exhaustion run is blocked.
This issue is about how a budget-blocked run is reported — it should conclude skipped/neutral, not failure — independent of what the budget is set to. Fixing the budget does not remove the false-failure noise.
Proposed remediation
In check_daily_aic_workflow_guardrail.cjs, on exceedance keep core.setOutput("daily_ai_credits_exceeded", "true") and core.warning(...), but replace core.setFailed(...) (line 593) with a non-failing exit so the activation job concludes success (the agent still skips via the output gate).
Optionally surface the block as a neutral GitHub conclusion (e.g. a notice + a step-summary line) so the run is visibly "budget-skipped," not green-as-if-ran.
A workflow blocked by the daily-AIC guardrail produces a run whose conclusion is notfailure (skipped/neutral/success-with-skip).
The agent job still does not execute when daily_ai_credits_exceeded == 'true' (existing gate unchanged; verify via daily_aic_workflow_guardrail_test.go).
No [aw] ... exceeded daily AI credits budget auto-failure issue is filed for a guardrail-skipped run.
A subsequent Failure Investigator window over a budget-exhaustion period reports these runs as skipped, not as P-tier failures.
Recommendation
Stop the daily-AIC guardrail from calling
core.setFailedwhen the budget is exceeded — emit a neutral/skipped conclusion instead. The agent job is already gated on thedaily_ai_credits_exceededoutput, so thesetFailedis redundant for control flow and only serves to paint budget-blocked runs red — which dominates the failure signal and spawns per-workflow auto-failure issues.Problem statement
In the 2026-06-13 13:17Z 6h window, 14 of 20 "failed" agentic runs were not real failures — they were scheduled reviewer workflows correctly blocked by the daily-AIC guardrail after the shared 5000 daily-AIC budget was exhausted (~11:00Z). Each blocked run exits the
activationjob viacore.setFailed, so the run conclusion isfailureeven though the design intent is "skip this run." Side effects: (1) reliability/failure dashboards over-count failures, (2) auto-failure issues are filed per workflow (#39059 Test Quality Sentinel, #39050 Matt Pocock Skills Reviewer), and (3) this Failure Investigator is triggered on non-actionable noise.Root cause
The guardrail script hard-fails the step on exceedance:
actions/setup/js/check_daily_aic_workflow_guardrail.cjs:593→core.setFailed(\Daily workflow AIC guardrail exceeded for ${workflowName}: ${totalAIC}/${threshold}.`)`core.setOutput("daily_ai_credits_exceeded", "true").The downstream agent job is gated on that output, independent of step status:
pkg/workflow/compiler_main_job.go:69→needs.activation.outputs.daily_ai_credits_exceeded != 'true'Observed guardrail log (representative run §27465717773):
Because the agent job already keys on
daily_ai_credits_exceeded, thecore.setFailedat line 593 is redundant for skipping the agent — its only effect is the redfailureconclusion.Affected workflows and run IDs
Representative run: §27465717773 (clearest
5017.38/5000exceedance log). Comparator: same workflows succeeded earlier in the day before the shared budget was exhausted; no in-window successful comparator exists because every post-exhaustion run is blocked.Why this is distinct from existing AIC issues
skipped/neutral, notfailure— independent of what the budget is set to. Fixing the budget does not remove the false-failure noise.Proposed remediation
check_daily_aic_workflow_guardrail.cjs, on exceedance keepcore.setOutput("daily_ai_credits_exceeded", "true")andcore.warning(...), but replacecore.setFailed(...)(line 593) with a non-failing exit so theactivationjob concludessuccess(the agent still skips via the output gate).notice+ a step-summary line) so the run is visibly "budget-skipped," not green-as-if-ran.daily_ai_credits_exceeded == 'true', since the run is a deliberate skip, not a failure.Success criteria / verification
failure(skipped/neutral/success-with-skip).daily_ai_credits_exceeded == 'true'(existing gate unchanged; verify viadaily_aic_workflow_guardrail_test.go).[aw] ... exceeded daily AI credits budgetauto-failure issue is filed for a guardrail-skipped run.References
Related to Workflow Health Manager - Meta-Orchestrator - Issue Group #29109