# Adapter Contract

Runtime adapters translate task commands into concrete worker invocations.

## Minimal Contract

Each task should define either:

1. `command` directly in `tasks.json`, or
2. controller-level `worker.command_template` in `.mosaic/orchestrator/config.json`

`command_template` may use:

- `{task_id}`
- `{task_title}`
- `{task_file}`

## Examples

Codex:

```json
{
  "worker": {
    "command_template": "codex \"run task {task_id}: {task_title}\""
  }
}
```

Claude:

```json
{
  "worker": {
    "command_template": "mosaic claude -p \"Execute task {task_id}: {task_title}\""
  }
}
```

OpenCode:

```json
{
  "worker": {
    "command_template": "opencode \"execute task {task_id}: {task_title}\""
  }
}
```

## Recommendation

Prefer explicit per-task `command` for deterministic execution and auditability.
