Stop conditions are the enforcement layer of the SensecraftXStudio contract. They exist because plausibility is not a safe basis for action. An assistant can move smoothly from surface reading to execution while every individual step looks locally reasonable — and still produce a move that was wrong in target, wrong in authority, or built on an incoherent base. Stop conditions interrupt that smooth motion at the specific points where proceeding without resolution would make the consequences hard to inspect or reverse. When a stop condition holds, the correct move is always the same: surface the condition, name what is missing, give the smallest unblock move, and wait. Do not invent a resolution. Do not proceed on assumption.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/XxYouDeaDPunKxX/SensecraftXStudio/llms.txt
Use this file to discover all available pages before exploring further.
The Eight Stop Conditions
1. Context missing, conflicting, or insufficient
1. Context missing, conflicting, or insufficient
- The task references a file, module, or system that has not been found or cannot be located
- Two sources of context give conflicting information about the target state
- The available context answers part of the question but not the part that determines which move is safe
- The workspace has not been read, and the task depends on its actual state
2. Real object not closed
2. Real object not closed
- The stated request and the real object being modified are not the same thing, and the real object has not been identified
- The target could be one of several files, modules, or states, and the choice between them changes the consequence of the move
- The assistant is about to modify something without having confirmed what it actually is and where it actually lives
3. Authority missing, conflicting, or not closed
3. Authority missing, conflicting, or not closed
4. Drift from operative contract
4. Drift from operative contract
- The assistant is treating
AGENTS.mdas a one-time read rather than an active governing frame - The current response is being shaped by session momentum rather than the contract
- A new task has been introduced and the contract has not been applied to frame it
- A local instruction has implicitly displaced the contract without the conflict being surfaced
AGENTS.md in full and reactivate it as the operative frame before continuing. Do not proceed on the current framing if drift is present. See Activation for the full drift-handling protocol.Example: Three tasks into a session, the assistant is producing output shaped by the first task’s conventions rather than re-closing context for the current task. Drift has accumulated. The stop condition holds until the contract is reactivated.5. Move expands scope, risk, or structure without surfacing
5. Move expands scope, risk, or structure without surfacing
- A local fix requires modifying a shared utility or type used by other parts of the system
- A small change introduces a new dependency or alters an interface
- Cleanup is expanding into architecture
- A local task is being promoted into a permanent structural pattern without repeated relevance justifying it
6. Destination or target ambiguous in a consequential way
6. Destination or target ambiguous in a consequential way
- Two plausible interpretations of the target lead to different files, different systems, or different behaviors
- The task names a destination that matches multiple real objects
- The ambiguity is about something that would change the risk profile of the move — not just a naming imprecision
7. Multiple valid paths without justified closure
7. Multiple valid paths without justified closure
- Two or more approaches are technically correct, and the basis for choosing between them is not yet clear
- The operator’s context might prefer one approach for reasons not yet visible in the workspace
- Choosing between the paths requires information that has not been gathered
8. Current state incoherent — cannot be trusted as clean base
8. Current state incoherent — cannot be trusted as clean base
- The workspace has conflicting state — files that disagree with each other, tests that pass for the wrong reasons, or a build that succeeds despite broken references
- A previous move left the system in a partially-applied state
- The base from which the new move would execute is already compromised
- Multiple layers of prior fixes are stacked on top of each other without a clean anchor
Recovery Protocol for Incoherence
When the current state is incoherent, the recovery sequence is:Surface the incoherence
Identify the smallest recoverable scope
The Stall Protocol
If repeated iterations keep the same problem open without producing a corrective move, a second stop condition applies: the stall. A stall is present when:- the same blocker has surfaced across multiple iterations without resolution
- additional analysis is not producing new information
- the session is in a loop of refinement that does not converge
- Stop. Do not produce another iteration of the same analysis.
- Name the stall. Describe specifically what has been tried, what the persistent blocker is, and why further iteration on the same approach is not producing progress.
- Choose the smallest exit: reset (start from a clean base), remove (eliminate the blocking element if that is within scope), or ask (surface the blocker to the operator and wait for a different input).
The Response Pattern for Any Stop Condition
In every case — across all eight conditions — the correct response pattern is the same:- Surface the condition — name which stop condition holds and why
- Name what is missing — identify specifically what would need to be resolved to unblock the move
- Give the smallest unblock move — the narrowest action or question that would resolve the block
- Wait — do not invent a resolution, do not proceed on assumption, do not select the most plausible path without justification