I think i understand the wish to get maximum flexibility in pijul repositories. For exemple with the unespecified order of the patches. But, for simplicity and familiarity, what if:
Or maybe instead of master and slave repositories, we can have:
I was also thinking along these lines, with something like "git bisect" in mind. One issue with the "set of patches" view is that there might be semantic dependencies among patches that pijul doesn't know about because they aren't textual dependencies (e.g. introduce a new function in some file, and then later use it in a different file). The consequence is that arbitrary sets of patches might not be buildable, which would make a "bisect" command hard.
But here's a slightly different idea for solving it: we keep branches as they are and add a new thing called a "history", which is just a sequence of sets of patches. Day-to-day work would be on branches, and the history would be mainly for archival purposes and bisecting.
Maybe, we can have metadata in the patches for the "no textual" dependencies. In other issue i saw mention to that posible metadata. So, when i use a date or position (a la TFS, patch number 443, to say something), all the patches applied before that date or position (including hard dependencies and metadata dependencies) are used. I suppose a patch can't depend on other patch that is not previusly in the stable history. Using positions is convenient for bisecting, more simple user interacion, i think.
I'm skeptical that we could detect non-textual dependencies automatically, since they depend on the semantics of the code in version control.
I don't think the metadata for non textual dependencies can be automatic. But that metadata impose a order in the patches of the history. When i bisect a history (or a branch with stable history), the patches are strictly ordered with dependants after dependencies.
Sorry for being so late to answer to such an important question.
First of all, there is no "official order" in Pijul. A branch is a set of patches, and all possible orders yield the exact same repository.
Now, I also understand the need to refer to a specific position. The issue is, your coauthors may not have all the patchsets you've had in your history. Example with Alice and Bob working together:
One way to send patches with the current version of Pijul is to create a branch (because a branch is a patchset) in a shared location, such as the Nest. Another way could be to add a way in the CLI to create "tag patches". The patch format already allows this.