Deployment modes can change anything (though it's not necessarily recommended).
If it helps, think of it as a single project inheritance tree. If you're in the dev mode, you're consuming external -> system -> core, then whatever dev defines, and then potentially overridden by anything local:
digraph Tree {
rankdir=TB;
node [shape=box];
edge [];
External;
System;
Core;
Dev;
Test;
Prod;
Local;
Actual [label="Loaded Config", style=filled, fillcolor=lightblue];
External -> System;
System -> Core;
Core -> {Dev, Test, Prod};
Dev -> Local;
Local -> Actual;
}
Then if you switch to test you're using a totally different set of resources:
digraph Tree {
rankdir=TB;
node [shape=box];
edge [];
External;
System;
Core;
Dev;
Test;
Prod;
Local;
Actual [label="Loaded Config", style=filled, fillcolor=lightblue];
External -> System;
System -> Core;
Core -> {Dev, Test, Prod};
Test -> Local;
Local -> Actual;
}
And if you started your gateway without a deployment mode, all your modes are ignored:
digraph Tree {
rankdir=TB;
node [shape=box];
edge [];
External;
System;
Core;
Dev;
Test;
Prod;
Local;
Actual [label="Loaded Config", style=filled, fillcolor=lightblue];
External -> System;
System -> Core;
Core -> {Dev, Test, Prod};
Core -> Local;
Local -> Actual;
}