feat(dashboard): emit machine-readable fleet status.json - #78
Merged
Conversation
The heartbeat already computes the full fleet CVE picture every run but only ships it as dashboard HTML. Asking "what's the status of my repos?" therefore forced either a live fleet rescan or parsing 2-3 JSONL files in-context β the expensive path that keeps pulling status queries onto Claude spend. Emit a single small `status.json` to gh-pages alongside index.html: fleet rollup (open alerts, severity breakdown, fix rate, MTTR), ADR-006 escalation posture per repo (clear / loop / hard-stop, matching the threshold=3 default), and per-repo open-alert counts sorted worst-first. A status query is now one unauthenticated fetch of https://ry-ops.github.io/git-steer-state/status.json β pennies, no rescan. Built before the dashboard's queue-merge mutates `metrics`, so the artifact reflects actual open Dependabot alerts + RFC fixes. Includes repos that dropped off the managed list but still carry escalation state, so a hard-stop is never hidden. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
git-steer's autonomous pipeline (heartbeat β ADR-006 escalation β fix workers) already runs on its own and computes the full fleet CVE picture every run. But it only ships that picture as dashboard HTML. So asking "what's the status of my repos?" from a Claude session forced one of two expensive paths:
rfcs.jsonl,cve-queue.jsonl,cache.json) in-context and aggregating.Both burn Claude spend for data the heartbeat already produced. This was the bottleneck behind hitting monthly limits just to check status.
What
Emit a single small
status.jsontogh-pagesnext toindex.html:fleetβ total repos, repos with open alerts, total open alerts, open-by-severity rollup, fixed CVEs, fix rate, avg MTTRescalationβ ADR-006 posture:hardStop/inLooplists (threshold matches the escalation script's default of 3)reposβ per-repo open-alert counts + severity breakdown + escalation status + consecutive fallouts, sorted worst-firstA status query is now one unauthenticated fetch:
Pennies, no rescan. git-steer does the work on its schedule; Claude just reads the scoreboard.
Notes
metrics, so the artifact reflects actual open Dependabot alerts + RFC fixes (the canonical "is my fleet clean" view).ci-dashboard.mjs; no change to existing dashboard HTML output.π€ Generated with Claude Code