In the second step, the system is separated from the reservoir and is now thermally insulated, resulting in another small adiabatic expansion. I ask myself, why is a little internal energy converted into volume work after the separation?
The need for adiabatic steps is revealed by reviewing the necessities of creating an efficient heat engine cycle:
Your requirement: Take a very large warm body at temperature $T_H$, and obtain useful work from it for a very long time. Also, don't create any entropy in the process, so that the highest possible efficiency is maintained.
"Impossible. (1) When I remove thermal energy from the warm body, entropy flows with it. (2) Work carries no entropy. (3) Entropy can't be destroyed. Thus, I'm left with a buildup of entropy."
OK, you can have a single additional large cool body at temperature $T_C$.
"OK, I'll plan to dump entropy there through heat transfer $Q$. For reversible heating, the entropy transfer is $ΔS = Q/T$, so I'll pull out a lot of thermal energy from the warm body (high $Q$, high $T$), and sacrifice a little energy to the cool body (low $Q$, low $T$) to dump the exact same amount of entropy. I'll output the difference as work."
I'm impressed! This is the fundamental concept of all heat engines—and the reason why one can't turn heat entirely into work. But you're still talking conceptually; what exactly is it that you're going to do?
"I guess I'll take a cool fluid, put it next to the warm body to heat it up and pressurize it, and let it expand."
You'll encounter a temperature gradient—i.e., a spatial variation in temperature—when you put the cool fluid next to the warm body. Energy flowing down a gradient always produces entropy. Your mechanism isn't as efficient as it could be.
"I'll very slowly compress the cool fluid while insulated (i.e., adiabatically) to bring it to the temperature of the warm body. Then I'll just let the fluid expand at that temperature and do work. No temperature gradients, ever."
You don't have the space to expand that much. The warm body is essentially infinite, and you need to produce work indefinitely.
"I'll work in cycles, expanding and compressing, to reset the system completely at the end of each cycle. I'll apply the compression at the lower temperature as part of the reset. Oh, and to address your objection about about moving suddenly between the two reservoirs, I'll wrap up the isothermal expansion at the higher temperature with some adiabatic expansion to cool the fluid down so that there's no entropy generation when I put it next to the cool body. The work I collect during this adiabatic expansion will exactly pay for the work I expended to achieve the adiabatic compression."
Summarize clearly the sequence you've developed.
"Starting at an arbitrary point: adiabatic compression from $\boldsymbol{T_C}$ to $\boldsymbol{T_H}$ (this eliminates any temperature gradient), isothermal expansion at $T_H$ (this provides output work), adiabatic expansion from $\boldsymbol{T_H}$ to $\boldsymbol{T_C}$ (also to eliminate any temperature gradient), and isothermal compression at $T_C$ (this dumps entropy)."
You've solved the required problem.
And there you go: four sequences of adiabatic and isothermal compression and expansion. There's actually no other way to reversibly obtain work from heat using only two reservoirs.
I'm back with a side point: You've been talking about expanding and compressing the fluid. These steps are driven by pressure differences, or gradients, which tend to generate entropy (just like the heat transfer down a temperature gradient that you addressed above). In addition, any mechanism that applies or collects work involves some degree of friction, which also tends to generate entropy.
"I'll perform every mechanical step very slowly, easing up on the externally applied pressure to allow expansion and gently applying it again to obtain compression. If I adjust the pressure using a series of weights, for example, I'll slide them into place slowly over low-friction surfaces to avoid dissipating heat and generating entropy. In real life, I'll never get rid of gradients—after all, things don't move without a slight force difference, and heat doesn't flow without a slight temperature difference—but with skilled engineering I can reduce them to be arbitrarily close to zero.
"You are aware that the power output, meaning the work done per unit time, will correspondingly approach zero, right? Since the Carnot cycle proceeds infinitely slowly to avoid generating entropy, it provides maximum efficiency and maximum work but zero power (work collected per unit time). In a real engine, I would sacrifice efficiency (not that I have any choice—all real macroscale processes generate entropy and dissipate heat) to push processes to run conveniently fast, wasting some heat but providing useful power."
That is acceptable.