v0.9.5: More flexible RLS, better MCP guidance, query engine tidy-up
SLayer 0.9.5
A small release extending row-level security and sharpening agent guidance.
- Row-level security now works across joins: when the tenant column lives on only one table, reach it from others with a
JoinFilterRulethat names the join path. Cardinality-safeEXISTSsemi-join, soLEFT JOINresults are never dropped or duplicated. - Join paths are explicit (the hops you write, not auto-discovered), and any policy with a join rule must include a blocking column rule so forgotten tables fail closed.
- ClickHouse users: correlated subqueries need server 25.4+; SLayer probes the version and errors clearly on older servers.
- Agents driven via MCP are now told to call
help()first, following a help, search, inspect, query flow.
Additional technical details
create_mcp_server attaches its query engine as mcp._slayer_engine so long-lived hosts can await engine.aclose() at teardown to release per-task database pools. validate_models and recommend_root_model reuse this shared engine, and the schema-drift probe caches its SQL client back into the shared pool for disposal.