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
report-failure.sh appends one row per failing run to the open tend-outage issue, unconditionally. That is right for a transient outage — a model-API 5xx, an exhausted subscription window — where the row count is a useful measure of how long the stop lasted. It is wrong for a persistent failure, where the same step reddens on every trigger until a human changes the repo, and the issue accumulates rows indefinitely while saying only "The bot failed to process a request."
Three pre-agent steps fail this way, all deterministic on repo or config state rather than on anything transient:
Validate auth configured — fails whenever the harness credential input is empty (validate-claude-auth.sh, and the inline openai_api_key check in codex/action.yaml). This is what a per-workflow harness: codex trial without OPENAI_API_KEY looks like, or a credential-secret rename: the rest of the repo keeps working while that one workflow reddens on every trigger.
Run adopter sandbox setup — fails on any error in the adopter's sandbox_setup: (a bad package name, a moved URL), red on every run until the adopter edits their config.
The confusion is bounded by the nightly enricher naming the cause within a day, but until then an adopter reads a growing table of run links with no mention of a missing secret.
Why not more exclusions
The obvious patch is another id: plus another conjunct on the reporter's if:. That does not scale — an enumerated exclusion list silently goes stale as steps are added, renamed, or reordered, and each entry has to re-litigate whether that step's failure is "really" an outage.
Proposed fix
Bound the append itself, in report-failure.sh, where it covers every persistent-failure class at once and needs no per-step knowledge: before commenting on an existing open outage issue, skip if that issue already carries a row for this workflow ($GITHUB_WORKFLOW) within some window. The first failure still files or appends, so nothing is hidden; the 40th consecutive identical one does not add a row.
Sizing the window is the open design question — long enough that a stuck workflow stops repeating, short enough that a genuine multi-day outage still shows its shape.
Problem
report-failure.shappends one row per failing run to the opentend-outageissue, unconditionally. That is right for a transient outage — a model-API 5xx, an exhausted subscription window — where the row count is a useful measure of how long the stop lasted. It is wrong for a persistent failure, where the same step reddens on every trigger until a human changes the repo, and the issue accumulates rows indefinitely while saying only "The bot failed to process a request."Three pre-agent steps fail this way, all deterministic on repo or config state rather than on anything transient:
Validate auth configured— fails whenever the harness credential input is empty (validate-claude-auth.sh, and the inlineopenai_api_keycheck incodex/action.yaml). This is what a per-workflowharness: codextrial withoutOPENAI_API_KEYlooks like, or a credential-secret rename: the rest of the repo keeps working while that one workflow reddens on every trigger.Run adopter sandbox setup— fails on any error in the adopter'ssandbox_setup:(a bad package name, a moved URL), red on every run until the adopter edits their config.Security preflight— same shape, but excluded from the reporter in fix(actions): report an outage when the run fails ahead of the agent #857 on a separate argument (reporting would have the bot write to the repo with its PAT right after the security gate refused to let it operate there).The confusion is bounded by the nightly enricher naming the cause within a day, but until then an adopter reads a growing table of run links with no mention of a missing secret.
Why not more exclusions
The obvious patch is another
id:plus another conjunct on the reporter'sif:. That does not scale — an enumerated exclusion list silently goes stale as steps are added, renamed, or reordered, and each entry has to re-litigate whether that step's failure is "really" an outage.Proposed fix
Bound the append itself, in
report-failure.sh, where it covers every persistent-failure class at once and needs no per-step knowledge: before commenting on an existing open outage issue, skip if that issue already carries a row for this workflow ($GITHUB_WORKFLOW) within some window. The first failure still files or appends, so nothing is hidden; the 40th consecutive identical one does not add a row.Sizing the window is the open design question — long enough that a stuck workflow stops repeating, short enough that a genuine multi-day outage still shows its shape.
Relationship to existing issues
Surfaced while reviewing #857, which widens the reporter's gate from the agent step to the whole job and so admits these steps for the first time.