Dispute — arbiter resolves for the creator
The Operator disputes a delivery; VF, acting as arbiter, resolves it in the Creator's favour.
Engineering assessment, not a legal opinion
What follows describes what the contract mechanically permits. Whether it satisfies a given regulator is for counsel. Residual questions are listed rather than resolved.
What happens
openDispute(escrowId) by the Operator pauses the review timer and moves the slot to Disputed. resolveDispute(escrowId, forCreator = true) by the arbiter routes the slot to the Creator's bound address, and the Creator collects with claimAwarded.
The arbiter is fixed by setOperatorRoles before any deal exists, changes are scheduled rather than immediate, and every allocation snapshots the pair in force when it locked.
Non-custody evaluation
This is the weakest of the six, and it is the one to put in front of counsel. VF holds a genuine power here: it decides where a disputed slot goes.
Three constraints bound it, all on-chain:
- It reaches only
Disputedslots — VF cannot touch a slot the Operator has not disputed. - It routes between two destinations committed at funding. VF cannot pay a third address, including its own.
- It cannot freeze. Every dispute carries a deadline that defaults to the Creator, so an arbiter who does nothing loses the decision.
So VF cannot take funds, and cannot keep them from moving. What it can do is choose which of two pre-committed parties receives them — arbitration, not custody, on the usual reading. But it is a discretionary power over other people's money and should be characterised deliberately rather than assumed harmless.
No-service evaluation
Mixed. Resolving a dispute is closer to adjudication than to executing a payment instruction, and adjudication is not a payment service. But VF is originating a state change that causes funds to move, which is materially different from broadcasting an Operator's signature.
The counter-argument is that both destinations were fixed by the parties at funding; VF selects between them, it does not construct the transfer.
Residual questions for counsel
- Should the arbiter be VF at all? An independent arbiter would remove this power entirely. It was scoped this tightly precisely because it is the one place VF has discretion.
setArbiterFeePolicyallows a fee on arbitration. A paid adjudicator is a different characterisation from a neutral one, and the fee's existence should be part of any opinion.- Because the arbiter is set per operator (
setOperatorRoles), a given deal may have a non-VF arbiter. The analysis differs per allocation, and the snapshot at lock time is what governs.