kly (sorry for the late reply; I'll admit having forgotten about this thread,BA's I had visualized your last messages and it marked as read).
Have a look at the sets lists. When a change marks some files as deprecated/– meaning they're destined to be removed in the following release – the developer will flag those files as obsolete in list of the set they belong to.
There are machine-dependent (MD.arch) and machine-independent (MI) lists. This helps filling the changelog across major releases. For instance, check out the current mi list for the base set and look at the obsolete
flags.
The build process extracts obsolete-tagged lines from the sets lists and adds the corresponding files to /var/db/obsolete/${set}.
At the moment of upgrading an existing NetBSD installation, after all the sets have been untarred, post install(8) will test the system against filenames found in /var/db/obsolete/* and delete any obsolete files that it finds.