Repository navigation
Releases: TheTrueSCU/hexaflow
Releases · TheTrueSCU/hexaflow
Release list
v0.5.0
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
v0.4.1
What's Changed
- chore(deps): Bump astral-sh/setup-uv from 10.1.0 to 10.2.0 by @dependabot[bot] in #5
- chore(deps): Bump github/codeql-action/analyze from 4.38.0 to 4.38.1 by @dependabot[bot] in #6
- chore(deps): Bump github/codeql-action/upload-sarif from 4.38.0 to 4.38.1 by @dependabot[bot] in #7
- chore(deps): Bump github/codeql-action/init from 4.38.0 to 4.38.1 by @dependabot[bot] in #8
- chore(deps): Bump virtualenv from 21.7.9 to 21.7.13 in the uv group across 1 directory by @dependabot[bot] in #9
- chore(deps): Bump github/codeql-action/init from 4.38.1 to 4.38.2 by @dependabot[bot] in #11
- chore(deps): Bump astral-sh/setup-uv from 10.1.0 to 10.2.0 by @dependabot[bot] in #14
- chore(deps): Bump github/codeql-action/upload-sarif from 4.38.1 to 4.38.2 by @dependabot[bot] in #13
- fix(audit): remediate full codebase audit findings by @TheTrueSCU in #16
New Contributors
- @TheTrueSCU made their first contribution in #16
Full Changelog: v0.4.0...v0.4.1
v0.4.0
What's Changed
- chore(deps): Bump github/codeql-action/init from 3.37.9 to 4.38.0 by @dependabot[bot] in #2
- chore(deps): Bump codecov/codecov-action from 7.0.0 to 7.1.1 by @dependabot[bot] in #3
- chore(deps): Bump github/codeql-action/analyze from 3.37.9 to 4.38.0 by @dependabot[bot] in #4
Full Changelog: v0.3.0...v0.4.0
v0.3.0
v0.2.0
v0.1.1
v0.1.0 - First Standalone Release
🌊 hexaflow v0.1.0
First official release of hexaflow: lightweight, embeddable Python workflow engine with stages, steps, splits, joins, and checkpointed resumption.
Highlights
- Hierarchical DAG Workflow Engine: Workflows structured into Stages and Steps with -based topological resolution.
- Splits & Joins: Concurrently fan-out steps within stages and synchronize at multi-step join barriers.
-
Fault Partitioning: Transient retries with exponential backoff and full jitter vs. permanent failure suspension (
SUSPENDED). -
Resumption & Restart Semantics: Checkpointed step inputs/outputs in embedded SQLite (with automatic
$>64\text{ KB}$ artifact disk spillover). Resume suspended runs bypassing previously completed steps. -
Dual DSL: Decorator-based syntax (
@wf.stage,@wf.step) alongside declarative classes. -
Developer CLI: Full Typer/Rich CLI (
hexaflowandhf) forrun,status,inspect,resume,restart, andabort. -
Ecosystem Ready: Zero dependencies on heavy orchestrators, ready to serve as the local execution core for
hexastackand the cluster job definition forhexaqueue.