Bugs vs. Mistakes
skennedy: In my opinion, bugs are identified after mistakes are made.Mistakes are items that are not clearly defined as a requirement to the client and use cases identified. If your code passes the documented requirement and use cases supplied, then it is a mistake. Further requirements analysis should have been conducted by the client. Mistakes happen as the set of requirements and use cases become very interrelated to make a complex solution.A bug would be not thoroughly testing the code to pass all identified requirements and use cases.The dilemma I have previously run into is the balance between client happiness and my own. If you endlessly do free work for the client, they may come to expect it. If you do not, future work may be lost. My opinion would be to go over requirement docs and statements of work with a fine tooth comb, line-by-line. Any holes, plug them. Any questions, clarify them. Make sure the client knows which party owns which set of risks. You should not take 100% of the risk when maybe the client can spend more time identify requirements.