Skip to content

fix(tools): repair Phase 2 transient retry and fix retryable feedback (#2223, #2222)#2245

Merged
bug-ops merged 2 commits intomainfrom
2223-phase2-retry-http503
Mar 27, 2026
Merged

fix(tools): repair Phase 2 transient retry and fix retryable feedback (#2223, #2222)#2245
bug-ops merged 2 commits intomainfrom
2223-phase2-retry-http503

Conversation

@bug-ops
Copy link
Copy Markdown
Owner

@bug-ops bug-ops commented Mar 27, 2026

Summary

Changes

  • crates/zeph-tools/src/trust_gate.rs — added is_tool_retryable delegation
  • crates/zeph-core/src/agent/tool_execution/native.rsretryable: falsecategory.is_retryable()
  • crates/zeph-tools/src/error_taxonomy.rs — neutral suggestion text for transient categories + new tests
  • crates/zeph-tools/src/executor.rs — new test tool_error_http_503_is_transient_triggers_phase2_retry

Test plan

  • is_tool_retryable_delegated_to_inner — verifies delegation through TrustGateExecutor for both true/false cases
  • feedback_retryable_matches_category_is_retryable — transient (ServerError/NetworkError/RateLimited/Timeout → true) and permanent (InvalidParameters/PolicyBlocked/PermanentFailure → false)
  • transient_suggestion_neutral_no_automatically — verifies no "automatically" in suggestion text
  • tool_error_http_503_is_transient_triggers_phase2_retry — end-to-end: Http{503} → ServerError → is_retryable()=true → Phase 2 fires
  • Full suite: 6700/6700 passed

Closes #2223
Closes #2222

@github-actions github-actions bot added documentation Improvements or additions to documentation rust Rust code changes core zeph-core crate bug Something isn't working size/M Medium PR (51-200 lines) labels Mar 27, 2026
…#2223, #2222)

- TrustGateExecutor was missing is_tool_retryable() delegation to its
  inner executor; the default false caused Phase 2 retry to never fire
  for fetch/HTTP tools returning 503 (#2223)
- ToolErrorFeedback.retryable was hardcoded false; now uses
  category.is_retryable() so transient errors (ServerError, NetworkError,
  RateLimited, Timeout) correctly report retryable: true (#2222)
- Suggestion text for transient categories changed from "The system will
  retry automatically." to "The system will retry if possible." to avoid
  contradicting the retryable field state at exhaustion (#2222)

Closes #2223, closes #2222
@bug-ops bug-ops force-pushed the 2223-phase2-retry-http503 branch from f074b94 to 05195cb Compare March 27, 2026 10:35
@bug-ops bug-ops enabled auto-merge (squash) March 27, 2026 10:36
@github-actions github-actions bot added the tests Test-related changes label Mar 27, 2026
@bug-ops bug-ops merged commit 208fd70 into main Mar 27, 2026
25 checks passed
@bug-ops bug-ops deleted the 2223-phase2-retry-http503 branch March 27, 2026 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working core zeph-core crate documentation Improvements or additions to documentation rust Rust code changes size/M Medium PR (51-200 lines) tests Test-related changes

Projects

None yet

1 participant