Repository navigation
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[0.5.0] - 2026-10-11
Added
- Pluggable Graph Subsystem & Multi-Format Renderers:
WorkflowGraphpure domain model with cycle detection, topological sorting, reachability analysis (ancestors,descendants,blast_radius), and critical path latency bottleneck calculation.- Multi-format diagram adapters conforming to
GraphRendererPort:MermaidGraphRenderer: Stage-clustered flowcharts with execution pool styling, rule badges, and mapped indicators.DotGraphRenderer: Graphviz DOT format with customizable styles and node highlighting.AsciiGraphRenderer: Unicode box-drawing visual DAG representation for terminal output.JsonGraphRenderer: JSON-serialized structural representation for programmatic integration.RendererRegistry: Extensible renderer catalog supporting third-party format plugins.
- Optional visual artifact export (
render_image(..., image_format="svg" | "png")) with CLI fallbacks (mmdc,dot).
- Dry-Run Simulation Mode & Chaos Fault Injection:
dry_run=Truesimulation execution across scalar and mapped fan-out steps without mutating databases or external APIs.- Fail-closed safety guards: steps declaring
side_effects=Truerequire explicit mock fallbacks (dry_run=...) orallow_unsafe=True, preventing unintended production mutations. - Chaos fault injection:
fault_injection={step_name: Exception}parameter allows simulating component failures and testing resilient compensating workflows.
- Workflow Memento Pattern & Time-Travel Rewind:
- Immutable state snapshots (
WorkflowMemento) capturing complete execution state, checkpoints, and inputs. - Time-travel execution rewind (
rewind_to(step_name)): resets execution to before any historical step, clearing downstream checkpoints for selective re-execution.
- Immutable state snapshots (
- Onion-Layered Step Middleware Pipeline:
- Abstract
StepMiddlewarePortprotocol andInOutStepMiddlewarebase class for pre/post step interception across sync and async callables. - Built-in middleware implementations:
LoggingStepMiddleware: Structured logging of step start, completion, and failure events.TimingStepMiddleware: High-precision latency measurement in milliseconds stored on step context metadata.MockFallbackMiddleware: Automatic synthetic fallback generation for dry-run simulation mode.
- Fluent registration via
engine.use(middleware)andWorkflow(..., middleware=[...]).
- Abstract
- Enhanced CLI Subcommands (
hf graph render&hf graph info):hf graph render <target> --format <mermaid|dot|ascii|json>: Visualizes workflow DAGs directly from Python files, functions, or GitHub Actions YAML files.- Direct GitHub Actions YAML pipeline parsing (
GitHubActionsYamlLoader): parses job dependencies (needs) into aWorkflowGraphwithout custom scripts. --dry-runsimulation flag onhf graph renderto expand and visualize dynamic mapped steps before execution.--summary: writes rendered Mermaid diagrams directly to GitHub Actions$GITHUB_STEP_SUMMARY.hf graph info <target>: Displays topological metadata, estimated latency, bottleneck step, and critical path nodes.
Changed
- Refactored
AsyncioWorkflowEngineexecution pipeline into an onion-layered middleware dispatch chain. - Constructor worker limits (
max_process_workers,max_thread_workers) onWorkflowretain original positional parameter ordering.
[0.4.0] - 2026-09-25
Added
- Multi-Core Worker Pools & Execution Pools (
ExecutionPool):ExecutionPoolenum supportingASYNC(asyncio event loop coroutine),THREAD(ThreadPoolExecutor), andPROCESS(ProcessPoolExecutor).poolparameter onStepDefinition,@wf.step(..., pool=...), and@wf.map_step(..., pool=...)for true multi-core CPU scaling.- Safe cross-process parameter binding and trampoline execution (
mp_context="spawn") for CPU-bound step and mapped sub-step execution. - Granular process and thread worker limit tuning via
max_process_workersandmax_thread_workersonAsyncioWorkflowEngineandWorkflow. - Resource lifecycle management with
close(),aclose(), sync and async context managers (with Workflow(...),async with Workflow(...)). LocalAsyncWorkflowEnginealias forAsyncioWorkflowEngine.
[0.3.0] - 2026-09-16
Added
- Dynamic Step Mapping (
@wf.map_step):- Runtime fan-out decorator allowing a step to dynamically map over a collection produced by an upstream step or context input.
- Automatic dependency inference linking mapped steps to their upstream targets.
- Granular concurrency throttling via
concurrency_limitparameter. - Flexible callable signature binding (supporting
(item),(item, ctx),(ctx, item), and context keyword arguments). - Sub-step checkpoint isolation (
<step>[<i>]) supporting individual retries, timeouts, and seamless resumption skipping previously completed items.
- DAG Exporters:
WorkflowDefinition.to_mermaid(direction="TD")andWorkflow.to_mermaid()for rendering valid Mermaid flowcharts clustered by stage with rule and mapped node annotations.WorkflowDefinition.to_ascii()andWorkflow.to_ascii()for rendering clean Unicode hierarchical trees for terminal and dashboard output.
- Governance:
- Upgraded dev dependencies to
hexaqual[all]>=0.3.0and unified pre-commit hook configuration.
- Upgraded dev dependencies to
[0.2.0] - 2026-09-14
Added
TriggerRuleenum supportingALL_SUCCESS,ALL_FAILED,ALL_DONE,ONE_SUCCESS,ONE_FAILED,NONE_FAILED, andALL_SUCCESS_OR_SKIPPED.- Pure function
evaluate_trigger_rule(rule, parent_statuses)in domain models. - Support for
trigger_ruleonStepDefinitionand fluent builderWorkflow.step(..., trigger_rule=...). - Execution-time step skipping via
skip_steps: set[str] | list[str] | NoneonWorkflowEnginePortandAsyncioWorkflowEngine(run,run_async,resume,resume_async). - Cascading skip propagation: skipped upstream dependencies cascade downstream according to each child step's
trigger_rule. WorkflowCliBinderinhexaflow.cli.binderfor introspecting workflow DAGs and dynamically generating CLI option signatures (--skip-<step>) for Typer commands.Workflow.create_cli_binder()DSL convenience helper.- Comprehensive unit test coverage across trigger rules, skip cascades, and CLI binder parameter translation.
[0.1.1] - 2026-09-13
Added
- Quality gate integration with Hexaqual (
hexaqual[all]>=0.2.0). - Test symmetry verification and
__all__integrity enforcement. - Automated release workflow with provenance attestations and PyPI publication.
[0.1.0] - 2026-09-13
Added
- Lightweight, embeddable Python workflow engine with stages, steps, splits (fan-out), and joins (barriers).
- Pure domain models for workflows, stages, steps, retry policies, and execution state.
- In-memory and SQLite-backed state stores (
InMemoryStateStore,SqliteStateStore) with checkpointed resumption. - Asynchronous local execution engine (
AsyncioWorkflowEngine). - Fluent workflow definition DSL (
Workflow). - Command-line interface (
hf) with commands for inspection, execution, resumption, and status dashboards. - End-to-end resumable pipeline integration tests and Hypothesis property-based tests.
What's Changed
- fix(security): resolve CodeQL alerts, Scorecard findings, and modernize governance by @TheTrueSCU in #17
- feat(graph): pluggable graph subsystem, multi-format renderers, simulation mode, and workflow memento by @TheTrueSCU in #21
- feat(middleware): implement onion-layered StepMiddlewarePort and adapters by @TheTrueSCU in #23
- test(ports): use new invocation to test abstract instantiation across ty versions by @TheTrueSCU in #25
- chore(deps): Bump the workspace-deps group across 1 directory with 6 updates by @dependabot[bot] in #24
- chore(release): release v0.5.0 by @TheTrueSCU in #26
Full Changelog: v0.4.1...v0.5.0