Unserializing large object structures is expensive, and it's bogging down change dispatching on the repo as well as change handling on the client. We should try to reduce the amount of information that needs to be included in change_info.
In particular, the diff object included in the info blob should be replaced by an array structure that contains just the information needed to determine the affected usage aspect on the client wiki. We could even use the aspect codes as keys here:
- L: a list of language codes of labels that were modified by the change (added/removed/replaced). Could also include changes to descriptions, see T101253: [RFC] How to track description usage
- S: a list of site IDs of sitelinks that were modified (added/removed/replaced).
- O (future): a list of property IDs for any Statements that were modified (only needed when we start using qualified aspects to track the usage of individual properties).
See also: T109821: [Task] Avoid unserializing metadata, especially diffs, when processing changes