open-brainy/tests/unit/brainy
David Snelling 7b5db0ddf9 fix: re-validate find() results against the predicate (index-integrity guard)
find() trusted the metadata index's returned ids: it loaded each id's entity
and returned it, checking only that the entity existed — never that it actually
matched the query. The indexes are acceleration structures; the loaded entity
is ground truth. A stale or cross-bucket index posting (e.g. an id left in a
field-value bucket by a delete or an `update({ field: undefined })`) therefore
surfaced an entity matching NEITHER the requested type NOR the where filter — a
production report saw a timeslot (NounType.Event) returned for
`find({ type: Person, where: { entityType: 'staff' } })`.

Add a single egress chokepoint after the result IIFE that re-validates every
result with a new `entityMatchesFindParams` predicate (type/subtype/where/
service/excludeVFS, reusing matchesMetadataFilter for the where leg). It covers
every find() branch (metadata, vector, text, proximity, graph) and similar()
(which delegates to find) in one place. A no-op on a healthy index; on a
corrupted one it drops the bad row instead of returning a phantom. Full unit
gate green (1535) confirms the where re-validation is consistent with the index
(no valid rows dropped).

This is the safety net. The durable corruption itself lives in the metadata
index that owns the query (the native provider when present) and is addressed
separately.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 16:36:50 -07:00
..
add.test.ts fix: flush all native providers on shutdown to prevent data loss 2026-02-01 16:23:49 -08:00
batch-operations.test.ts fix: flush all native providers on shutdown to prevent data loss 2026-02-01 16:23:49 -08:00
counts-by-type-fix.test.ts fix: recalibrate find({ limit }) cap + two-tier enforcement + caller location 2026-06-08 12:49:43 -07:00
find-index-integrity-guard.test.ts fix: re-validate find() results against the predicate (index-integrity guard) 2026-06-24 16:36:50 -07:00
find.test.ts fix: resolve 19 critical test failures for production readiness 2025-10-09 16:58:53 -07:00
get.test.ts feat: brain.get() metadata-only optimization - Phase 2 (testing) 2025-11-18 15:41:57 -08:00
graph-adjacency-cold-load.test.ts fix: graph adjacency cold-load consistency guard — no more silent [] on connected 2026-06-24 10:55:12 -07:00
hybrid-search.test.ts feat: expand ContentCategory to universal 6-category set for highlight() 2026-01-27 13:44:58 -08:00
relate-duplicate-optimization.test.ts feat: add v5.8.0 features - transactions, pagination, and comprehensive docs 2025-11-14 10:26:23 -08:00
relate.test.ts fix: flush all native providers on shutdown to prevent data loss 2026-02-01 16:23:49 -08:00
update-reserved-metadata-remap.test.ts fix: remap reserved fields from update() metadata patches to their canonical location 2026-06-11 10:35:08 -07:00
update.test.ts fix: resolve update() v5.11.1 regression + skip flaky tests for release 2026-01-05 16:56:35 -08:00
visibility.test.ts feat: visibility tier (public/internal/system) on nouns + verbs 2026-06-19 16:40:35 -07:00