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
.github/workflows/mttr-badge.yml ("MTTR Badge") runs hourly (cron: '17 * * * *')
and computes/publishes the project's Mean-Time-To-Resolution metric to a public
Shields.io endpoint badge gist, displayed at the top of README.md. It has no
failure-alerting mechanism:
No issues.create / issue-creation step inside the workflow itself.
Not listed in .github/workflows/workflow-failure-issue.yml's workflow_run
catch-all (workflows: list covers Release, Build and Deploy KC, Nightly
Compliance & Perf, Nightly Dashboard Health, Nightly gh-aw Version Check,
Playwright Cross-Browser (Nightly), Card Loading Standard, Startup Smoke Tests,
Auto-QA Agent/Tuner, Nil Safety, GA4 Error Monitor, OpenSSF Scorecard, Weekly
Coverage Review).
A scheduled failure — e.g. a GitHub search-API rate limit/error, or an expired/
revoked GIST_TOKEN — currently produces only a red ❌ in the Actions tab. Worse,
some non-failure conditions (gist PATCH returning non-OK, GIST_TOKEN unset, or no Fixes/Closes refs found in the last 100 merged PRs) exit the job successfully
(status 0) while only console.log-ing a skip message — so the badge can silently
freeze at a stale value even when every scheduled run shows green.
Because this badge is public (README.md line 7) and tied to the recovery-time SLI
referenced by SLO 5 in docs/SLO.md / docs/INCIDENT-RESPONSE.md's 4-hour target,
a silent staleness here misrepresents the project's actual incident-response
performance to the community with no internal signal that it happened.
Confirmation
Reviewed .github/workflows/mttr-badge.yml and .github/workflows/workflow-failure-issue.yml
directly in a fresh clone of kubestellar/console. Verified via gh run list --repo kubestellar/console --workflow=mttr-badge.yml --limit 10 that
the last 10 scheduled runs (2026-09-07) all show conclusion: success — consistent
with the gap never having been exercised recently, not with it being otherwise
covered. Cross-checked "MTTR Badge" against every workflow name in the catch-all's workflows: list and against the two other operations tracking issues covering
scheduled-workflow alert gaps (#23144, #23230); none reference mttr-badge.yml.
Suggested fix
Add "MTTR Badge" (exact name: value) to the workflows: list in workflow-failure-issue.yml — same mechanism already used for the 14 other
monitored jobs, requiring no new code path. Separately, consider making the
silent-skip cases (missing GIST_TOKEN, non-OK gist PATCH) call core.setFailed(...) so they surface through the same catch-all once wired up,
rather than exiting 0.
Why no CI config file change in the linked PR
The operations agent's GitHub App token lacks the workflows permission required
to create or update files under .github/workflows/ (confirmed in multiple prior
sessions — see docs/runbooks/upgrade-smoke-no-alert.md, docs/runbooks/stale-workflow-no-alert.md). A docs-only runbook
(docs/runbooks/mttr-badge-no-alert.md) documents the interim manual-detection
workaround and this proposed fix for a maintainer with that permission to apply.
Summary
.github/workflows/mttr-badge.yml("MTTR Badge") runs hourly (cron: '17 * * * *')and computes/publishes the project's Mean-Time-To-Resolution metric to a public
Shields.io endpoint badge gist, displayed at the top of
README.md. It has nofailure-alerting mechanism:
issues.create/ issue-creation step inside the workflow itself..github/workflows/workflow-failure-issue.yml'sworkflow_runcatch-all (
workflows:list covers Release, Build and Deploy KC, NightlyCompliance & Perf, Nightly Dashboard Health, Nightly gh-aw Version Check,
Playwright Cross-Browser (Nightly), Card Loading Standard, Startup Smoke Tests,
Auto-QA Agent/Tuner, Nil Safety, GA4 Error Monitor, OpenSSF Scorecard, Weekly
Coverage Review).
upgrade-smoke.ymlandits 12 documented siblings) —
mttr-badge.ymldoes not appear in either list.A scheduled failure — e.g. a GitHub search-API rate limit/error, or an expired/
revoked
GIST_TOKEN— currently produces only a red ❌ in the Actions tab. Worse,some non-failure conditions (gist PATCH returning non-OK,
GIST_TOKENunset, or noFixes/Closesrefs found in the last 100 merged PRs) exit the job successfully(status 0) while only
console.log-ing a skip message — so the badge can silentlyfreeze at a stale value even when every scheduled run shows green.
Because this badge is public (
README.mdline 7) and tied to the recovery-time SLIreferenced by SLO 5 in
docs/SLO.md/docs/INCIDENT-RESPONSE.md's 4-hour target,a silent staleness here misrepresents the project's actual incident-response
performance to the community with no internal signal that it happened.
Confirmation
Reviewed
.github/workflows/mttr-badge.ymland.github/workflows/workflow-failure-issue.ymldirectly in a fresh clone of
kubestellar/console. Verified viagh run list --repo kubestellar/console --workflow=mttr-badge.yml --limit 10thatthe last 10 scheduled runs (2026-09-07) all show
conclusion: success— consistentwith the gap never having been exercised recently, not with it being otherwise
covered. Cross-checked "MTTR Badge" against every workflow name in the catch-all's
workflows:list and against the two other operations tracking issues coveringscheduled-workflow alert gaps (#23144, #23230); none reference
mttr-badge.yml.Suggested fix
Add
"MTTR Badge"(exactname:value) to theworkflows:list inworkflow-failure-issue.yml— same mechanism already used for the 14 othermonitored jobs, requiring no new code path. Separately, consider making the
silent-skip cases (missing
GIST_TOKEN, non-OK gist PATCH) callcore.setFailed(...)so they surface through the same catch-all once wired up,rather than exiting 0.
Why no CI config file change in the linked PR
The
operationsagent's GitHub App token lacks theworkflowspermission requiredto create or update files under
.github/workflows/(confirmed in multiple priorsessions — see
docs/runbooks/upgrade-smoke-no-alert.md,docs/runbooks/stale-workflow-no-alert.md). A docs-only runbook(
docs/runbooks/mttr-badge-no-alert.md) documents the interim manual-detectionworkaround and this proposed fix for a maintainer with that permission to apply.
— hive: agent=operations backend=copilot model=claude-sonnet-4-6