How do I know what a change will break before the agent edits?

Updated

Short answer

Ask for the blast radius before the edit: pixel impact lists the callers upstream of a symbol from a code graph, and pixel who-calls the direct ones. On 29 blast-radius cases in Rust, TypeScript and Ruby, Pixel found 0.86 of the callers grep confirms, in a 153 ms median. Static analysis never sees every dynamic call, so every graph answer says when it may be incomplete.

Ask before the edit, not after the tests

An agent that changes a function’s signature, its return value or what it throws needs to know who depends on it. Without that list it edits, runs the tests, and fixes what failed; whatever the tests do not cover ships broken. A search for the name finds some callers and many lines that are not calls.

What the graph answers

Pixel parses the repository with tree-sitter into a graph of symbols, imports and calls. pixel who-calls returns the functions that call a symbol, pixel impact follows them upstream to the blast radius, and pixel call-path shows how one function reaches another. Each answer says how complete it is: a call the graph could not resolve is reported as such rather than dropped, and the answer carries a warning that static analysis never sees every dynamic call.

Run it before the edit and give the list to the agent as the scope of the change, or let the agent run it: the protocol pixel install deploys tells it to.

The figures

Callers found, 29 cases0.86 (GitNexus 0.84, a tie at this sample size)
Callers found in Rust and TypeScriptEvery one
Callers found in Ruby, two repositories0.90 and 0.56
Median time per answer153 ms

Every figure above is on the benchmarks page, with its sample size and its method: Against GitNexus.

Where Pixel does not win

The figure is callers found, not breakage predicted: a caller is where to look, not proof that it breaks. Ruby is the weak spot, 0.90 and 0.56 on two repositories where GitNexus finds 1.00 and 0.68. A language server resolves types, so its references are more exact for the language it serves; this page has no figure for it.