Over the past few weeks on WS-Addressing land, people have regularly argued that various features should be in scope or out of scope based upon what they call implementation details. I think there is a fatal flaw in trying to abstract away from "implementation details". In fact, I think the Web's fundamental architecture is designed for implementation details.
During my career, I have regularly tried to abstract/encapsulate/layer software. Sometimes it's worked amazingly well, but even in the best case, it's never ever been 100%. I've come to the conclusion that all abstractions are leaky. It's just a question of when/where they leak. This leakage can sometimes fall under the category of implementation details.
The Web is a great example of where implementation details have controlled and even determined the protocol. There are a couple of incredibly important underpinnings of the Web that were designed for implementation details. The use of a uniform interface, mostly through the GET method, and self-describing data (by having the media type in an HTTP header) are absolutely essential for implementation of intermediaries, like firewalls and caches. If the uniform interface wasn't, well, uniform, it would make building a cache much harder. And if the data was not self-describing, say the media type didn't even exist, it would make it almost impossible to determine whether the cache had the right type of resource of the URI. The use of a uniform interface + self-describing data provides the property that the REST thesis calls "visibility". It is this property that enables intermediary implementations.
How about them "implementation detail" apples?