Skip to content

This release includes 1 breaking change for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

semantic-layer

Summary

AI summary

Memory IDs changed from integers to strings with first-class entity support.

Changes in this release

Feature Medium

Memories are now first-class entities with string IDs.

Memories are now first-class entities with string IDs.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

Feature Medium

Memory IDs can be referenced using `memory:<id>` syntax in linked_entities and search.

Memory IDs can be referenced using `memory:<id>` syntax in linked_entities and search.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

Feature Medium

`search()` treats unresolved entity or example-query references as warnings instead of errors.

`search()` treats unresolved entity or example-query references as warnings instead of errors.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

Feature Medium

`SlayerClient.forget_memory` now URL-quotes the memory id.

`SlayerClient.forget_memory` now URL-quotes the memory id.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

Feature Medium

`SlayerClient.query`, `sql`, `explain`, `query_df`, and their `_sync` variants accept query, dict, list, or model name inputs.

`SlayerClient.query`, `sql`, `explain`, `query_df`, and their `_sync` variants accept query, dict, list, or model name inputs.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

Feature Medium

Filters and ORDER BY on renamed measures accept alias or colon form; colon-form filters are classified as HAVING.

Filters and ORDER BY on renamed measures accept alias or colon form; colon-form filters are classified as HAVING.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

Feature Medium

Added integration tests for Clickhouse and MySQL using Docker.

Added integration tests for Clickhouse and MySQL using Docker.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

Bugfix Medium

Stale entity references inside memories are automatically cleaned up on model, datasource, or memory deletion.

Stale entity references inside memories are automatically cleaned up on model, datasource, or memory deletion.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

Refactor Medium

SQLite memories tables from older databases are rebuilt with a TEXT primary key on first open.

SQLite memories tables from older databases are rebuilt with a TEXT primary key on first open.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

Refactor Medium

Outermost rendered SELECT projects declared dimensions, time dimensions, and measures in order; hidden hoists stay in CTEs.

Outermost rendered SELECT projects declared dimensions, time dimensions, and measures in order; hidden hoists stay in CTEs.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

Full changelog

SLayer 0.6.9

Memories are now first-class entities. Memory IDs are strings instead of integers (you can pass your own, e.g. from a knowledge base; auto ids still work; same-id saves upsert). You can reference a memory anywhere an entity name is accepted - in another memory's linked_entities, in search(entities=...), etc. - using the form memory:<id>, and search ranks memories and other entities through the same machinery.

Minor changes

  • Stale entity references inside memories are cleaned up automatically when you delete a model, datasource, or memory.
  • search() now treats unresolved entity or example-query references as warnings instead of erroring.
  • SQLite memories tables from older databases are rebuilt with a TEXT primary key on first open.
  • SlayerClient.forget_memory now URL-quotes the memory id.
  • SlayerClient.query / sql / explain / query_df (and their _sync variants) now accept the same input shapes as engine.execute - a query, a dict, a list for multi-stage DAGs, or a model name; previously HTTP-mode crashed on list and string input.
  • Filters and ORDER BY on a renamed measure ({"formula": "col:agg", "name": "alias"}) now accept either the alias or the original colon form; colon-form filters are classified as HAVING.
  • The outermost rendered SELECT now projects exactly your declared dimensions, time dimensions, and measures in declared order; hidden hoists for window arguments, sub-aggregates, ORDER BY aggregates, and filter-extracted refs stay in CTEs.
  • Add integration tests for Clickhouse and MySQL (using Docker)

Breaking Changes

  • Memory IDs are now strings instead of integers; existing integer-based references must be updated.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track SLayer, a semantic layer maintained by your agent

Get notified when new releases ship.

Sign up free

About SLayer, a semantic layer maintained by your agent

All releases →

Related context

Earlier breaking changes

  • v0.6.3 Datasource names now reject dots, slashes, nulls, empty/whitespace; existing names containing '.' will fail validation on upgrade.
  • v0.6.0 recall_memories surface entirely removed with no deprecation shim.
  • v0.5.1 Two-mode reference semantics enforced: SQL mode accepts arbitrary SQL; DSL mode strictly resolves identifiers.
  • v0.5.1 RecallHit.match_count renamed to RecallHit.score across MCP, REST, CLI, and SlayerClient.

Beta — feedback welcome: [email protected]