[Cobalt 1.1] Add replacement metrics for software_delivery

This is the first step of migrating to Cobalt 1.1

All metrics tagged with 'replacement_metric_id' will be duplicated to
the equivalent Cobalt 1.1 metric. Once there is sufficient data in
Cobalt 1.1 the logging code should be updated to log directly to the
replacement metrics.

Change-Id: I55ebe9e43c073be4e80542f41dd28933979ecacb
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt-registry/+/490820
Reviewed-by: Ben Keller <galbanum@google.com>
Commit-Queue: Zach Bush <zmbush@google.com>
Privacy-Approval: Zach Bush <zmbush@google.com>
diff --git a/fuchsia/software_delivery/metrics.yaml b/fuchsia/software_delivery/metrics.yaml
index fac44c2..e26de23 100644
--- a/fuchsia/software_delivery/metrics.yaml
+++ b/fuchsia/software_delivery/metrics.yaml
@@ -15,10 +15,11 @@
 # already running the latest version.
 ################################################################################
 - id: 1
+  replacement_metric_id: 101
   metric_name: system_up_to_date
   # The count will always be one.
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &sutd_dimensions
       # What initiated the update check?
     - dimension: initiator
       event_codes:
@@ -42,15 +43,38 @@
     max_release_stage: GA
     expiration_date: "2021/03/31"
 
+- id: 101
+  metric_name: system_up_to_date_migrated
+  # The count will always be one.
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *sutd_dimensions
+  reports:
+    - report_name: system_up_to_date_counts
+      id: 1
+      report_type: HOURLY_VALUE_NUMERIC_STATS
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: system_up_to_date_per_device_count
+      id: 2
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      privacy_level: NO_ADDED_PRIVACY
+      local_aggregation_period: WINDOW_1_DAY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/31"
+
 ################################################################################
 # OTA Start
 #
 # Used to log the fact that an update is available and is being applied.
 ################################################################################
 - id: 2
+  replacement_metric_id: 102
   metric_name: ota_start
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &otas_dimensions
       # What initiated the update check?
     - dimension: initiator
       event_codes:
@@ -60,12 +84,6 @@
     - dimension: hour_of_day
       max_event_code: 23
   reports:
-    - report_name: ota_start_counts
-      id: 276244619 # legacy long report_id
-      report_type: NUMERIC_AGGREGATION
-      # The |component| string is used to capture the target build version
-      candidate_file: fuchsia/software_delivery/build_versions.txt
-      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
     - report_name: ota_start_stats
       id: 1
       report_type: PER_DEVICE_NUMERIC_STATS
@@ -75,7 +93,7 @@
     - report_name: ota_start_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &osh_buckets
         linear:
           floor: 0
           num_buckets: 50
@@ -87,6 +105,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/31"
 
+- id: 102
+  metric_name: ota_start_migrated
+  metric_type: OCCURRENCE
+  metric_dimensions: *otas_dimensions
+  metric_semantics: [USAGE_COUNTING]
+  reports:
+    - report_name: ota_start_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: ota_start_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *osh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/31"
+
 ################################################################################
 # OTA Result Attempts
 #
@@ -94,10 +135,11 @@
 # ready to be booted, or an error was encountered during the update attempt
 ################################################################################
 - id: 3
+  replacement_metric_id: 103
   metric_name: ota_result_attempts
   # The value of the count will be the attempt number.
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &ora_dimensions
       # What initiated the update check?
     - dimension: initiator
       event_codes:
@@ -120,23 +162,6 @@
         4: error_networking
         5: error_untrusted_tuf_repo
   reports:
-    - report_name: ota_result_attempts_histogram
-      id: 1235984927 # legacy long report_id
-      report_type: INT_RANGE_HISTOGRAM
-      # The |component| string is used to capture the target build version
-      candidate_file: fuchsia/software_delivery/build_versions.txt
-      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
-      int_buckets:
-        linear:
-          floor: 0
-          num_buckets: 100
-          step_size: 1
-    - report_name: ota_result_attempts
-      id: 1004304452 # legacy long report_id
-      report_type: NUMERIC_AGGREGATION
-      # The |component| string is used to capture the target build version
-      candidate_file: fuchsia/software_delivery/build_versions.txt
-      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
     - report_name: ota_result_attempts_stats
       id: 1
       report_type: PER_DEVICE_NUMERIC_STATS
@@ -146,7 +171,7 @@
     - report_name: ota_result_attempts_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &orah_buckets
         linear:
           floor: 0
           num_buckets: 50
@@ -158,6 +183,30 @@
     max_release_stage: GA
     expiration_date: "2021/03/31"
 
