hermes-agent/tests/plugins/memory
spfcraze 89f74d58f6 perf(memory): hoist loop-invariant HRR encodes out of retrieval loops
FactRetriever.search() re-encoded the query vector once per candidate,
related() re-encoded both role atoms once per fact row, and probe()
re-encoded the role-content atom once per row. All three encoders are
deterministic (SHA-256 counter blocks), so the hoisted vectors are
bit-identical to the per-iteration values they replace.

Measured (300-fact store, dim=1024, median of 30 calls): search()
11.62 -> 1.46 ms/call (8.0x; encode_text 30 -> 1 per call), related()
63.08 -> 16.17 ms/call (3.9x; encode_atom 601 -> 3 per call), probe()
431.93 -> 389.36 ms/call (1.1x; dominated by per-fact content encoding,
which is inherent to the algorithm and unchanged).

Tests: call-count regression tests for each hoist plus a bit-exact
parity test of search() against the pre-fix per-candidate loop.
2026-08-02 21:16:34 +05:30
..
__init__.py
…
test_byterover_provider.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_config_schema.py revert(memory): drop the provider actions extension point 2026-07-10 15:41:52 -04:00
test_hindsight_config_schema.py refactor(memory): move provider config schemas into their plugins 2026-07-02 16:55:39 -04:00
test_hindsight_env_perms.py fix(hindsight): create embedded profile env file owner-only (0600) 2026-07-31 22:39:34 -07:00
test_hindsight_provider.py fix(tests): forward Windows location vars through the hermetic runner; patch Path.home() in hindsight _clean_env 2026-07-29 18:55:10 -07:00
test_holographic_auto_extract.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_holographic_retrieval.py perf(memory): hoist loop-invariant HRR encodes out of retrieval loops 2026-08-02 21:16:34 +05:30
test_holographic_shutdown_closes_db.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_holographic_store.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_honcho_config_schema.py refactor(memory): move provider config schemas into their plugins 2026-07-02 16:55:39 -04:00
test_mem0_backend.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_mem0_providers.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_mem0_setup.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_mem0_v3.py test: prove concurrency with barriers/witnesses instead of wall-clock bounds 2026-07-29 21:30:53 -07:00
test_memory_lazy_install.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_openviking_provider.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_openviking_shutdown.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00
test_retaindb_provider.py fix(memory): guard local uploads against credential reads 2026-07-05 03:14:49 -07:00
test_supermemory_provider.py test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 2026-07-29 13:10:23 -07:00