When fulfilling an HTLC, LDK removes the incoming (previous-hop) one first and does not provide a preimage to the signer.  This makes it impossible for a validating signer to ensure no funds are lost.
the options are, in order of preference:
- remove the outgoing (next-hop) HTLC first, and provide the preimage during the first related signing operation
- continue removing the incoming (previous-hop) HTLC first, and provide the preimage during the first related signing operation
The first option will simplify the signer logic, because it will maintain the invariant that incoming value is always >= outgoing value.
Logs from a relevant functional test of LDK+VLS are here: https://gitlab.com/lightning-signer/validating-lightning-signer/-/issues/331