01 · Compose
Load the repositories
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
| Signal | Resolution rule | Limit |
|---|---|---|
| HTTP and RPC | Match normalized client routes to loaded server routes. | Dynamic paths and unsupported clients may remain unresolved. |
| Imports | Resolve imports that identify another loaded repository. | Runtime loading is not an import edge. |
| Topics | Match supported topic declarations and configuration patterns. | Computed topic names may not resolve. |
| Shared symbols | Record verified declarations with distinctive matching names. | A name match alone is not a traversable edge. |
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.