There should be some way of tracking what tools were used to build a particular changeset, and we should probably track with tags when the compiler version changes. This has no bearing on the functionality, but would help when trying to dig through older changesets to see when the compiler version was switched.
Other tools could be recorded in the same way, but the version of SDCC is probably the most critical. Sometimes it's obvious because there need to be changes to the source code to compile with the new version, but other times it's not.
Alternatively, part of the build byproducts could be a file containing tool versions, generated in a similar way to the kernel's symbol table file, but we could even store this in a file in the resulting disc image.
The simplest (and most robust?) solution may be to install SDCC into a directory which has the version baked into it, then update the Makefile in SpecOS to match it when installing a new version. This would allow multiple versions of the compiler to exist side-by-side, and would automatically enforce a new changeset when switching the compiler, even if no source code needs modifiying for the new version.