ADR 0001: Start with a local Python and SQLite kernel
- Status: accepted for Prototype A
- Date: 2026-07-21
Context#
The repository is greenfield. The first risk is architectural validity, not distributed scale. Requiring a vector database, graph database, hosted model, or API key would make the earliest results slower to reproduce and would mix infrastructure effects with the memory design.
Decision#
Build the deterministic kernel in Python 3.12 using the standard library and SQLite FTS5. Keep storage, extraction, embedding, reranking, and token-counting behind narrow interfaces.
The import package is evicortex. The distribution remains evicortex-research until the
PyPI namespace and formal trademark checks are completed; no public package name is reserved.
Consequences#
Benefits:
- one-file local setup and reproducible tests;
- ACID transactions, FTS5, indexes, and a mature query planner;
- no network, model, or paid-service dependency for the baseline;
- easy inspection of invariants and benchmark artifacts.
Costs:
- no dense semantic retrieval in Prototype A;
- graph traversal and rank fusion must be implemented in application code;
- write concurrency and very large deployments will require another adapter;
- SQLite benchmark results cannot be presented as distributed production results.
Exit criteria#
Add or replace storage only after profiling identifies a concrete limit. A replacement must pass the same conformance suite for evidence fidelity, temporal claims, isolation, expansion, and deterministic retrieval traces.