Skip to content

fix(designer): clarify retry policy HTTP status codes UX (#9538) - #9544

Open
Krrish Mittal (takyyon) wants to merge 1 commit into
mainfrom
fix/retry-http-status-codes-ux
Open

fix(designer): clarify retry policy HTTP status codes UX (#9538)#9544
Krrish Mittal (takyyon) wants to merge 1 commit into
mainfrom
fix/retry-http-status-codes-ux

Conversation

@takyyon

Copy link
Copy Markdown
Collaborator

Commit Type

  • fix - Bug fix

Risk Level

  • Low - Minor changes, limited scope

What & Why

Addresses the UX feedback in #9538 on the retry-policy HTTP status codes picker.

Two UX problems were reported:

  1. The picker never states how a custom status-code list interacts with the default retryable set (408, 429, 5xx), leaving users to guess whether custom codes are used instead of or in addition to the defaults.
  2. Codes the user commonly wants retried (e.g. 499 on stateless-workflow timeout) could not be selected — the control only accepts values from its predefined list.

This PR:

  • Rewords the tooltip to state that selecting codes replaces the default retryable set (only the selected codes are retried) and that leaving it empty keeps the defaults.
  • Adds 499 - Client Closed Request to the selectable options.
  • Removes the dead freeform prop from SettingTagPicker: the control never committed typed-but-unmatched values, so freeform was misleading. Selection is now explicitly from the curated list.
  • Keeps 408/429/5xx in the list on purpose — under replace semantics users must be able to re-add them alongside custom codes. (The issue suggested removing them; that would break the re-add use case.)

Note: the issue also reports that the runtime ignores httpStatusCodes (a 418 in the list retried the default 4x instead of the configured count). That behavior lives in the Logic Apps runtime engine, not this repo — the designer serializes the field correctly. It is tracked separately for the runtime/PM team; this PR only fixes the in-designer UX.

Impact of Change

  • Users: Clearer tooltip explaining custom-vs-default retry behavior; 499 is now selectable.
  • Developers: SettingTagPicker no longer advertises freeform entry it did not support.
  • System: No runtime/behavioral change to workflow serialization; text + option-list only.

Test Plan

  • Unit tests added/updated (settingtagpicker snapshot updated for removed freeform)
  • E2E tests added/updated
  • Manual testing completed
  • Tested in: Standalone designer (Standard), settings -> Networking -> Retry policy

Contributors

The retry-policy "HTTP status codes" picker did not explain how a custom
list interacts with the default retryable set (408, 429, 5xx), and could
not offer status codes outside its curated list.

- Reword the tooltip to state that selecting codes replaces the default
  retryable set (only the selected codes are retried) and that leaving it
  empty keeps the defaults. This resolves the "instead of vs in addition
  to" ambiguity reported in #9538.
- Add 499 (Client Closed Request) to the selectable options, a code users
  commonly want retried (e.g. stateless workflow timeout). The picker only
  accepts values from its predefined list, so this was previously
  unselectable.
- Remove the dead `freeform` prop from SettingTagPicker: the control never
  committed typed-but-unmatched values, so `freeform` was misleading.
- Keep 408/429/5xx in the list on purpose: under replace semantics users
  must be able to re-add them alongside custom codes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings August 17, 2026 15:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 AI PR Validation Report

PR Review Results

Thank you for your submission! Here's detailed feedback on your PR title and body compliance:

PR Title

  • Current: fix(designer): clarify retry policy HTTP status codes UX (#9538)
  • Issue: None — valid fix: prefix with scope, descriptive, and references the issue.
  • Recommendation: No change needed.

Commit Type

  • fix - Bug fix is selected (exactly one).
  • Matches the title prefix and the nature of the change (UX/tooltip fix).

Risk Level

  • The body correctly selects Low, and that matches my advised estimate (text/tooltip reword, adding one dropdown option, and removing an unused freeform prop — no shipped runtime/serialization behavior change). However, the PR has no risk:* label at all. Every PR must carry a risk label that matches the body. Add the risk:low label to resolve this.

What & Why

  • Current: Clear explanation of the two reported UX problems and the specific fixes (tooltip reword, add 499, remove misleading freeform, keep 408/429/5xx intentionally).
  • Issue: None.
  • Recommendation: No change needed.

Impact of Change

  • Users, Developers, and System are all addressed.
  • Recommendation:
    • Users: Clearer retry tooltip; 499 now selectable. (Good.)
    • Developers: SettingTagPicker no longer advertises unsupported freeform entry. (Good.)
    • System: No serialization/runtime change. (Good.)

Test Plan

  • Unit tests updated (settingtagpicker snapshot reflects removed freeform), plus manual testing in Standalone. Satisfies CHECK TESTS.

⚠️ Contributors


⚠️ Screenshots/Videos

  • Change is primarily text (tooltip) and dropdown option-list. A before/after screenshot of the reworded tooltip and the new 499 option would help reviewers, but this is a nudge, not a blocker.

Summary Table

Section Status Recommendation
Title No change needed
Commit Type No change needed
Risk Level Add the risk:low label (body already Low, and Low is correct)
What & Why No change needed
Impact of Change No change needed
Test Plan No change needed
Contributors ⚠️ Credit issue reporter/PM/designer
Screenshots/Videos ⚠️ Add before/after tooltip + option screenshot

Almost there — the content is solid and the declared Low risk is correct, but the PR is missing its risk:* label. Add the risk:low label to match the body, and this PR will pass.


Powered by: Copilot CLI (claude-opus-4.8) | Last updated: Mon, 17 Aug 2026 15:11:53 GMT

@asos-martinsmith

asos-martinsmith commented Aug 18, 2026

Copy link
Copy Markdown

Thanks for picking this up. However this implementation seems to assume that the httpStatusCodes do replace the standard set of status codes and therefore there is some value in including 408, 429 and all of the 5xx ones in the list?

The demo in the linked issue shows that they do not replace the standard set. They are in addition to it. Note that only 418 was specified in the array and 500 was retried as normal. It did not suppress the retry of 500 and there does not seem to be any need to explicitly include all the "normal" ones along with the additional ones.

This does prove my point that the documentation is lacking on the feature though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants