Sending and updating a patch / MR

(1) Opening a merge request / patch

In the current representation I’m using for patches and Merge Requests, there’s an OrderedCollection containing the patch versions. So each time you update a patch, or git-push into your MR’s source branch, a new version is added to the list. Listing the versions is needed for clients to be able to display them, and for servers to support federation of e.g. comments on code review of pieces of code from the different versions.

However, when opening a new MR/patch, obviously there’s just one version, so I’m thinking, instead of the OrderedCollection with one item, we could have just the Patch object itself. Thoughts?

Representation of MR:

{ "@context": [ ... ],
  "id": "https://dev.example/alice/objects/34583485354",
  "type": "Ticket",
  "attributedTo": "https://dev.example/alice",
  "context": "https://forge.example/bob/coolBobRepo",
  "summary": "Fix the bug bla bla bla",
  "content": "This MR should fix issue #54 etc. etc.",
  "replies": "https://dev.example/alice/objects/34583485354/replies",

  "attachment": {
    "type": "Offer",
    "origin": "https://dev.example/alice/coolBobRepo/branches/bug54",
    "target": "https://forge.example/bob/coolBobRepo/branches/master",
    "object": {
      "type": "OrderedCollection",
      "totalItems": 1,
      "orderedItems": [
        { "id": "https://dev.example/alice/objects/34583485354/ver1",
          "type": "Patch",
          "attributedTo": "https://dev.example/alice",
          "mediaType": "application/x-darcs-patch",
          "content": "...",
          "replies": "https://dev.example/alice/objects/34583485354/ver1/replies"
        }
      ]
    }
  }
}

When submitting a new MR, e.g. using a Create activity, instead of the OrderedCollection what if we put just a Patch object? Like this:

{ "@context": [ ... ],
  "type": "Create",
  "actor": "https://dev.example/alice",
  "object": {
    "type": "Ticket",
    "attributedTo": "https://dev.example/alice",
    "context": "https://forge.example/bob/coolBobRepo",
    "summary": "Fix the bug bla bla bla",
    "content": "This MR should fix issue #54 etc. etc.",

    "attachment": {
      "type": "Offer",
      "origin": "https://dev.example/alice/coolBobRepo/branches/bug54",
      "target": "https://forge.example/bob/coolBobRepo/branches/master",
      "object": {
            "id": "https://dev.example/alice/objects/34583485354/ver1",
            "type": "Patch",
            "attributedTo": "https://dev.example/alice",
            "mediaType": "application/x-darcs-patch",
            "content": "..."
      }
    }
  }
}

Possibility: Support both options i.e. object can be either a Patch as above, or an OrderedCollection with one Patch item.

(2) Uploading a new version

Which AP activity to use for uploading a new version of a patch? There’s the Update activity, which may sound nice because you’re indeed updating your patch, but in terms of the actual AS2 representation, you aren’t really updating: You’re adding a new version. Because the representation has a separate ID URI for each version. So you’re adding.

How about Add where object is a Patch and target is the ID URI of the OrderedCollection (or perhaps the ID URI of the Ticket?)

(As follow-up to my Creating a ticket dependency feedback, here an Offer does make perfect sense.)