721123859022a33cf5ea590cd2e259290c3b38c9
Router.attempts (checked against RetryPolicy.MaxAttempts) advanced on every TaskReleased and again on every subsequent lease. Rotation is TaskReleased carrying a valid handoff_ref (spec §5.3: "rotation = intra-task lease transfer"), not a failure — so a task healthy enough to rotate twice hit the default MaxAttempts=3 and was killed by the retry limit meant for genuine failures (expiry, crash). HandleEvent now only advances attempts (and applies retry backoff) for a TaskReleased whose payload lacks a handoff_ref. AssignPending no longer increments attempts at lease time at all — that was double-counting against the same failure that a subsequent non-rotation release already counts. TestRotationDoesNotCountAgainstRetryLimit drives a task through 5 rotate-and-release cycles with MaxAttempts=3 and asserts it never reaches TaskFailed. AUDIT.md B4.
Description
No description provided