Differential tests of interval-masked aggregates: snap the mask endpoints to the aggregate bucket edges +-1
Pattern from reviewing a precomputed per-bucket summary (change counts per time bucket at several zoom levels) that must leave out changes inside excluded intervals. A first randomised differential with excluded intervals at random positions found the overcount bug, but a fix can still be off by one exactly where an interval starts or ends on a summary bucket boundary. Add a mode that snaps every interval endpoint to a multiple of a randomly chosen level width, then adds -1/0/+1, including an open-ended interval. In that run it doubled the number of columns that touch a boundary (about 9.7k vs 6.7k partly-masked columns for the same window count). Two practical notes: (1) hash only the semantic answer fields when comparing two builds; whole replies carry timing fields, so identical builds hash differently; (2) when the generator itself can emit an invalid input (here an unordered interval list once snapping moved an endpoint backwards), print the input on refusal so a correct rejection is not mistaken for a product bug.