Skip to content

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:

  • as alias — overrides the thread's effective name for all downstream consumers. Required when the same ref appears multiple times in a weave.
  • params dict — key-value pairs injected into the thread's parameter context under the param namespace, 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 cascadeas > name > filename stem. The effective name is used in the planner DAG, executor spans, telemetry, watermark keys, and all display output.
  • template_ref provenance — records the original .thread file path on each thread instance. Appears in telemetry span attributes and explain() 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