PR #236 added the mls_proposals tag to key package events (per MIP-00), signaling supported proposal types like SelfRemove (0x000a). During the transition period, we intentionally made this tag optional in validation, older key packages published before #236 don't include it, and requiring it would make them invalid.
Currently:
- Emitting: All new key packages include mls_proposals with ["0x000a"]
- Validation: Format is checked when the tag is present, but presence is not required
After a sufficient transition period, make mls_proposals a required tag in validate_key_package_tags. This ensures all key packages in circulation advertise their proposal type support, enabling clients to check compatibility before adding a member to a group.
Acceptance criteria
- validate_key_package_tags requires mls_proposals tag (move from optional if let to require())
- Validation confirms 0x000a (SelfRemove) is present in the tag values
- Existing tests updated for the new requirement
- Consider adding a test that verifies key packages without mls_proposals are rejected
When to do this
Once we're confident that the vast majority of published key packages in the wild include the tag.
PR #236 added the mls_proposals tag to key package events (per MIP-00), signaling supported proposal types like SelfRemove (0x000a). During the transition period, we intentionally made this tag optional in validation, older key packages published before #236 don't include it, and requiring it would make them invalid.
Currently:
After a sufficient transition period, make mls_proposals a required tag in validate_key_package_tags. This ensures all key packages in circulation advertise their proposal type support, enabling clients to check compatibility before adding a member to a group.
Acceptance criteria
When to do this
Once we're confident that the vast majority of published key packages in the wild include the tag.