enola/Docs/Multi-repo

Documentation

Multi-repo analysis

Load multiple repositories into one graph, then inspect which calls and dependencies resolve across repository boundaries.

01 · Compose

Load the repositories

Agent promptstext
Generate a snapshot of /path/to/backend.
Generate a snapshot of /path/to/web-client with append mode.
Show the cross-repo coverage report.

The first snapshot initializes the graph. Subsequent calls with append: true add repositories to that graph. Use a cluster configuration when the same repository set must be reproduced in CI.

02 · Resolution

How links are established

SignalResolution ruleLimit
HTTP and RPCMatch normalized client routes to loaded server routes.Dynamic paths and unsupported clients may remain unresolved.
ImportsResolve imports that identify another loaded repository.Runtime loading is not an import edge.
TopicsMatch supported topic declarations and configuration patterns.Computed topic names may not resolve.
Shared symbolsRecord verified declarations with distinctive matching names.A name match alone is not a traversable edge.
Cross-repo resolution is evidence, not completeness. Run coverage_report or enola coverage before relying on an impact analysis.

03 · State

Receipts and reproducibility

Each repository has snapshot metadata. A graph-wide receipt records the participating repositories, their git state, extractor and provider configuration, fact counts, resolved cross-repo edges, and unresolved calls.

  • Record the repository set and revisions when a result is used in review or CI.
  • A different producer set yields a partial verdict over shared facts. A different Enola version, repository identity, or ignore configuration remains non-comparable.
  • A dirty worktree is part of snapshot provenance; it is not equivalent to the recorded commit.
  • Review unresolved calls before treating the reported blast radius as complete.

04 · Query

Use the same graph tools

traverse, find_path, and impact_analysis can cross repository boundaries only where a traversable edge was resolved. coverage_report lists the edges that matched and the call sites that did not.