Assume P is the lower left corner of a geohash. We hash and unhash the point in the following way.
Due to the floating-point accuracy, p != p_approx. As a result, it is possible that the box unhash(hash(p)) doesn't contain p. The following script gives an example.
In the above example, the point is outside the box of its geohash, so with a carefully constructed query, the covering of the query contains that document but doesn't intersect with the box of geohash. Thus the covering will exclude the GeoHash that contains the document and return no documents.
To guarantee the point is alway contained by the box of its GeoHash, we should expand the box by a small error bound when unhashing geohash to box. Since the unhashed boxes are only used by the following the functions, expanding the box will keep the same contract.
This regression bug is introduced by the covering of 2d shapes in 2.7.