You're basically out of luck.
Unfortunately, use of the mutable Program Name instead of the immutable Program ID makes an easy reconciliation/detection of such changes impossible. In essence you need to do Change Data Capture on the whole Programs tree in order to detect changes.
A pseudo-workaround, if you can enforce the procedure, is to mandate that the Program ID always be prepended to the Name.
Thank you for the reply.
We can do a kind of change data capture on the whole programs tree, however there is no clear link between the activities - campaign and program tables that can be retrieved via the APIs. For example; system campaigns are created when working with default programs, which are not captured via the campaigns API (cfr. Make system campaigns available through the APIs )
There are too many variables that need to be taken into account to solve this puzzle - I guess that I'm indeed out of luck. The pseudo-workaround is the best options I guess, which requires change mgt process.