Что касается больших проектов, когда очевидно, что правки 100 % будут у меня такая схема:
Заказчик хочет точные сроки и стоимость - логично.
Для оценки этих значений нужные точные задачи (ТЗ) - логично.
Поэтому "большие и сложные" проекты оцениваются всегда строго по задачам описанным в ТЗ или брифе. Отклонение от ТЗ свыше X-минут* означает либо:
а) переписываем ТЗ с учетом новых задач (правок) пересматриваем сроки и стоимость включая стоимость работы над новым ТЗ.
б) включаем почасовой тариф (как простой в такси). При этом тариф работает до того момента пока мы не вернемся к ТЗ или не закончим проект на почасовом тарифе или не выберем вариант а).
Если довести эту информацию до заказчика доступным для него образом перед началом работы проблем не бывает.