# `Monty.Experiment.RecognitionStrategy.MaxTotalSteps`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/experiment/recognition_strategy/max_total_steps.ex#L1)

Done at a hard step ceiling, and every lagging module timed out with it.

Mirrors `tbp/monty/experiment/recognition_strategy.py::MaxTotalSteps`. The
ceiling counts *every* step, not matching ones, so it is what stops an episode
that is spinning without ever perceiving anything.

# `call`

```elixir
@spec call(map(), Monty.Experiment.RecognitionStrategy.RecognitionCounter.t(), map()) ::
  Monty.Experiment.RecognitionStrategy.RecognitionResult.t()
```

Done at the ceiling; a ceiling reached is also a timeout for the modules.

# `new`

```elixir
@spec new(keyword()) :: {:ok, {module(), map()}} | {:error, String.t()}
```

A policy that ends the episode at `:max_total_steps` steps.

Monty raises `ValueError` for a ceiling that is not positive; here that is
`{:error, message}` with Monty's own words.

---

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