я, однако, веду речь конкретно про циклы. и ассерт после цикла — это тупо копипаста сторожей. соответственно, он или никогда не сработает, или сломается вместе с циклом (или останется с неправильными сторожами после правок). то есть, с правильными циклами такой ассерт проверят и гарантирует ровно ничего.

в некоторых случаях, впрочем, его имеет смысл писать, если цикл сложный (хотя это уже code smell) — просто в качестве упрощённой документации по ожидаемым результатам.

я же фигачил такие ассерты по правилу: «чем больше сдадим — тем лучше!» а это и читать мешает, и показывает злоупотребление всякими break, которые нарушают читаемость.

как-то вот так.