/**
 * Current-code invariants asserted (2026-04-21, ses_006 Phase 4):
 *
 *   This file doubles as the VectorStore contract — the tests here run
 *   against `InMemoryVectorStore` as the reference implementation, and
 *   are the spec a future `@namzu/vector-store-conformance` package will
 *   be built around (D4 ratification + Q5 refinement: contract first,
 *   not "whatever the reference happens to do").
 *
 *   **VectorStore contract (derived from current code, 2026-04-21):**
 *
 *   - `upsert(chunks[])`: stores each chunk keyed by `chunk.id`. Re-upsert
 *     of a chunk with the same id REPLACES — no merge, no error. Tenant
 *     scoping is carried on each chunk, not enforced at upsert (the
 *     caller is trusted).
 *   - `search(query)`: returns `VectorSearchResult[]`:
 *     - Filters by `tenantId` (EXACT match).
 *     - If `knowledgeBaseId` is set, filters by that too.
 *     - Skips chunks with `embedding === undefined`.
 *     - Applies `filter` as metadata-equality AND across the whole
 *       filter object.
 *     - Computes similarity via `cosineSimilarity(query, chunk.embedding)`.
 *     - If `minScore` is set, drops scores below it.
 *     - Sorts descending by score and returns the top `topK` results.
 *   - `delete(chunkIds[])`: deletes by exact chunk id. Unknown ids are
 *     silently ignored.
 *   - `deleteByDocument(documentId)`: NOT tenant-scoped in the
 *     current API — deletes every chunk with matching `documentId`
 *     ACROSS tenants. This is an asymmetry with `search` /
 *     `deleteByKnowledgeBase` and is intentional to pin (Codex #9 flag).
 *   - `deleteByKnowledgeBase(kbId, tenantId)`: tenant-scoped deletion
 *     by knowledge base.
 *   - `cosineSimilarity(a, b)`: returns 0 when arrays differ in length
 *     OR when either has zero norm. Otherwise returns the standard
 *     dot-product / (‖a‖·‖b‖) result.
 */
export {};
//# sourceMappingURL=vector-store.test.d.ts.map