Hi Daniel.
Thanks for your feedback. I did some more investigation into how this works.
I discovered that learners who are suspended will still be removed by the cron task if the session is expired and they have not recorded attendance. I also discovered that it’s not possible to manually add a suspended user to an expired event (using the Attendees interface), although, as you know, you could, before TL-40252, do it using the upload feature. If the cron task had run after you uploaded the attendees but before you had marked attendance then the learners would have been removed and attendance not recorded. So, one way of looking at this is that you've been using something that could be considered an exploit in order to upload attendees and mark attendance of suspended users. It seems clear that the original intention was that suspended users are not included in seminars at all, except where attendance has already been recorded.
Looking at the system overall, I think the whole idea of automatically removing attendees is dangerous. At minimum, I think we should prevent removing users from expired events (or even in-progress events), regardless of whether they have recorded attendance. We should also allow suspended users to be added to expired events, both through the Attendees interface (which has never been possible) as well as using the upload features (by undoing the change we made in TL-40252). I believe this would satisfy your use case as well as prevent the "assigned then not assigned" problem reported in the original ticket. We should also check the notifications and make sure that they specifically exclude suspended users, rather than relying on users not being assigned.
We've created ticket TL-41721 to manage this change.
I think we should continue to remove suspended users from events which are yet to occur. To change this would potentially negatively affect other use cases and I think would be better suited to a solution where seminar admins can choose the behaviour. Any changes to this are outside the scope of this ticket.