Skip to content

Latest commit

 

History

History
56 lines (41 loc) · 2.55 KB

File metadata and controls

56 lines (41 loc) · 2.55 KB

Known Limitations

CIRCUIT has deliberate edges. Here is where they are today. None of them block the golden path.

Scope

Java only. The code layer is built from a SCIP index produced by scip-java, which drives your project's build to resolve symbols. The graph model is language-neutral downstream of SCIP, but the indexer, build drivers, and framework adapters (Spring, JAX-RS) are Java.

The repo must build. Indexing drives the build, so the first ingest compiles the target. On a large multi-module codebase that costs real time and heap (Fineract, all modules: ~28 min). Reads are fast afterward — the cost is front-loaded into building the graph once.

No incremental ingest. An ingest is a clean wipe-and-rebuild; every run reconstructs the graph from scratch. This trades a cheap re-sync for a graph with no stale nodes. (Commit-delta incremental ingest is the natural next step — the schema is already commit-addressable.)

One corpus per Neo4j. A graph holds one repository; ingesting a new corpus replaces it. Several corpora means several Neo4j instances — the CLI is built around a single active graph.

Schema changes need a re-ingest. The graph shape is versioned with the tool; you adopt a new schema by re-ingesting, not migrating in place. Under wipe-and-rebuild, that is the same cost as any ingest.

Toolchain

A future JDK may need a pinned ingest. scip-java's bundled Protocol Buffers calls sun.misc.Unsafe::arrayBaseOffset, deprecated for removal. It is benign through Java 25 (a one-line warning at ingest). A JDK that removes the method would mean pinning an older JDK for the ingest step until the toolchain updates — query and serve are unaffected.

Corpora

Only PetClinic ships. The repo ships a ready-to-restore PetClinic dump — small, public, no key. The Fineract graph behind the case-study numbers is not published; reproduce it with circuit ingest <fineract-url>.

Data egress, embedding & telemetry

Embedding is the only thing that can touch the network, and only if you choose the cloud option:

  • Cloud (default): Jina AI embeddings over HTTPS — the code text of the symbols being embedded, nothing else.
  • Self-hosted (no egress, no key): a local endpoint serving the same model. Identical vectors, nothing leaves the machine — see docs/design/local-embedding-selfhost.md.

Structure, history, and graph queries are fully local against your Neo4j. CIRCUIT emits no telemetry.