In a perfect world, the Wine devs would be able to follow a fixed specification with which to build a fully binary compatible replacement for Windows. But this is not the case. They know the public APIs and know what those APIs are supposed to do. Everything else (ie how they do it) is educated guesswork.
The ideal would also involve Windows functioning consistently, which it does not. Parts have been bolted onto very old code. Application developers can work around those bugs when they're building their apps but it also means that Wine has to follow everything, even the quirks and often by trial and error (users submitting bugs for specific applications).
Nothing is guaranteed to run. Even things that work perfectly, even better than native, are not guaranteed to remain that way. Often in the Wine world, in order to fix something, you have to break half a dozen other things... You just hope you (or somebody else) finds those new bugs before the code hits a stable release.
If you want long term stable support for a batch of applications, look at the commercial arm of Wine: CrossOver.