Corrected quarter computation: its year was off.
In isUserEvent() and isEngagementEvent(), added openassessment events, and declared them deterministic.