Under what circumstances did following YAGNI lead to added complexity?
But trying to anticipate everything in the first iteration is not the solution. The solution is to write maintainable code and apply each change with the same discipline and thought which was used when in the initial iteration. Follow the boy scout rule: After any change, the code should be in a better state than before.
Now you have to work around your simplified design because you decided that you didn't need anything more.