+- id: 103
+  metric_name: ota_result_attempts_migrated
+  # The value of the count will be the attempt number.
+  metric_type: OCCURRENCE
+  metric_dimensions: *ora_dimensions
+  metric_semantics: [USAGE_COUNTING]
+  reports:
+    - report_name: ota_result_attempts_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: ota_result_attempts_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *orah_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/31"
+
 
 ################################################################################
 # OTA Result Duration
@@ -167,11 +216,12 @@
 # update attempt
 ################################################################################
 - id: 4
+  replacement_metric_id: 104
   metric_name: ota_result_duration
   # How long the update took from start to finish (not counting any necessary
   # reboot), in microseconds
   metric_type: ELAPSED_TIME
-  metric_dimensions:
+  metric_dimensions: &ord_dimensions
       # What initiated the update check?
     - dimension: initiator
       event_codes:
@@ -183,23 +233,6 @@
     - dimension: status_code
       event_codes: *ota_result_status_codes
   reports:
-    - report_name: ota_result_duration_histogram
-      id: 845188937 # legacy long report_id
-      report_type: INT_RANGE_HISTOGRAM
-      # The |component| string is used to capture the target build version
-      candidate_file: fuchsia/software_delivery/build_versions.txt
-      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
-      int_buckets:
-        linear:
-          floor: 0
-          num_buckets: 100
-          step_size: 500
-    - report_name: ota_result_duration__stats
-      id: 3514494109 # legacy long report_id
-      report_type: NUMERIC_AGGREGATION
-      # The |component| string is used to capture the target build version
-      candidate_file: fuchsia/software_delivery/build_versions.txt
-      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
     - report_name: ota_result_duration_stats
       id: 1
       report_type: PER_DEVICE_NUMERIC_STATS
@@ -210,7 +243,7 @@
     - report_name: ota_result_duration_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &ordh_buckets
         exponential:
           floor: 0
           num_buckets: 17
@@ -223,7 +256,7 @@
     - report_name: ota_result_duration_hist2
       id: 3
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &ordh2_buckets
         exponential:
           floor: 0
           num_buckets: 30
@@ -237,6 +270,43 @@
     max_release_stage: GA
     expiration_date: "2021/03/31"
 
+- id: 104
+  metric_name: ota_result_duration_migrated
+  # How long the update took from start to finish (not counting any necessary
+  # reboot), in microseconds
+  metric_type: INTEGER
+  metric_units: MICROSECONDS
+  metric_semantics: [LATENCY]
+  metric_dimensions: *ord_dimensions
+  reports:
+    - report_name: ota_result_duration_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      local_aggregation_procedure: SUM_PROCEDURE
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    # Replaced by ota_result_duration_hist2 around 2020-11-17 with more buckets
+    - report_name: ota_result_duration_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *ordh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      local_aggregation_procedure: MAX_PROCEDURE
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: ota_result_duration_hist2
+      id: 3
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *ordh2_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      local_aggregation_procedure: MAX_PROCEDURE
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/31"
+
 
 ################################################################################
 # OTA Result Free-Space Delta
@@ -246,6 +316,7 @@
 # booted, or an error was encountered during the update attempt
 ################################################################################
 - id: 5
+  no_replacement_metric: Cannot log an integer and a component string in the same metric in Cobalt 1.1
   metric_name: ota_result_free_space_delta
   metric_type: EVENT_COUNT
   metric_dimensions:
@@ -270,6 +341,7 @@
     max_release_stage: GA
     expiration_date: "2021/03/31"
 
+
 ################################################################################
 # Fetch Blob Result
 #
@@ -281,9 +353,10 @@
 # system update more than once per day.
 ################################################################################
 - id: 6
+  replacement_metric_id: 106
   metric_name: fetch_blob
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &fb_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -345,7 +418,7 @@
     - report_name: fetch_blob_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &fbh_buckets
         linear:
           floor: 0
           num_buckets: 50
@@ -357,6 +430,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 106
+  metric_name: fetch_blob_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *fb_dimensions
+  reports:
+    - report_name: fetch_blob_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: fetch_blob_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *fbh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Is Font Package Check
 #
@@ -367,9 +463,10 @@
 # requested from the font resolver so we should never log a not_font result.
 ################################################################################
 - id: 7
+  replacement_metric_id: 107
   metric_name: is_font_package_check
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &ifpc_dimensions
     - dimension: result
       event_codes:
         0: font
@@ -384,7 +481,7 @@
     - report_name: is_font_package_check_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &ifpch_buckets
         linear:
           floor: 0
           num_buckets: 50
