Only when a file is requested from the cache is it checked to see if it's complete. If not, NACKs are issued for missing components.
If the file is incomplete and not ready to use, the cache either uses other caches' NACK responses, or can perform its own NACKs during otherwise idle periods.
The result is that speculative files don't impact the user (CPU of their system, etc.)until requested.
At ISI, we're developing a protocol that allows the client to decide what to be interested in receiving, the server to decide what to be interested in broadcasting, and the two to join and split associations dynamically.