Deployment modes override and rename to override with another type?

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; }