Skip to content

No implicit step limit + cheap background waits - #129

Merged
davidrhodus merged 2 commits into
mainfrom
feat/no-step-limit-and-cheap-background-waits
Jul 25, 2026
Merged

No implicit step limit + cheap background waits#129
davidrhodus merged 2 commits into
mainfrom
feat/no-step-limit-and-cheap-background-waits

Conversation

@davidrhodus

Copy link
Copy Markdown
Contributor

Summary

  • Removes the implicit intent-based per-turn step caps (80/120/200); turns are uncapped unless --max-steps / /config steps sets one, and a capped turn now gets one tool-free wrap-up round to report where the work stands.
  • Makes waiting on background processes cheap: bash_output gains wait_secs (blocks server-side until new output/exit, max 600s), waiting detection keys on process lifecycle instead of output novelty, a status answer ends a waiting turn even with an incomplete plan, and superseded poll results fold to one-line digests.
  • CLI no longer blocks startup on the optional live model-metadata probe.

Driven by real sol-view transcripts: one turn burned 200 model rounds / 14M input tokens babysitting two downloads (85 plan-continue nudges vs. 12 attempted status answers); an earlier session hit 2,250 rounds / 383M input tokens.

Testing

  • 1,581 tests pass across hi-agent, hi-tools, hi, hi-tui, hi-eval, including new coverage: registry-level poll_wait (wake on output / timeout / kill), end-to-end wait_secs dispatch, lifecycle-based waiting classifier, plan-nudge suppression during waits (regression shaped on the sol-view transcript), transcript poll folding, step-cap wrap-up rounds.
  • Clippy warning count is one below current main.

🤖 Generated with Claude Code

David and others added 2 commits July 25, 2026 16:34
Startup awaited a provider model-listing probe that can hang
indefinitely. The agent now always starts immediately with conservative
limits; the optional live metadata refresh is skipped entirely, since
applying it later would require safely reconfiguring the already-built
agent.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…p background waits

Driven by real transcripts (sol-view sessions): one turn babysitting two
large downloads burned 200 model rounds / 14M input tokens (383M in an
earlier session) — nearly all of it instant polls of still-running
processes, plus 85 plan-continue nudges overriding the model's honest
"work remains in progress" status answers.

Step limit:
- Remove the implicit intent-based per-turn caps (80/120/200). Turns are
  uncapped unless --max-steps / `/config steps` sets one; runaway loops
  are ended by the repeat/no-progress/stall budgets instead. A
  misclassified intent can no longer kill a productive turn early.
- Remove the dead max_steps_explicit flag; internal subagent budgets
  (explore 10, background tasks 10/20) become real caps as written.
  `/config steps auto` is now an alias for `off`.
- A capped turn gets ONE tool-free wrap-up round to report where the
  work stands before stopping (still Incomplete · StepLimit).

Background waiting:
- bash_output gains wait_secs (max 600): blocks server-side until new
  output or process exit — one waiting call replaces a poll loop, and a
  kill wakes it immediately.
- Waiting detection keys on the process lifecycle, not output novelty:
  a download progress bar no longer reads as progress. After three
  consecutive waiting rounds the model is steered to wait once with
  wait_secs or wrap up; continued polling forces a tool-free status
  answer. Subsumes the byte-identical idle-poll special case.
- A status answer ends a waiting turn even with an incomplete plan —
  the plan-continue nudge no longer ping-pongs against polls.
- Superseded bash_output results fold to a one-line digest, so a long
  watch stops re-sending stale progress dumps with every request.
- Tool descriptions and nudges steer toward wait_secs and chaining
  follow-ups in-shell (fetch && convert) instead of babysitting.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@davidrhodus
davidrhodus merged commit 043c360 into main Jul 25, 2026
1 check failed
@davidrhodus
davidrhodus deleted the feat/no-step-limit-and-cheap-background-waits branch July 25, 2026 23:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant