By the way, as a followup, we can do even better and iterate a bit more:
Today each file by itself can be 'correct' but you still have a corrupt index because the files are mismatched somehow (network replication, or some other bug).
it might be worth thinking about reviving segmentinfo.attributes (thats cleanest i think), or put in files map directly (would be harder as it enforces files have checksums). We could store each files checksum there, and when we retrieve it here, validate against that attribute. This would detect mismatching.
Ideally though we'd do this for the commit too (for deletes and dv updates).
Anyway just something to explore on another issue if we can do it without creating a mess. I don't like how we cant detect such mismatching today (except via very rudimentary checks like livedocs.length = maxdoc etc).