← Back to Docs
Code Graph

Confidence-tagged, never silently guessed

What does VibeCop's code graph track?

VibeCop builds a code graph of your repository with six edge kinds:imports between files, and calls, extends, implements, instantiates, and references between symbols. TypeScript and native extractors (C, C++, C#, Rust) walk your source to produce nodes and edges used for dependency, coupling, and hub analysis.

Edge kindConnects
importsFile → file
callsSymbol → symbol (function/method calls)
extendsSymbol → symbol (class inheritance)
implementsSymbol → symbol (interface implementation)
instantiatesSymbol → symbol (object construction)
referencesADR → symbol

What is edge confidence, and why does VibeCop drop ambiguous edges?

Every graph edge is tagged extracted (resolved deterministically by file path) or inferred (resolved by a single unambiguous name match). When a symbol name matches more than one candidate, VibeCop drops the edge rather than silently guessing — genuine ambiguity is surfaced as a gap, never disambiguated for you.

What are architectural hubs?

Architectural hubs are nodes with unusually high fan-in or fan-out relative to the rest of the graph — a single file or symbol that too much of the codebase depends on, or that depends on too much. VibeCop's graph health view surfaces the top hub candidates so refactors can target them directly.

How do I load the full graph?

The full graph is built on demand: VibeCop downloads a repository tarball at the resolved commit and extracts symbols directly from it. A fresh, never-scanned repository can load its full graph without running a scan first — extraction is independent of scan history, not derived from a prior scan's findings.

What else uses the code graph?

The same graph grounds Feature Factory planning: when a feature request is decomposed into tasks, the dependency edges between those tasks are derived from real import paths and file footprints in this graph — not from a model's guess about what is related. Tasks whose footprints are genuinely disjoint run in parallel; anything ambiguous is serialized.

Related docs