# GitScope

**Catches the structural breaks that pass code review.**

Flask changed `redirect()`'s default from 302 to 303. A reviewer sees a one-line diff. GitScope sees 7 callers that silently change behavior:

```
$ gitscope review eca5fd1d~1..eca5fd1d

⚠ GitScope: 2 changes need review

1. DEFAULT VALUE CHANGED: redirect(location, code=302, Response) → redirect(location, code=303, Response)
   File: src/flask/helpers.py:241
   Impact: 7 callers rely on the default:
     auth.py:25   `return redirect(url_for("auth.login"))`
     ...
   Review: Verify callers expect the new default value
```

This is real output from GitScope run against the actual Flask commit.

## What it catches

Function signature changes, removed symbols, default value changes — and every caller affected.

## What it doesn't catch

Logic bugs, behavioral changes beyond signatures, performance issues, security vulnerabilities. GitScope detects a specific class of **structural breaks**, not all bugs.

## Two commands

**`gitscope review`** — The primary command. Selective, high-signal findings only. Silent when nothing to report (exit code 0). This is what you run in CI and agent workflows.

**`gitscope summarize`** — Full structural summary of any diff. Always produces output. Useful for agents that want a complete map of what changed.

## Get started

- [Quick Start](quickstart.md) — Install and run both commands
- [Agent Integration](agent-integration.md) — Add GitScope to your AI agent workflow
- [Validation](validation.md) — A/B test results and real-world catches
- [Real-World Catches](real-world-catches.md) — GitScope vs. historical OSS bugs
- [Schema Reference](schema.md) — JSON output formats for both commands

## Languages

- **Python** — most mature, extensive real-world validation
- TypeScript / JavaScript
- Go
- More planned (Rust, Java, C#)

## Philosophy

1. **Silence is a feature.** No findings? No output. Most diffs don't need structural analysis.
2. **Local-first.** Your code never leaves your machine.
3. **Agent-native.** CLI + JSON output. `pip install` and go.
4. **Precision over recall.** We'd rather miss a minor issue than cry wolf on every PR.
