Regarding being "usefully critical": something I've noticed, and it seems to happen more with cheap or "instant" models, is that it will nitpick seemingly minor things. Often it's things that aren't even all that important to the point of the discussion, but it might fixate on it, and low-key argue about it (but in a circular "I'm not saying X but I'm not agreeing with Y" kind of way).
My theory is that sycophancy is just intended to prevent the AI from spiraling into a loop of ineffectually "arguing" or fixating on unimportant details, because it's both kind of annoying when it happens AND it's obvious that the model is spiraling and burning tokens uselessly when it decides to be uselessly critical.
Something I've noticed is that local models are giving better answers these days than they did a year or two ago, even if the size (in parameters and in the amount of RAM used) hasn't increased. I'm not familiar enough with the technical side of model training to explain how they're doing this, but I think in another couple of years, models that use up 48 GB will be able to squeeze out even more incredible performance.
Though on the level of something like Sonnet 5... well, maybe not.