# `Squidie.Runtime.Journal.ManualControl`
[🔗](https://github.com/dark-trench/squidie/blob/main/lib/squidie/runtime/journal/manual_control.ex#L2)

Journal-backed manual intervention controls.

This module resolves manual pause boundaries by appending run-thread facts.
The dispatch thread is updated only after the run thread contains the durable
resolution and any successor runnable intent.

# `control_error`

```elixir
@type control_error() ::
  :not_found
  | :invalid_run_id
  | {:invalid_option, term()}
  | {:invalid_resume, map()}
  | {:invalid_transition, atom(), atom()}
  | {:invalid_step, atom() | String.t()}
  | {:invalid_workflow, String.t()}
  | term()
```

# `approve`

```elixir
@spec approve(String.t(), map(), keyword()) ::
  {:ok, Squidie.ReadModel.Inspection.Snapshot.t()} | {:error, control_error()}
```

Approves a journal-paused `:approval` step and schedules its success path.

# `reject`

```elixir
@spec reject(String.t(), map(), keyword()) ::
  {:ok, Squidie.ReadModel.Inspection.Snapshot.t()} | {:error, control_error()}
```

Rejects a journal-paused `:approval` step and schedules its rejection path.

# `resume`

```elixir
@spec resume(String.t(), map(), keyword()) ::
  {:ok, Squidie.ReadModel.Inspection.Snapshot.t()} | {:error, control_error()}
```

Resumes a journal-paused `:pause` step and schedules its successor.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
