This seems to be really well done and I'm looking forward to reading it in more detail, but one thing jumped out at me: one of the keywords used to identify fixes for programming errors is "refactoring". Refactoring doesn't necessarily (and actually shouldn't) refer to fixing a defect.
EDIT: The Procedural/Scripting split seems overdetermined. All of the procedural languages have static typing, and all the scripting languages have dynamic typing.