code: func ensureMonotonic(buckets buckets) {
  	max := buckets[0].count
  	for i := range buckets[1:] {
  		switch {
  		case buckets[i].count > max:
  			max = buckets[i].count
  		case buckets[i].count < max:
  			buckets[i].count = max
  		}
  	}
  }
docs: // The assumption that bucket counts increase monotonically with increasing
  // upperBound may be violated during:
  //
  //   * Recording rule evaluation of histogram_quantile, especially when rate()
  //      has been applied to the underlying bucket timeseries.
  //   * Evaluation of histogram_quantile computed over federated bucket
  //      timeseries, especially when rate() has been applied.
  //
  // This is because scraped data is not made available to rule evaluation or
  // federation atomically, so some buckets are computed with data from the
  // most recent scrapes, but the other buckets are missing data from the most
  // recent scrape.
  //
  // Monotonicity is usually guaranteed because if a bucket with upper bound
  // u1 has count c1, then any bucket with a higher upper bound u > u1 must
  // have counted all c1 observations and perhaps more, so that c  >= c1.
  //
  // Randomly interspersed partial sampling breaks that guarantee, and rate()
  // exacerbates it. Specifically, suppose bucket le=1000 has a count of 10 from
  // 4 samples but the bucket with le=2000 has a count of 7 from 3 samples. The
  // monotonicity is broken. It is exacerbated by rate() because under normal
  // operation, cumulative counting of buckets will cause the bucket counts to
  // diverge such that small differences from missing samples are not a problem.
  // rate() removes this divergence.)
  //
  // bucketQuantile depends on that monotonicity to do a binary search for the
  // bucket with the φ-quantile count, so breaking the monotonicity
  // guarantee causes bucketQuantile() to return undefined (nonsense) results.
  //
  // As a somewhat hacky solution until ingestion is atomic per scrape, we
  // calculate the "envelope" of the histogram buckets, essentially removing
  // any decreases in the count between successive buckets.