it can just be building a minimal chess quickly using methods/frameworks that are not easily extensible to future requirements related to chess.
the vast majority of software projects will have features/requirements that evolve after the initial design, it is a rabbit hole to try and guess all of those, but some things are just common sense but would add a little time to the first milestone. then you are in the position of tacking on things indefinitely making it a horrible tangled mess.