Skip to content

v0.2.5 Stall Guard

Choose a tag to compare

@igormcsouza igormcsouza released this 23 Oct 13:38
· 78 commits to main since this release
5ac11da

Found by benchmarking the same models inside Tether and inside a plain tool loop (7 tasks, 10+ models): model idioms made the single-act grammar fail invisibly, and loops or oversized prompts burned steps and tokens.

Features

  • Stall guard (#92): 7 reads of one file over shifting ranges with no change is a cycle_stall; 4 stall warnings end the session early as Stalled (exit 4) instead of using every step.
  • tether stop <id> (#89): terminate a running detached session.
  • Hard --context-tokens (#81): fold live observations, then drop old history, then shrink the newest; the budget adapts to the model's real token counts and warns on stderr when nothing fits.
  • Per-call model params (#112): params in providers.yaml, --param k=v, Harness(params=), MCP params; register_normalizer for model quirks; rpm cross-process rate limit for capped keys (#110); bench/ conformance tooling for developers.

Fixes

  • Shell and tool idioms (#109): bash -c/-lc wrappers, bare shell commands, wrongly named native tool calls, apply_patch and unified diffs, and verbless edit <path> are all handled.
  • Sandbox PATH (#76): tools under $HOME (uv, node) work in bash and --verify gates again, read-only.
  • Goal wandering (#86): mem recall results are no longer re-folded (a 10-step recall chain), and a diff sent as edit stdin patches instead of overwriting the file.
  • Done nudge now counts python -m unittest|pytest and read-only python -c as verification.

Docs: https://igormcsouza.github.io/tether/release-notes/