All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[0.5.0] - 2026-04-13
Added
- Migration V04: changes
hephaestus_step_results.instance_idfromuuidtovarchar(255)to support business key IDs ("key::value"format). - Storage filter verification tests for
:id,:status_in,:workflow_version, and combined filters.
Changed
- Breaking:
start_instance/3now requires:idin opts — the runner passes it toInstance.new/4(explicit business key ID). - V01 migration updated to create FK with
type: :string(compatible with fresh installs on hephaestus_ecto 0.3.0+). StepResultschema:instance_idfield changed from:binary_idto:string.- Advisory lock key generation uses
:erlang.phash2/1instead ofEcto.UUID.dump!/1(supports non-UUID instance IDs). - All test workflows declare
unique: [key: "testoban"](required by hephaestus 0.3.0). - Requires
hephaestus ~> 0.3.0andhephaestus_ecto ~> 0.3.0.
[0.4.1] - 2026-04-09
Fixed
- Fixed
migrated_version/1query — replaced::regclasscast (which crashes when the table doesn't exist on fresh install, aborting the DDL transaction) with a safepg_class+pg_namespaceJOIN query. Host applications no longer need@disable_ddl_transactionin their migration files. - Fixed
record_version/2to always include the schema prefix usingquoted_prefix. - Made V01 migration fully idempotent:
create→create_if_not_existsfor table and indexes. - Added
:prefixsupport to all migration versions (V01, V02, V03) for multi-tenant use. - Removed unused
qualified_table/2private function from the orchestrator. - Added
quoted_prefixto opts (viawith_defaults/2) following Oban's pattern. - Added migration tests for
migrated_versionwhen table doesn't exist.
[0.4.0] - 2026-04-08
Added
- Versioned migration system following the Oban pattern (V01, V02, V03).
HephaestusOban.Migration.up/1anddown/1with version tracking via table comments.- Migration V03:
workflow_versioninteger column onhephaestus_step_results(NOT NULL, default 1). workflow_versionin Oban job args for all workers (AdvanceWorker, ExecuteStepWorker, ResumeWorker).workflow_versionin JobMetadata for Oban Web observability.
Changed
- Refactored
migration.exinto versioned modules (V01: initial table, V02: metadata_updates, V03: workflow_version) with orchestrator pattern. StepResults.insert/1now persistsworkflow_version.- Runner updated to use
Instance.new/3. - Requires
hephaestus ~> 0.2.0.
[0.3.0] - 2026-04-08
Added
- Runtime metadata support:
ExecuteStepWorkerhandles{:ok, event, context_updates, metadata_updates}from steps. metadata_updatescolumn inhephaestus_step_resultstable.- Temporary
add_metadata_updates/0upgrade helper for existing tables. runtime_metadataoption inJobMetadata.build/3— dynamic metadata from steps appears in Oban job meta.
Changed
AdvanceWorkerpassesruntime_metadatatoEngine.complete_step/5and propagates it to subsequent job metadata.
[0.2.0] - 2026-04-07
Added
- Workflow metadata and tags to Oban jobs via
HephaestusOban.JobMetadata - Observability section to README
- Moduledoc to
HephaestusObanandHephaestusOban.JobMetadatafor hexdocs
Changed
- Require
hephaestus ~> 0.1.3for metadata support
[0.1.0] - 2026-04-07
Added
- Oban-based runner adapter for the Hephaestus workflow engine
- Durable jobs with retry/backoff via Oban
- Advisory lock serialization for step execution
- Zero-contention parallel step execution via auxiliary
step_resultstable - Package metadata and LICENSE for hex.pm publishing