To execute an Agile project you first need a contract. No contract – no project! No project – no Agile, SCRUM or whatsoever!
The contract, if we are talking about mid to big projects, must have well defined safety triggers. I.e. customers want to be very much sure, that if we agree on ending a project in time = T, budget = B and scope = S we do not end up with time = T×2, budget = B×3 or scope = S/2.
On the other hand we, as a company who delivers the product, do not want the project to end unexpectedly. I.e. if after some iteration customer says "Now I see that this is actually all we needed. We stop now." and the project was planned for another 2 months, than we have people without planned work. If 3–6 people is not a big problem, 15–25 might be a real issue!
Yet I did not find any real example of a contract with safety features in it that would allow the project to be executed in full Agile manner (stated or not stated to customer as such). Standard saying I find on many forums – talk to customer, explain to him that this is much more productive way of work etc. does not convince neither me nor my management. Not that we do not believe in Agile being actually a better way of doing it. It's just that gaps in safety triggers are so obvious that none of our client buys it AND we do not like them (gaps, not clients ;) ) either.
PLEASE no "it would probably work this way …" – I've read tons of that. Only interested in "For us it worked this way". No doubts, skip all the confident info in it.
P.S. As far as I can tell, standard iterative, feature driven approach suggests customer paying after each iteration (number of iterations) and being able to stop the project both by customer and project executor after any iteration without saying much about the consequences, rather than saying "it would fail anyway, so the earlier – the better" (which is correct, but not very helpful when signing the contract).