Open beta • Evidence-first • Read-only by default
CI Autopsy posts a GitHub Check with root cause, key lines, a focused log excerpt, and Do now. If evidence is insufficient, it chooses abstain and tells you what’s missing for a confident call.
Default: warn (not block) • Uninstall anytime • No “nitpicks” — only what helps you fix CI
GitHub Check Summary
Autopsy: completed
CI: ❌ Failed (exit code 1) Autopsy: ✅ Completed (calibrated) · Confidence: High Verdict: Dependency resolution failed (deps) Why: ERROR: No matching distribution found for ml-ai-data-science-pro==2024.1 Do now: • Open run logs (failing step: pip install -r requirements.txt) • Check Python version / Requires-Python mismatch • If private package: verify index/auth Evidence (key lines): ERROR: Could not find a version that satisfies… (from versions: none) ERROR: No matching distribution found…
CI failed. Logs are huge. Time goes into triage instead of a fix. Even experienced engineers often spend tens of minutes figuring out where it broke, why, and what to do first.
“The error is somewhere in the wall of logs”
Logs are long and noisy, with many steps — it’s hard to spot the 1–3 lines that actually matter.
“Advice without proof”
Lots of “looks like…”, but no concrete evidence or pointers to the exact lines.
“Blind reruns”
Instead of action — rerun after rerun. Sometimes it helps, but чаще it burns time and CI minutes.
“Unclear what to do first”
Even when you suspect the cause, there’s no short, actionable checklist to restore green fast.
Works where you already debug
The result shows up in GitHub Checks. No extra dashboards “for beauty” — only what shortens diagnosis time.
Verdict
A human root cause (or top-3 hypotheses) with confidence.
Evidence
Key lines plus a short excerpt around the failure — easy to verify and trust.
Do now
3–5 steps tied to the case: workflow/lockfiles/version/auth/index/test/build.
Not a “chat advisor”, but a verifiable autopsy: every conclusion is grounded in evidence. When proof is weak, the product doesn’t pretend it knows.
Evidence-first
Every claim is tied to key lines and an extracted failure section — no “seems like” without proof.
Abstain over hallucinations
If data is insufficient, it says so — and tells you what to add (debug logs / artifacts / env) to prove the cause.
Replay / reproducibility
The report is stable: you can re-check conclusions against the input artifacts. Trust comes from repeatability.
Not a “chat advisor”, but a verifiable autopsy: every conclusion is grounded in evidence. When proof is weak, the product doesn’t pretend it knows.
Deps
pip/npm/yarn: no matching, could not satisfy, requires-python, auth/index
Lockfile/workflow/version/index → concrete steps + excerpt
Config / Secrets / Env / Paths
missing env, file not found, permission denied, workdir issues
Check secrets/paths/workflow/permissions
Environment mismatch
OS/arch/runtime mismatch: Requires-Python, GLIBC, exec format
Pin version/matrix/image and point to the mismatch
Flaky / timing
intermittent/timeouts/race: honest low/abstain without “confident diagnoses”
Primary action: rerun + collect 3 runs + artifacts
Test failures
assertion/FAIL + test name (when available)
Open the test/run locally — minimal steps
Build / compile
compiler/linker/tsc: error + file:line (when present)
Toolchain/version/build files + pinpoint
Network / transient
ETIMEDOUT, DNS, 429, 5xx, ECONNRESET
Rerun/timeout/cache/mirror + constraints
Cache / artifacts / workspace
restore failed, artifact not found, checksum mismatch, stale cache
Invalidate key/disable cache/ensure upload & download
A note on autopsy
Beyond verified categories, autopsy often helps in rarer cases too. The difference is that for non-verified classes we don’t guarantee the same level of validation: the product will be more conservative on confidence and will choose abstain more often when evidence is thin.
Security & Privacy
CI logs can contain sensitive information. That’s why the product is built around least-privilege permissions and data minimization.
Read-only by default
We request only what’s needed for diagnosis. No “write” permissions without a clear reason.
Scrubbed outputs
By default we keep the minimum: the report and a short excerpt. Debug packs are opt-in with limited retention.
Uninstall = cleanup
Uninstalling the app triggers data cleanup by installation_id (with defined retention).
Show the product to your team in a minute: 2–3 typical failures (deps / flaky / env mismatch). You can drop real scrubbed reports here.
Deps: No matching distribution
Why: package not found / private index / Requires-Python mismatch. Do now: lockfile + workflow + version + auth.
Flaky: intermittent timeout
Conservative confidence + rerun strategy + the artifacts needed to prove the cause.
Env mismatch: runtime/arch
GLIBC/exec format/Requires-Python. Do now: pin version/matrix/container.
Short answers to the most common install-time questions.
Do you block merges / deploys?
No. By default we warn, not block. The goal is to speed up diagnosis and shorten time to the first correct action.
Does this replace an engineer?
No. We reduce triage by showing evidence and next steps. Judgment and accountability remain with the team.
What if evidence is insufficient?
Then the product chooses abstain and tells you what’s missing (e.g., step debug logs, artifacts, env dump) to prove the root cause.
Does “Verified” mean the rest doesn’t work?
No. “Verified” means these classes are especially validated with a test suite. In rarer cases the product may be more conservative (lower confidence / abstain) and still often helps.