What's New in FLUID 0.7.2 — Semantic Truth Engine
FLUID 0.7.2 is the Semantic Truth Engine release. It is additive over 0.7.1 — every 0.7.1 contract remains valid unchanged — and completes the agentic contract: agentPolicy decides whether an AI agent may act on a data product, and semantics tells it how to act correctly.
🧠 Semantic Model (NEW)
Each exposes[] entry now accepts an optional semantics block that maps physical columns to business concepts — entities, measures, dimensions, and metrics — in a form agents and BI tools can reason about without re-deriving KPIs.
# NEW in v0.7.2: machine-readable business logic on an exposed table
exposes:
- exposeId: customer_profiles
kind: table
# ...binding, contract, etc...
semantics:
entities:
- name: customer
primaryKey: customer_id
measures:
- name: revenue
expr: "SUM(order_total)"
agg: sum
dimensions:
- name: signup_month
expr: "DATE_TRUNC('month', created_at)"
metrics:
- name: monthly_active_customers
type: simple
measure: customer_id
filters: ["last_active_at >= CURRENT_DATE - INTERVAL 30 DAY"]
Why this matters: eliminates the semantic hallucination failure mode where an LLM asked "what's our MRR?" invents an SQL expression because the contract never told it how MRR is defined. The shape is aligned with dbt MetricFlow, Snowflake Semantic Views, and OSI-format metric definitions — portable across engines.
🧊 Apache Iceberg Binding Config (NEW)
binding.icebergConfig lets contracts declare Iceberg table format specifics — write version, file format, partition spec, sort order — directly in the FLUID contract, so provisioners don't need an out-of-band config file.
binding:
platform: aws
format: iceberg
location: { bucket: warehouse, path: "gold/customer_profiles" }
icebergConfig:
writeVersion: 2
fileFormat: parquet
partitionSpec:
- { sourceColumn: created_at, transform: month }
🔄 100% backward compatible with 0.7.1
- ✅ No breaking changes
- ✅
semanticsandicebergConfigare both opt-in - ✅ All 0.7.1 features (agentPolicy, sovereignty, provider-first orchestration, root accessPolicy) fully preserved
Migration:
# Change version number — that's it.
fluidVersion: "0.7.2" # was "0.7.1"
# Optionally add a semantics block on any expose.
See the Schema Changelog for the full version history, or the 0.7.1 → 0.7.2 diff for the auto-generated change list.
