- Shipped
- July 8, 2026 at 1:04 AM UTC
- Author
- Kamo
- Commit
- 736fd96
DRAFT→APPLICATION_TAKEN for a borrower (a loan party, not an operator, so no LOS_TAKE_APPLICATION). Routes through transition() with a scoped predicate that grants ONLY the take-application right and a pinned toStatusId, so the borrower submit becomes a proper pipeline transition — state-machine legality, the hash-chained milestone, the ApplicationSubmission (INITIAL_DISCLOSURE), and the afterCommit STATUS_CHANGE event — instead of a silent loan-file status poke. Loan-party membership is verified by the caller.