Require "p" lines in consensuses
Karsten and I looked at the historical data, and there are no consensuses past method 5 where the p lines are omitted. Additionally, I analyzed the code. Here are my findings:
in routerstatus_format_entry(), we can either create V2 or V3-style entries. V2 has no practical relevancy here, because the spec is for V3. For V3, we either have a consensus, a vote, a microdesc consensus, or a control port output. If we're using a method != V2, we always initialize a routerinfo_t *desc. If this step fails we do not generate an entry for this router.
Later, if desc != NULL (remember, this can only happen for V2 style documents) we call policy_summarize() and add the result as a "p" line. Looking at this function, it can never fail. Result is set to "reject 1-65535", "accept 1-65535" or "%s %s" where the first is prefix and the latter the shorter policy entry.