@@ -396,6 +493,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 107
+  metric_name: is_font_package_check_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *ifpc_dimensions
+  reports:
+    - report_name: is_font_package_check_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: is_font_package_check_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *ifpch_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Font Manager Load Static Registry
 #
@@ -404,9 +524,10 @@
 # per month.
 ################################################################################
 - id: 8
+  replacement_metric_id: 108
   metric_name: font_manager_load_static_registry
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &fmlsr_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -423,7 +544,7 @@
     - report_name: font_manager_load_static_registry_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &fmlsrh_buckets
         linear:
           floor: 0
           num_buckets: 20
@@ -435,6 +556,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 108
+  metric_name: font_manager_load_static_registry_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *fmlsr_dimensions
+  reports:
+    - report_name: font_manager_load_static_registry_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: font_manager_load_static_registry_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *fmlsrh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Package Resolver Startup Duration
 #
@@ -442,6 +586,7 @@
 # once per boot.
 ################################################################################
 - id: 9
+  replacement_metric_id: 109
   metric_name: pkg_resolver_startup_duration
   metric_type: ELAPSED_TIME
   reports:
@@ -449,7 +594,7 @@
     - report_name: pkg_resolver_startup_duration_hist
       id: 1
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &prsdh_buckets
         exponential:
           floor: 0
           num_buckets: 17
@@ -462,7 +607,7 @@
     - report_name: pkg_resolver_startup_duration_hist2
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &prsdh2_buckets
         exponential:
           floor: 0
           num_buckets: 30
@@ -476,6 +621,33 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 109
+  metric_name: pkg_resolver_startup_duration_migrated
+  metric_type: INTEGER
+  metric_units: MICROSECONDS
+  metric_semantics: [LATENCY]
+  reports:
+    # Replaced by pkg_resolver_startup_duration_hist2 around 2020-11-17 with more buckets
+    - report_name: pkg_resolver_startup_duration_hist
+      id: 1
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *prsdh_buckets
+      local_aggregation_procedure: MAX_PROCEDURE
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: pkg_resolver_startup_duration_hist2
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *prsdh2_buckets
+      local_aggregation_procedure: MAX_PROCEDURE
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 
 ################################################################################
 # Repository Manager Load Static Configs
@@ -484,9 +656,10 @@
 # along with the load result. Occurs once per boot.
 ################################################################################
 - id: 10
+  replacement_metric_id: 110
   metric_name: repository_manager_load_static_configs
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &rmlsc_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -503,7 +676,7 @@
     - report_name: repository_manager_load_static_configs_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &rmlsch_buckets
         linear:
           floor: 0
           num_buckets: 30
@@ -515,6 +688,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 110
+  metric_name: repository_manager_load_static_configs_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *rmlsc_dimensions
+  reports:
+    - report_name: repository_manager_load_static_configs_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: repository_manager_load_static_configs_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *rmlsch_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Repository Manager Load Repository for Channel
 #
@@ -523,9 +719,10 @@
 # boot.
 ################################################################################
 - id: 11
+  replacement_metric_id: 111
   metric_name: repository_manager_load_repository_for_channel
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &rmlrfc_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -540,7 +737,7 @@
     - report_name: repository_manager_load_repository_for_channel_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &rmlrfch_buckets
         linear:
           floor: 0
           num_buckets: 30
@@ -552,6 +749,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 111
+  metric_name: repository_manager_load_repository_for_channel_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *rmlrfc_dimensions
+  reports:
+    - report_name: repository_manager_load_repository_for_channel_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: repository_manager_load_repository_for_channel_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *rmlrfch_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Create TUF Client
 #
@@ -559,9 +779,10 @@
 # of creating the TUF client. This happens once per boot.
 ################################################################################
 - id: 12
+  replacement_metric_id: 112
   metric_name: create_tuf_client
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &ctc_dimensions
     - dimension: result
       event_codes: &rust_tuf_result_status_codes
         0: success
@@ -610,7 +831,7 @@
     - report_name: create_tuf_client_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &ctch_buckets
         linear:
           floor: 0
           num_buckets: 30
@@ -622,6 +843,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 112
+  metric_name: create_tuf_client_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *ctc_dimensions
+  reports:
+    - report_name: create_tuf_client_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: create_tuf_client_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *ctch_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Update TUF Client
 #
@@ -629,9 +873,10 @@
 # This happens once per package resolve.
 ################################################################################
 - id: 13
+  replacement_metric_id: 113
   metric_name: update_tuf_client
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &utc_dimensions
     - dimension: result
       event_codes: *rust_tuf_result_status_codes
   reports:
@@ -644,7 +889,7 @@
     - report_name: update_tuf_client_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &utch_buckets
         linear:
           floor: 0
           num_buckets: 50
