Split out of #13357, which introduces course-level science consent.
Problem
ScienceCourseService.disableCourse only flips active on the science_enabled_course row, and enableCourse flips it back. A student who consented before the course was disabled is never asked again when it is re-enabled, because their consent row is no longer undecided and the prompt in CourseOverviewComponent only fires on an undecided decision.
Collection therefore resumes silently under a decision taken in a different context — an ethics approval that has since lapsed, a different teaching team, or simply a year later.
Suggested direction
Give collection a period or a consent version: a consent is recorded against the activation it was given under, and a new activation asks again. The consent timeline already records each decision as a SCIENCE__OPT_IN / SCIENCE__OPT_OUT event, so the research export can already tell the windows apart; what is missing is the student being asked.
Notes
Not a regression — it is a gap in the model introduced by #13357 and deliberately left out of it, recorded there under "Known limitations".
Split out of #13357, which introduces course-level science consent.
Problem
ScienceCourseService.disableCourseonly flipsactiveon thescience_enabled_courserow, andenableCourseflips it back. A student who consented before the course was disabled is never asked again when it is re-enabled, because their consent row is no longer undecided and the prompt inCourseOverviewComponentonly fires on an undecided decision.Collection therefore resumes silently under a decision taken in a different context — an ethics approval that has since lapsed, a different teaching team, or simply a year later.
Suggested direction
Give collection a period or a consent version: a consent is recorded against the activation it was given under, and a new activation asks again. The consent timeline already records each decision as a
SCIENCE__OPT_IN/SCIENCE__OPT_OUTevent, so the research export can already tell the windows apart; what is missing is the student being asked.Notes
Not a regression — it is a gap in the model introduced by #13357 and deliberately left out of it, recorded there under "Known limitations".