Solo core: shared types, traits, and error definitions used across the workspace.
This crate has no production-side dependencies on storage, indexing, or LLM
runtimes — it is the "contract" layer that those crates implement against.
See docs/adr/0002-traits.md for the design rationale behind the trait
shapes (Embedder, VectorIndex, LlmClient).