# Trajectory Stalls

Read this when two or more recent environment interactions have not materially changed the current question, advanced the covered effect, or supported a new branch.

A stall is evidence that the current interaction policy is no longer producing useful progress. It does not prove that the task is difficult, the design is wrong, or another model is required.

## Recognize A Stall

Common stall patterns include:

- repeating searches with synonymous terms;
- rereading unchanged sources without a new question;
- rerunning the same check against unchanged state;
- widening search breadth without narrowing the hypothesis;
- collecting new output that does not change any belief or decision;
- revisiting a path already eliminated by supported evidence;
- changing hypotheses without a new observation;
- alternating edits, failures, and reversions without a supported cause;
- following each newly mentioned symbol or file away from the accepted outcome;
- continuing because interaction began rather than because evidence supports another step.

The following are not automatically stalls:

- several distinct mechanical interactions required by one exact covered effect;
- rerunning evidence after relevant state changed;
- a long-running operation that is still producing the selected result;
- checking a broader boundary after a focused result when that boundary was already required;
- returning through several files along one supported call or dependency path.

Judge progress by changed understanding, produced effects, or a newly supported branch—not raw action count.

## Stop Before Another Similar Interaction

Before another environment action:

1. restate the unresolved question or exact covered effect;
2. identify what the recent interactions established;
3. identify which paths or hypotheses they eliminated;
4. state why the interactions failed to change the decision;
5. determine whether another observer class could discriminate where the previous one could not.

Different observer classes may include:

- structural navigation instead of text search;
- caller or dependency tracing instead of concept search;
- runtime behavior instead of source inspection;
- source inspection instead of another runtime rerun;
- exact artifact comparison instead of summary output;
- a minimized reproduction instead of another speculative edit.

Changing syntax, keywords, directories, or tools without changing the evidence relationship is not a different observer class.

## Recover With One Discriminating Action

When a different covered observer can answer the unresolved question:

1. name what result would support or contradict the leading path;
2. bound one interaction;
3. execute it once;
4. return its observation to the current owner.

Do not compensate for a stall by generating a long plan, exploring every remaining path, or broadening the task.

When no covered interaction can discriminate:

- return the smallest missing evidence to the current owner;
- return a changed authority, scope, ownership, direction, or required observing boundary to [Workflow](../../workflow/SKILL.md);
- use [Diagnose Failure](../../diagnose-failure/SKILL.md) when repeated failure lacks a supported cause;
- stop when the active execution contract requires return.

A stall recovery succeeds when the decision surface changes or the absence of a safe useful interaction becomes explicit. It does not require another tool call.
