Блинки каза, че мерната единица е важна. Приложено към твоя случай аз го разбирам така - щом си поръчал някакъв код (който да прави нещо), очаква се да се предаде целият код и той да прави това нещо - и то както е дадено заданието - ни повече, ни по-малко. Ако не го прави по задание, си в правото да си спаднеш процент, съобразно забележките по функционалността (примерно работи много бавно, output-а му е неудобен, налага големи ограничения към софтуерната среда в която работи). Ако съвсем не работи или забележките му са огромни - нищо не плащаш, без значение че реално е положен труд. Когат от този код се очаква да прави много работи, пък ти прави само някои - спадаш си съобразно тежестта на нереализираната част, като имаш предвид, че искаш комплексно решение, а получаваш половинчато. Т.е. за липса на една функционалност от договорени и изпълнени други 7-8 функционалности, всичките равностойни спокойно можеш да отрежеш 10-20%. Да го илюстрирам с пример:
Поръчваш си код, който да може автоматизирано да сваля аудиото от 8 най по-популярни видеоформата. Да, ама не можеш да свалиш от mkv. Махаш 20% и плащаш. Сваля всичките 8 формата, но ги записва некомпресирани, вследствие на което дискът ти се запълва много бързо? Плащаш 100%, защото в заданието не е било предвидено да се записват компресирани, а само да се записват.
Тежестта на нереализираната част се отчита от гледна точка на потребителя, а не по направени часове труд или брой редове код. Тоест просто някакъв код, в който макар да има логика, да е написан разбираемо и с добри практики, но да няма краен видим резултат - от гледна точка на клиент бих го оценил на 0 лв с ясното съзнание, че ако неговата (на изпълнителя) преценка е друга ("аре дай 200 лв, то не стана, ама знаеш ли колко работа има тук"), след това е много вероятно да влошим отношенията си.