An entire new Ukraine Government had just been elected so a re evaluation of Ukraine compliance on corruption for new government was justified.
FWIW, Ukraine corruption was a major issue in the election. The Ukraine people seemingly disagreed with Pompeo and ousted the old guard primarily for rampant corruption .
Trump was doing due diligence to see if the new crowd was really going to follow through as reformers
The problem is the law, which says once his administration certifies that the aid will be well spent he pretty much has to spend it.
General concerns about corruption or policy changes aren't a valid reason to withhold the aid.
I'm not saying that's a great law, but I think the GAO is going by the book.
Mick Mulvaney engineered a tactic to rescind $5 in foreign aid in 2018 to prevent a cascade of end-of-year spending by the State Department. This tactic was tried before to prevent $15 billion in aid. The tactic was to freeze the aid long enough so the aid would expire. This tells me President Trump was having Mulvaney stop this aid as a method to cut spending. If a government receiving aid was corrupt it was more reason to cut aid.