Right- the problem with Davids solution, like he suggests, is what I pointed out already- the phase shift is proprotionaly different for each partial.
I decided to give the ifft method a try, and lo and behold:
phase_shift_sinesum.pd
By calculating both real and imaginary partials as
A x sin(P) (real partials) and
A x cos(P) (imaginary partials)
And routing the two lists into the ifft's real and imaginary inputs, you can shift the phase of each partial independently and proportional to it's respective cycle (measure in radians)
There are small issues that could be smoothed/tweaked. For example the phase sliders need a bang on startup for everything to work... it was a quick and dirty mod...
Shoutouts to @jyg (mentioned above) for the framework i used