# `Monty.Frameworks.Models.MotorSystem.RuntimeMotorSystem`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/frameworks/models/motor_system/runtime_motor_system.ex#L1)

What the rest of the runtime asks a motor system: this step, what should move?

Mirrors `tbp/monty/frameworks/models/motor_system.py::RuntimeMotorSystem`, a
protocol with one method. The percept is the one from the first sensor module,
which is the only one a body has ever needed to be told about.

# `t`

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

# `call`

```elixir
@callback call(
  t(),
  ctx :: Monty.Context.t(),
  observations :: map() | nil,
  proprioceptive_state ::
    Monty.Frameworks.Models.MotorSystemState.ProprioceptiveState.t(),
  percept :: Monty.Cmp.Message.t() | nil,
  goals :: [Monty.Cmp.Goal.t()]
) :: {[term()], t()}
```

The actions to take next, and the motor system as it now stands.

Monty answers only the actions, because it can change itself; the step's
record of what was decided is the motor system's own state, so it comes back
with the answer, as everywhere else in this port.

---

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