I did all of that and sent the report with estimates back to my manager, who responded that I had missed an estimate for one item out. That item was "Code will be of good quality". I responded that all of the code will be of good quality and it would be nonsensical to estimate an amount of time to this one thing as it if was a separate task.
"I'm not not going to write a complete system with bad code and then spend time re-writing it to make it good code."
This story did not end well.