# `Monty.Frameworks.Models.MotorPolicies.RuntimeMotorPolicy`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/frameworks/models/motor_policies/runtime_motor_policy.ex#L1)

What the runtime asks a policy: given this step, what should move?

Mirrors `tbp/monty/frameworks/models/motor_policies.py::RuntimeMotorPolicy`, a
protocol with one method. The goal is the one the selector chose, or `nil` on
a step where nothing was proposed.

# `t`

```elixir
@type t() :: struct()
```

# `call`

```elixir
@callback call(
  t(),
  ctx :: Monty.Context.t(),
  observations :: map() | nil,
  state :: Monty.Frameworks.Models.MotorSystemState.t(),
  percept :: Monty.Cmp.Message.t() | nil,
  goal :: Monty.Cmp.Goal.t() | nil
) :: {Monty.Frameworks.Models.MotorPolicies.MotorPolicyResult.t(), t()}
```

The actions to take, whether learning modules should sit this step out, and
the policy as it now stands.

---

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