Some checks failed
CI / typecheck + vitest (Node 20) (push) Has been cancelled
The escrow locks payment + both bonds and the validator requires exact value preservation (value_equal) on Claim and Submit. Submit grows the inline datum ~43 bytes (submitted_at None->Some, result_receipt_hash None->Some 32 bytes). When capability_id is long enough, the Submitted-state output's min-ada exceeds the locked total; lucid bumps the continuing output, value_equal fails, and the validator errors with no traces (opaque evaluateTransaction 3010/3012). Measured on mainnet at utxoCostPerByte 4310: a 20-byte chat capability clears a 2.2M lock by 49,310, a 33-byte OCR capability is over by 11,030 - so short-capability escrows settle and long ones never can, and because Claim's datum is smaller it always passes, making a Submit-only failure look chain-side. escrowLockFloor() computes min-ada for the Submitted state plus a margin and locks max(economic total, that floor) in the post builders. Buyer- side only, no contract or supplier changes; lucid never bumps once the lock is sufficient, and the surplus returns through the >= terminal distribution. postOcrEscrow's identical change ships with the OCR feature branch. New unit test covers the floor across capability lengths. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>