**Build scan:**
https://gradle-enterprise.elastic.co/s/hdrkqs5hmpp6k/tests/:server:internalClusterTest/org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT/testSeqNoCASLinearizability

**Reproduction line:**
`./gradlew ':server:internalClusterTest' --tests "org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT.testSeqNoCASLinearizability" -Dtests.seed=FF0D42993DBCEB07 -Dtests.locale=es-HN -Dtests.timezone=Chile/Continental -Druntime.java=18`

**Applicable branches:**
8.3

**Reproduces locally?:**
No

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.versioning.ConcurrentSeqNoVersioningIT&tests.test=testSeqNoCASLinearizability

**Failure excerpt:**
```
com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught exception in thread: Thread[id=4099, name=elasticsearch[node_t3][generic][T#3], state=RUNNABLE, group=TGRP-ConcurrentSeqNoVersioningIT]


  Caused by: java.lang.AssertionError: supposedly in-sync shard copy received a global checkpoint [566] that is higher than its local checkpoint [560]

    at __randomizedtesting.SeedInfo.seed([FF0D42993DBCEB07]:0)
    at org.elasticsearch.index.shard.IndexShard.updateGlobalCheckpointOnReplica(IndexShard.java:2760)
    at org.elasticsearch.index.shard.IndexShard.lambda$innerAcquireReplicaOperationPermit$30(IndexShard.java:3537)
    at org.elasticsearch.index.shard.IndexShard$5.onResponse(IndexShard.java:3398)
    at org.elasticsearch.index.shard.IndexShard$5.onResponse(IndexShard.java:3368)
    at org.elasticsearch.index.shard.IndexShard.lambda$asyncBlockOperations$24(IndexShard.java:3319)
    at org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:162)
    at org.elasticsearch.index.shard.IndexShardOperationPermits$1.doRun(IndexShardOperationPermits.java:107)
    at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:769)
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.lang.Thread.run(Thread.java:833)

```
test/framework/src/main/java/org/elasticsearch/test/transport/MockTransportService.java
}
    /**
     * Adds a rule that will cause ignores each send request, simulating an unresponsive node
     * and failing to connect once the rule was added.
     *
     * @param duration the amount of time to delay sending and connecting.
     */
    public void addUnresponsiveRule(TransportAddress transportAddress, final TimeValue duration) {
        final long startTime = System.currentTimeMillis();
        Supplier<TimeValue> delaySupplier = () -> new TimeValue(duration.millis() - (System.currentTimeMillis() - startTime));
        transport().addConnectBehavior(transportAddress, new StubbableTransport.OpenConnectionBehavior() {
            private CountDownLatch stopLatch = new CountDownLatch(1);
            @Override
            public void openConnection(
                Transport transport,
                DiscoveryNode discoveryNode,
                ConnectionProfile profile,
                ActionListener<Transport.Connection> listener
            ) {
                TimeValue delay = delaySupplier.get();
                if (delay.millis() <= 0) {
                    original.openConnection(discoveryNode, profile, listener);
                    return;
                }
                
                TimeValue connectingTimeout = TransportSettings.CONNECT_TIMEOUT.getDefault(Settings.EMPTY);
                try {
                    if (delay.millis() < connectingTimeout.millis()) {
                        stopLatch.await(delay.millis(), TimeUnit.MILLISECONDS);
                        original.openConnection(discoveryNode, profile, listener);