There were lot of people making posts about Pokémon with higher CP than actually possible on that level. Last time was on reddit where a trainer post a thread about boosting your Pokemon higher than its maximum level.
Then I remembered that I had a small display bug in the buddy window, that after powering up my buddy there the CP does not refresh, it displays still the old one after the animation. Could it be that it isn't just a display issue, but that the values behind this window are made for client-side checking that prevents leveling up beyond trainerlevel + 1.5? I thought. And tried it out.
Just for the sake of science I wasted my 0.8 km on my current Exeggutor buddy and switched to my Hypno, which was close to max. I have opened his stats page through the buddy window (clicking on him, then on the progress bar).
This was his current state:
Then I powered him up, saw the CP switching back, and powered him up the next time.
Looks like this:
Then I got close to max level (see image below), looking at the total +CP there. Max CP should be 1919. I am Level 30.
Sadly I have forgotten to screenshot the power-up where I hit max, but the button for powering up was of course still active (cause CP was the same from beginning), so I clicked it again.
This is the result. 1778 + 156 = 1934:
Only to check that there is a server-side limit of trainerlevel + 2.0, I clicked the button again, and got an error, like expected. ("Fehler" = "Error" in german)
Under the error banner there was the same starting CP of 1778 like before.
Then I left the window and opened it again, and tadaaaaaa, my Hypno was 0.5 level beyond max level.
So that means we have proven that the app limits at trainerlevel + 1.5 while the API does at trainerlevel + 2.0. And the refreshing bug of the buddy stats page can lead to doing one power-up too much.
So basically, on the buddy stats page (accessible via clicking on his progress bar) there is a bug that does not refresh the data after powering up. That leads to the bug where you can power-up your pokémon one time higher than the app usually allows you.
I don't know if this is intended or a bug, but I already reported it to Niantic and I expect a reply from them tomorrow. Will update this page as soon as I have the reply from Niantic.