All of what you said seems completely doable to me.
Primarily I want it to comment/annotate changes so peer review focusses on logic and warnings are clear.
You can. See https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
CI_PIPELINE_SOURCE
How the pipeline was triggered. Can be push, web, schedule, api, external, chat, webide, merge_request_event, external_pull_request_event, parent_pipeline, trigger, or pipeline
You have full access to the API and can do whatever you want in the MR too.
I want the ability to specify multiple reusable pipelines, in a central place. This is not possible in cloud.
You can, with CI templates. Templates can be in a completely different repository
Lastly I would like to have multiple potential pipelines in a repository (e.g. smoke test and release).
I do have different pipelines for staging and production in my projects with no issue.
For example I think GitLabs CI is the worst on the market but if you integrate another CI you don't have a means to feedback information into Gitlab.
You can do almost everything with the Gitlab API so I'm curious what issue you had.
I'm also not sure why "Gitlab CI is the worst on the market"? I really like in particular that I can have my own gitlab-runner on any machine.
My understanding is no. You would need account migration. And at the moment kbin or lemmy does not support it?
Only Mastodon seem to support that.
https://joinfediverse.wiki/Moving_instances
For me this is still a big issue to solve. But hopefully will happen at some point.