Bound Gemini no-progress tool loops - #183
Open
Anteriousis wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stop Gemini after three repeated identical tool observations with unchanged CAD state, including alternating stalled calls and repeated errors. Productive revisions reset the guard; explicit pending-job polls remain allowed within a new 64-request default turn ceiling. Both stops return actionable completion text and preserve completed work.
The issue's requested bounded behavior is enabled by default. Existing callers can explicitly set max_turns=None (or 0) for unlimited turns and no_progress_limit=0 to disable the new guard. The observation table is bounded to 128 entries.
Verification
With the local pytest dependencies on PYTHONPATH, using the bundled Python executable:
Focused mocked-provider tests cover repeated successes/errors, unknown tools, alternating calls, changing revisions, pending polls, and explicit opt-out. No paid API calls or full FreeCAD GUI/C++ build were run. A long legitimate workflow can hit the ceiling; callers can raise or disable it.
Compatibility
Issues
Closes #176.
Before and After Images
Not applicable; no GUI layout changes.