# Retry Handling Task Task kind: bug Goal (one primary outcome): Fix transient retry handling Current behavior and evidence: A focused transport test reproduces two retries after a successful response. Acceptance criteria: - The retry loop stops after the first successful response. - The existing output and exit behavior remain unchanged. In scope (packages/files/surfaces): internal/transport retry implementation and tests Out of scope: Authentication and endpoint discovery Compatibility constraints: Preserve existing flags, JSON output, and exit codes Interface impact (commands/flags/output/errors/exit codes/Schema): None Safety or data-mutation constraints: No live service calls or external writes Expected validation: Focused transport tests, race test, formatting, and full Go test suite Known environment limitations: Live DingTalk service is intentionally not used