### CI Link

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

### Repro line

./gradlew ':x-pack:plugin:core:test' --tests "org.elasticsearch.xpack.core.ml.job.config.JobUpdateTests.testMergeWithJob" -Dtests.seed=574F3B6BEFEFE6BA -Dtests.locale=ar-DZ -Dtests.timezone=Universal -Druntime.java=20

### Does it reproduce?

Yes

### Applicable branches

main

### Failure history

_No response_

### Failure excerpt

```
org.elasticsearch.xpack.core.ml.job.config.JobUpdateTests > testMergeWithJob FAILED
    java.lang.IllegalArgumentException: Cannot convert 8.11.0. Incompatible version
        at __randomizedtesting.SeedInfo.seed([574F3B6BEFEFE6BA:691D63E8F460F0FE]:0)
        at org.elasticsearch.xpack.core.ml.MlConfigVersion.fromVersion(MlConfigVersion.java:274)
        at org.elasticsearch.xpack.core.ml.job.config.JobUpdateTests.testMergeWithJob(JobUpdateTests.java:296)
```

With all these "versions" that we have now decoupled from transport version or node version, we need to ensure that all get bumped when a version bump occurs. There are too many of these things to not catch them in CI in a version bump for a cut release.
x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/job/config/JobUpdateTests.java
assertThat(updated.getAnalysisLimits().getModelMemoryLimit(), equalTo(2048L));
        assertThat(updated.getAnalysisLimits().getCategorizationExamplesLimit(), equalTo(5L));
        JobUpdate updateAboveMaxLimit = new JobUpdate.Builder("foo").setAnalysisLimits(new AnalysisLimits(8000L, null)).build();
        Exception e = expectThrows(
            ElasticsearchStatusException.class,
            () -> updateAboveMaxLimit.mergeWithJob(jobBuilder.build(), new ByteSizeValue(5000L, ByteSizeUnit.MB))
        );
        assertEquals(
            "model_memory_limit [7.8gb] must be less than the value of the xpack.ml.max_model_memory_limit setting [4.8gb]",
            e.getMessage()
        );
        updateAboveMaxLimit.mergeWithJob(jobBuilder.build(), new ByteSizeValue(10000L, ByteSizeUnit.MB));
    }
    public void testUpdate_givenEmptySnapshot() {
        Job.Builder jobBuilder = new Job.Builder("my_job");
        Detector.Builder d1 = new Detector.Builder("count", null);
        AnalysisConfig.Builder ac = new AnalysisConfig.Builder(Collections.singletonList(d1.build()));
        jobBuilder.setAnalysisConfig(ac);
        jobBuilder.setDataDescription(new DataDescription.Builder());
        jobBuilder.setCreateTime(new Date());
        jobBuilder.setModelSnapshotId("some_snapshot_id");
        Job job = jobBuilder.build();
        assertThat(job.getModelSnapshotId(), equalTo("some_snapshot_id"));
        JobUpdate update = new JobUpdate.Builder(job.getId()).setModelSnapshotId(ModelSnapshot.emptySnapshot(job.getId()).getSnapshotId())
            .build();
        Job updatedJob = update.mergeWithJob(job, ByteSizeValue.ofMb(100));
        assertThat(updatedJob.getModelSnapshotId(), is(nullValue()));
    }
}