During review of [I2fb05b9117](https://gerrit.wikimedia.org/r/397594/) (or perhaps [I1433ea7e32](https://gerrit.wikimedia.org/r/396408/), not sure), Jonas pointed out that it’s a bit strange to see words like “cache” pop up in `CheckingResultsBuilder`, which shouldn’t know anything about caching. After some discussion, we agreed on some changes we wanted to make – we wanted to do the necessary refactorings in a pair session, but didn’t find the time. In short, what’s currently called `CachingMetadata` should be split up, and all associated classes renamed to remove the “cache” from the name; and there could also be a `ConstraintReport` class, which would be a list of `CheckResult`s plus their merged metadata, and perhaps `DelegatingConstraintChecker` would be changed to return that and renamed to something like `ConstraintreportBuilder` (though I don’t think we reached an agreement on this). See the subtasks for details.
---
- Split up `CachingMetadata` into generic metadata (depended entity IDs) and information about how the value was cached (max age). The generic object contains the caching-specific one and has a `merge` method, so most of the places where `CachingMetadata` is currently passed around don’t have to change much, except for the rename. All the containers (`CachedBool` etc.) are also renamed to remove the “cache” from their names.
- Introduce a `ConstraintReport` class, which is a list of `CheckResult`s, along with their merged metadata. It’s not yet entirely clear where it will appear – perhaps what’s currently called `DelegatingConstraintChecker` will return it, and then perhaps be renamed to `ConstraintReportBuilder`.
Did I forget anything important?