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
Iterators::single,
                (builder, params) -> builder.endObject()
            ),
            
            chunkedSection(
                metrics.contains(Metric.NODES),
                (builder, params) -> builder.startArray("nodes_versions"),
                compatibilityVersions.entrySet().iterator(),
                e -> Iterators.single((builder, params) -> {
                    builder.startObject().field("node_id", e.getKey());
                    e.getValue().toXContent(builder, params);
                    return builder.endObject();
                }),
                (builder, params) -> builder.endArray()
            ),
            
            metrics.contains(Metric.METADATA) ? metadata.toXContentChunked(outerParams) : Collections.emptyIterator(),
            
            chunkedSection(
                metrics.contains(Metric.ROUTING_TABLE),
                (builder, params) -> builder.startObject("routing_table").startObject("indices"),
                routingTable().iterator(),
                indexRoutingTable -> {
                    Iterator<Iterator<ToXContent>> input = Iterators.forRange(0, indexRoutingTable.size(), shardId -> {
                        final var indexShardRoutingTable = indexRoutingTable.shard(shardId);
                        return Iterators.concat(
                            Iterators.single(
                                (builder, params) -> builder.startArray(Integer.toString(indexShardRoutingTable.shardId().id()))
                            ),
                            Iterators.forRange(