In case anyone cares, my take on APO is that it's a band-aid solution to what's better addressed through application, API, and OS design.
The problem it's trying to solve is essentially how to prioritize different threads in an application. Where "AI" enters the picture is that the APO software must try to guess which threads need how much priority. This information is used to determine how best to apportion the CPU's power budget to the various cores, depending on which threads are running on them.
If you imagine a world where the OS provided a prioritization scheme and games used it correctly to characterize how latency-sensitive different threads are, then the OS could employ fairly generic strategies for scheduling those threads and distributing the power budget, accordingly.
Sadly, this stuff takes a long time to change. Worse, the presence of such band-aid solutions lessens incentives for players like Intel to push for such generic solutions. However, I think a well-designed and properly-utilized generic solution could actually do a better job than APO would typically achieve.