I think that in his quest to simplify Gasper, Jacob tried the wrong way. A quick simplification can be made by noticing that an FFG vote is redundant once a GHOST vote is made. Once you made a GHOST vote, you commit to one particular chain. If you are honest, the target and the source of your FFG vote will be on this same chain. And since the chain you support with the GHOST vote contains attestations, we can determine the target and source vote you would have voted (the target is the last checkpoint on this chain, and the source is the last justified checkpoint according to the attestations on that chain).
Thus, a new checkpoint will be justified at the end of an epoch if during this epoch at least 2/3 of the attesters made a GHOST vote on the same chain.