I agree with the raised concern in general.
I'm not sure about details, so I'd like to discuss it here.
1. Combining repos won't be possible in case of on_demand policy.
Sync one remote repo, then change a feed and sync another remote repo into the same pulp repository. I think it's not a very rare use case for a one-time sync
I suggest at least to document alternatives if we are taking this use case from users (e.g. sync into two different pulp repos and then copy into one, original repos can be resynced on a regular basis)
2. Switching from immediate to on_demand when remove_missing is disabled.
Should this case be disallowed? - Likely, yes. The old content is all downloaded, no worries there, but later the same problems can be encountered with on_demand content.
Does Katello switch policies back and forth during a repair of RPM content? Would that feature be affected by this restriction?
3. Importer option remove_missing is disabled by default
on_demand should always use remove_missing=true
If we decide to go with the proposal, I think the remove_missing option should be set explicitly on the importer to avoid confusion that with on_demand policy a default for that option is different.
4. What to do with existing on_demand repos with remove_missing=false?
Keep it as-is but complain during sync that remove_missing should be set. Thoughts?
5. Alternatives.
Pulp can't guarantee that URL (to download the content) is up to date. Even with the remove_missing enabled, there is always a time when a remote repo has been changed but hasn't yet been synced into Pulp. This state is fixed with the upcoming sync.
So alternatively we can document that to fix a repo, one should enable remove_missing on the importer. Downside: the broken state is not fixed automatically. Benefit: old behaviour and use cases are preserved.