Dev opens a PR, and CI runs tests, checks if the build passes, code review is done, and the merge is made to main.
All new code on main will generate a new CI and CD, a release for the staging environment, where QA is performed by stakeholders (Dev, QA, Product).
Control of what can be displayed by environment is done through feature flags, basically an if
statement in the code that checks if the feature can be activated or deactivated in environment X (staging | production).