I did some more tracing through the installation process and have narrowed down this issue being a problem with the !module_installed('iotds') check in the install method of the purrrr.php addon_registry hook. In Step 7 of the installer, the iotds addon_registry hook is installed prior to the Purrrr addon but the iotds module isn't actually installed until Step 8. This results in the module_installed check returning false in Step 7 and skipping the rest of the Purrrr addon installation.
In other words, when the Purrrr addon is installed in Step 7, the module_installed() function looks for iotds in the (cms10_)modules database table, doesn't find it, and returns false; the iotds module doesn't get put into the modules database table until Step 8.
I'm wondering if maybe the site modules installation in Step 8 should be moved to Step 7, and the addon_registry hook installation at the end of Step 7 should be moved to Step 8?
You're right, but to be honest I think it's a non-issue, and there's no easy resolution. We could change the precedence, but it might upset something else. The real resolution would be a proper dependency manager -- however, given that this is such a trivial addon (we kind of made it as a prank/example), and that probably one would only want it by explicit installation, and running the full set of addons from git isn't the normal Composr use case, I think it's best just left be.
In other words, when the Purrrr addon is installed in Step 7, the module_installed() function looks for iotds in the (cms10_)modules database table, doesn't find it, and returns false; the iotds module doesn't get put into the modules database table until Step 8.
I'm wondering if maybe the site modules installation in Step 8 should be moved to Step 7, and the addon_registry hook installation at the end of Step 7 should be moved to Step 8?