Skip to main content

ovecc explain

Explains an element from its deterministic context slice: a coupling characterization (isolated / entry-point / foundational / intermediary), direct dependencies and dependents, change-impact paths, and the findings touching it. Offline — no network, no LLM; every sentence is backed by a fact from the model.

Usage: ovecc explain [OPTIONS] <TARGET>

Example

$ ovecc explain core
# core

`core` is foundational: 3 component(s) depend on it and it has no dependencies of
its own, so changes here ripple outward. It lies on 3 traced call path(s).
2 finding(s) affect it, the most severe being low.

## Dependencies (0)
`core` has no outgoing dependencies in scope.

## Dependents (3)
- routes
- services
- src

## Change impact
Modifying `core` directly affects 3 dependent(s); change can propagate along:
- core -> routes
- core -> services
- core -> src

## Findings (2)
- [low] Unused type export: AppConfig in src/core/config.ts: type 'AppConfig' is exported ... Safe to remove — types have no runtime effect.
- [low] Unused type export: Row in src/core/db.ts: ...

Works at file granularity too:

$ ovecc explain src/core/db.ts
`src/core/db.ts` is an intermediary: it depends on 1 component(s) and is used by 3.

## Change impact
- src/core/db.ts -> src/routes/api.ts
- src/core/db.ts -> src/routes/api.ts -> src/index.ts
- src/core/db.ts -> src/services/billing.ts

And on APIs and tables: ovecc explain "api:/search", ovecc explain table:users.

Semantics worth knowing

  • Dependencies / Dependents list the direct (depth-1) edges in each direction.
  • Change-impact paths follow the reverse-dependency direction only — who is affected if this changes — up to three hops.
  • A target that matches nothing is a usage error (exit 2) with a search hint: try a module name, a file path, or ovecc query "module <name>" to search.

Options

Takes a <TARGET> (target forms) plus the global options.