[hero_planner_server] entity *_list_full returns empty for all rootobjects #24

Closed
opened 2026-06-14 16:25:17 +00:00 by sameh-farouk · 1 comment
Member

All 11 entity rootobjects' generated *_list_full (and *_list) return an empty vec![] (confirmed in main_impl.rs). Clients cannot list via _list_full; the web remap (#18 B) had to route every list through *_find (returns sids) + *_get each (N+1 queries).

Fix: implement *_list_full to return the workspace-scoped entities (mirror the per-entity store list). Affects efficiency and any consumer expecting _list_full to work (incl. the generated SDK).

All 11 entity rootobjects' generated `*_list_full` (and `*_list`) return an empty `vec![]` (confirmed in `main_impl.rs`). Clients cannot list via `_list_full`; the web remap (#18 B) had to route every list through `*_find` (returns sids) + `*_get` each (N+1 queries). **Fix:** implement `*_list_full` to return the workspace-scoped entities (mirror the per-entity store list). Affects efficiency and any consumer expecting `_list_full` to work (incl. the generated SDK).
Author
Member

Fixed on development in 7976504 — implemented all 11 entity *_list_full handlers (were vec![]) in main_impl.rs to return fully-hydrated rows via the per-entity store list methods. Source-only (.oschema unchanged for this one; openrpc/SDK regenerated by build, not hand-edited).

Adversarially verified at runtime: swot_item_list_full returns 8 hydrated items; every entity's _find(main) now matches system_counts (swot 4 / necessary_condition 3 / requirement 5 / story 4 / milestone 1 / cost_center 3 / cost 4 / resource 6).

Residual (by design): _list_full is unscoped — it returns all workspaces' rows, each tagged with workspace_sid, because the generated CRUD *ListFullInput has no workspace parameter. Single-workspace listing uses _find+_get (the scoped path, which is correct). Lifting that residual needs a generator/schema change to give CRUD list a workspace filter — out of scope here.

Fixed on `development` in `7976504` — implemented all 11 entity `*_list_full` handlers (were `vec![]`) in `main_impl.rs` to return fully-hydrated rows via the per-entity store list methods. Source-only (.oschema unchanged for this one; openrpc/SDK regenerated by build, not hand-edited). Adversarially verified at runtime: `swot_item_list_full` returns 8 hydrated items; every entity's `_find(main)` now matches `system_counts` (swot 4 / necessary_condition 3 / requirement 5 / story 4 / milestone 1 / cost_center 3 / cost 4 / resource 6). **Residual (by design):** `_list_full` is *unscoped* — it returns all workspaces' rows, each tagged with `workspace_sid`, because the generated CRUD `*ListFullInput` has no workspace parameter. Single-workspace listing uses `_find`+`_get` (the scoped path, which is correct). Lifting that residual needs a generator/schema change to give CRUD list a workspace filter — out of scope here.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_planner#24
No description provided.