The SDK's `Charge` Type Is In Sixty Files
Decide what you would do from the brief alone, including whether you would change anything at all. Everything below it is available, but the exercise stops working if you open it first.
The payment SDK's Charge object is imported in sixty files, including the appointment state machine and two report generators. The vendor has announced a major version with a changed Charge shape and a different error hierarchy.
Writing a PaymentGateway facade that wraps every SDK call but keeps returning the SDK's Charge. It is the natural first step, it takes a day, and it genuinely improves things — there is now one class that knows how to call the vendor, and mocking it in tests is easy. The version upgrade still touches sixty files, because the type that crosses the boundary is still theirs. A facade that forwards foreign types is a phone book for a dependency you still have everywhere, and it is more dangerous than no facade, because the team now believes the dependency is contained and stops watching where the type spreads.
Read this even if you are confident. It is here rather than behind a button because it is the answer most teams actually ship, it passes review, and the cost of it does not arrive until the change after this one.