Loop Engineering · Lesson 4 · Lever 05 — Stop & budget
🌐 English version →

Stop Conditions & Budgets

Lever 05: loop ko pata hona chahiye ki khatam kaise hona hai. Agent engineering ka sabse sasta reliability win yahi hai — usse forever chalne se mana karna.

Har turn ka chhatha move tha “check the stop condition.” Yahi wo move hai jise log under-engineer karte hain — aur yahi wo jagah hai jahan toy loops incidents ban jaate hain. Bina firm stop condition waala loop sirf hang nahi karta; wo real paisa kharch karta hai, real APIs hit karta hai, aur kisi ko pata chalne se pehle ek mistake ko pachaas mein compound kar deta hai.

The runaway Aisa agent jo progress nahi kar pata par jise kabhi rukne ko bola hi nahi gaya, wo model ko call karta hi rahega — wahi failing tool baar-baar re-try karega, apne hi confusion par loop karega, budget khaali karega aur (TradingAgents-style system ke liye) real side effects fire karega. Weak ya missing stop condition runaway agents ka ek top cause hai.3

Do layers: goal-stop aur guard-stop

Robust loops do tarah ke termination rakhte hain, aur aapko dono chahiye:

Har loop ko dono chahiye
LayerKab fire hota haiOwned by
Goal-stopTask sach mein ho gaya — success criteria poore, ya model ek terminal “finish” signal emit karta hai.The happy path
Guard-stopMax turns hit · token/cost budget exhausted · wahi error repeat · time elapsed.Aapka code, unconditionally

Goal-stop wo hai jo aap chahte ho; guard-stop wo hai jo aapko bachata hai jab goal-stop kabhi aata hi nahi. Crucially, guard-stop aapke own kiye gaye code mein hona chahiye — model par kabhi trust mat karo ki wo decide kare ki wo bahut zyada chal gaya. Yeh phir se Lever 01 hai: own your control flow, exit समेत.1

Ek hi loop mein dono stops — aur wahi error par spin karne ke khilaaf ek guard
turns, spent, last_err, repeats = 0, 0, None, 0
while True:
    if turns >= MAX_TURNS or spent >= TOKEN_BUDGET:    # guard-stop: budget
        return handoff(state, reason="budget")
    reply = model(build_context(state))
    spent += reply.tokens; turns += 1
    if reply.is_final:                                 # goal-stop: task done
        return reply.answer
    result = run(reply.tool_call)
    if result.error:
        repeats   = repeats + 1 if result.error == last_err else 0
        last_err  = result.error
        if repeats >= 2:                               # same error 3x → ruk jao, spin mat karo
            return handoff(state, reason="stuck")
    state = append(state, result)

Budget: 3–20 steps, phir hand off

Guard-stop kitna bada hona chahiye? 12-Factor Agents ek concrete heuristic deta hai jo design philosophy ka bhi kaam karta hai:

Small, focused agents… handle 3–20 discrete steps, maintaining focus rather than attempting comprehensive problem-solving. — HumanLayer, 12-Factor Agents, Factor 10

Point exact number nahi hai — point posture hai. Low tens mein ek step budget har agent ko itna chhota rakhta hai ki wo reliable rahe. Jab aap cap hit karo, toh aap silently fail nahi hote — aap teen deliberate cheezon mein se ek karte ho:1

ON BUDGET HIT

Human ko hand off karo

Partial state ko judgement ya approval ke liye surface karo — ideally usi tool-call channel se jise agent already use karta hai (HITL).1

ON BUDGET HIT

Ek fresh agent chain karo

Jo ho gaya usse ek clean brief mein compact karo aur bache hue kaam par ek naya chhota agent start karo — bajaaye ek hi agent ko phailne dene ke.

ON BUDGET HIT

Loudly & safely fail karo

Ek saaf “could not complete within budget” return karo, jahan ho sake side effects roll back karo, aur ek eval case ke liye usse log karo.

“Long-running agent” aksar galat goal hota hai. Reliable pattern ek short agent hai jo jaanta hai ki kab rukna hai aur baton kab pass karna hai — kisi human ko, kisi doosre agent ko, ya ek clean failure ko.

Small = reliable kyun Har extra turn drift karne ka ek aur mauka hai, rot hone ke liye ek aur window-full context (Lesson 3), ek compounding error ka ek aur shot. Turns ko cap karna sirf ek safety valve nahi hai — yeh baaki saare levers ka blast radius bound karta hai.
Aaj ki aapki win

Ab aap ek loop ka termination do layers ke roop mein specify kar sakte ho — happy path par ek goal-stop aur aapke code mein ek unconditional guard-stop — low tens mein ek step/token budget set kar sakte ho, aur naam le sakte ho un teen cheezon ka jo wo trip hone par karni hain. Yahi ek demo aur kisi aisi cheez ke beech ka fark hai jise aap chalta chhod sako.

Recall check

Memory se retrieve karo. (Ek question Lesson 2 ko interleave karta hai.)

Primary source — yeh aage padho

HumanLayer — 12-Factor Agents. Factor 10 (small, focused agents) aur Factor 8 (own your control flow) ko saath padho — yeh is lever ki backbone hain. Conference talk (≈30 min) ek hi baithak mein best version hai.

Main aapka teacher hoon — use karo. Mujhe batao ki aapka TradingAgents loop jab stall ho jaata hai toh kya karta hai — uske paas guard-stop hai, ya sirf goal-stop? Main aapko ek step budget chunne mein aur real trades fire karne waale system ke liye sahi handoff chunne mein help karunga. Chat mein poochho.
Lesson 3: The Context lever 📖 Glossary (English) Aage → Lesson 5: Error recovery

Sources

  1. HumanLayer — 12-Factor Agents. Factor 10: small, focused agents (3–20 steps); Factor 8: own your control flow; Factor 7: contact humans with tool calls.
  2. Anthropic — Building Effective Agents. Stopping conditions and human checkpoints for autonomous agents.
  3. Course glossary — Stop condition. A missing or weak stop condition is a top cause of runaway agents.