GitHub CLI extension · read only
When CI goes silent, keep the receipt.
One command gathers the queue, jobs, reruns, available logs, runner evidence, and public platform status for a single GitHub Actions incident—then redacts it for review.
- No telemetry
- Read-only scopes
- Free and open source
01 / The gap
A failed run page is not an incident record.
Queue delays disappear. Logs arrive late—or never. Runner journals live elsewhere. The public status page tells you what it knows now. Witness captures those observations together, with timestamps and uncertainty intact.
02 / The evidence strata
Observe first.
Classify second.
The bundle separates facts from its cautious interpretation, so another maintainer can inspect the trail without trusting a black box.
-
A
GitHub API
Run & retry lineage
Workflow metadata, job transitions, queue timing, every recorded attempt.
-
B
Run archive
Logs that actually exist
Available Actions logs, ANSI removed and secrets pattern-redacted.
-
C
Local file
Runner witness
Self-hosted journals you explicitly attach—never silently collected.
-
D
Timestamped
Platform observation
Public Actions component state, observed time, and its limits.
03 / Example receipt
Read the evidence, not the tea leaves.
This local demo makes no network requests. Change the incident to see how uncertainty changes the label.
No specimen selected yet.
Build one to inspect its source states and label.
04 / Install
Make the witness while the incident is fresh.
Requires GitHub CLI and read access to the repository. The extension requests no write scope and never retries a run.
gh extension install B-Divyesh/ci-outage-witness
gh outage-witness OWNER/REPO RUN_ID
Add --runner-log journal.txt for self-hosted evidence and repeat --redact 'pattern' for repository-specific identifiers.
05 / Honest limits
A witness is not a verdict.
Probable means probable. A public status incident and a delayed run can support platform degradation; neither proves a provider root cause.
Redaction needs review. Known credential shapes and your expressions are removed. Arbitrary secrets in prose may evade patterns.
Missing is evidence too. Unavailable logs and status are recorded as unavailable, never quietly omitted or guessed.