Proving deadlock freedom for distributed applications is complex. It becomes even harder if those applications dynamically adapt to face needs which were unexpected when the application was deployed or even started. We present a framework ensuring this key property by construction. Our framework includes a language called Adaptive Interaction-Oriented Choreography (AIOC) for programming adaptive distributed applications. Adaptation is enacted by rules, which can be defined and added while the application is running. One AIOC describes the behaviour and the interactions of multiple participants from a global viewpoint. Executable code for each participant is automatically generated from the AIOC. We prove correctness of code generation by defining labelled transition system semantics for both AIOCs and the code of the distributed participants, and proving a trace equivalence result. Deadlock freedom follows as a corollary.