Current section
Files
Jump to
Current section
Files
lib/executor/CLAUDE.md
# lib/scout/executor/ - Execution Strategies
## Overview
Different strategies for executing trials - local or distributed.
## Executors
- `local.ex` - Synchronous local execution, good for development
- `oban.ex` - Distributed execution via Oban job queue, production-ready
## Oban Executor Features
- One job per trial for fault isolation
- Worker processes handle callbacks safely
- Automatic retry on failure
- Survives node restarts
- Configurable parallelism
## Usage
```elixir
# Local execution
{:ok, result} = Scout.StudyRunner.run(study, executor: Scout.Executor.Local)
# Distributed execution
{:ok, result} = Scout.StudyRunner.run(study, executor: Scout.Executor.Oban)
```
## Implementation Notes
- Executors implement a common behavior/protocol
- Oban executor requires module-based callbacks for durability
- Each trial runs in isolation with its own seed