Repository navigation
v0.2.5 Stall Guard
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 asStalled(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):
paramsinproviders.yaml,--param k=v,Harness(params=), MCPparams;register_normalizerfor model quirks;rpmcross-process rate limit for capped keys (#110);bench/conformance tooling for developers.
Fixes
- Shell and tool idioms (#109):
bash -c/-lcwrappers, bare shell commands, wrongly named native tool calls,apply_patchand unified diffs, and verblessedit <path>are all handled. - Sandbox
PATH(#76): tools under$HOME(uv,node) work inbashand--verifygates again, read-only. - Goal wandering (#86):
mem recallresults are no longer re-folded (a 10-step recall chain), and a diff sent aseditstdin patches instead of overwriting the file. - Done nudge now counts
python -m unittest|pytestand read-onlypython -cas verification.