The reason that yesterday's code change didn't quite work right was because the flags that I had carefully set to say that all of the scenarios needed to be recalculated were moved in this release from the object that they had been in into another object which was being replaced by a different copy of the object before the calculation occurred. There was, of course, a perfectly good reason to move all of those flags (as in, it was required to make a new feature work), but it caused this piece of existing code to break.
Since I was the one who moved the flags, I guess it's good that I'm the one who found the break.
Solution? Set the flags again after substituting the saved copy of the object that holds them. That'll fix 'em... (mutter)