### CI Link

https://gradle-enterprise.elastic.co/s/j3ajt4vzqybxs

### Repro line

gradlew ':x-pack:plugin:spatial:internalClusterTest' --tests "org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.testGeoShapeGeoHex" -Dtests.seed=67641D5B7DA4755B -Dtests.locale=en-IN -Dtests.timezone=Canada/Saskatchewan -Druntime.java=17 -Dtests.fips.enabled=true

### Does it reproduce?

No

### Applicable branches

main

### Failure history

_No response_

### Failure excerpt

The test in CI link above doesn't repro for me but I did run the test with multiple iterations. After around 250 of them, one failed for me:

```
REPRODUCE WITH: gradlew ':x-pack:plugin:spatial:internalClusterTest' --tests "org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.testGeoShapeGeoHex {seed=[3478FF74E8D66BB6:A2F98EBD906145BB]}" -Dtests.seed=3478FF74E8D66BB6 -Dtests.locale=sr-RS -Dtests.timezone=Europe/Luxembourg -Druntime.java=19

org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT > testGeoShapeGeoHex {seed=[3478FF74E8D66BB6:A2F98EBD906145BB]} FAILED
    java.lang.AssertionError: Expected hits at precision 15
    Expected: <3L>
         but: was <4L>
        at __randomizedtesting.SeedInfo.seed([3478FF74E8D66BB6:A2F98EBD906145BB]:0)
        at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
        at org.junit.Assert.assertThat(Assert.java:956)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.assertQuery(GeoGridAggAndQueryConsistencyIT.java:224)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.doTestGrid(GeoGridAggAndQueryConsistencyIT.java:215)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.doTestGeohexGrid(GeoGridAggAndQueryConsistencyIT.java:124)
        at org.elasticsearch.xpack.spatial.search.GeoGridAggAndQueryConsistencyIT.testGeoShapeGeoHex(GeoGridAggAndQueryConsistencyIT.java:92)
```
x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/common/H3CartesianGeometry.java
boolean bc,
            double cX,
            double cY,
            boolean ca
        ) {
            if (Component2D.disjoint(getMinX(), getMaxX(), getMinY(), getMaxY(), minX, maxX, minY, maxY)) {
                return WithinRelation.DISJOINT;
            }
            
            
            if (contains(aX, aY) || contains(bX, bY) || contains(cX, cY)) {
                return WithinRelation.NOTWITHIN;
            }
            WithinRelation relation = WithinRelation.DISJOINT;
            
            
            
            if (crossesLine(minX, maxX, minY, maxY, aX, aY, bX, bY, true)) {
                if (ab) {
                    return WithinRelation.NOTWITHIN;
                } else {
                    relation = WithinRelation.CANDIDATE;
                }
            }
            if (crossesLine(minX, maxX, minY, maxY, bX, bY, cX, cY, true)) {
                if (bc) {
                    return WithinRelation.NOTWITHIN;
                } else {
                    relation = WithinRelation.CANDIDATE;
                }