I've been puzzling about this vaguely ever since I read it - it's wonderful, but can I be rotten and say there's a serious continuity error in here?
There's no reason why time should pass at the same speed in the afterlife as here on earth, so you can happily have months pass for Lily while days pass for Severus, and vice versa. But since you've been at such pains to make everything make such logical sense and to differentiate between past, present and future, I imagine you want events to be passing in the same order for Lily as for Severus (leaving aside the scenes where she sees into his possible future).
The continuity error, then, is that you've got Gellert and Albus kicking around together in the afterlife for some time, and then Lily is shown the scene with the sword, the doe and the pool as a current event. But the scene with the doe and the pool took place at Christmas, and Gellert didn't die until the end of the following March.
The simplest solution, if you actually want one, is just to have Lily see the scene by the pool as a recent event rather than a current one.
[If you want their lives to be happening in a different order, there's no problem, likewise if Gellert is visiting the astral realm in his sleep rather than dead, or this is some eternal part of him rather than the part which is born and dies.]