Dead code
We find and remove dead code with the full power of the engine.
Finding it draws on the whole resolved model — every type, every reference, every entry point. Removal is model-based: every consequence is accounted for, the cut itself is surgical, and what it leaves behind gets pruned and simplified. You can validate and approve at every step, from whole clusters down to a single member.
How removal works
A removal is three kinds of change.
Cascade
Deadness is transitive. A dead class takes with it everything nothing else reaches: its callees, its fields, the interface it was the last to implement. We compute that closure and remove it as one cluster.
Repair
What stays has to be made correct again: call sites, overrides, signatures, imports. Each edit comes from the resolved types, so the right one differs at every site.
Pruning
Removal leaves things that can be simplified: a parameter with one value left, an interface with one implementer, a wrapper around nothing. Those come as proposals.
Review
You go through it cluster by cluster.
Some links are never written down — a class loaded from a string, a name assembled at run time. No static analysis finds those, which is why findings go past a person before anything is removed.
Every cluster comes with what it was derived from. In the viewer you can see what one contains, follow how its removal would propagate, and mark it to keep, to delete, or to come back to.
Those decisions are carried across runs, so nothing you have already judged is asked twice. Take a batch now and leave the rest — that is what makes it something a team can work down gradually.
Recurrence
It accumulates every sprint.
A feature flag retired, a caller deleted, an experiment abandoned. The work is never finished. The first pass is a project; everything after it is a flow you build once.
That flow runs detection on whatever schedule suits you and classifies what comes back. Findings that match a decision you have already taken need nobody. The rest are surfaced. You decide where that line sits.
Classified
Each finding is matched against the decisions already taken and the pattern it fits.
Handled
Categories you have cleared before can go without being asked about again.
Surfaced
Anything new, and anything near an entry point, goes to a person.
