Skip to content

Releases: world-federation-of-advertisers/cross-media-measurement

v0.5.2-rc1

18 Apr 18:17
440b6f2
Compare
Choose a tag to compare
v0.5.2-rc1 Pre-release
Pre-release

Starting with these release, scanning alerts for container image vulnerabilities should appear in GitHub Security.

Highlights

  • Closed #1544
  • Closed #1553
  • Various performance improvements for Reporting API operations.
  • Updated Java base images.
  • More detailed errors from many Kingdom public API services (ongoing).

Potentially Requiring Action

  • CMMS instances may define a set of known EventGroup metadata types that are shared between components and integrators. These are the only EventGroup metadata types that can be used by multiple DataProviders. See #1512
    • The Kingdom internal API server and the Reporting v1 and v2 public API servers have a new --known-event-group-metadata-type option for specifying a FileDescriptorSet for these known metadata types.

What's Changed

Read more

v0.5.1

29 Feb 22:29
f7e1391
Compare
Choose a tag to compare

This is a bug fix release that primarily affects the configuration for running the Measurement correctness test.

Bugs Fixed

  • Dev release workflow does not complete.
  • Variance is NaN when reach is small (#1498)

Performance Optimizations

  • Only generate synthetic events within specified time range (#1488)
  • Refactor SubmitBatchRequests to use Coroutines (#1467)

What's Changed

  • Add UI features from Demo work by @bdomen-ggl in #1495
  • Fix simulator service account not being created for GKE. by @SanjayVas in #1501
  • Output uniformly random guess at frequency distribution when reach is too small by @riemanli in #1498
  • Specify auto_minor_version_upgrade = false for AWS Postgres DB. by @SanjayVas in #1504
  • Update HMSS stages. Revert Duchy ControlService into Blob-Only Pattern. by @renjiezh in #1476
  • Increase heap size for dev requisition fulfillment server. by @SanjayVas in #1503
  • Only generate synthetic events within specified time range. by @SanjayVas in #1488
  • Increase work lock duration for dev LLv2 mills. by @SanjayVas in #1507
  • Increase test timeout for K8s test workflow. by @SanjayVas in #1505
  • Refactor SubmitBatchRequests to use Coroutines by @tristanvuong2021 in #1467
  • Drop worker2 Duchy and BigQuery vars from gcloud testing Terraform. by @SanjayVas in #1493
  • Fix configure-simulators workflow not setting google_cloud_project. by @SanjayVas in #1508

Full Changelog: v0.5.0...v0.5.1

v0.5.0

23 Feb 19:07
9b4d26d
Compare
Choose a tag to compare

Known Issues

  • The dev K8s configuration for the synthetic generator EDP simulator on GKE has an error. This is fixed in #1501

Highlights

  • Reporting v2 is no longer considered a preview. It includes some new features.
    • Report scheduling. See #1234
    • MetricCalculationSpec as a reusable resource type. See #1278
    • Reuse of existing Metric resources during Report creation. See #1347
    • Improved performance using batch methods when calling the CMMS API.
    • Tagging support for some API resources.
    • Metric variance information (to support features such as displaying error bars).
  • The Duchy component can now be run on AWS EKS. See the deployment guide.
  • There is a new guide covering leaf certificate and encryption key rotation.
  • gRPC log entries now include a trace ID when metrics instrumentation is enabled. See #766
    • This can be used to trace calls across servers.
  • Structured logging for Java is now supported on GKE. See #762
    • Google Cloud Logging will now show one entry per Java log entry (as opposed to one entry per line) and have the appropriate severity.
  • Arbitrary event message types are now supported by the EDP simulator. See #1327
  • The EDP simulator supports creation of multiple EventGroups. See #1424
  • The MeasurementSystem CLI supports creation of Measurements with type REACH. See #1254

Bugs Fixed

Potentially Requiring Action

  • Incompatible database schema and API changes have been made to Reporting v2.
    • Users of the previous preview release will need to wipe their databases before upgrading.
  • K8s Workload Identity service account creation for GKE has been moved from Terraform to K8s object configuration. See #1324
  • The --event-group-spec option of SyntheticGeneratorEdpSimulatorRunner is now a key-value pair of EventGroup reference ID suffix to SyntheticEventGroupSpec file path. This can be specified multiple times. See #1424
  • The BigQuery-backed EDP simulator now uses UK pilot event templates. See #1491
  • CLI tool options have changed.

CMMS Public API Changes

The cross-media-measurement-api dependency has been updated to 0.56.0. See world-federation-of-advertisers/cross-media-measurement-api@v0.43.0...v0.56.0 for the full list of changes.

  • Signatures and certificates for public key fields have been removed where not needed by the consent signaling protocol. See world-federation-of-advertisers/cross-media-measurement-api#187
    • measurement_consumer_certificate in EventGroup has been removed.
    • measurement_consumer_public_key in EventGroup no longer contains a signature.
    • data_provider_public_key in Measurement.DataProviderEntry.Value no longer contains a signature.
    • data_provider_public_key in Requisition no longer contains a signature.
  • Serialized messages now include type URLs. See world-federation-of-advertisers/cross-media-measurement-api#185
    • measurement_consumer_public_key in EventGroup now has type google.protobuf.Any.
      • The old version of this field has been marked as deprecated and is now called signed_measurement_consumer_public_key.
    • data_provider_public_key in Measurement.DataProviderEntry.Value now has type google.protobuf.Any.
    • data_provider_public_key in Requisition now has type google.protobuf.Any.
      • The old version of this field has been marked as deprecated and is now called signed_data_provider_public_key.
    • exchange_workflow in RecurringExchange now has type google.protobuf.Any.
    • serialized_exchange_workflow in ExchangeStep has been replaced with exchange_workflow having type google.protobuf.Any.
    • serialized_measuirement_public_key in MeasurementSpec is deprecated in favor of measurement_public_key having type google.protobuf.Any
      • This field is required for new requests.
    • data_provider_public_key in Requisition now has type google.protobuf.Any.
      • The old version of this field has been marked as deprecated and is now called signed_data_provider_public_key.
    • measurement_public_key in RequisitionSpec now has type google.protobuf.Any.
      • The old version of this field has been marked as deprecated and is now called serialized_measurement_public_key.
    • The SignedData type in the CMMS public API has been renamed to SignedMessage. This is wire-compatible change.
      • This has a new signature_algorithm_oid field.
        • Signers should populate this field.
        • Verifiers must respect this field if populated.
    • Fields of type bytes holding encrypted data now use the EncryptedMessage type instead.
      • encrypted_requisition_spec in Requisition now has type EncryptedMessage.
        • The old version of this field has been marked as deprecated and is now called encrypted_requisition_spec_ciphertext.
      • encrypted_data in FulfillDirectRequisitionRequest has been replaced by encrypted_result having type EncryptedMessage.
        • The old version of this field has been marked as deprecated and is now called encrypted_result_ciphertext.
      • encrypted_metadata in EventGroup now has type EncryptedMessage.
        • The old version of this field has been marked as deprecated and is now called serialized_encrypted_metadata.
  • FulfillDirectRequisitionRequest has a new certificate field.
    • Callers should begin setting this field, as it will be required in the future.
  • FulfillRequisitionRequest has a new protocol_config field.
    • Callers should begin setting this field, as it will be required in the future.
  • DataProvider and EventGroup have a new data_availability_interval field to indicate the range for which data is guaranteed to be available. See world-federation-of-advertisers/cross-media-measurement-api#175
    • There is a new ReplaceDataAvailabilityInterval method for updating this on DataProvider resources.
    • DataProviders should start specifying and updating these fields. They are currently only used by the Report v2 scheduling feature, but will be required in the future.
  • Unsupported fields have been removed from ListExchangeStepsRequest.Filter. See world-federation-of-advertisers/cross-media-measurement-api#180
  • ClaimReadyExchangeStepRequest has a new required parent field. See world-federation-of-advertisers/cross-media-measurement-api#142
  • The data_provider and model_provider fields have been removed from ClaimReadyExchangeStepRequest. See world-federation-of-advertisers/cross-media-measurement-api#142
  • The deprecated event_groups field in RequisitionSpec is no longer set by Halo software. See #1277
  • maximum_frequency in MeasurementSpec.ReachAndFrequency must be at least 1. See #1276

What's Changed

Read more

v0.4.4

21 Feb 18:11
4d1a154
Compare
Choose a tag to compare

This is a bug fix release for panel exchange.

What's Changed

Full Changelog: v0.4.3...v0.4.4

v0.4.3

26 Jan 23:35
0bc77f4
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.4.2...v0.4.3

v0.4.2

v0.4.1

11 Oct 21:24
Compare
Choose a tag to compare

This is a bug fix release.

What's Changed

  • Fix Mill infinite retry if Computation is already failed. (#1238) c32fe55
  • Fix the bug in the llv2 that inflates the reach when maximum_frequency = 1. (#1257) 867222c
  • Fix ConfirmComputationParticipant checking the status of non-participant Duchies. (#1272) fd8fe88

Full Changelog: v0.4.0...v0.4.1

v0.4.0

21 Sep 17:18
24deb7d
Compare
Choose a tag to compare

See the guide for updating to a new release.

Highlights

  • A new preview Reporting system implementation is available which supports v2 of the Reporting API. See the deployment guide.
    • Note that the v2 Reporting system uses a separate database schema, so there is no way to migrate existing data from an existing v1 instance.
    • This is a preview. There may still be API and database changes, meaning that in-place updates may not be supported.
  • There is a new Reach-Only Liquid Legions v2 protocol which should result in a ~7x improvement over the existing Reach and Frequency Liquid Legions v2 protocol for REACH Measurements.
    • This requires changes to EDP requisition fulfillment. See the enablement guide.
  • Example Terraform configurations have been added for the Kingdom and Duchy, which are referenced from their respective deployment guides.
  • Gaussian noise and ACDP composition in PBM are now supported, which should allow 2x the queries for the same privacy budget.
  • There is a new CLI tool for validating event templates.
  • EDP simulators now support synthetic data specifications.
  • The cross-media-measurement-api dependency has been updated to 0.43.0

Bug Fixes

  • Some pods were not having their metrics exported. Fixed by #1140
  • Negations in event filters were not being properly handled in the reference Privacy Budget Manager implementation. See #1132
  • Computations involving a subset of all Duchies would fail. See #1194
  • UpdatePublicKey was not actually updating the certificate. See #1209
  • GetDataProvider and GetMeasurementConsumer could return the incorrect certificate. See #1215

Potentially Requiring Action

  • Options for methodologies and noise mechanisms are now specified in ProtocolConfig.Direct, with the corresponding selections specified in Measurement.Result. See world-federation-of-advertisers/cross-media-measurement-api#163
    • EDPs must respect these when fulfilling requisitions.
    • EDPs should indicate their choices in Measurement.Result. This will be enforced in the future.
  • The event_groups field in RequisitionSpec has been marked as deprecated in favor of a field of the same name inside of the events submessage field. See world-federation-of-advertisers/cross-media-measurement-api#164
    • Halo clients that build RequisitionSpecs will still populate the deprecated field, but the field may be removed in a future release.
  • The custom wfa.measurement.api.v2alpha.TimeInterval type in the CMMS public API has been replaced with google.type.Interval. This is a wire-compatible change, but may break compilation of client code. See world-federation-of-advertisers/cross-media-measurement-api#155
  • The maximum_frequency field in ProtocolConfig.LiquidLegionsV2 is now deprecated. See world-federation-of-advertisers/cross-media-measurement-api#165
    • This used to be populated from the Kingdom's Llv2ProtocolConfigConfig. It must not be specified there any longer.
  • The maximum_frequency_per_user field was dropped from MeasurementSpec.Duration. See world-federation-of-advertisers/cross-media-measurement-api#165
  • The maximum_frequency_per_user field in MeasurementSpec.ReachAndFrequency was renamed to maximum_frequency. See world-federation-of-advertisers/cross-media-measurement-api#165
    • This field is now required in CreateMeasurement requests.
  • The type of the maximum_watch_duration_per_user field in MeasurementSpec.Duration has been changed from int32 to google.protobuf.Duration. See world-federation-of-advertisers/cross-media-measurement-api#167
  • The system API definition was updated to fix AIP conformance issues. See #1074
    • This included a change to the behavior of StreamActiveComputations, which resulted in an incompatible change to the StreamMeasurements method of the Kingdom internal API.
  • EDP simulators no longer write to blob storage. See #1112
    • There are now two different EDP simulator implementations with corresponding correctness test implementations. See the updated correctness test guide.
  • The Kingdom public and internal API servers have a new required --ro-llv2-protocol-config-config option for the reach-only Liquid Legions v2 protocol.
    • The dev configuration reads this from a ro_llv2_protocol_config_config.textproto file in the certs-and-configs K8s Secret. See the updated deployment guide.
  • The v1 Reporting public API server has a new required --measurement-spec-config-file option.
    • The dev configuration reads this from a measurement_spec_config.textproto file in the config-files K8s ConfigMap. See the updated deployment guide.

What's Changed

Read more

v0.3.0

27 Jun 21:16
1c7950d
Compare
Choose a tag to compare

Highlights

  • The panel-exchange-client repository has been merged into this one.
    • Example panel exchange daemon container images are now published to GitHub packages (see #1079)
  • Exchange API resources are now covered by retention policy enforcement jobs (see #1027)
  • The EDP simulator ignores Requisitions for other MeasurementConsumers (see #1067)
  • cross-media-measurement-api has been updated to v0.36.0
  • The LLv2 Mill supports multi-threaded operations. The dev and local configurations use 2 threads by default. See #1039

Potentially Requiring Action

  • Breaking changes to the public API for AIP conformance.
    • CreateMeasurementRequest now has a required parent field (see world-federation-of-advertisers/cross-media-measurement-api#135)
    • ListEventGroupsRequest now has two patterns for its parent field (see world-federation-of-advertisers/cross-media-measurement-api#148)
      • If the caller is a DataProvider, the parent field must use the dataProviders/{data_provider}/eventGroups/{event_group} pattern. This is the canonical pattern for EventGroup resources.
      • If the caller is a MeasurementConsumer, the parent field must use the measurementConsumers/{measurement_consumer}/eventGroups/{event_group} pattern
    • ListRequisitionsRequest now has two patterns for its parent field (see world-federation-of-advertisers/cross-media-measurement-api#149)
      • If the caller is a DataProvider, the parent field must use the dataProviders/{data_provider}/requisitions/{requisition} pattern. This is the canonical pattern for Requisition resources.
      • If the caller is a MeasurementConsumer, the parent field must use the measurementConsumers/{measurement_consumer}/measurements/{measurement}/requisitions/{requisition} pattern.
  • Binary-compatible changes to the public API for AIP conformance.

What's Changed

Read more

v0.2.0

18 May 16:47
ba15186
Compare
Choose a tag to compare

Highlights

What's Changed

Full Changelog: v0.1.0...v0.2.0