ADR-002: Temporal Workflows
Status
Accepted
Context
We need a reliable workflow orchestration system for managing complex, long-running processes like GitHub runner lifecycle management, billing operations, and asynchronous tasks.
Decision
We will use Temporal for workflow orchestration because it provides:
- Durable execution with automatic retries
- Built-in error handling and compensation
- Strong consistency guarantees
- Visibility into workflow state and history
- Language-specific SDKs with good Go support
Consequences
Positive
- Reliable execution of critical business processes
- Built-in observability and debugging capabilities
- Simplified error handling for distributed operations
- Ability to handle long-running workflows (hours/days)
Negative
- Additional infrastructure to maintain
- Learning curve for developers new to Temporal
- Potential vendor lock-in for workflow logic
Implementation
Temporal workflows will be used for:
- GitHub runner provisioning and lifecycle management
- Billing and subscription management
- Asynchronous job processing
- Scheduled maintenance tasks