See the decisions in T328032#8936008.
===Acceptance criteria===
- An individual participant's answer must be aggregated after 90 days from first answer
- All remaining unaggregated answers must be aggregated when the event ends
- All answers must be deleted after aggregation
- After aggregation and deletion, the relevant records in the ce_participants table should be updated with the aggregation timestamp (`ce_participants.cep_aggregation_timestamp`)
- The logic should be implemented in a dedicated service, like QuestionAggregationStore.
- A maintenance script should be written that uses that service to aggregate/delete answers.
- The script should be documented in the [[https://www.mediawiki.org/wiki/Extension:CampaignEvents | extension's manual]].
**TBD** Open question: how exactly should the aggregation be triggered when the event ends? Is it OK to wait until the next periodic run of the script (and maybe show a message in the interface), or should it happen on the fly (when? what about performance?)?