A task is done when all the underlying activities are complete. The trouble starts when different team members have different ideas of done.
In a technology world that would include myriad activities like analysis, design, coding, review, integration, review, deployment. The definition of done may vary from project to project. What is important is:
- The criterion is agreed upon during release planning, by all stakeholders.
- Does not change for the life of the project.
In my experience, it also helps to agree on a 'due-diligence' checklist with the team for individual tasks. Each team member owns his or her task and is responsible for calling a task complete when each item in the checklist is done.
This is a great tool for fostering transparency and uniformity in task reporting. A sample of due-diligence checklist for testers is given below. It can be customized to meet a team's needs or project specific nuances, as long as the entire team follows it.