Release Notes — v1.1¶
Release date: March 2026
This release introduces execution hooks, weave-level lookups, and quality gates — expanding the weave lifecycle with pre/post processing capabilities.
Execution Hooks¶
Weaves now support pre_steps and post_steps — hook steps that run before
and after thread execution within a weave.
Three hook step types are available:
- quality_gate — Run predefined quality checks against data sources and
targets. Supported checks:
source_freshness,row_count_delta,row_count,table_exists, andexpression. - sql_statement — Execute arbitrary Spark SQL. Optionally capture the
scalar result into a weave-scoped variable via
set_var. - log_message — Emit a log message with
${var.name}placeholders resolved from weave variables.
Each step has an on_failure policy: abort (stop the weave) or warn
(log and continue). Pre-steps default to abort; post-steps default to
warn.
pre_steps:
- type: quality_gate
name: check_freshness
check: source_freshness
source: raw.orders
max_age: "24h"
post_steps:
- type: log_message
message: "Pipeline complete."
level: info
Weave-Level Lookups¶
Weaves can now define named lookups — shared reference datasets that
threads access via source.lookup instead of declaring a direct source type.
Lookups support two materialization strategies:
- cache — Pre-read the data and persist it as a cached DataFrame
- broadcast — Pre-read and apply Spark broadcast join hints
lookups:
dim_product:
source:
type: delta
alias: silver.dim_product
materialize: true
strategy: cache
Threads reference lookups by name:
Weave-Scoped Variables¶
Weaves can declare typed variables via the variables block. Variables are
set by sql_statement hook steps and referenced in downstream config as
${var.name}.
variables:
baseline_count:
type: int
default: 0
pre_steps:
- type: sql_statement
sql: "SELECT count(*) FROM silver.fact_orders"
set_var: baseline_count
Supported types: string, int, long, float, double, boolean,
timestamp, date.
New Exception Types¶
HookError— Raised when a hook step fails withon_failure: abort. Carrieshook_name,hook_type, andphasecontext.LookupResolutionError— Raised when a thread references a lookup name not defined in the weave'slookupsmap. Caught during config resolution before any data is read.
Compatibility¶
No breaking changes. All existing configurations continue to work without
modification. The new weave fields (lookups, variables, pre_steps,
post_steps) are optional and default to null.
| Component | Version |
|---|---|
| Python | 3.11 |
| PySpark | 3.5.x |
| Delta Lake | 3.2.x |
| Microsoft Fabric Runtime | 1.3 |