@@ -656,6 +901,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 113
+  metric_name: update_tuf_client_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *utc_dimensions
+  reports:
+    - report_name: update_tuf_client_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: update_tuf_client_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *utch_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Resolve
 #
@@ -665,9 +933,10 @@
 # for each package in the system image per system update.
 ################################################################################
 - id: 14
+  replacement_metric_id: 114
   metric_name: resolve
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &r_dimensions
     - dimension: result
       event_codes:
         0: zx_ok
@@ -731,7 +1000,7 @@
     - report_name: resolve_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &rh_buckets
         linear:
           floor: 0
           num_buckets: 1000
@@ -743,6 +1012,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 114
+  metric_name: resolve_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *r_dimensions
+  reports:
+    - report_name: resolve_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: resolve_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *rh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Resolve Duration
 #
@@ -751,9 +1043,10 @@
 # seconds. Happens once per package resolve.
 ################################################################################
 - id: 15
+  replacement_metric_id: 115
   metric_name: resolve_duration
   metric_type: ELAPSED_TIME
-  metric_dimensions:
+  metric_dimensions: &rd_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -773,7 +1066,7 @@
     - report_name: resolve_duration_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &rdh_buckets
         exponential:
           floor: 0
           num_buckets: 17
@@ -786,7 +1079,7 @@
     - report_name: resolve_duration_hist2
       id: 3
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &rdh2_buckets
         exponential:
           floor: 0
           num_buckets: 30
@@ -800,6 +1093,41 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 115
+  metric_name: resolve_duration_migrated
+  metric_type: INTEGER
+  metric_units: MICROSECONDS
+  metric_semantics: [LATENCY]
+  metric_dimensions: *rd_dimensions
+  reports:
+    - report_name: resolve_duration_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_procedure: MAX_PROCEDURE
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    # Replaced by resolve_duration_hist2 around 2020-11-17 with more buckets
+    - report_name: resolve_duration_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *rdh_buckets
+      local_aggregation_procedure: MAX_PROCEDURE
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: resolve_duration_hist2
+      id: 3
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *rdh2_buckets
+      local_aggregation_procedure: MAX_PROCEDURE
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Package Cache Open
 #
@@ -807,9 +1135,10 @@
 # Happens once per package resolve.
 ################################################################################
 - id: 16
+  replacement_metric_id: 116
   metric_name: pkg_cache_open
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &pco_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -825,7 +1154,7 @@
     - report_name: pkg_cache_open_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &pcoh_buckets
         linear:
           floor: 0
           num_buckets: 1000
@@ -837,6 +1166,29 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 116
+  metric_name: pkg_cache_open_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *pco_dimensions
+  reports:
+    - report_name: pkg_cache_open_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: pkg_cache_open_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *pcoh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # Merkle For Url
 #
@@ -844,9 +1196,10 @@
 # 1 and the result status. Happens once per package resolve.
 ################################################################################
 - id: 17
+  replacement_metric_id: 117
   metric_name: merkle_for_url
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &mfu_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -869,7 +1222,7 @@
     - report_name: merkle_for_url_hist
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &mfuh_buckets
         linear:
           floor: 0
           num_buckets: 1000
@@ -882,6 +1235,30 @@
     max_release_stage: GA
     expiration_date: "2021/03/18"
 
+- id: 117
+  metric_name: merkle_for_url_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *mfu_dimensions
+  reports:
+    - report_name: merkle_for_url_stats
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: merkle_for_url_hist
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *mfuh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/03/18"
+
 ################################################################################
 # update_channel_control_set_target
 #
@@ -889,9 +1266,10 @@
 # per method call.
 ################################################################################
 - id: 18
+  replacement_metric_id: 118
   metric_name: update_channel_control_set_target
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &uccst_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -906,7 +1284,7 @@
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
       system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
-      int_buckets:
+      int_buckets: &uccsth_buckets
         linear:
           floor: 0
           num_buckets: 100
@@ -917,6 +1295,29 @@
     max_release_stage: GA
     expiration_date: "2021/08/04"
 
+- id: 118
+  metric_name: update_channel_control_set_target_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *uccst_dimensions
+  reports:
+    - report_name: update_channel_control_set_target_count
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: update_channel_control_set_target_histogram
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *uccsth_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/08/04"
+
 ################################################################################
 # update_manager_connection
 #
@@ -924,9 +1325,10 @@
 # call.
 ################################################################################
 - id: 19
+  replacement_metric_id: 119
   metric_name: update_manager_connection
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &umc_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -941,7 +1343,7 @@
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
       system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
