Are you old enough to have been working with Concorde XAL? Then this question should tickle your imagination. In the old Concorde XAL you also had the kernel with its exe-file and its DLLs and then you had the application files. Whenever a new kernel was released (the latest was 2.80 as far as I remember) you could start it up with switches making it backwards compatible with for instance the Oracle-version or whatever. The application was still the same application.
Today an AX 40 SP2 kernel is backwards compatible to whatever AX 4.0 application version that you might be having. How about squeezing this thought into "insane"-mode. Will it be possible to just change the kernel version for the AOS and the clients to AX 4.0 SP2 and not do anything about the application layers? Essentially running Axapta 3.0 on a AX 4.0 kernel.
I know the AX 4.0 kernel creates RecIds that are unique per table and not accross all tables like Axapta 3.0 but I am trusting that I do not have any code in my Axapta 3.0 that tries to find a record without saying in which table.
The AX 4.0 kernel is able to read AOD-files from Axapta 3.0. That is how I interpretate this article: http://blogs.msdn.com/b/mfp/archive/2008/04/22/new-layers-in-dynamics-ax-2009.aspx. Find the text saying: " ...This enables AOD files with sizes up to about 6.5 GB (2^27 * 48), while enabling binary backwards compatibility with 3.0 AOD files (with sizes less than 128MB (2^27))".
Can you think of any call to the kernel in the X++ code from Axapta 3.0 that is not supported by an AX 4.0 kernel?