Суть в том, что заказчик контролирует полностью код и каждый день выкатывает чтобы они сделали по другому, это практически остановило разработку, потому что только и занимаюсь что правлю предыдущие блоки. Когда заключали договор об этом не было ни слова. Чтобы вы понимали, претензии высказываются не по ошибкам, а по алгоритмам и их реализации. Что делать в такой ситуации?
Если вы вносите правки, значит видите недостатки вашего решения. Видимо, Вы столкнулись со случаем, когда заказчик профессиональнее исполнителей, что бывает крайне редко. Наслаждайтесь бесплатным обучением, если заказчика устраивает затягивание сроков, но нужно обязательно обсудить скорость продвижения с учетом рефакторинга, либо включить это в договор.
Разбить цель на задачи и по каждой согласовать объем работ и стоимость. И не кидаться в крайности в плане объема задачи. Оптимально время выполнения задачи 1-3 дня.
Если договор позволяет без потерь отказаться от проекта, то я бы отказался, так как с таким заказчиком есть шанс не заработать денег вообще. Возможно его перфекционизм объясняется желанием получить работу бесплатно и когда вы её завершите, у него будет что вам предъявить (сорваные сроки, неудовлетворительное качество кода, и т.п.).
В противном случае формально выполняйте всё по договору, отдавайте заказчку.