-      int_buckets:
+      int_buckets: &umch_buckets
         linear:
           floor: 0
           num_buckets: 100
@@ -952,6 +1354,29 @@
     max_release_stage: GA
     expiration_date: "2021/08/04"
 
+- id: 119
+  metric_name: update_manager_connection_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *umc_dimensions
+  reports:
+    - report_name: update_manager_connection_count
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: update_manager_connection_histogram
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *umch_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/08/04"
+
 ################################################################################
 # update_manager_check_now
 #
@@ -959,9 +1384,10 @@
 # the check.
 ################################################################################
 - id: 20
+  replacement_metric_id: 120
   metric_name: update_manager_check_now
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &umcn_dimensions
     - dimension: result
       event_codes:
         0: success
@@ -980,7 +1406,7 @@
       id: 2
       report_type: PER_DEVICE_HISTOGRAM
       system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
-      int_buckets:
+      int_buckets: &umcnh_buckets
         linear:
           floor: 0
           num_buckets: 100
@@ -991,6 +1417,29 @@
     max_release_stage: GA
     expiration_date: "2021/08/04"
 
+- id: 120
+  metric_name: update_manager_check_now_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *umcn_dimensions
+  reports:
+    - report_name: update_manager_check_now_count
+      id: 1
+      report_type: UNIQUE_DEVICE_NUMERIC_STATS
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+    - report_name: update_manager_check_now_histogram
+      id: 2
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *umcnh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2021/08/04"
+
 #####################################################################
 # OTA Verification Duration
 #
@@ -1005,11 +1454,12 @@
 # upload once).
 #####################################################################
 - id: 21
+  replacement_metric_id: 121
   metric_name: ota_verification_duration
   # We use EVENT_COUNT instead of ELAPSED_TIME because Lapis only
   # supports the former.
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &ovd_dimensions
     # Did any verification fail? If so, what type of verification?
     - dimension: result
       event_codes: &ota_verification_result
@@ -1024,7 +1474,7 @@
     - report_name: ota_verification_duration_histogram
       id: 1
       report_type: PER_DEVICE_HISTOGRAM
-      int_buckets:
+      int_buckets: &ovdh_buckets
         exponential:
           floor: 0
           num_buckets: 16
@@ -1038,6 +1488,30 @@
     max_release_stage: GA
     expiration_date: "2022/01/26"
 
+- id: 121
+  metric_name: ota_verification_duration_migrated
+  metric_type: INTEGER
+  metric_units: MICROSECONDS
+  metric_semantics: [LATENCY]
+  metric_dimensions: *ovd_dimensions
+  reports:
+    #####################################################################
+    # ota_verification_duration_histogram
+    #
+    # Exponential histogram starting from .1 seconds to 110 minutes.
+    #####################################################################
+    - report_name: ota_verification_duration_histogram
+      id: 1
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *ovdh_buckets
+      local_aggregation_procedure: MAX_PROCEDURE
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2022/01/26"
+
 #####################################################################
 # OTA Verification Failure
 #
@@ -1050,9 +1524,10 @@
 # sample anyway.
 #####################################################################
 - id: 22
+  replacement_metric_id: 122
   metric_name: ota_verification_failure
   metric_type: EVENT_COUNT
-  metric_dimensions:
+  metric_dimensions: &ovf_dimensions
     # Which kind of verification failed?
     - dimension: result
       event_codes: *ota_verification_result
@@ -1074,7 +1549,7 @@
       id: 1
       report_type: PER_DEVICE_HISTOGRAM
       aggregation_type: SUM
-      int_buckets:
+      int_buckets: &ovf_pdlh_buckets
         linear:
           floor: 0
           num_buckets: 10
@@ -1085,3 +1560,26 @@
   meta_data:
     max_release_stage: GA
     expiration_date: "2022/01/26"
+
+- id: 122
+  metric_name: ota_verification_failure_migrated
+  metric_type: OCCURRENCE
+  metric_semantics: [USAGE_COUNTING]
+  metric_dimensions: *ovf_dimensions
+  reports:
+    #####################################################################
+    # per_device_linear_histogram
+    #
+    # Linear histogram of the number of OTA verifications performed per
+    # device per day.
+    #####################################################################
+    - report_name: per_device_linear_histogram
+      id: 1
+      report_type: UNIQUE_DEVICE_HISTOGRAMS
+      int_buckets: *ovf_pdlh_buckets
+      local_aggregation_period: WINDOW_1_DAY
+      privacy_level: NO_ADDED_PRIVACY
+      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL, REALM]
+  meta_data:
+    max_release_stage: GA
+    expiration_date: "2022/01/26"