This gist shows that the compartment module map doesn't have to be deterministic.
On each subsequent run, the module map resolves to different modules depending on the current seconds on the clock.
Example of executing the same code without recompile before the second run:
$ mcconfig -m -d
# xsc main.xsb
# xsl modules
# cc mc.xs.c
# ld mc.so
Current date Thu Jan 23 2020 18:58:08 GMT-0800
Current seconds 8
even
$ mcconfig -m -d
Current date Thu Jan 23 2020 18:58:13 GMT-0800
Current seconds 13
odd