This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
ReleasePort's take
Light signalv0.6.5 adds sibling column references and detects circular dependencies via ColumnCycleError exception, preventing runtime failures from reference cycles.
Why it matters: If your semantic layer uses sibling column references, test v0.6.5 in dev. Circular dependency detection now catches issues at save time rather than runtime.
Summary
AI summaryCircular column reference detection prevents runtime failures and adds ColumnCycleError.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Columns can reference sibling columns by short name in SQL expressions. Columns can reference sibling columns by short name in SQL expressions. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Model save detects circular column dependencies and reports exact cycle. Model save detects circular column dependencies and reports exact cycle. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
New ColumnCycleError exception for circular column reference detection. New ColumnCycleError exception for circular column reference detection. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Low |
New ColumnCycleError exception added, inherits SlayerError and ValueError. New ColumnCycleError exception added, inherits SlayerError and ValueError. Source: granite4.1:30b@2026-05-22-audit Confidence: low |
— |
| Refactor | Low |
StorageBackend.save_model now a template method running cycle validator before saving. StorageBackend.save_model now a template method running cycle validator before saving. Source: granite4.1:30b@2026-05-22-audit Confidence: high |
— |
Full changelog
SLayer 0.6.5
A small quality-of-life release for people writing model SQL.
What's new
You can now use a sibling column's short name inside another column's SQL on the same model. Previously you had to write the fully qualified <model>.<col> form; both forms now work the same way. So if bucket is a derived column on orders, you can write either orders.bucket or just bucket in another column's SQL and it will inline correctly. Bare names inside sub-queries, UNION branches, CTEs, and VALUES are left alone, since those refer to the inner rowset rather than your model.
If you accidentally write circular references between columns (column A depends on B, B depends on A), SLayer now catches this when you save the model instead of letting it fail later at query time. The error tells you the exact cycle path. Existing data with cycles still loads fine, so you can clean it up at your own pace.
For maintainers- New exception
slayer.core.errors.ColumnCycleError(multi-inheritsSlayerErrorandValueErrorsoexcept ValueErrorcall sites keep working). StorageBackend.save_modelis now a template method that runs the cycle validator before delegating to a backend-specific_save_model_impl.- Migration write-back skips cycle validation, so legacy cyclic models remain loadable.
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 freeAbout SLayer, a semantic layer maintained by your agent
All releases →Related context
Related tools
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]