Even with “hard” requirements in advance, things are always subject to change, or unforeseen requirements additions/modifications will be needed.
I don’t see why you can’t maintain the spirit of agile and develop iteratively while increasing fidelity, in order to learn out these things as early as possible.