Problem
Each /load_expr session permanently retains its memory: in one run the server went 179MB → 351MB (23.9M-row table) → 6,044MB (18.45M-row table with a near-unique id column, see companion issue) → 11,198MB (diff compare session over the same data). Nothing is evicted or released between loads — opening N large entries costs the sum of all of them for the life of the process. This is the same growth pattern behind the 16.9GB incident logged in tallyman#34, still present on 0.14.19. For tallyman's usage (one long-lived buckaroo serving every catalog entry the user clicks through) unbounded session accumulation is the steady state, not an edge case.
Suggested fix
An eviction policy on the session table: LRU by last websocket activity with a process-RSS or per-session-size budget, dropping the materialized frames/caches while keeping the session id re-creatable (tallyman already re-issues /load_expr on a session miss). Even a blunt max-sessions=K would bound the damage.
Context
Measured during tallyman prompt-pack run pack01 (2026-06-11), buckaroo 0.14.19 driven by tallyman main @ 99237ee. Cross-referenced from tallyman#34.
Problem
Each
/load_exprsession permanently retains its memory: in one run the server went 179MB → 351MB (23.9M-row table) → 6,044MB (18.45M-row table with a near-unique id column, see companion issue) → 11,198MB (diff compare session over the same data). Nothing is evicted or released between loads — opening N large entries costs the sum of all of them for the life of the process. This is the same growth pattern behind the 16.9GB incident logged in tallyman#34, still present on 0.14.19. For tallyman's usage (one long-lived buckaroo serving every catalog entry the user clicks through) unbounded session accumulation is the steady state, not an edge case.Suggested fix
An eviction policy on the session table: LRU by last websocket activity with a process-RSS or per-session-size budget, dropping the materialized frames/caches while keeping the session id re-creatable (tallyman already re-issues /load_expr on a session miss). Even a blunt max-sessions=K would bound the damage.
Context
Measured during tallyman prompt-pack run pack01 (2026-06-11), buckaroo 0.14.19 driven by tallyman main @ 99237ee. Cross-referenced from tallyman#34.