03663f413b
The late-handoff path fences on the epoch that expired. Once the task is leased again under a different transaction, that epoch is two owners old and the commit can never be accepted. The worker kept asking anyway, every five seconds, holding the pane and pinning both ActiveTask and the single last_error slot. Run 10's task did that for seven hours. Proven live at 19:01:30Z: the lease expired while the anchor was pushing, a successor took the task 13ms later, and the coordinator refused the late commit with 409 lease not owned. The refusal is right. The retry loop behind it was not. TaskLeased now abandons a release transaction whose id the lease does not carry, and quarantines its session. A successor pickup carries the predecessor's own transaction id, so the recoverable predecessor F30 protects is left alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVbaKucEYBjMqVeUgJUsc1