Fundraising tech/Definition of Done

A definition of done is a way for our whole team to agree on our habits for pushing out quality code. All of these things need to be done before a phabricator task can be marked as complete by the stakeholder, fellow engineer, or product owner.

During a sprint, a task moves between several columns in a sprint board. A task is totally done when it is in the "Done" column and in a "resolved" state. The following must be true to fully resolve the task:

There can be exceptions (for example urgent bug fixes, tight deadlines). Also some tasks are purely technical and can be resolved by another engineer.
 * 1) Steps to done or to replicate - If the done state is not clear, it shouldn't be in a sprint or started. Clear path for manual testing written up on the Phabricator ticket.
 * 2) Tests written - If not, comments about lack of test coverage. Code review to confirm (task placed in review column).
 * 3) Code review - Build succeeds and reviewer has followed steps to done, code should be understandable and, if necessary, should include explanatory comments (when review is complete, task moves to "Pending deployment").
 * 4) Documentation - a link to a Mediawiki, Wikitech (if applicable only to our install/deploy), Collab (if super confidential) page that will describe expected behavior in the Phabricator task.
 * 5) Works in production according to requirements. Reporter of bug (unless otherwise stated) to confirm this and close the task.