Bug Description
fact_store(action='list') always returns {"facts": [], "count": 0} regardless of parameters (category, min_trust, limit, offset, sort_by). Meanwhile search, probe, and other actions work correctly.
Steps to Reproduce
- Add a fact:
fact_store(action='add', content='test fact')
- Call
fact_store(action='list') → returns {"facts": [], "count": 0}
- But
fact_store(action='search', query='test') correctly returns the fact
Expected Behavior
fact_store(action='list') should return all stored facts with pagination support, respecting category filter and min_trust threshold.
Actual Behavior
Always returns {"facts": [], "count": 0} regardless of parameters.
Affected Component
Agent Core (conversation loop, context compression, memory)
Messaging Platform (if gateway-related)
No response
Debug Report
hermes doctor output: Hermes Agent v0.13.0 (Tenacity Release, 2026.5.7), Python 3.11.15, macOS 26.4.1
Operating System
macOS 26.4.1
Python Version
3.11.15
Hermes Version
v0.13.0
Additional Logs / Traceback (optional)
Root Cause Analysis (optional)
In plugins/memory/holographic/store.py line 358, the list_facts method builds SQL with LIMIT ? OFFSET ? but binds parameters in reverse order:
params.extend([offset, limit])
The SQL:
SQLite positional binding means ? is bound in array order: offset (0 by default) → LIMIT, limit → OFFSET. Since offset defaults to 0, LIMIT always receives 0, returning zero rows.
This affects ONLY list_facts because other methods (search, probe) use different SQL builders in FactRetriever that don't have this bug.
Proposed Fix (optional)
Line 358 of plugins/memory/holographic/store.py:
- params.extend([offset, limit])
+ params.extend([limit, offset])
Also, the category parameter enum in FACT_STORE_SCHEMA (line 66 of __init__.py) only lists ["user_pref", "project", "tool", "general"], but the codebase uses legal_index and case_deep extensively. Consider adding them to the enum to avoid issues with strict function-calling providers.
Are you willing to submit a PR for this?
Bug Description
fact_store(action='list')always returns{"facts": [], "count": 0}regardless of parameters (category, min_trust, limit, offset, sort_by). Meanwhilesearch,probe, and other actions work correctly.Steps to Reproduce
fact_store(action='add', content='test fact')fact_store(action='list')→ returns{"facts": [], "count": 0}fact_store(action='search', query='test')correctly returns the factExpected Behavior
fact_store(action='list')should return all stored facts with pagination support, respecting category filter and min_trust threshold.Actual Behavior
Always returns
{"facts": [], "count": 0}regardless of parameters.Affected Component
Agent Core (conversation loop, context compression, memory)
Messaging Platform (if gateway-related)
No response
Debug Report
Operating System
macOS 26.4.1
Python Version
3.11.15
Hermes Version
v0.13.0
Additional Logs / Traceback (optional)
Root Cause Analysis (optional)
In
plugins/memory/holographic/store.pyline 358, thelist_factsmethod builds SQL withLIMIT ? OFFSET ?but binds parameters in reverse order:The SQL:
LIMIT ? OFFSET ?SQLite positional binding means
?is bound in array order:offset(0 by default) →LIMIT,limit→OFFSET. Since offset defaults to 0, LIMIT always receives 0, returning zero rows.This affects ONLY
list_factsbecause other methods (search, probe) use different SQL builders in FactRetriever that don't have this bug.Proposed Fix (optional)
Line 358 of
plugins/memory/holographic/store.py:Also, the
categoryparameter enum inFACT_STORE_SCHEMA(line 66 of__init__.py) only lists["user_pref", "project", "tool", "general"], but the codebase useslegal_indexandcase_deepextensively. Consider adding them to the enum to avoid issues with strict function-calling providers.Are you willing to submit a PR for this?