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

Journal-backed workflow start boundary for the Jido-native runtime.

This module resolves the public Squidie workflow contract, plans initial
runnables through Runic, appends durable run and run-index facts to
`Jido.Storage`, then uses `WorkflowAgent` and `DispatchAgent` as rebuildable
coordinators to schedule dispatch attempts from the journal.

The journal runtime can execute normal action steps, immediate built-in `:log`
steps, built-in `:wait` steps in transition and dependency workflows, and
manual `:pause` or `:approval` boundaries. Manual boundaries persist
inspectable intervention state and can be resumed or reviewed through journal
manual controls. Callers enter this path explicitly with `runtime: :journal`,
`journal_storage:`, and optional queue or clock overrides. No Jido primitive
is required in workflow authoring.

# `start_error`

```elixir
@type start_error() ::
  {:invalid_payload, Squidie.Workflow.Definition.payload_error_details()}
  | Squidie.Workflow.Definition.load_error()
  | Squidie.Workflow.Definition.trigger_error()
  | {:invalid_option,
     {:journal_storage, nil}
     | {:now, term()}
     | {:queue, term()}
     | {:run_id, term()}}
  | term()
```

# `start_run`

```elixir
@spec start_run(module(), atom() | nil, map(), keyword()) ::
  {:ok, Squidie.ReadModel.Inspection.Snapshot.t()}
  | {:ok,
     {:duplicate_schedule_start, Squidie.ReadModel.Inspection.Snapshot.t()}}
  | {:error, start_error()}
```

Starts a workflow run by appending Jido journal facts and scheduling dispatch.

The returned snapshot is rebuilt from the same journal-backed read model used
by `Squidie.inspect_run/2` with `read_model: :read_model`.

# `start_spec_run`

```elixir
@spec start_spec_run(
  Squidie.Workflow.Spec.t() | map(),
  atom() | nil,
  map(),
  keyword()
) ::
  {:ok, Squidie.ReadModel.Inspection.Snapshot.t()}
  | {:ok,
     {:duplicate_schedule_start, Squidie.ReadModel.Inspection.Snapshot.t()}}
  | {:error, start_error()}
```

Starts a runtime-authored workflow spec by appending journal facts and
scheduling dispatch.

---

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