What's it for?
Given that these tools are used to build code which is then included in our repositories, we need to ensure that we can have repeatable builds across different branches. So if the build method changes between tool version A and version B and this leads to differences in the built code, we need to ensure that we continue building the same code for all versions of Moodle which were previously built using tool version A.
How does that work?
When a new version of Moodle is branched, a new version of the mdl-sub tool should also be branched capturing the dependencies for that version of Moodle. The name is also updated to reflect the version of Moodle it corresponds to.