ReasonBlocks tracks how hard your agent is working on each step using a finite state machine (FSM). After scoring a step, the FSM looks at the recent difficulty history and transitions between states that describe the agent’s current trajectory — coasting through easy steps, working normally, struggling with a hard problem, or appearing completely stuck. The current state gates model routing and controls whether E-trace injections are retrieved at all.Documentation Index
Fetch the complete documentation index at: https://reasonblocks.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
States
| State | Meaning |
|---|---|
INIT | Starting state before any step has been scored. Transitions to NORMAL on the first scored step. |
FAST | The agent has produced consistently low-difficulty steps recently. E-traces are skipped entirely. |
NORMAL | Default operating state. Scoring, monitors, and E1/E2/E3 injections all run as normal. |
SLOW | The agent has produced consistently high-difficulty steps recently. A stronger model may be routed. |
SKIP | The agent has been in high-difficulty territory for an extended window. Indicates a deeply stalled run. |
END | Terminal state. Once reached, the FSM no longer transitions. |
Transition rules
The FSM uses three thresholds and a hysteresis margin to decide when to transition. All values are configurable.| Parameter | Default | Purpose |
|---|---|---|
fast_threshold | 0.2 | A step below this score is considered “easy”. |
slow_threshold | 0.6 | A step above this score is considered “hard”. |
skip_threshold | 0.85 | A step above this score is considered “very hard” for the SKIP gate. |
hysteresis_margin | 0.1 | Buffer applied when leaving FAST or SLOW to prevent rapid oscillation. |
NORMAL:
- Transitions to
FASTif the last 6 steps all scored belowfast_threshold(0.2). - Transitions to
SLOWif the last 5 steps all scored aboveslow_threshold(0.6). - Otherwise stays
NORMAL.
FAST:
- Transitions back to
NORMALif the current score exceedsfast_threshold + hysteresis_margin(0.3). - Otherwise stays
FAST.
SLOW or SKIP:
- Transitions back to
NORMALif the current score drops belowslow_threshold - hysteresis_margin(0.5). - Transitions to
SKIPif the last 35 steps all scored aboveskip_threshold(0.85). - Otherwise stays
SLOW.
The hysteresis margin prevents the FSM from rapidly flipping between states when scores hover near a threshold. A single easy step does not exit SLOW — the score must drop meaningfully below the boundary.
What each state does
FAST skips the entire E-trace pipeline. No pattern-store lookups, no embeddings, no injections beyond what is already cached. This keeps overhead minimal when the agent is making consistent progress. Monitors still run in FAST state because loop detection is most useful precisely when the agent is moving quickly.
NORMAL runs the full pipeline: monitors evaluate, E1 is queried if the monitor gate allows it, E2 retrieves pattern-level guidance, and E3 provides universal rules (on the first call).
SLOW runs the full pipeline and, if you have configured model_routing, routes the request to a stronger model. Monitor injection cooldowns are shorter in SLOW state (every 2 steps instead of 3) so guidance arrives more frequently.
SKIP behaves like SLOW but signals a deeply stalled run. It applies the same 2-step cooldown for monitor injections.
Configuring thresholds
Pass custom thresholds when constructingReasonBlocks. Only the values you specify are overridden; the rest use their defaults.