Xcode 6.1 Ad Hoc Provisioning...
For those of you who are interested, I was finally able to solve the mystery of the failed ad hoc distribution of my iOS app. Sadly, this rocky road is strewn with so many pitfalls that no one was really able to come up The Answer; however, the answer to the most important question, "How do you debug this?" is a little better than the dart throwing exercise it seemed to be.
In Xcode 6, open the Devices window (Shift-Command-2) and plug in your iOS device. At the bottom of the window is a Console drawer tab. You can view NSLog entries and the errors and warnings during the installation attempt. Now, interpreting those entries is another matter entirely...
As for the actual cause of the ad hoc failure, well, it was all about entitlements. Troubleshooting guides at Apple detail at a somewhat gross level what should match (see the photo) but when you create your AppID you'll notice that you cannot remove the GameCenter and In-App Purchases services. Should these be turned on in your Xcode app? And if so, why don't they appear in your entitlements?
I noticed that the entitlements listed in the Archive just before ad hoc export did not list these, and so I became suspicious of what was necessary and what wasn't. It took me several hours across several weekends, but YES! This is the issue. The entitlements listed here must be present when Xcode signs your code. AFAIK, it is only these entitlements that you must match (signing and provisioning).
Don't be fooled by trying to use the Plist editor to add these to an entitlements file in your target. Because the keys listed here were not listed as choices in the Plist editor I lost an entire day exploring this avenue. In desperation I just cut and pasted the dictionary entry from a failed embedded.mobileprovisioning file I extracted from the app bundle. These entitlements were keychain-access-groups, get-task-allow, application-identifier, and com.apple.developer.team-identifier. Also, when you copy in your entitlements file to the build, don't forget to check the "Target" checkbox so it's part of the build solution.
I've now spent a total of 3 times as many hours chasing down this issue as I did coding the entire app. Needless and sad.