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.1.0 - 2025-11-09
- Production-Ready Release - First stable release of Singularity.Workflow
- Database-Driven DAG Execution - PostgreSQL-based workflow orchestration
- Workflow Lifecycle Management - Complete control over running workflows:
cancel_workflow_run/3- Cancel running workflows with optional reasonlist_workflow_runs/2- Query workflows with filtering and paginationretry_failed_workflow/3- Retry failed workflows from point of failurepause_workflow_run/2- Pause workflow executionresume_workflow_run/2- Resume paused workflows
- HTDAG Orchestration - Goal-driven workflow decomposition
- Real-time Messaging - PostgreSQL NOTIFY for instant message delivery
- Security Hardening - Safe string-to-atom conversion with validation
- Code Quality - 0 Credo warnings, 100% formatted
- DAG Workflow Support with explicit dependencies
- Parallel Execution for independent steps
- Map Steps for bulk processing
- Database-First Coordination via PostgreSQL + pgmq
- Multi-Instance Scaling support
- Comprehensive test coverage (678 tests)
- Complete API reference
- HTDAG orchestration guide
- Getting started guide
- Architecture documentation
- Phoenix integration examples
- Initial release of Singularity.Workflow - Elixir implementation of database-driven DAG execution
- Complete feature parity including:
- DAG Workflow Support: Define workflows with explicit dependencies between steps
- Parallel Execution: Automatically execute independent steps in parallel
- Map Steps: Execute the same step across multiple items (map/reduce pattern)
- Dependency Merging: Steps can depend on multiple other steps
- Database-First Coordination: PostgreSQL + pgmq for reliable task coordination
- Multi-Instance Scaling: Multiple Singularity.Workflow instances can safely execute the same workflows
- Visibility Timeout Pattern: Automatic retry if task executor crashes
- Comprehensive Testing: 160+ tests covering all execution paths
Singularity.Workflow.Executor- Main entry point for workflow executionSingularity.Workflow.FlowBuilder- Dynamic workflow construction APISingularity.Workflow.DAG.WorkflowDefinition- DAG parsing and cycle detectionSingularity.Workflow.DAG.RunInitializer- Workflow initialization and state setupSingularity.Workflow.DAG.TaskExecutor- Task execution and polling loopSingularity.Workflow.StepState- Step state tracking (Ecto schema)Singularity.Workflow.StepTask- Individual task tracking for map steps (Ecto schema)Singularity.Workflow.WorkflowRun- Workflow execution tracking (Ecto schema)Singularity.Workflow.StepDependency- DAG edge tracking (Ecto schema)
- PostgreSQL schema with efficient indices for query performance
- pgmq extension integration for distributed task coordination
- SQL functions for atomic operations:
complete_task()- Task completion with cascading to dependentsstart_ready_steps()- Enqueue newly ready stepsstart_tasks()- Start tasks with visibility timeoutfail_task()- Fail a task and cascade failure
- Configurable via environment variables:
DATABASE_URL- PostgreSQL connectionSINGULARITY_WORKFLOW_QUEUE_NAME- pgmq queue name (default: "singularity_workflow_queue")SINGULARITY_WORKFLOW_VT- Visibility timeout in seconds (default: 300)SINGULARITY_WORKFLOW_MAX_WORKERS- Max concurrent task executions (default: 10)
GETTING_STARTED.md- Installation and first workflow tutorialdocs/ARCHITECTURE.md- Technical deep dive into internal designCONTRIBUTING.md- Development guidelines and workflowdocs/API_REFERENCE.md- Complete API referencedocs/DYNAMIC_WORKFLOWS_GUIDE.md- Advanced workflow patterns- Security best practices documented in SECURITY.md
- Code quality enforcement:
mix qualityruns all checksmix format- Auto-formattingmix credo --strict- Lintingmix dialyzer- Type checkingmix sobelow- Security analysismix test- Test suite with ExUnit
- ExDoc integration for generated documentation
- Step definitions use Elixir module functions
- Plan to support JSON workflow definitions in v0.2.0
- Conditional step execution not yet supported
- Plan for v0.2.0
- No built-in loop/repeat step support
- Use map steps as workaround
- Limited to single-node deployments in this version
- Multi-instance coordination planned for v0.2.0
- 160+ comprehensive tests
- Unit tests for individual components
- Integration tests for complete workflows
- Mock workflows for testing without side effects
- Database transaction isolation for test safety
- Task completion: O(1) via counter pattern (not row counting)
- DAG cycle detection: O(V + E) depth-first search
- Workflow startup latency: 50-500ms depending on database
- Task execution throughput: 100-1000 tasks/second depending on complexity
Development version prior to public release.