Skip to content

v0.9.3

Choose a tag to compare

@stawils stawils released this 05 Jun 09:57

What's New

πŸ› Stagnation rule now tracks unique paths, not just tools (F6)

The loop detection rule's stagnation check used to count unique TOOL
names only. This blocked legitimate batch work β€” e.g. scaffolding 10
files where the agent only uses write+bash would trip the
stagnation block after 14 calls.

The check now tracks the distinct-paths ratio of recent calls. If
β‰₯70% of calls touch distinct paths, the call is allowed (it's batch
progress, not a loop).

Behavior matrix

Pattern Action
14 write() calls, 14 distinct files βœ… ALLOW (scaffolding)
14 write() calls, all to same file ❌ BLOCK (real stagnation)
10 calls, 8 unique paths + 2 repeats βœ… ALLOW (borderline batch)
10 calls, 3 unique paths ❌ BLOCK (genuine loop)

Path identity is extracted from path / file_path / cwd /
first arg β€” handles all common tool dialects.

πŸ§ͺ 5 new regression tests

  • TestStagnationBatchWorkRefinement β€” covers the new distinct-paths logic
  • test_scaffolding_many_distinct_files_allowed β€” F6 baseline regression
  • test_repeated_path_stagnation_blocked β€” ensures real loops still fire
  • test_mixed_some_repeats_allowed_at_threshold β€” borderline case
  • test_path_extraction_supports_file_path_arg β€” alternate arg name
  • test_call_history_does_not_leak_between_rules β€” isolation

πŸ› οΈ Integration test script

Added tests/integration-subagent-smoke.sh for end-to-end verification
spawning a real subagent through the proxy.

Full Changelog

v0.9.2...v0.9.3