# `ASM.Extensions.Policy.Violation`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/extensions/policy/violation.ex#L1)

Normalized policy-violation descriptor with explicit action semantics.

# `action`

```elixir
@type action() :: :warn | :request_approval | :cancel
```

Violation action.

# `direction`

```elixir
@type direction() :: :input | :output
```

Policy direction where the rule was evaluated.

# `t`

```elixir
@type t() :: %ASM.Extensions.Policy.Violation{
  action: action(),
  direction: direction(),
  message: String.t(),
  metadata: map(),
  rule: atom() | String.t()
}
```

# `new`

```elixir
@spec new(atom() | String.t(), action(), String.t(), keyword()) :: t()
```

# `to_error`

```elixir
@spec to_error(t(), ASM.Event.t()) :: ASM.Error.t()
```

# `to_guardrail_trigger`

```elixir
@spec to_guardrail_trigger(t()) :: ASM.Control.GuardrailTrigger.t()
```

---

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