Release Notes — v1.13¶
Release date: April 2026
This release adds thread parameterization and instance
aliasing, enabling a single .thread file to be reused
across a weave with different parameters — turning threads
into composable templates.
Thread Templates¶
Define a thread config once and instantiate it multiple times in a weave with different parameters. Each instance gets a unique identity across the planner, executor, telemetry, watermark, and display.
# silver.weave
config_version: "1.0"
threads:
- ref: silver/sap_table.thread
as: sap_adr6
params:
table_name: ADR6
schema: raw
- ref: silver/sap_table.thread
as: sap_adr2
params:
table_name: ADR2
schema: raw
The template thread uses ${param.x} to reference injected
values:
# silver/sap_table.thread
config_version: "1.0"
sources:
sap_data:
type: delta
alias: ${param.schema}.${param.table_name}
steps:
- filter:
expr: "mandt = '100'"
target:
alias: silver.${param.table_name}
Key features:
asalias — overrides the thread's effective name for all downstream consumers. Required when the same ref appears multiple times in a weave.paramsdict — key-value pairs injected into the thread's parameter context under theparamnamespace, enabling${param.x}references throughout the thread config.- Two-phase resolution — expressions in param values
(e.g.,
"${env}_silver") resolve against the parent context (weave defaults, runtime params) before injection into the thread. - Effective name cascade —
as>name> filename stem. The effective name is used in the planner DAG, executor spans, telemetry, watermark keys, and all display output. template_refprovenance — records the original.threadfile path on each thread instance. Appears in telemetry span attributes andexplain()output.- Unused param warnings — entry params not consumed by the thread config emit telemetry warnings with source attribution, catching typos and stale config.
- Validation — duplicate refs without aliases and
duplicate effective names within a weave raise
ConfigError.
Instance aliasing¶
as works on all ThreadEntry forms — ref entries, inline
definitions, and single-use refs. It simply overrides the
thread's effective name, which can be useful for giving a
generic template a domain-specific identity.
threads:
# Single-use ref with cosmetic rename
- ref: shared/customer_load.thread
as: dim_customer
# Inline thread with alias
- name: raw_loader
as: staging_loader
config_version: "1.0"
sources: ...
target: ...
Backwards compatibility¶
Existing configs without as or params work identically.
The new fields are fully optional and default to null.
See the Thread Templates guide for full documentation.
Also in this release¶
- Documentation drift fixes across 15 pages (JSON log field names, API paths, types, version stamps, missing schema entries)
- weevr-cli cross-references added to README and docs home page