All of which tells me that ND filter control appears to be working correctly on your camera. And that I need to find another explanation of why the exposure is so dark in the original images you posted.
I've now retested the ND filter logic of kap_uav.lua on my trusty A1200 (which like your camera has an ND filter and not an adjustable aperture).
Everything works as expected when I setup the script parameters so that the camera uses the ND filter when the Canon logic would not have used it, and it works as expected when I setup the script parameters so that the camera does uses the ND filter when the Canon logic would have used it.
Looking at the log again, and your posted images, I am completely convinced that the under exposure is a result of the ND filter being engaged in the light path when the script specifically tried to remove it.
With over 3200 downloads and the script in common usage in the KAP and UAV community, your exact issue has not been reported by anyone else. There have been changes in the latest script version but nothing that should affect ND filter operation.
All of which suggests either something in the way the camera is setup, something unique about the IXUS115, or something is "sticky" in your camera. But confounding that is the fact that your camera worked properly in the ND filter test.
To test all of this, I've updated the
kap_uav.lua v3.6 beta version of the next release of the script to include a delay after the ND filter is moved. If you could test this it would be interesting to know the results. I'd rather not make that a permanent change as it slows down the time between reading the exposure and taking the actual shot - bad news on a moving kite or UAV.
tl;dr : On a technical note, there is a slight difference between the test script and the kap_uav script in the way the shot actually happens. The test script sets the exposure parameters and then calls the shoot() function. The kap_uav script sets the exposure parameters inside of the "shoot_half" prior to the "shoot_full_only". I suppose it's possible that it takes a few milliseconds for the ND filter to move and the kap_uav filter does the "shoot_full_only" before the filter has finished moving. All depends on the timing through the action stack.