I think the dishonesty comes in when the progress bar uses time as an input instead of observable events. It's fine and good to modify your api to return better progress information as long as that doesn't cause the operation to take longer or significantly increase load.
However, representing a coarse process with time based progress is perhaps dishonest.
For example assuming that step 2 of some 3 stage process always takes 20 seconds and artificially filling the progress bar over that duration is presenting potentially false progress to the user.
For operations which may take a long time with some variance the user may be waiting for a while at a stopped progress bar and think an error has occured.
However, representing a coarse process with time based progress is perhaps dishonest.
For example assuming that step 2 of some 3 stage process always takes 20 seconds and artificially filling the progress bar over that duration is presenting potentially false progress to the user. For operations which may take a long time with some variance the user may be waiting for a while at a stopped progress bar and think an error has occured.