The binding decisions behind CIRCUIT, in order. Each ADR records the context, the decision, and the trade-off at the time it was made. Terminal-status entries are kept, never deleted — the evolution trail is the point (per CLAUDE.md § ADR lifecycle).
Status legend: Accepted = in force · Superseded / Partially superseded = replaced (follow the pointer) · Obsolete = the thing it governed was removed · Withdrawn = reversed before it landed.
| # | Decision | Status |
|---|---|---|
| 0001 | Spring Boot 4.0.4 instead of 4.0.3 | Accepted |
| 0002 | tree-sitter JVM Binding Selection | Obsolete |
| 0003 | Spring Shell FFM Terminal Provider | Obsolete |
| 0004 | Singleton Testcontainers Pattern | Accepted |
| 0005 | Class→Class CALLS via Raw Cypher Instead of SDN Relationship | Accepted |
| 0006 | Jackson 3 in Spring Boot 4.0.4 | Accepted |
| 0007 | Local Git as Commit Data Source | Accepted |
| 0008 | Schema v2 — File Node, UnresolvedCall Side Table, CALLS Properties | Partially Superseded by ADR-0011 + ADR-0012 |
| 0009 | Parser-Agnostic Resolver SPI | Obsolete |
| 0010 | Parser Choice — tree-sitter + Lightweight Symbol Table | Superseded by ADR-0011 |
| 0011 | Sprint 3 rescope — SCIP pivot + v6.2 Relation-first schema | Accepted |
| 0012 | Universal edge-schema contract — every edge carries r.confidence + r.source | Accepted |
| 0013 | Cache-manifest contract for real-data consumers | Accepted |
| 0014 | CLI architecture — picocli for CLI, MCP for agent, retire Spring Shell | Accepted |
| 0015 | Graph documentation split — capability inventory + semantic models + stable-ID synchronization | Accepted |
| 0016 | Co-change edges expose one bounded ranking score | Accepted |
| 0017 | Issue tracker IoC + cross-source Issue.key identity | Accepted |
| 0018 | EXTENDS / IMPLEMENTS edges store direct parents only; transitive closure via * traversal | Accepted |
| 0019 | Multi-slot Class observation merge prefers richer attestation | Accepted |
| 0020 | ExternalSymbolResolver tier 1 (system ClassLoader) is accidental, not designed | Obsolete |
| 0021 | Interface-to-interface inheritance uses EXTENDS edge (JLS-keyword alignment, vault §2 override) | Accepted |
| 0022 | Function.visibility agnostic property + Spring AOP public-only :Transactional rule | Accepted |
| 0023 | SCIP local-N Function symbols namespaced by Document relPath | Accepted |
| 0024 | Meta-annotation transitive expansion via Spring MetadataReader | Accepted |
| 0025 | Per-corpus declarative source config + source self-validation fail-fast | Accepted |
| 0026 | graphQuality artifact-driven report identity via Corpus graph node | Accepted |
| 0027 | Chunked graph write under wipe-rebuild policy | Accepted |
| 0028 | MCP server via Spring AI stdio starter | Accepted |
| 0029 | Read-only Cypher enforced by a port-level read transaction | Accepted |
| 0030 | Agent-facing identifier is the prefix-stripped SCIP descriptor | Superseded by 0031 |
| 0031 | Agent-facing id is the SCIP descriptor, stripped at ingest | Accepted |
| 0032 | History tier is temporally coherent with the code layer by default | Accepted |
| 0033 | locate exposes labeled match-provenance, not an opaque relevance score | Accepted |
| 0034 | Inspect scoped-context-hub output — curated named lanes + precomputed GDS centrality | Accepted |
| 0035 | History edges oriented along the narrative axis (Issue/PR → Commit → code) | Accepted |
| 0036 | Adopt APOC Core for query-time graph introspection (status connectivity) | Accepted |
| 0037 | Tool disclosure via the MCP server's instructions field (single source) | Accepted |
| 0038 | traverse — APOC-backed structured traversal over raw Cypher, projection-bounded output | Accepted |
| 0039 | find_precedent — concept → history-text → code (a history-discovery tool, not a history search) | Accepted |
| 0040 | Raw Cypher is removed from the agent tool surface | Accepted |
| 0041 | Spring AI 2.0.0 GA — keep the custom embedding client, drop the OpenAI starter | Accepted |
| 0042 | Ingest is a coherent single-SHA-state snapshot — live-fetch-then-cache, resume within a state, cross-state is a full rebuild | Partially Superseded by ADR-0044 |
| 0043 | Distribution & deployment — download-not-clone install, the circuit CLI as the single surface, Neo4j-only compose + local-jar stdio serve | Accepted |
| 0044 | The live GitHub cache stores the full SHA-keyed snapshot, not a demand-narrowed subset | Accepted |
| 0045 | Neo4j plugins are pre-seeded into a bind-mounted /plugins, not installed via NEO4J_PLUGINS | Accepted |
| 0046 | circuit serve boots without an embedding key; embedding (locate's semantic leg) is an optional upgrade | Accepted |
| 0047 | JAX-RS endpoints enter the graph via a sibling FrameworkAdapter, composed over the Spring leaf | Accepted |
| 0048 | A non-default self-hosted embedding base-url activates the embedding profile key-free; the cloud default stays key-gated | Accepted |
| 0049 | The usage playbook is a plugin skill (a channel distinct from capability disclosure); the summative eval injects it as the product surface | Accepted |
| 0050 | Impact-analysis ground truth is the code-derived static blast radius (philosophy A); scoring is method-level with bare-class predictions neutral | Accepted |