Files
hermes-webui/api
nesquena-hermes 571cfed180 release: v0.50.251 (#1370 perf fix + orphan-parent guard + regression suite)
Bundles:
- #1370 fix: expose session lineage metadata in API (@dso2ng)

Pre-release fixes applied:

1) Perf: replaced full table scan with parameterized WHERE id IN (...)
   query. Original code did SELECT id, parent_session_id, end_reason
   FROM sessions on every sidebar refresh. Measured 9ms cached scan at
   1000 rows in production (up to ~450ms cold-cache); scales linearly.
   New approach hits PRIMARY KEY + idx_sessions_parent — 50x faster
   at 1000 rows, ~0.2ms regardless of total row count. Depth-bounded
   to 20 hops to cap query count under pathological data.

2) Orphan-parent guard: suppress parent_session_id in API output when
   the referenced parent row doesn't exist in state.db. The frontend's
   #1358 _sessionLineageKey falls through to parent_session_id when
   _lineage_root_id is missing — orphan references would create
   never-collapsing single-row groups in the sidebar.

3) Regression suite (5 tests in
   test_pr1370_lineage_metadata_perf_and_orphan.py):
   - Pins the no-full-scan invariant by intercepting all SQL queries
     and asserting no SELECT FROM sessions without a WHERE clause
   - Pins orphan-parent suppression
   - Pins cycle termination via threading.Event watchdog (2s timeout)
   - End-to-end test for 4-segment compression chain root resolution
   - Pins non-compression end_reason boundary stops walk
2026-04-30 23:06:37 +00:00
..
2026-04-29 19:54:07 -07:00