A suspended loan can be resumed, and is no longer offered to itself

Fixkamo-shared-library
Ya
22 Julai 2026, 18:18 UTC
Mwandishi
Kamo
Ahadi ya
7f80b96

SUSPENDED is deliberately not terminal — LoanFileStatus.isTerminal excludes it, because a loan is suspended for a fixable reason. But it had no forward arrow, so its only exits were WITHDRAWN and DENIED: every suspended file was dead, and the only way to act on one was to kill it. Meanwhile ClosingHorizon still gave it a 40-day close and LoanTransactionStatusDeriver reported it as IN_PROCESS, so the rest of the system believed it was live. It now resumes to IN_UNDERWRITING, gated on LOS_UNDERWRITE_LOAN. Underwriting rather than the stage it came from, because the pre-suspension stage is not recorded anywhere: landing on an underwriter is a human re-entry decision, not a silent restore of a stage whose work may have gone stale. Recording the origin stage would need a schema change and is the better long-term answer. legalNext also stopped offering an off-ramp to the status the loan is already in. The steward UI preselects the first option, so a suspended loan defaulted to SUSPENDED -> SUSPENDED — a submit that could only fail. The UI needs no change: it renders whatever the backend returns, so the resume now becomes its sensible default. Six tests, including a sweep asserting no status is ever offered as a transition to itself.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei