Single-shot attempt API shared by the server and Lite backends.
Attempts are serialized through cleanup; callers do not manage per-attempt resets.
Results resolve only after cleanup succeeds. Infrastructure or cleanup failure
gates reuse until recovery; cancellation may replace the runtime without
completing old cleanup.
Obsolete continuations must not clean or publish output into a replacement.
Single-shot attempt API shared by the server and Lite backends. Attempts are serialized through cleanup; callers do not manage per-attempt resets. Results resolve only after cleanup succeeds. Infrastructure or cleanup failure gates reuse until recovery; cancellation may replace the runtime without completing old cleanup. Obsolete continuations must not clean or publish output into a replacement.