Create_arguments vs create_arguments_blob

I’m looking at these changes in 2.6.0 pre-release ledger-api event.proto, for CreatedEvent:

message CreatedEvent {
...
  // The arguments that have been used to create the contract.
  // Set either:
  //   - if there was a party, which is in the ``witness_parties`` of this event,
  //     and for which an ``InclusiveFilters`` exists with the ``template_id`` of this event
  //     among the ``template_ids``,
  //   - or if there was a party, which is in the ``witness_parties`` of this event,
  //     and for which a wildcard filter exists (``Filters`` without ``InclusiveFilters``,
  //     or with an ``InclusiveFilters`` with empty ``template_ids`` and empty ``interface_filters``).
  // Optional
  Record create_arguments = 4;

  // Opaque representation of contract payload intended for forwarding
  // to an API server as a contract disclosed as part of a command
  // submission.
  // Optional
  google.protobuf.Any create_arguments_blob = 12;

I’m just wondering whether these two fields are mutually exclusive? i.e. whether they should be in a OneOf?

Also, will this second field be re-used for upgrades v3?

They are not. Both are typically present; InterfaceFilter is one thing that can turn them off.