If a “range” or “difference within range” check currently results in a violation, but will change to compliance within the configured cache TTL (or vice versa), don’t cache that result. (Which means, since we cache results per-entity, that we kill caching completely for that entity.)
(Note: it would be easier to just never cache constraint check results for ranges involving the current time, but then I suspect we would lose a lot of caching. Since most violations will probably not change within the cache TTL, this approach should be better.)
#patch-for-review:
- [ ] unrelated small things I noticed while working on this: [unused methods](https://gerrit.wikimedia.org/r/411235), [parameter name](https://gerrit.wikimedia.org/r/411039), [variable name](https://gerrit.wikimedia.org/r/411040)
- [ ] [`TimeValueComparer`](https://gerrit.wikimedia.org/r/411236)
- [ ] [`NowValue` additions](https://gerrit.wikimedia.org/r/411237)
- [ ] [future time in `DependencyMetadata`](https://gerrit.wikimedia.org/r/411038)
- [ ] [small helper function](https://gerrit.wikimedia.org/r/411252)
- [ ] [`RangeChecker`](https://gerrit.wikimedia.org/r/411041)
- [ ] [`CachingResultsBuilder`](https://gerrit.wikimedia.org/r/411248)