v2.10.0
[2.10.0] - 2026-06-12
Added
osi-orionbeltconverter package. The bidirectional OBML <-> OSI converter is now a standalone, pip-installable package (Apache-2.0), developed in-repo as a uv workspace member underpackages/osi-orionbeltand published to PyPI alongside theob-*drivers. It ships a singleosi-orionbeltcommand withobml-to-osi/osi-to-obmlsubcommands (with--ontology), mirroring theosi-dbtconverter, and vendors all three schemas (the two OSI artefacts plus a synced snapshot of the OBML schema) so it builds and validates standalone with noorionbeltdependency.- OSI conversion is now an optional extra.
osi-orionbeltis no longer a hard dependency oforionbelt-semantic-layer, so a barepip install orionbelt-semantic-layerstays lean. The/convert,/models/from-osi, and/osiendpoints return a clear 503 when the converter is absent. Install it withpip install 'orionbelt-semantic-layer[osi]'(orpip install osi-orionbelt); theflightandflight-duckdb-onlydeploy extras bundle it, so the shipped API images keep OSI conversion working. The previousforce-includeof the converter into the wheel and theCOPY osi-obmllines in all three Dockerfiles are removed. - Third-party vendor extension preservation. OSI
custom_extensionsfrom vendors the converter does not handle internally (e.g.SNOWFLAKE,DBT,SALESFORCE,GOODDATA) now round-trip verbatim at the model, dataObject/dataset, column/field, and measure/metric levels. OSI has no separate dimension entity, so an OBML dimension's foreign extensions surface on its OSI field.
Changed
- Converter vendor identity. OBML -> OSI now tags OrionBelt-proprietary payloads as
ORIONBELT(wasCOMMON), and OSI -> OBML stashes OSI-native fields OBML cannot hold (unique keys, field labels, leftoverai_context) underOSI(was the misleadingOBSL). Read paths still accept the legacyCOMMON/OBSLtags, so previously emitted documents keep round-tripping. The converter self-identifies asosi-orionbeltin its roundtrip metadata.vendor_nameis an open string in OSI, so this is a non-breaking output change. - UI: Export as OSI. The Model Workbench export button (now
⬇ Export as OSI) shows clean, directly copyable OSI YAML in the preview box (relabelled to "OSI YAML (exported)", reset to "Generated SQL" on the next compile/validate/import) and downloads the result asmodel.osi.yaml, instead of prepending a status banner into the YAML. The validation status moves to the explain box.
Full Changelog: v2.9.0...v2.10.0