Skip to content

Latest commit

 

History

History
62 lines (59 loc) · 7.46 KB

File metadata and controls

62 lines (59 loc) · 7.46 KB

Architecture Decision Records

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