Modify a base class constructor. How many files break?
One call vs five greps to find the answer.
Multi-language 35 impacted symbols Claude Opus 4.6
BaseSyncJob is the abstract base for all synchronization jobs. It has 2 constructor overloads, 17 direct subclasses, and is instantiated in scheduling and job tracking services. Adding IMetricsService means every base(...) call and every new XxxSync(...) must change.
With ctxo: search_symbols to find BaseSyncJob, then get_blast_radius for the full impact graph with confidence tiers and risk scores.
Without ctxo: Multiple Grep passes for class inheritance patterns, base(...) calls, and new Xxx(...) instantiation sites.
| Metric | With ctxo | Without ctxo | Delta |
|---|---|---|---|
| Iterations (rounds) | 3 | 2 | Similar |
| Tool calls | 4 | 6 | 33% fewer |
| Estimated tokens | ~14K | ~17K | 18% less |
| Execution time | ~15 seconds | ~15 seconds | Same |
| Impact depth | 4 layers (depth 1-4) | 2 layers only | 2x deeper |
| Confidence classification | 3-tier (confirmed / likely / potential) | Binary (breaks / doesn't) | Risk-scored |
| Subclasses found | 17 (all) | 14 (missed 3) | 3 missed = silent compile errors |
| Impacted symbols | 35 (risk-scored, 4 layers deep) | 46 call sites (flat list, no scoring) | Risk-scored + prioritized |
| Recommendation | Alternative approach suggested | Raw list only | Included |
The manual approach missed 3 subclasses entirely. In a real refactor, those 3 files would have compile errors that the developer didn't plan for. Grep-based analysis can only match text patterns it's told to look for - if the inheritance is in a different directory or module, it's invisible.
ctxo found every single subclass because it traverses the actual dependency graph, not regex patterns. It went 4 layers deep to reveal that this change ripples all the way to API endpoints and the host service lifecycle. And it suggested an alternative (ServiceContainer resolution) that could eliminate the entire ripple effect - reducing the change from 17 files to 1.
Manual analysis gives you a partial answer you think is complete. ctxo gives you the full answer with risk-scored priorities, confidence tiers, and actionable alternatives. The difference isn't speed - it's correctness.
impactScore: 35 | risk: 1.0 | confirmed: 21 | likely: 8 | potential: 6
14 subclasses found, 48 total references