fn resume_state(
has_submitted_attainment_id: bool,
has_payload_snapshot: bool,
frozen_identity_stale: bool,
) -> CreditRegistrationStateExpand description
Where a failed_retryable row goes when its backoff elapses, derived from how far it had got.
Never submitting: only the import phase writes that, in the transaction before it sends.
frozen_identity_stale demotes a frozen payload to no payload at all. Nothing ever clears
selected_enrolment_id/grade_id, so a row sent back to re-resolve after a relink still looks
frozen; without this it would resume at checking_enrolment and import the previous number.