Builtin Library
README.md
zm.prCreate
Send your changes to installed content upstream, as zm pr create does. For each origin world your installed content came from, the files you changed are three-way merged against the origin's current content (a region the origin changed too becomes a local conflict to resolve first), pushed as a branch in the origin world, and opened there as a pull request, which stays open: merge is opt-in ({ merge = true } merges it as it opens when you may merge there; where you may not, it stays open and its outcome's detail names the refusal), and zm.prMerge merges. A root whose pull request is still open is not sent again: its outcome names that pull request (status = "open", pr_number, branch) and says edits made after it opened are not added to it; once it is merged or closed, zm.prCreate sends the root afresh.
It returns an array of outcomes: for each origin world, one for the roots sent as a new pull request, and one open entry per distinct open contribution that holds back some of its roots (each names its pull request and only its own paths). status is open unless merged.
zm.prCreate() sends every installed asset that is ahead of its upstream; zm.prCreate({ "/source/Doom.component" }) sends the named install roots. zm.status lists what is ahead and zm diff <root> upstream shows the changes. { dryRun = true } reports the plan without sending anything.