What lock software actually has to do
Pricing returns candidate quotes; lock software commits to one of them. That commitment carries five concerns the platform has to handle together: policy enforcement, journal integrity, sell-side alignment, expiry safety, and event distribution.
Policy enforcement
Lock-desk policy lives in version-pinned configuration: max lock period per program, extension fees by tier, who can override and with what approval flow, business-hour gating. The platform should be able to replay any prior policy at any prior moment — auditors ask "what was the rule on March 14th?" and the answer has to be deterministic, not a memory test.
Journal integrity
Every state transition is a journal entry. Append-only storage with a SHA-256 hash chain makes mutation detectable. The journal row carries the actor, the timestamp, the correlation ID, the effective ratesheet version, and the policy version that was active at the moment of the transition.
Sell-side alignment
Sell-side pricing returns alongside loan-level pricing in the same call. The secondary desk and the retail loan officer read the same numbers. When the bid tape comes back, the join key is the correlation ID, not a fuzzy match across timestamps and loan IDs.
Expiry safety
An expiry sweeper runs on a schedule, processes locks past their expiration, and emits expiry events. Distributed coordination is non-negotiable in any multi-instance deployment — without it, two workers can both expire the same lock and emit duplicate events. ShedLock (or equivalent JDBC-row coordination) is the standard.
Event distribution
Every state change emits a webhook event: locks.created, locks.extended, locks.cancelled, locks.funded, locks.expired. HMAC-signed deliveries with retry, DLQ, and replay are how the hedge desk, ops, and downstream BI keep up with the lock pipeline.
How to evaluate
- Policy versioning. Edit the lock-desk policy. Verify you can read the prior version. Try to replay a hypothetical lock against the prior policy.
- Hash chain demonstration. Ask the vendor to show a hash-chain verification. Then ask them to show a chain that someone tampered with — what happens, what the operator sees.
- Optimistic locking. Have two operators try to extend the same lock simultaneously. The second one should get a 409 with the current state, not a silent overwrite.
- Sell-side parity. Lock on the retail side, read the sell-side number, verify they reconcile to the penny against the bid tape that comes back.
- Expiry sweeper behavior. Create a lock with a near-term expiry; deploy a hot reload; verify the sweeper continues to honor the expiry without skipping or duplicating.
- Audit retention. Confirm the lock journal is retained indefinitely by default. Custom retention should be possible but the safe default is "forever".