폼 제출은 복구 가능한 상태 전이로 설계한다

draft·pending·검증 실패·성공·예상 밖 실패를 분리하면 중복 저장과 길 잃은 오류를 막을 수 있다.

Draft아직 서버가 확정하지 않은 사용자 입력
SUBMIT

Draft → Pending

입력을 보존하며 반복 제출 UI를 막음

INVALID

Pending → Invalid

필드 오류를 값 가까이에 연결하고 재입력 허용

COMMIT

Pending → Success

재검증된 결과·메시지·redirect로 종료

THROW

Pending → Failure

예상 밖 예외는 오류 경계와 관측 시스템으로 전달

핵심실패 뒤 입력을 잃지 않고 같은 action을 안전하게 다시 실행할 수 있어야 좋은 폼 상태 모델이다.