Calculations do not take in all caster levels and removing prestige class does not remove hidden feats.
Add Cleric 1.
Remove Cleric 1.
Note that the Feats number isn't back down, and that the Turning SA is still there (albeit with zeros since the BONUS statements evaluate to zero now).
Remove Ftr 1.
Note that the feats stuff has totally reset. So when all class levels are gone, everything is taken care of. Just not some of the times when doing partial leveling down.
Please note that this is a generic problem, it will cause a problem with any object given by a class that is added directly to the character rather then referenced by the class level.
Ah! I see the problem. If you use FEATAUTO then the feat is never added to the Character directly it is always retrieved from the appropriate class level.
If you use ADD:FEAT then you are adding a feat to the character directly. The newly added feat has no way of knowing that it came from a class level, therefore there is no way of removing the feat when the class level is removed.
What we need to do is either:
Have a mechanism for associating every object (A) assigned to a character with the object (B) that assigned it. That way, when we remove object (B) we can look at every object in the PlayerCharacter and remove object (A)
Or never add secondary objects directly to the PlayerCharacter. If a class level adds a feat then it should be stored inside the level object, not the character object..
Warning: Here be Dragons!!! This will not be an easy change to do.
This is effectively waiting on full CDOM support