drainInvalidations

Removes and returns queued state invalidations after ancestor compaction.

Draining does not make scopes clean; the next root composition consumes their dirty state.

Return

invalidated scopes in effective insertion order, excluding covered descendants