I think that an MD5 mismatch needs to emit some sort of diagnostic information so that the user can figure out why the download happens.  Consider a trivial typo in your declaration - an 8 rather than a 9 - and the silent behaviour of downloading the content every time, but still working afterwards.  Ouch.