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/cluster/ClusterState.java
public static final TransportVersion INFERRED_TRANSPORT_VERSION = TransportVersions.V_8_8_0;
    private static TransportVersion inferTransportVersion(DiscoveryNode node) {
        TransportVersion tv;
        if (node.getVersion().before(Version.V_8_8_0)) {
            
            tv = TransportVersion.fromId(node.getVersion().id);
        } else {
            
            tv = INFERRED_TRANSPORT_VERSION;
        }
        return tv;
    }
    @Override
    public void writeTo(StreamOutput out) throws IOException {
        clusterName.writeTo(out);
        out.writeLong(version);
        out.writeString(stateUUID);
        metadata.writeTo(out);
        routingTable.writeTo(out);
        nodes.writeTo(out);
        if (out.getTransportVersion().onOrAfter(TransportVersions.V_8_8_0)) {
            out.writeMap(compatibilityVersions, (streamOutput, versions) -> versions.writeTo(streamOutput));
        }
        blocks.writeTo(out);
        VersionedNamedWriteable.writeVersionedWritables(out, customs);
        if (out.getTransportVersion().before(TransportVersions.V_8_0_0)) {
            out.writeVInt(-1); 
        }
    }
    private static class ClusterStateDiff implements Diff<ClusterState> {