Here’s a chart showing the problem. All DAG’s must not accept new parents who have parents that are “too old”. Consensus is formed because (and when) when you stop letting in those ‘old’ blocks. As a result of having a cut-off, there can be forks where PoW will decide the winner.
The chart below uses a cut-off, but not exactly like the above because it assumes all miners are honest. The DAA does a “look-back” of only 7 blocks to have a fast consensus. In this example, 15% of the hashrate has an ever-increasing latency indicated by the steps (this has the same effect as if 85% of hashrate had a decreasing latency). Since the network hashrate is constant, when the difficulty starts dropping (instead of increasing with average latency due to the 15%), it’s the result of those high-latency miners producing blocks the DAA can’t see (they’ll be orphaned). It thinks the hashrate is lower.
I may have a solution, or partial solution. Instead of (only) looking at parents. I can base the DAA difficulty on a count of grandparents and maybe great-grandparents. If a parent block cites as his parent(s) what other parents (his “siblings”) are calling grandparent, that block has a higher probability of having a higher latency than his siblings. It doesn’t occur often if everyone has the same latency, so I can increase difficulty a lot when it happens and it has little average effect, but if it happens more than expected due to miners with a much higher latency than the average, it can have a large effect. In other words, if the statistics that assume everyone has the same latency are being violated, it gives an increased difficulty which benefits the slow miners by slowing down block time (while not changing the look-back block count) so that they don’t fall outside the “look-back” window. It gives less incentive to get your latency below the average while still incentivising everyone to get lower latency, if they want more blocks per real time.