[multi_dimension] Delete deprecated MetricDefinition.event_codes

Change-Id: Iaeb8c52bb58e0e4c2c7db93e290947a3545e05a3
diff --git a/algorithms/rappor/rappor_config_helper.cc b/algorithms/rappor/rappor_config_helper.cc
index b4b8d9b..9972116 100644
--- a/algorithms/rappor/rappor_config_helper.cc
+++ b/algorithms/rappor/rappor_config_helper.cc
@@ -126,23 +126,19 @@
 
 // Calculates the number of categories based on the metric_definition.
 //
-// - If there are no metric_dimensions, returns max_event_code() + 1 (this
-//   assumes an old registry)
-//
 // - If there is exactly 1 metric_dimensions, return
 //   metric_dimensions[0].max_event_code() + 1 (this is the new registry).
 //
 // - Otherwise, return 0 and report an error (this is not a supported registry).
 size_t RapporConfigHelper::BasicRapporNumCategories(
     const MetricDefinition& metric_definition) {
-  if (metric_definition.metric_dimensions_size() == 0) {
-    return metric_definition.max_event_code() + 1;
-  } else if (metric_definition.metric_dimensions_size() == 1) {
+  if (metric_definition.metric_dimensions_size() == 1) {
     return metric_definition.metric_dimensions(0).max_event_code() + 1;
   } else {
     LOG(ERROR) << "Invalid Cobalt registry: Metric "
-               << metric_definition.metric_name()
-               << " has too many metric_dimensions.";
+               << metric_definition.metric_name() << " has "
+               << metric_definition.metric_dimensions_size()
+               << " metric_dimensions. (expected exactly 1)";
     return 0;
   }
 }
diff --git a/algorithms/rappor/rappor_config_helper_test.cc b/algorithms/rappor/rappor_config_helper_test.cc
index 34096e2..60b7a77 100644
--- a/algorithms/rappor/rappor_config_helper_test.cc
+++ b/algorithms/rappor/rappor_config_helper_test.cc
@@ -37,7 +37,7 @@
 
 TEST(RapporConfigHelperTest, BasicRapporNumCategories) {
   MetricDefinition metric_definition;
-  EXPECT_EQ(1u,
+  EXPECT_EQ(0u,
             RapporConfigHelper::BasicRapporNumCategories(metric_definition));
 
   metric_definition.add_metric_dimensions()->set_max_event_code(0);
@@ -47,6 +47,10 @@
   metric_definition.mutable_metric_dimensions(0)->set_max_event_code(10);
   EXPECT_EQ(11u,
             RapporConfigHelper::BasicRapporNumCategories(metric_definition));
+
+  metric_definition.add_metric_dimensions()->set_max_event_code(10);
+  EXPECT_EQ(0u,
+            RapporConfigHelper::BasicRapporNumCategories(metric_definition));
 }
 
 TEST(RapporConfigHelperTest, StringRapporNumCohorts) {
diff --git a/config/config_parser/src/config_parser/project_config.go b/config/config_parser/src/config_parser/project_config.go
index a79e069..fbc935c 100644
--- a/config/config_parser/src/config_parser/project_config.go
+++ b/config/config_parser/src/config_parser/project_config.go
@@ -86,22 +86,6 @@
 		for _, r := range e.Reports {
 			r.Id = IdFromName(r.ReportName)
 		}
-
-		// TODO(zmbush): Remove once EventCodes are fully deprecated
-		if len(e.EventCodes) > 0 {
-			e.MetricDimensions = []*config.MetricDefinition_MetricDimension{
-				&config.MetricDefinition_MetricDimension{
-					Dimension:    "legacy",
-					EventCodes:   e.EventCodes,
-					MaxEventCode: e.MaxEventCode,
-				},
-			}
-
-			// TODO(zmbush): To test this change:
-			// e.EventCodes = nil
-			// e.MaxEventCode = 0
-			// e.MetricDimensions[0].AlsoTreatAsLegacy: true,
-		}
 	}
 
 	return nil
diff --git a/config/config_parser/src/source_generator/source_generator_test.go b/config/config_parser/src/source_generator/source_generator_test.go
index 59bac1b..4b4dda7 100644
--- a/config/config_parser/src/source_generator/source_generator_test.go
+++ b/config/config_parser/src/source_generator/source_generator_test.go
@@ -125,11 +125,13 @@
   id: 200
   time_zone_policy: LOCAL
   metric_type: EVENT_OCCURRED
-  event_codes:
-    0: AnEvent
-    1: AnotherEvent
-    2: A third event
-  max_event_code: 200
+  metric_dimensions:
+    - event_codes:
+        0: AnEvent
+        1: AnotherEvent
+        2: A third event
+      max_event_code: 200
+      also_treat_as_legacy: true
   reports:
   - report_name: the_report
     report_type: NUMERIC_PERF_RAW_DUMP
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.dart b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.dart
index 8d42915..bce842e 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.dart
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.dart
@@ -21,15 +21,15 @@
 const int TheOtherMetricNameEventCode_AnotherEvent = TheOtherMetricNameEventCode::AnotherEvent;
 const int TheOtherMetricNameEventCode_AThirdEvent = TheOtherMetricNameEventCode::AThirdEvent;
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
-class TheOtherMetricNameMetricDimensionLegacy {
+// Enum for the_other_metric_name (Metric Dimension 0)
+class TheOtherMetricNameMetricDimension0 {
   static const int AnEvent = 0;
   static const int AnotherEvent = 1;
   static const int AThirdEvent = 2;
 }
-const int TheOtherMetricNameMetricDimensionLegacy_AnEvent = TheOtherMetricNameMetricDimensionLegacy::AnEvent;
-const int TheOtherMetricNameMetricDimensionLegacy_AnotherEvent = TheOtherMetricNameMetricDimensionLegacy::AnotherEvent;
-const int TheOtherMetricNameMetricDimensionLegacy_AThirdEvent = TheOtherMetricNameMetricDimensionLegacy::AThirdEvent;
+const int TheOtherMetricNameMetricDimension0_AnEvent = TheOtherMetricNameMetricDimension0::AnEvent;
+const int TheOtherMetricNameMetricDimension0_AnotherEvent = TheOtherMetricNameMetricDimension0::AnotherEvent;
+const int TheOtherMetricNameMetricDimension0_AThirdEvent = TheOtherMetricNameMetricDimension0::AThirdEvent;
 
 // Enum for event groups (Metric Dimension The First Group)
 class EventGroupsMetricDimensionTheFirstGroup {
@@ -64,4 +64,4 @@
 const int EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const String config = 'Kq0ECghjdXN0b21lchAKGp4ECgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBrAAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBMgsIABIHQW5FdmVudDIQCAESDEFub3RoZXJFdmVudDIRCAISDUEgdGhpcmQgZXZlbnQ4yAFQAWIUCgp0aGVfcmVwb3J0ELuli/EIGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE9CgZsZWdhY3kSCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBjIARruAQoMZXZlbnQgZ3JvdXBzEAoYBSCsAigBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=';
+const String config = 'KvIDCghjdXN0b21lchAKGuMDCgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBqFAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa7gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB3IIY3VzdG9tZXJ6B3Byb2plY3SCAUUKD1RoZSBGaXJzdCBHcm91cBILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GAKCATkKDkEgc2Vjb25kIGdyb3VwEggIARIEVGhpcxIGCAISAklzEgsIAxIHYW5vdGhlchIICAQSBFRlc3SCASUSDggAEgpUaGlzTWV0cmljEgkIAhIFSGFzTm8SCAgEEgROYW1l';
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.h b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.h
index e99705e..b1b8e01 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.h
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.h
@@ -23,18 +23,18 @@
 const TheOtherMetricNameEventCode TheOtherMetricNameEventCode_AnotherEvent = TheOtherMetricNameEventCode::AnotherEvent;
 const TheOtherMetricNameEventCode TheOtherMetricNameEventCode_AThirdEvent = TheOtherMetricNameEventCode::AThirdEvent;
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
-namespace the_other_metric_name_metric_dimension_legacy_scope {
+// Enum for the_other_metric_name (Metric Dimension 0)
+namespace the_other_metric_name_metric_dimension_0_scope {
 enum Enum {
   AnEvent = 0,
   AnotherEvent = 1,
   AThirdEvent = 2,
 };
-}  // the_other_metric_name_metric_dimension_legacy_scope
-typedef the_other_metric_name_metric_dimension_legacy_scope::Enum TheOtherMetricNameMetricDimensionLegacy;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AnEvent = TheOtherMetricNameMetricDimensionLegacy::AnEvent;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AnotherEvent = TheOtherMetricNameMetricDimensionLegacy::AnotherEvent;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AThirdEvent = TheOtherMetricNameMetricDimensionLegacy::AThirdEvent;
+}  // the_other_metric_name_metric_dimension_0_scope
+typedef the_other_metric_name_metric_dimension_0_scope::Enum TheOtherMetricNameMetricDimension0;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnEvent = TheOtherMetricNameMetricDimension0::AnEvent;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnotherEvent = TheOtherMetricNameMetricDimension0::AnotherEvent;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AThirdEvent = TheOtherMetricNameMetricDimension0::AThirdEvent;
 
 // Enum for event groups (Metric Dimension The First Group)
 namespace event_groups_metric_dimension_the_first_group_scope {
@@ -78,4 +78,4 @@
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const char kConfig[] = "Kq0ECghjdXN0b21lchAKGp4ECgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBrAAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBMgsIABIHQW5FdmVudDIQCAESDEFub3RoZXJFdmVudDIRCAISDUEgdGhpcmQgZXZlbnQ4yAFQAWIUCgp0aGVfcmVwb3J0ELuli/EIGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE9CgZsZWdhY3kSCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBjIARruAQoMZXZlbnQgZ3JvdXBzEAoYBSCsAigBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
+const char kConfig[] = "KvIDCghjdXN0b21lchAKGuMDCgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBqFAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa7gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB3IIY3VzdG9tZXJ6B3Byb2plY3SCAUUKD1RoZSBGaXJzdCBHcm91cBILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GAKCATkKDkEgc2Vjb25kIGdyb3VwEggIARIEVGhpcxIGCAISAklzEgsIAxIHYW5vdGhlchIICAQSBFRlc3SCASUSDggAEgpUaGlzTWV0cmljEgkIAhIFSGFzTm8SCAgEEgROYW1l";
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.rs b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.rs
index d1009b6..bf067e7 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.rs
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1.cb.rs
@@ -16,9 +16,9 @@
   AThirdEvent = 2,
 }
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
+// Enum for the_other_metric_name (Metric Dimension 0)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum TheOtherMetricNameMetricDimensionLegacy {
+pub enum TheOtherMetricNameMetricDimension0 {
   AnEvent = 0,
   AnotherEvent = 1,
   AThirdEvent = 2,
@@ -50,4 +50,4 @@
 }
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-pub const CONFIG: &str = "Kq0ECghjdXN0b21lchAKGp4ECgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBrAAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBMgsIABIHQW5FdmVudDIQCAESDEFub3RoZXJFdmVudDIRCAISDUEgdGhpcmQgZXZlbnQ4yAFQAWIUCgp0aGVfcmVwb3J0ELuli/EIGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE9CgZsZWdhY3kSCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBjIARruAQoMZXZlbnQgZ3JvdXBzEAoYBSCsAigBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
+pub const CONFIG: &str = "KvIDCghjdXN0b21lchAKGuMDCgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBqFAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa7gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB3IIY3VzdG9tZXJ6B3Byb2plY3SCAUUKD1RoZSBGaXJzdCBHcm91cBILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GAKCATkKDkEgc2Vjb25kIGdyb3VwEggIARIEVGhpcxIGCAISAklzEgsIAxIHYW5vdGhlchIICAQSBFRlc3SCASUSDggAEgpUaGlzTWV0cmljEgkIAhIFSGFzTm8SCAgEEgROYW1l";
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.dart b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.dart
index f413623..b99e79a 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.dart
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.dart
@@ -21,15 +21,15 @@
 const int TheOtherMetricNameEventCode_AnotherEvent = TheOtherMetricNameEventCode::AnotherEvent;
 const int TheOtherMetricNameEventCode_AThirdEvent = TheOtherMetricNameEventCode::AThirdEvent;
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
-class TheOtherMetricNameMetricDimensionLegacy {
+// Enum for the_other_metric_name (Metric Dimension 0)
+class TheOtherMetricNameMetricDimension0 {
   static const int AnEvent = 0;
   static const int AnotherEvent = 1;
   static const int AThirdEvent = 2;
 }
-const int TheOtherMetricNameMetricDimensionLegacy_AnEvent = TheOtherMetricNameMetricDimensionLegacy::AnEvent;
-const int TheOtherMetricNameMetricDimensionLegacy_AnotherEvent = TheOtherMetricNameMetricDimensionLegacy::AnotherEvent;
-const int TheOtherMetricNameMetricDimensionLegacy_AThirdEvent = TheOtherMetricNameMetricDimensionLegacy::AThirdEvent;
+const int TheOtherMetricNameMetricDimension0_AnEvent = TheOtherMetricNameMetricDimension0::AnEvent;
+const int TheOtherMetricNameMetricDimension0_AnotherEvent = TheOtherMetricNameMetricDimension0::AnotherEvent;
+const int TheOtherMetricNameMetricDimension0_AThirdEvent = TheOtherMetricNameMetricDimension0::AThirdEvent;
 
 // Enum for event groups (Metric Dimension The First Group)
 class EventGroupsMetricDimensionTheFirstGroup {
@@ -64,4 +64,4 @@
 const int EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const String config = 'KsEDCghjdXN0b21lchAKGrIDCgdwcm9qZWN0EAUaSgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGGnsKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoATjIAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBPQoGbGVnYWN5EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa2wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=';
+const String config = 'KrgDCghjdXN0b21lchAKGqkDCgdwcm9qZWN0EAUaSgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGGnIKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa2wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=';
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.h b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.h
index 2d5af0c..3e54025 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.h
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.h
@@ -23,18 +23,18 @@
 const TheOtherMetricNameEventCode TheOtherMetricNameEventCode_AnotherEvent = TheOtherMetricNameEventCode::AnotherEvent;
 const TheOtherMetricNameEventCode TheOtherMetricNameEventCode_AThirdEvent = TheOtherMetricNameEventCode::AThirdEvent;
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
-namespace the_other_metric_name_metric_dimension_legacy_scope {
+// Enum for the_other_metric_name (Metric Dimension 0)
+namespace the_other_metric_name_metric_dimension_0_scope {
 enum Enum {
   AnEvent = 0,
   AnotherEvent = 1,
   AThirdEvent = 2,
 };
-}  // the_other_metric_name_metric_dimension_legacy_scope
-typedef the_other_metric_name_metric_dimension_legacy_scope::Enum TheOtherMetricNameMetricDimensionLegacy;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AnEvent = TheOtherMetricNameMetricDimensionLegacy::AnEvent;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AnotherEvent = TheOtherMetricNameMetricDimensionLegacy::AnotherEvent;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AThirdEvent = TheOtherMetricNameMetricDimensionLegacy::AThirdEvent;
+}  // the_other_metric_name_metric_dimension_0_scope
+typedef the_other_metric_name_metric_dimension_0_scope::Enum TheOtherMetricNameMetricDimension0;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnEvent = TheOtherMetricNameMetricDimension0::AnEvent;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnotherEvent = TheOtherMetricNameMetricDimension0::AnotherEvent;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AThirdEvent = TheOtherMetricNameMetricDimension0::AThirdEvent;
 
 // Enum for event groups (Metric Dimension The First Group)
 namespace event_groups_metric_dimension_the_first_group_scope {
@@ -78,4 +78,4 @@
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const char kConfig[] = "KsEDCghjdXN0b21lchAKGrIDCgdwcm9qZWN0EAUaSgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGGnsKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoATjIAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBPQoGbGVnYWN5EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa2wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
+const char kConfig[] = "KrgDCghjdXN0b21lchAKGqkDCgdwcm9qZWN0EAUaSgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGGnIKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa2wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.rs b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.rs
index eb36079..fe2f373 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.rs
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_filtered.cb.rs
@@ -16,9 +16,9 @@
   AThirdEvent = 2,
 }
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
+// Enum for the_other_metric_name (Metric Dimension 0)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum TheOtherMetricNameMetricDimensionLegacy {
+pub enum TheOtherMetricNameMetricDimension0 {
   AnEvent = 0,
   AnotherEvent = 1,
   AThirdEvent = 2,
@@ -50,4 +50,4 @@
 }
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-pub const CONFIG: &str = "KsEDCghjdXN0b21lchAKGrIDCgdwcm9qZWN0EAUaSgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGGnsKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoATjIAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBPQoGbGVnYWN5EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa2wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
+pub const CONFIG: &str = "KrgDCghjdXN0b21lchAKGqkDCgdwcm9qZWN0EAUaSgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGGnIKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa2wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.dart b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.dart
index 0834642..102e2fb 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.dart
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.dart
@@ -29,15 +29,15 @@
 const int TheOtherMetricNameEventCode_AnotherEvent = TheOtherMetricNameEventCode::AnotherEvent;
 const int TheOtherMetricNameEventCode_AThirdEvent = TheOtherMetricNameEventCode::AThirdEvent;
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
-class TheOtherMetricNameMetricDimensionLegacy {
+// Enum for the_other_metric_name (Metric Dimension 0)
+class TheOtherMetricNameMetricDimension0 {
   static const int AnEvent = 0;
   static const int AnotherEvent = 1;
   static const int AThirdEvent = 2;
 }
-const int TheOtherMetricNameMetricDimensionLegacy_AnEvent = TheOtherMetricNameMetricDimensionLegacy::AnEvent;
-const int TheOtherMetricNameMetricDimensionLegacy_AnotherEvent = TheOtherMetricNameMetricDimensionLegacy::AnotherEvent;
-const int TheOtherMetricNameMetricDimensionLegacy_AThirdEvent = TheOtherMetricNameMetricDimensionLegacy::AThirdEvent;
+const int TheOtherMetricNameMetricDimension0_AnEvent = TheOtherMetricNameMetricDimension0::AnEvent;
+const int TheOtherMetricNameMetricDimension0_AnotherEvent = TheOtherMetricNameMetricDimension0::AnotherEvent;
+const int TheOtherMetricNameMetricDimension0_AThirdEvent = TheOtherMetricNameMetricDimension0::AThirdEvent;
 
 // Enum for event groups (Metric Dimension The First Group)
 class EventGroupsMetricDimensionTheFirstGroup {
@@ -72,4 +72,4 @@
 const int EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const String config = 'Kq0ECghjdXN0b21lchAKGp4ECgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBrAAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBMgsIABIHQW5FdmVudDIQCAESDEFub3RoZXJFdmVudDIRCAISDUEgdGhpcmQgZXZlbnQ4yAFQAWIUCgp0aGVfcmVwb3J0ELuli/EIGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE9CgZsZWdhY3kSCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBjIARruAQoMZXZlbnQgZ3JvdXBzEAoYBSCsAigBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=';
+const String config = 'KvIDCghjdXN0b21lchAKGuMDCgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBqFAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa7gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB3IIY3VzdG9tZXJ6B3Byb2plY3SCAUUKD1RoZSBGaXJzdCBHcm91cBILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GAKCATkKDkEgc2Vjb25kIGdyb3VwEggIARIEVGhpcxIGCAISAklzEgsIAxIHYW5vdGhlchIICAQSBFRlc3SCASUSDggAEgpUaGlzTWV0cmljEgkIAhIFSGFzTm8SCAgEEgROYW1l';
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.h b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.h
index b4a79b5..5e58228 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.h
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.h
@@ -29,18 +29,18 @@
 const TheOtherMetricNameEventCode TheOtherMetricNameEventCode_AnotherEvent = TheOtherMetricNameEventCode::AnotherEvent;
 const TheOtherMetricNameEventCode TheOtherMetricNameEventCode_AThirdEvent = TheOtherMetricNameEventCode::AThirdEvent;
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
-namespace the_other_metric_name_metric_dimension_legacy_scope {
+// Enum for the_other_metric_name (Metric Dimension 0)
+namespace the_other_metric_name_metric_dimension_0_scope {
 enum Enum {
   AnEvent = 0,
   AnotherEvent = 1,
   AThirdEvent = 2,
 };
-}  // the_other_metric_name_metric_dimension_legacy_scope
-typedef the_other_metric_name_metric_dimension_legacy_scope::Enum TheOtherMetricNameMetricDimensionLegacy;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AnEvent = TheOtherMetricNameMetricDimensionLegacy::AnEvent;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AnotherEvent = TheOtherMetricNameMetricDimensionLegacy::AnotherEvent;
-const TheOtherMetricNameMetricDimensionLegacy TheOtherMetricNameMetricDimensionLegacy_AThirdEvent = TheOtherMetricNameMetricDimensionLegacy::AThirdEvent;
+}  // the_other_metric_name_metric_dimension_0_scope
+typedef the_other_metric_name_metric_dimension_0_scope::Enum TheOtherMetricNameMetricDimension0;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnEvent = TheOtherMetricNameMetricDimension0::AnEvent;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnotherEvent = TheOtherMetricNameMetricDimension0::AnotherEvent;
+const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AThirdEvent = TheOtherMetricNameMetricDimension0::AThirdEvent;
 
 // Enum for event groups (Metric Dimension The First Group)
 namespace event_groups_metric_dimension_the_first_group_scope {
@@ -84,4 +84,4 @@
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const char kConfig[] = "Kq0ECghjdXN0b21lchAKGp4ECgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBrAAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBMgsIABIHQW5FdmVudDIQCAESDEFub3RoZXJFdmVudDIRCAISDUEgdGhpcmQgZXZlbnQ4yAFQAWIUCgp0aGVfcmVwb3J0ELuli/EIGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE9CgZsZWdhY3kSCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBjIARruAQoMZXZlbnQgZ3JvdXBzEAoYBSCsAigBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
+const char kConfig[] = "KvIDCghjdXN0b21lchAKGuMDCgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBqFAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa7gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB3IIY3VzdG9tZXJ6B3Byb2plY3SCAUUKD1RoZSBGaXJzdCBHcm91cBILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GAKCATkKDkEgc2Vjb25kIGdyb3VwEggIARIEVGhpcxIGCAISAklzEgsIAxIHYW5vdGhlchIICAQSBFRlc3SCASUSDggAEgpUaGlzTWV0cmljEgkIAhIFSGFzTm8SCAgEEgROYW1l";
diff --git a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.rs b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.rs
index ecffc1d..a0a7ef1 100644
--- a/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.rs
+++ b/config/config_parser/src/source_generator/source_generator_test_files/golden_v1_for_testing.cb.rs
@@ -22,9 +22,9 @@
   AThirdEvent = 2,
 }
 
-// Enum for the_other_metric_name (Metric Dimension legacy)
+// Enum for the_other_metric_name (Metric Dimension 0)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum TheOtherMetricNameMetricDimensionLegacy {
+pub enum TheOtherMetricNameMetricDimension0 {
   AnEvent = 0,
   AnotherEvent = 1,
   AThirdEvent = 2,
@@ -56,4 +56,4 @@
 }
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-pub const CONFIG: &str = "Kq0ECghjdXN0b21lchAKGp4ECgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBrAAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBMgsIABIHQW5FdmVudDIQCAESDEFub3RoZXJFdmVudDIRCAISDUEgdGhpcmQgZXZlbnQ4yAFQAWIUCgp0aGVfcmVwb3J0ELuli/EIGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE9CgZsZWdhY3kSCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBjIARruAQoMZXZlbnQgZ3JvdXBzEAoYBSCsAigBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBJRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWU=";
+pub const CONFIG: &str = "KvIDCghjdXN0b21lchAKGuMDCgdwcm9qZWN0EAUaXQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhUKCnRoZV9yZXBvcnQQu6WL8QgYj05iGgoQdGhlX290aGVyX3JlcG9ydBDK3M3qARgGcghjdXN0b21lcnoHcHJvamVjdBqFAQoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiFAoKdGhlX3JlcG9ydBC7pYvxCBgHcghjdXN0b21lcnoHcHJvamVjdIIBNxILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBIAEa7gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhQKCnRoZV9yZXBvcnQQu6WL8QgYB3IIY3VzdG9tZXJ6B3Byb2plY3SCAUUKD1RoZSBGaXJzdCBHcm91cBILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GAKCATkKDkEgc2Vjb25kIGdyb3VwEggIARIEVGhpcxIGCAISAklzEgsIAxIHYW5vdGhlchIICAQSBFRlc3SCASUSDggAEgpUaGlzTWV0cmljEgkIAhIFSGFzTm8SCAgEEgROYW1l";
diff --git a/config/config_parser/src/source_generator/source_outputter.go b/config/config_parser/src/source_generator/source_outputter.go
index 2aeb9bb..0bba1a3 100644
--- a/config/config_parser/src/source_generator/source_outputter.go
+++ b/config/config_parser/src/source_generator/source_outputter.go
@@ -188,13 +188,6 @@
 	}
 
 	for _, metric := range c.Customers[0].Projects[0].Metrics {
-		events := make(map[uint32]string)
-		// TODO(zmbush): Remove once EventCodes deprecation is complete.
-		for value, name := range metric.EventCodes {
-			events[value] = name
-		}
-		so.writeEnum(metric.MetricName, "EventCode", events)
-
 		if len(metric.MetricDimensions) > 0 {
 			for i, md := range metric.MetricDimensions {
 				events := make(map[uint32]string)
@@ -205,10 +198,10 @@
 				if md.Dimension != "" {
 					varname = "Metric Dimension " + md.Dimension
 				}
-				so.writeEnum(metric.MetricName, varname, events)
 				if md.AlsoTreatAsLegacy {
 					so.writeEnum(metric.MetricName, "EventCode", events)
 				}
+				so.writeEnum(metric.MetricName, varname, events)
 			}
 		}
 	}
diff --git a/config/metric_definition.proto b/config/metric_definition.proto
index aa551f5..5dcebcb 100644
--- a/config/metric_definition.proto
+++ b/config/metric_definition.proto
@@ -277,25 +277,6 @@
   // This field is used in most Metric types.
   repeated MetricDimension metric_dimensions = 16;
 
-  // The enumerated set of event codes.
-  //
-  // This field is used in most Metric types.
-  //
-  // The keys are the numeric codes and the values are the human-readable labels
-  // for the codes. It is OK to add new elements to this map or to change the
-  // spelling of labels after data collection has started. It is not OK to
-  // change the meaning of any of the codes.
-  map<uint32, string> event_codes = 6
-      [(cobalt_options).hide_on_client = true, deprecated = true];
-
-  // Only needed with Metrics of type EVENT_OCCURRED.
-  // While additional event_codes may be added after data collection has begun,
-  // this value may not be changed and the event type indices must not exceed
-  // this value. Leave room for future growth of event_codes but set
-  // as small as possible because this affects the size of the Observations
-  // sent to the server for this Metric. This value must be < 1024.
-  uint32 max_event_code = 7;
-
   // The set of buckets for the histograms for this metric. This field is used
   // only with metrics of type INT_HISTOGRAM
   IntegerBuckets int_buckets = 8;
diff --git a/logger/test_registries/mixed_time_zone_test_registry.yaml b/logger/test_registries/mixed_time_zone_test_registry.yaml
index 72a3fed..ca92b6c 100644
--- a/logger/test_registries/mixed_time_zone_test_registry.yaml
+++ b/logger/test_registries/mixed_time_zone_test_registry.yaml
@@ -16,7 +16,8 @@
 - id: 1
   metric_name: "DeviceBoots"
   metric_type: EVENT_OCCURRED
-  max_event_code: 2
+  metric_dimensions:
+    - max_event_code: 2
   time_zone_policy: LOCAL
   reports:
     # Report ID: 131134909
@@ -29,7 +30,8 @@
 - id: 2
   metric_name: "FeaturesActive"
   metric_type: EVENT_OCCURRED
-  max_event_code: 2
+  metric_dimensions:
+    - max_event_code: 2
   time_zone_policy: UTC
   reports:
     # Report ID: 635837989
diff --git a/logger/test_registries/unique_actives_test_registry.yaml b/logger/test_registries/unique_actives_test_registry.yaml
index 1acc731..322a948 100644
--- a/logger/test_registries/unique_actives_test_registry.yaml
+++ b/logger/test_registries/unique_actives_test_registry.yaml
@@ -16,7 +16,8 @@
 - id: 1
   metric_name: "DeviceBoots"
   metric_type: EVENT_OCCURRED
-  max_event_code: 1
+  metric_dimensions:
+    - max_event_code: 1
   reports:
     # Report ID: 131134909
     - report_name: "DeviceBoots_UniqueDevices"
@@ -28,7 +29,8 @@
 - id: 2
   metric_name: "FeaturesActive"
   metric_type: EVENT_OCCURRED
-  max_event_code: 4
+  metric_dimensions:
+    - max_event_code: 4
   reports:
     # Report ID: 635837989
     - report_name: "FeaturesActive_UniqueDevices"
@@ -41,7 +43,8 @@
 - id: 3
   metric_name: "NetworkActivity"
   metric_type: EVENT_OCCURRED
-  max_event_code: 2
+  metric_dimensions:
+    - max_event_code: 2
   reports:
     # Report ID: 1956746741
     - report_name: "NetworkActivity_GlobalCount"
@@ -55,4 +58,3 @@
         - 1
         - 7
         - 30
-
diff --git a/third_party/config b/third_party/config
index ed1c853..2dbe7cf 160000
--- a/third_party/config
+++ b/third_party/config
@@ -1 +1 @@
-Subproject commit ed1c853a591bdae01f0d5e990619aa515bf307b5
+Subproject commit 2dbe7cf8b52f40847e38148d8beb05450a7bc96e
diff --git a/tools/test_app2/test_app_test.cc b/tools/test_app2/test_app_test.cc
index d118c0a..343776a 100644
--- a/tools/test_app2/test_app_test.cc
+++ b/tools/test_app2/test_app_test.cc
@@ -47,6 +47,7 @@
       project_id: 1
       id: 1
       metric_dimensions: {
+        dimension: "Event"
         max_event_code: 100
       }
       reports: {
@@ -155,7 +156,10 @@
       customer_id: 1
       project_id: 1
       id: 7
-      max_event_code: 9
+      metric_dimensions: {
+        dimension: "Feature"
+        max_event_code: 9
+      }
       reports: {
         report_name: "FeaturesActiveUniqueDevices"
         id: 301