I've left the original user request as written for context on the ticket comments. However, I've changed this ticket to a request to warn about un-supported older Asterisk versions and/or block upgrades when possible.
Wrap core functions in a try/catch to (within reason) support deprecated syntax, at least to such a point as to prevent critical failures. My use case in particular is related to the Ditech module test in 2.9 while running atop Asterisk 1.2. The function "app_exists()" fails to return a proper result when the call "core show application _" is fired, because of the syntax change.
I wonder if there's any wisdom in holding the CLI syntax in a dictionary, thereby abstracting FreePBX from Asterisk by degree of separation? That might allow for some interesting customizations down the road.
Before anyone says "But it's perfectly clear that 1.2 is NOT supported anymore!" I'd like to point out that real-world telephony deployments and their inherent long-term support expectations make a slightly longer lifespan perfectly reasonable.
Having said that, yes, I did roll an RC onto a production box, and yes, I feel silly for doing so. But hey, we're all human.