Area: src/everos
What happened?
POST /api/v1/memory/get with memory_type="profile" accepts page, page_size, and filters on the request DTO, but the GetManager profile branch (src/everos/memory/get/manager.py:96-102) is a single-row KV-by-owner lookup. The five request fields are read into local variables (lines 72-79) but never threaded into the profile path — a paginated/filtered request always returns 0-or-1 row with total_count in {0,1} and no signal that the requested page / page_size / filters were dropped.
The same request also accepts sort_by and sort_order, but for profile (single-row KV) the sort field is not consulted by the manager; this is documented in GetData.effective_sort (src/everos/memory/get/dto.py) and not addressed here.
Steps to reproduce
- Send
POST /api/v1/memory/get with body {"user_id":"u1","memory_type":"profile","page":3,"page_size":50,"filters":{"role":"user"}}.
- Observe
200 OK with at most one row in data.profiles.
- The
page=3, page_size=50, and filters arguments are silently dropped — no log, no metric, no DTO field flags the override.
Expected vs actual
- Expected:
422 Unprocessable Entity with a body that names the dropped fields ("memory_type='profile' is a single-row KV fetch and ignores pagination/filter arguments; got page=3, page_size=50, filters=").
- Actual:
200 OK with the profile row (or empty), and the caller has no way to know that pagination/filter were dropped.
Environment
- Repo: EverMind-AI/EverOS
- File: src/everos/memory/get/manager.py (lines 96-102), src/everos/memory/get/dto.py
- Commit (as filed): upstream/main @ 9fc6ad2
A fix is staged at https://github.com/Fearvox/EverOS/pull/new/proofstorm/r2-sort-override-observable.
Area: src/everos
What happened?
POST /api/v1/memory/getwithmemory_type="profile"acceptspage,page_size, andfilterson the request DTO, but theGetManagerprofile branch (src/everos/memory/get/manager.py:96-102) is a single-row KV-by-owner lookup. The five request fields are read into local variables (lines 72-79) but never threaded into the profile path — a paginated/filtered request always returns 0-or-1 row withtotal_countin{0,1}and no signal that the requested page / page_size / filters were dropped.The same request also accepts
sort_byandsort_order, but forprofile(single-row KV) the sort field is not consulted by the manager; this is documented inGetData.effective_sort(src/everos/memory/get/dto.py) and not addressed here.Steps to reproduce
POST /api/v1/memory/getwith body{"user_id":"u1","memory_type":"profile","page":3,"page_size":50,"filters":{"role":"user"}}.200 OKwith at most one row indata.profiles.page=3,page_size=50, andfiltersarguments are silently dropped — no log, no metric, no DTO field flags the override.Expected vs actual
422 Unprocessable Entitywith a body that names the dropped fields ("memory_type='profile' is a single-row KV fetch and ignores pagination/filter arguments; got page=3, page_size=50, filters=").200 OKwith the profile row (or empty), and the caller has no way to know that pagination/filter were dropped.Environment
A fix is staged at https://github.com/Fearvox/EverOS/pull/new/proofstorm/r2-sort-override-observable.