I always thought of the "how" being better explained by the code itself where you can see string.replace(" ", "\ ") as the actual fix while the message says the "why".
I would still have "Fix a bug where strings containing whitespace break CSVExporter" as my go to message.
I guess our viewpoints are different based whether we want the commit messages to represent tasks or changes. They both have their uses of course. Looking at changes to a file to know what people have done to it is better with a "changes" type message but looking at the history to check "did we actually complete this or was it just marked as completed in the issue tracker?" is better with a task based message.
Task management where every issue is put on a ticket and tracked would my type of messages obsolete but at my current company theyre very useful.