ovecc impact
The blast radius of changing a target: the impacted modules, APIs, tables, symbols and files, the representative paths that reach them, and a calibrated risk score. "What breaks if I touch this?"
Usage: ovecc impact [OPTIONS] <TARGET>
Example
$ ovecc impact "api:/billing/summary"
Impact: GET /billing/summary/:id
Affected modules: 0
Affected APIs: 0
Affected tables: 1
Affected symbols: 5
Affected files: 0
Risk: Low (11)
Top paths:
GET /billing/summary/:id -> <GET /billing/summary/:id handler>
GET /billing/summary/:id -> <GET /billing/summary/:id handler> -> invoiceSummary
GET /billing/summary/:id -> <GET /billing/summary/:id handler> -> invoiceSummary -> invoices
GET /billing/summary/:id -> <GET /billing/summary/:id handler> -> invoiceSummary -> query
GET /billing/summary/:id -> <GET /billing/summary/:id handler> -> invoiceSummary -> query -> loadConfig
Module-level:
$ ovecc impact services
Impact: services
Affected modules: 2
Risk: Low (10)
Top paths:
services -> routes
services -> routes -> src
Options
| Option | Default | Effect |
|---|---|---|
<TARGET> | — | Module, file, symbol, table:NAME, or api: target |
--direction <downstream|upstream|both> | downstream | Downstream = who is affected by changing the target; upstream = what the target itself depends on |
--max-depth <N> | 6 | Bound the graph walk |
Plus the global options.
Target syntax for APIs
API labels have the form GET /users/:id. Both the full label and any substring
resolve:
ovecc impact "api:GET /search" # full label
ovecc impact "api:/search" # substring — usually the convenient form
Unmatched targets
A target that matches nothing is reported explicitly rather than as an empty blast radius:
$ ovecc impact no-such-thing
Impact: no-such-thing
No matching architecture element.
In JSON, the payload carries "matched": false — scripts should check that field to
distinguish a typo from a genuinely isolated element.