Original text:
process the Commit (i.e., not including any members being added or removed by the Commit). <del> If there are multiple proposals that apply to the same leaf, the committer chooses one and includes only that one in the Commit, considering the rest invalid.  The committer MUST NOT include any Update proposals generated by the committer, since they would be duplicative with the "path" field in the Commit.  The committer MUST prefer any Remove received, or the most recent Update for the leaf if there are no Removes.  If there are multiple Add proposals containing KeyPackages that the committer considers to represent the same client or a client already in the group (for example, identical KeyPackages or KeyPackages sharing the same Credential), the committer again chooses one to include and considers the rest invalid.  The committer MUST consider invalid any Add or Update proposal if the Credential in the contained KeyPackage shares the same signature key with a Credential in any leaf of the group, or if the KeyPackage shares the same "hpke_init_key" with another KeyPackage in the group. </del>  The Commit MUST NOT combine proposals sent within different epochs. Due to the asynchronous nature of proposals, receivers of a Commit using the public key from the credential stored at the leaf in the tree indicated by the "sender" field. <del> Verify that all PSKs specified in any PreSharedKey proposals in the "proposals" vector are available. </del>  Generate the provisional ratchet tree and GroupContext by applying the proposals referenced in the initial Commit object, as

Reviewer comments:
As discussed in , PreSharedKeyIDs shouldn't be repeated in the same commit
Should multiple PSK proposals within a commit be able to reference the same ? I feel like this should be covered in the same way we state multiple removals for the same should result in the committer choosing one. Wasn't sure if this was an oversight or on purpose. I can submit a PR to clarify if this is something that should be addressed
I agree, duplicates are an error. Committer MUST NOT include duplicates; receiver MUST reject Commit with duplicates. NAME - Please send a PR!

Revised text:
process the Commit (i.e., not including any members being added or removed by the Commit).  <ins> If there are multiple proposals that apply to the same leaf, or multiple PreSharedKey proposals that reference the same PreSharedKeyID, the committer MUST choose one and include only that one in the Commit, considering the rest invalid.  The committer MUST NOT include any Update proposals generated by the committer, since they would be duplicative with the "path" field in the Commit.  The committer MUST prefer any Remove received, or the most recent Update for the leaf if there are no Removes.  If there are multiple Add proposals containing KeyPackages that the committer considers to represent the same client or a client already in the group (for example, identical KeyPackages or KeyPackages sharing the same Credential), the committer again chooses one to include and considers the rest invalid.  The committer MUST consider invalid any Add or Update proposal if the Credential in the contained KeyPackage shares the same signature key with a Credential in any leaf of the group, or if the KeyPackage shares the same "hpke_init_key" with another KeyPackage in the group. </ins> The Commit MUST NOT combine proposals sent within different epochs. Due to the asynchronous nature of proposals, receivers of a Commit using the public key from the credential stored at the leaf in the tree indicated by the "sender" field.  <ins> Verify that all PreSharedKey proposals in the "proposals" vector have unique PreSharedKeyIDs and are available. </ins> Generate the provisional ratchet tree and GroupContext by applying the proposals referenced in the initial Commit object, as