Thank you, @donnie.hale! Your example helps a lot in illustrating how our systems are used by real-world teams in their own workflows. And it’s clear that this limitation has an impact for your team. Thank you again for the detailed explanation 
For what it’s worth, I agree that simply allowing an override would make this process a whole lot simpler. For example, this is currently what happens if you try to force a migration on the primary env:

It’s forbidden. Does it have to be? I’m not sure if this the result of some deep philosophical view they have (@mat_jack1 and @m.finamor, any thoughts?) or maybe they were just afraid it’d be a risky footgun…? But maybe allowing that to happen with an override flag/confirmation like --allow-primary-in-place --confirm-dangerous-operation
would be enough…? (I believe that’s what you’re hoping for, right?)
In any case, just so you know how these feature requests work, generally the developers plan new work about every 6 weeks, some of which come from the top-voted feature requests. Not all feature requests get implemented, and of those that do, some of them can take a long time… (as you already see, sorry about that!).
As a support agent, the extent of my powers is to give these a preliminary review, requesting more information where needed, and trying to provide workarounds if possible. Unfortunately, I can’t directly implement this feature for you
That’s a long-winded way of saying, essentially, that there is not yet an ETA for implementation of this feature, as it is not planned work right now. It might take a while, even if it’s chosen for eventual implementation.
However, what I CAN do is try to help provide some workarounds if you need to move ahead on a quicker timeline…? For example, some things we could explore to see if they’d work in your team’s workflow:
-
Just running the migration scripts directly, outside the CLI’s purview. The scripts the CLI generate in the ./migrations
folder are really just simple CMA API commands (see example script) that you can manually run against any environment you like (including the primary). In your build pipelines, you can import our scripts and run them with any params you want by supplying your own client
instance.
-
We could make a simple CI/CD pipeline script (in JS, Bash, probably YAML-based runners too, anything that can execute NPM commands programmatically) that automates the tedious release process of maintenance-fork-migrate-promote-rename-delete by programatically executing the appropriate CLI commands.
-
We could fork the CLI app itself (which is open source) to remove the limitation on primary in-place migrations (and possibly contribute it as a PR back upstream, which would get it merged into the official one if accepted).
None of those are perfect solutions, but they would likely be quicker than waiting for an official implementation of this…? Again, not trying to convince you of any one approach to this – in regards to your “difference in presuppositions about how a CMS fits within an overall application platform” concern – just trying to find a pragmatic way to get this working for you one way or another.
We should definitely leave this feature request in place so the devs can see and further evaluate it (and hopefully implement it), but in the meantime, please let me know if you’d like any help exploring any of the workarounds?