Once https://github.com/elastic/elasticsearch/issues/98503 is done, we can use our minimum version numbers in the SystemIndexMappingUpdate service instead of the old `Version` types. Mappings will be updated for a system index when all nodes have a matching descriptor mappings version for a system index, but this version is greater than what's stored in the mappings metadata.
server/src/main/java/org/elasticsearch/indices/SystemIndexMappingUpdateService.java
this.systemIndices = systemIndices;
        this.client = client;
        this.isUpgradeInProgress = new AtomicBoolean(false);
    }
    @Override
    public void clusterChanged(ClusterChangedEvent event) {
        final ClusterState state = event.state();
        if (state.blocks().hasGlobalBlock(GatewayService.STATE_NOT_RECOVERED_BLOCK)) {
            
            
            logger.debug("Waiting until state has been recovered");
            return;
        }
        
        if (state.nodes().isLocalNodeElectedMaster() == false) {
            return;
        }
        
        if (state.nodes().getMaxNodeVersion().after(state.nodes().getSmallestNonClientNodeVersion())) {
            logger.debug("Skipping system indices up-to-date check as cluster has mixed versions");
            return;
        }
        if (isUpgradeInProgress.compareAndSet(false, true)) {
            
            
            try (var refs = new RefCountingRunnable(() -> isUpgradeInProgress.set(false))) {
                for (SystemIndexDescriptor systemIndexDescriptor : getEligibleDescriptors(state.getMetadata())) {
                    UpgradeStatus upgradeStatus;
                    try {
                        upgradeStatus = getUpgradeStatus(state, systemIndexDescriptor);