01
Change graph
PRs, commits, files, releases, and deploys land in a tenant-scoped timeline. Idempotent upserts. Natural keys, never duplicate a SHA.
When production errors spike, ChangeGraph maps the incident to recent code changes and shows the evidence. Deterministic code ranks candidates. Mastra workflows explain what the graph already knows.
git clone https://github.com/Ajay-Satish-01/ChangeGraph.gitpayments@2026.03.15 · LKG production · window 7d · culprit src/payments/tax.ts
Timeline
LKG production good000lk
PR #95 feat: banner copy
PR #101 feat: adjust checkout tax
Error rate spike · checkout
Stack paths · FACT
Sentry opens a window around the spike. The graph already has PRs, commits, and the last-known-good deploy. No SHA is invented.
Investigation flow as the product UI: incident, candidates, evidence, packed context, then Mastra explanation. Not a row of cards.
Local stack
On-call
Open an incident window. See ranked PRs with file overlap, deploy membership, and last-known-good bounds. The score is decision support. Root cause stays a human judgment.
feat: adjust checkout tax
src/payments/tax.ts · on release · T0 − 25m
Honesty
Identical inputs produce identical ranks. Mastra explanation is bounded to a packed, sanitized evidence package: invented PRs and files are dropped. Absolute causation is softened to hypothesis.
Deep dive: Scoring & LKG · Architecture
Scorer v2
Get started
Install with pnpm, start Docker Postgres, and investigate sample incidents. Connect GitHub, Sentry, and Vercel with accounts you already have. Ranked candidates, EvidencePackage, and scoring work without LLM keys. Explain and investigate require a configured LLM provider and fail closed as not_configured.
pnpm install cp .env.example .env.local docker compose up -d postgres pnpm db:push && pnpm seed pnpm dev
Capabilities
Scroll the rail. Each panel is a different surface of the same investigation path.
01
PRs, commits, files, releases, and deploys land in a tenant-scoped timeline. Idempotent upserts. Natural keys, never duplicate a SHA.
02
Weights: temporal 25 · deployment 25 · file/stack 25 · service 15 · historical 10. Penalties for no overlap or docs-only diffs. No model in the loop.
03
Bound candidates between LKG deploy and the incident. Expand 24h → 72h → 7d only when the window is thin.
04
Timeline, ranked candidates, score breakdown, why-not-others, and Mastra explanation over a packed digest.
tools
list_incidents
get_incident
get_evidence_package
read-only · stdio
05
Read-only MCP tools for incidents and evidence. Mastra investigate_incident never mutates scores. Context is packed before the model.
06
Offline scenarios prove Top-1 ranking, negative controls, multi-candidate discrimination, and empty-evidence honesty.
Docker Compose, seed fixtures A–D, and investigate with ranked change candidates, evidence, and Mastra workflows.