# `Squidie.Workflow.GuardrailRegistry`
[🔗](https://github.com/dark-trench/squidie/blob/main/lib/squidie/workflow/guardrail_registry.ex#L2)

Host-owned trust boundary for runtime-authored workflow guardrails.

Runtime-authored specs reference stable guardrail keys under step
`opts[:guardrails]`. Host applications own the registry that maps those keys
to validator modules before drafts are published, previewed, or executed.

# `catalog_entry`

```elixir
@type catalog_entry() :: %{
  key: guardrail_key(),
  display_name: String.t(),
  category: String.t() | nil,
  description: String.t(),
  enabled?: boolean(),
  input_contract: term(),
  config_schema: term()
}
```

# `catalog_error`

```elixir
@type catalog_error() :: Squidie.Workflow.Spec.validation_error()
```

# `decision`

```elixir
@type decision() :: Squidie.Workflow.GuardrailRegistry.Decision.t()
```

# `guardrail_key`

```elixir
@type guardrail_key() :: atom() | String.t()
```

# `guardrail_ref`

```elixir
@type guardrail_ref() :: %{
  key: guardrail_key(),
  placement: placement(),
  policy: policy(),
  config: map()
}
```

# `guardrail_validation_error`

```elixir
@type guardrail_validation_error() ::
  :missing_guardrail_key
  | :invalid_guardrail_key
  | :unknown_guardrail_key
  | :disabled_guardrail_key
  | :incompatible_guardrail_module
```

# `placement`

```elixir
@type placement() :: :input | :action | :output
```

# `policy`

```elixir
@type policy() :: :block_publish | :block_run_start | :route_error | :audit
```

# `registry`

```elixir
@type registry() ::
  %{optional(guardrail_key()) =&gt; registry_entry()} | keyword(registry_entry())
```

# `registry_entry`

```elixir
@type registry_entry() ::
  module()
  | keyword()
  | %{optional(:module) =&gt; module(), optional(:enabled?) =&gt; boolean()}
  | %{optional(String.t()) =&gt; term()}
```

# `validation_error`

```elixir
@type validation_error() :: Squidie.Workflow.Spec.validation_error()
```

# `catalog`

```elixir
@spec catalog(term()) ::
  {:ok, [catalog_entry()]}
  | {:error, {:invalid_guardrail_catalog, [catalog_error()]}}
```

Projects host-owned guardrails into editor-safe catalog metadata.

---

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