Hi,
Unfortunately this is expected to behave differently for everyone, host or role filters should be additive, or subtractive; there is no "correct behaviour"
I encourage you to engineer your recipes to use servers_for_role() when you need to bypass filters that filter out too much, and to avoid engineering your recipes to rely on host/role specific configuration.
Configuration file management is better served with Chef, Puppet, BOSH or similar [1].
If steps 1&3 were about making a "Deployment in progress" page, You can do that with try_files (NGinx directive), and upload a maintenance message, removing it when you are done, `cap web:disable` does this (and might be removed, depending which version you are using)
--