This looks very nicely thought out. It's easy to group on a single value, and can adjust for more complex groupings as well.
Unfortunately, this doesn't seem to scale well with CloudKit and tens of thousands of records, at least in my case, but I think these are local (to me) issues, like the overuse of @MainActor over @ModelActor to keep things simpler, which tends to hang the UI thread.