What about adding a "last_retrieve" timestamp (like last_run) into the summary. While the reason would not be known at least we could detect the failure.
This should be relatively easy now that PUP-8288 is fixed. Puppet now keeps track of whether the transaction completed successfully (it assumes failure and only sets the transaction_completed variable to true if it gets to the end. Puppet also takes that variable into account when determining whether the overall status is success or failure. It should be easy to update the `last_run_summary` to include the overall status and a timestamp of when the last run occurred.