I linked you to the list. What happens is that they don't differentiate between code changes to improve the engine, to change the engine (i.e. simplifications or other "non-functional changes") and to fix bugs. For that, you'd need to check every single comment of each commit to see if it was a bug fix, and I'm sorry, but nobody is going to compile a list of "just the bug fixes" just for you.
This becomes moot if you change the definition of "bug", though. Suppose there was a bug with an useless line of code in the engine that was checked every cycle and that removing the line makes the executable 1% faster. The code was there when Stockfish 10 was shipped, so it wasn't bug-free.
But it doesn't make the program hang or crash or make a different/losing move and any user couldn't really tell the speedup difference because some other code may actually slow it down (i.e. code that makes the engine search less nodes, but play stronger) so the bug fixing is barely noticeable. Now you'd say this wasn't a bug? So you could do something like this for all bugs on the list and claim the program was actually bug-free?
Stockfish bugs are being fixed as fast as humanly possible, but once one appears, it means it's been there for a while, and you can't get a list of remaining bugs because they haven't been discovered yet. All this means nothing if we can't agree to the definition of "bug."