Symbol Graph

Stable

The structural model of definitions, references and type relationships underpinning safe edits.

The symbol graph is the most important structure in the Codebase surface. It is what allows an agent to state, before writing a single character, exactly what a proposed change will affect.

Nodes#

A node is a named, addressable entity in the source: a function, method, class, interface, type alias, constant, module or configuration key. Each carries a stable identifier derived from its qualified path and signature rather than from its file offset, so reformatting, moving a file, or reordering declarations does not invalidate references to it.

Edges#

EdgeMeaningUsed for
definesA module introduces a symbolResolving a name to one definition
referencesA symbol is used at a siteEnumerating call sites before an edit
implementsA type satisfies an interfaceFinding every implementation that must change together
returns / acceptsA signature relationshipPropagating type changes downstream
coversA test exercises a symbolSelecting a verification set
configuresA configuration key affects a symbolCatching behaviour changes with no code diff

Blast radius#

Blast radius is the transitive closure of reverse edges from the symbols an edit touches, bounded by a depth limit and by interface boundaries. It is computed before the edit and attached to the change plan, which converts an unbounded risk into a number the planner and a reviewer can both reason about.

Blast radius report
target      resolveSessionToken/1
direct      14 references across 6 modules
transitive  63 symbols (depth 3, stopped at 2 package boundaries)
crosses     1 published interface  →  requires interface review
covered by  9 tests  (3 unit, 5 integration, 1 contract)
uncovered   2 references in modules with no attributed tests
            · session/legacy-bridge
            · admin/impersonation

Cross-language edges#

Many real breakages happen at language boundaries: a schema definition consumed by three services in two languages, an interface description generating clients, a query string embedded in application code. Where these boundaries are declared in a machine-readable form, the graph links them, so renaming a field in a schema surfaces the consuming code in every language rather than only in the one being edited.

Last updated 2026-08-25