Makefiles and some other programming languages give semantic meaning to tabs which is destroyed when the tabs are converted to spaces → the code will no longer work.
Therefore the fact that this is a bug in the spec is not part of the discussion, but already a proven fact.
This is about discussing how to fix the spec’s wording so that the bug is fixed without complicating or altering behavior otherwise. John Gruber’s original spec says:
One level of indentation — 4 spaces or 1 tab — is removed from each line of the [indented] code block.
Which is pretty clear in my eyes. I inserted the [indented] since that version doesn’t know fenced code blocks. This does not say that anything inside a codeblock is to be touched, which includes tabs.
The important part: Only the tabs that are Markdown syntax, i.e. used to determine to which list level or code block a line belongs to is treated the same as four spaces. Tabs inside of code blocks are part of the code, just like any other character, and to be left alone.
So how to convey this in a less convoluted way than I just did (I’m not a native English speaker, sorry)?