Three guards, each silent when nothing is at stake:
- settings: show reads a layer; set says what it adds, changes and removes, refuses a removal
without --replace, and keeps the layer it replaced (settings_history, migration 0057).
- push: plan --diff compares with what the machine was last sent, now kept as a summary that holds
no file content; push with no machine needs --all.
- a running container whose mount would point at another directory holds that machine's push
until --move names the module; the other machines go ahead.