diff --git a/src/bin/config_parser/src/source_generator/source_generator_test.go b/src/bin/config_parser/src/source_generator/source_generator_test.go
index 65a1326..30355e2 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test.go
+++ b/src/bin/config_parser/src/source_generator/source_generator_test.go
@@ -155,11 +155,11 @@
 
 func getConfigFrom(config string, cobalt_version config_parser.CobaltVersion) config.CobaltRegistry {
 	r := memConfigReader{}
-	r.SetProject("customer", "project", config)
+	r.SetProject("the_customer", "the_project", config)
 	con := config_parser.ProjectConfig{
-		CustomerName:  "customer",
+		CustomerName:  "the_customer",
 		CustomerId:    10,
-		ProjectName:   "project",
+		ProjectName:   "the_project",
 		ProjectId:     5,
 		CobaltVersion: cobalt_version,
 	}
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.dart b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.dart
index a9db598..470a785 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.dart
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.dart
@@ -1,9 +1,9 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-const String customerName = 'customer';
+const String customerName = 'the_customer';
 // ignore: constant_identifier_names
 const int customerId = 10;
-const String projectName = 'project';
+const String projectName = 'the_project';
 // ignore: constant_identifier_names
 const int projectId = 5;
 
@@ -141,4 +141,4 @@
 const int SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const String config = 'KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz';
+const String config = 'KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=';
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.go b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.go
index 46af5f2..a0717b0 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.go
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.go
@@ -1,9 +1,9 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
 package package
-const CustomerName string = "customer";
+const CustomerName string = "the_customer";
 const CustomerId uint32 = 10;
-const ProjectName string = "project";
+const ProjectName string = "the_project";
 const ProjectId uint32 = 5;
 
 // Linear bucket constants for linear buckets
@@ -45,58 +45,58 @@
 // Alias for event groups (Metric Dimension The First Group) which has the same event codes
 type EventGroupsMetricDimensionTheFirstGroup = TheOtherMetricNameMetricDimension0
 
-// Enum for project (Metric Dimension A second group)
-type ProjectMetricDimensionASecondGroup uint32
+// Enum for the_project (Metric Dimension A second group)
+type TheProjectMetricDimensionASecondGroup uint32
 const (
-_ ProjectMetricDimensionASecondGroup = iota
+_ TheProjectMetricDimensionASecondGroup = iota
   This = 1
   Is = 2
   Another = 3
   Test = 4
 )
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-type EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup
+type EventGroupsMetricDimensionASecondGroup = TheProjectMetricDimensionASecondGroup
 
-// Enum for project (Metric Dimension 2)
-type ProjectMetricDimension2 uint32
+// Enum for the_project (Metric Dimension 2)
+type TheProjectMetricDimension2 uint32
 const (
-_ ProjectMetricDimension2 = iota
+_ TheProjectMetricDimension2 = iota
   ThisMetric = 0
   HasNo = 2
   Name = 4
 )
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-type EventGroupsMetricDimension2 = ProjectMetricDimension2
+type EventGroupsMetricDimension2 = TheProjectMetricDimension2
 
-// Enum for project (Metric Dimension First)
-type ProjectMetricDimensionFirst uint32
+// Enum for the_project (Metric Dimension First)
+type TheProjectMetricDimensionFirst uint32
 const (
-_ ProjectMetricDimensionFirst = iota
+_ TheProjectMetricDimensionFirst = iota
   A = 1
   Set = 2
   OfEvent = 3
   Codes = 4
 )
 // Alias for metric (Metric Dimension First) which has the same event codes
-type MetricMetricDimensionFirst = ProjectMetricDimensionFirst
+type MetricMetricDimensionFirst = TheProjectMetricDimensionFirst
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-type SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst
+type SecondMetricMetricDimensionFirst = TheProjectMetricDimensionFirst
 
-// Enum for project (Metric Dimension Second)
-type ProjectMetricDimensionSecond uint32
+// Enum for the_project (Metric Dimension Second)
+type TheProjectMetricDimensionSecond uint32
 const (
-_ ProjectMetricDimensionSecond = iota
+_ TheProjectMetricDimensionSecond = iota
   Some = 0
   More = 4
   Event = 8
   Codes = 16
 )
 // Alias for metric (Metric Dimension Second) which has the same event codes
-type MetricMetricDimensionSecond = ProjectMetricDimensionSecond
+type MetricMetricDimensionSecond = TheProjectMetricDimensionSecond
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-type SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond
+type SecondMetricMetricDimensionSecond = TheProjectMetricDimensionSecond
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const Config string = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+const Config string = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.h b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.h
index 70d7880..b2e5641 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.h
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.h
@@ -1,13 +1,13 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-#ifndef COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
-#define COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
+#ifndef COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
+#define COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
 
 #include <cstdint>
 
-const char kCustomerName[] = "customer";
+const char kCustomerName[] = "the_customer";
 const uint32_t kCustomerId = 10;
-const char kProjectName[] = "project";
+const char kProjectName[] = "the_project";
 const uint32_t kProjectId = 5;
 
 // Linear bucket constants for linear buckets
@@ -56,89 +56,89 @@
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AnotherEvent = EventGroupsMetricDimensionTheFirstGroup::AnotherEvent;
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AThirdEvent = EventGroupsMetricDimensionTheFirstGroup::AThirdEvent;
 
-// Enum for project (Metric Dimension A second group)
-namespace __project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension A second group)
+namespace __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
 enum Enum {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 };
-}  // __project_metric_dimension_a_second_group_internal_scope_do_not_use__
-using ProjectMetricDimensionASecondGroup = __project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__
+using TheProjectMetricDimensionASecondGroup = __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-using EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup;
+using EventGroupsMetricDimensionASecondGroup = TheProjectMetricDimensionASecondGroup;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_This = EventGroupsMetricDimensionASecondGroup::This;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Is = EventGroupsMetricDimensionASecondGroup::Is;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Another = EventGroupsMetricDimensionASecondGroup::Another;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Test = EventGroupsMetricDimensionASecondGroup::Test;
 
-// Enum for project (Metric Dimension 2)
-namespace __project_metric_dimension_2_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension 2)
+namespace __the_project_metric_dimension_2_internal_scope_do_not_use__ {
 enum Enum {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
   Alias = HasNo,
 };
-}  // __project_metric_dimension_2_internal_scope_do_not_use__
-using ProjectMetricDimension2 = __project_metric_dimension_2_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_2_internal_scope_do_not_use__
+using TheProjectMetricDimension2 = __the_project_metric_dimension_2_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-using EventGroupsMetricDimension2 = ProjectMetricDimension2;
+using EventGroupsMetricDimension2 = TheProjectMetricDimension2;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_ThisMetric = EventGroupsMetricDimension2::ThisMetric;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_HasNo = EventGroupsMetricDimension2::HasNo;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Alias = EventGroupsMetricDimension2::Alias;
 
-// Enum for project (Metric Dimension First)
-namespace __project_metric_dimension_first_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension First)
+namespace __the_project_metric_dimension_first_internal_scope_do_not_use__ {
 enum Enum {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 };
-}  // __project_metric_dimension_first_internal_scope_do_not_use__
-using ProjectMetricDimensionFirst = __project_metric_dimension_first_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_first_internal_scope_do_not_use__
+using TheProjectMetricDimensionFirst = __the_project_metric_dimension_first_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension First) which has the same event codes
-using MetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using MetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_A = MetricMetricDimensionFirst::A;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Set = MetricMetricDimensionFirst::Set;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_OfEvent = MetricMetricDimensionFirst::OfEvent;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Codes = MetricMetricDimensionFirst::Codes;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-using SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using SecondMetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_A = SecondMetricMetricDimensionFirst::A;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Set = SecondMetricMetricDimensionFirst::Set;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_OfEvent = SecondMetricMetricDimensionFirst::OfEvent;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Codes = SecondMetricMetricDimensionFirst::Codes;
 
-// Enum for project (Metric Dimension Second)
-namespace __project_metric_dimension_second_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension Second)
+namespace __the_project_metric_dimension_second_internal_scope_do_not_use__ {
 enum Enum {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 };
-}  // __project_metric_dimension_second_internal_scope_do_not_use__
-using ProjectMetricDimensionSecond = __project_metric_dimension_second_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_second_internal_scope_do_not_use__
+using TheProjectMetricDimensionSecond = __the_project_metric_dimension_second_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension Second) which has the same event codes
-using MetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using MetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Some = MetricMetricDimensionSecond::Some;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_More = MetricMetricDimensionSecond::More;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Event = MetricMetricDimensionSecond::Event;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Codes = MetricMetricDimensionSecond::Codes;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-using SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using SecondMetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Some = SecondMetricMetricDimensionSecond::Some;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_More = SecondMetricMetricDimensionSecond::More;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Event = SecondMetricMetricDimensionSecond::Event;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const char kConfig[] = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+const char kConfig[] = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
 
-#endif  // COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
+#endif  // COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.json b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.json
index 0f6bc56..f413e7b 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.json
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.json
@@ -1,11 +1,11 @@
 {
   "customers": [
     {
-      "name": "customer",
+      "name": "the_customer",
       "id": 10,
       "projects": [
         {
-          "name": "project",
+          "name": "the_project",
           "id": 5,
           "project_contact": "",
           "metrics": [
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.rs b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.rs
index e51e740..3cde196 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.rs
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden.cb.rs
@@ -1,8 +1,8 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-pub const CUSTOMER_NAME: &str = "customer";
+pub const CUSTOMER_NAME: &str = "the_customer";
 pub const CUSTOMER_ID: u32 = 10;
-pub const PROJECT_NAME: &str = "project";
+pub const PROJECT_NAME: &str = "the_project";
 pub const PROJECT_ID: u32 = 5;
 
 // Linear bucket constants for linear buckets
@@ -43,58 +43,58 @@
 // Alias for event groups (Metric Dimension The First Group) which has the same event codes
 pub use TheOtherMetricNameMetricDimension0 as EventGroupsMetricDimensionTheFirstGroup;
 
-// Enum for project (Metric Dimension A second group)
+// Enum for the_project (Metric Dimension A second group)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionASecondGroup {
+pub enum TheProjectMetricDimensionASecondGroup {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 }
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-pub use ProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
+pub use TheProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
 
-// Enum for project (Metric Dimension 2)
+// Enum for the_project (Metric Dimension 2)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimension2 {
+pub enum TheProjectMetricDimension2 {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
 }
-impl ProjectMetricDimension2 {
+impl TheProjectMetricDimension2 {
   #[allow(non_upper_case_globals)]
-  pub const Alias: ProjectMetricDimension2 = ProjectMetricDimension2::HasNo;
+  pub const Alias: TheProjectMetricDimension2 = TheProjectMetricDimension2::HasNo;
 }
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-pub use ProjectMetricDimension2 as EventGroupsMetricDimension2;
+pub use TheProjectMetricDimension2 as EventGroupsMetricDimension2;
 
-// Enum for project (Metric Dimension First)
+// Enum for the_project (Metric Dimension First)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionFirst {
+pub enum TheProjectMetricDimensionFirst {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 }
 // Alias for metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as MetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as MetricMetricDimensionFirst;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
 
-// Enum for project (Metric Dimension Second)
+// Enum for the_project (Metric Dimension Second)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionSecond {
+pub enum TheProjectMetricDimensionSecond {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 }
 // Alias for metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as MetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as MetricMetricDimensionSecond;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-pub const CONFIG: &str = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+pub const CONFIG: &str = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.dart b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.dart
index 650c6c6..7881ea6 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.dart
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.dart
@@ -1,9 +1,9 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-const String customerName = 'customer';
+const String customerName = 'the_customer';
 // ignore: constant_identifier_names
 const int customerId = 10;
-const String projectName = 'project';
+const String projectName = 'the_project';
 // ignore: constant_identifier_names
 const int projectId = 5;
 
@@ -141,4 +141,4 @@
 const int SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const String config = 'KoMGCghjdXN0b21lchAKGvQFCgdwcm9qZWN0EAUaQgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYAxpsChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB4IBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGucBCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGiAKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBRoyChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAIadgoGbWV0cmljEAoYBSDYBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXMafQoNc2Vjb25kIG1ldHJpYxAKGAUg2QSCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz';
+const String config = 'KosGCgx0aGVfY3VzdG9tZXIQChr4BQoLdGhlX3Byb2plY3QQBRpCCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDGmwKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoAVABYhAKCnRoZV9yZXBvcnQQChgHggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa5wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHggFFCg9UaGUgRmlyc3QgR3JvdXASCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBgCggE5Cg5BIHNlY29uZCBncm91cBIICAESBFRoaXMSBggCEgJJcxILCAMSB2Fub3RoZXISCAgEEgRUZXN0ggE1Eg4IABIKVGhpc01ldHJpYxIJCAISBUhhc05vEggIBBIETmFtZSoOCgVIYXNObxIFQWxpYXMaIAoObGluZWFyIGJ1Y2tldHMQChgFIJADQgcSBRCMARgFGjIKE2V4cG9uZW50aWFsIGJ1Y2tldHMQChgFIPQDYhQKBnJlcG9ydBAoUggKBhADGAIgAhp2CgZtZXRyaWMQChgFINgEggEvCgVGaXJzdBIFCAESAUESBwgCEgNTZXQSCwgDEgdPZkV2ZW50EgkIBBIFQ29kZXOCATIKBlNlY29uZBIICAASBFNvbWUSCAgEEgRNb3JlEgkICBIFRXZlbnQSCQgQEgVDb2Rlcxp9Cg1zZWNvbmQgbWV0cmljEAoYBSDZBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=';
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.go b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.go
index 27918d9..5734d42 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.go
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.go
@@ -1,9 +1,9 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
 package package
-const CustomerName string = "customer";
+const CustomerName string = "the_customer";
 const CustomerId uint32 = 10;
-const ProjectName string = "project";
+const ProjectName string = "the_project";
 const ProjectId uint32 = 5;
 
 // Linear bucket constants for linear buckets
@@ -45,58 +45,58 @@
 // Alias for event groups (Metric Dimension The First Group) which has the same event codes
 type EventGroupsMetricDimensionTheFirstGroup = TheOtherMetricNameMetricDimension0
 
-// Enum for project (Metric Dimension A second group)
-type ProjectMetricDimensionASecondGroup uint32
+// Enum for the_project (Metric Dimension A second group)
+type TheProjectMetricDimensionASecondGroup uint32
 const (
-_ ProjectMetricDimensionASecondGroup = iota
+_ TheProjectMetricDimensionASecondGroup = iota
   This = 1
   Is = 2
   Another = 3
   Test = 4
 )
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-type EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup
+type EventGroupsMetricDimensionASecondGroup = TheProjectMetricDimensionASecondGroup
 
-// Enum for project (Metric Dimension 2)
-type ProjectMetricDimension2 uint32
+// Enum for the_project (Metric Dimension 2)
+type TheProjectMetricDimension2 uint32
 const (
-_ ProjectMetricDimension2 = iota
+_ TheProjectMetricDimension2 = iota
   ThisMetric = 0
   HasNo = 2
   Name = 4
 )
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-type EventGroupsMetricDimension2 = ProjectMetricDimension2
+type EventGroupsMetricDimension2 = TheProjectMetricDimension2
 
-// Enum for project (Metric Dimension First)
-type ProjectMetricDimensionFirst uint32
+// Enum for the_project (Metric Dimension First)
+type TheProjectMetricDimensionFirst uint32
 const (
-_ ProjectMetricDimensionFirst = iota
+_ TheProjectMetricDimensionFirst = iota
   A = 1
   Set = 2
   OfEvent = 3
   Codes = 4
 )
 // Alias for metric (Metric Dimension First) which has the same event codes
-type MetricMetricDimensionFirst = ProjectMetricDimensionFirst
+type MetricMetricDimensionFirst = TheProjectMetricDimensionFirst
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-type SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst
+type SecondMetricMetricDimensionFirst = TheProjectMetricDimensionFirst
 
-// Enum for project (Metric Dimension Second)
-type ProjectMetricDimensionSecond uint32
+// Enum for the_project (Metric Dimension Second)
+type TheProjectMetricDimensionSecond uint32
 const (
-_ ProjectMetricDimensionSecond = iota
+_ TheProjectMetricDimensionSecond = iota
   Some = 0
   More = 4
   Event = 8
   Codes = 16
 )
 // Alias for metric (Metric Dimension Second) which has the same event codes
-type MetricMetricDimensionSecond = ProjectMetricDimensionSecond
+type MetricMetricDimensionSecond = TheProjectMetricDimensionSecond
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-type SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond
+type SecondMetricMetricDimensionSecond = TheProjectMetricDimensionSecond
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const Config string = "KoMGCghjdXN0b21lchAKGvQFCgdwcm9qZWN0EAUaQgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYAxpsChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB4IBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGucBCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGiAKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBRoyChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAIadgoGbWV0cmljEAoYBSDYBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXMafQoNc2Vjb25kIG1ldHJpYxAKGAUg2QSCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+const Config string = "KosGCgx0aGVfY3VzdG9tZXIQChr4BQoLdGhlX3Byb2plY3QQBRpCCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDGmwKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoAVABYhAKCnRoZV9yZXBvcnQQChgHggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa5wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHggFFCg9UaGUgRmlyc3QgR3JvdXASCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBgCggE5Cg5BIHNlY29uZCBncm91cBIICAESBFRoaXMSBggCEgJJcxILCAMSB2Fub3RoZXISCAgEEgRUZXN0ggE1Eg4IABIKVGhpc01ldHJpYxIJCAISBUhhc05vEggIBBIETmFtZSoOCgVIYXNObxIFQWxpYXMaIAoObGluZWFyIGJ1Y2tldHMQChgFIJADQgcSBRCMARgFGjIKE2V4cG9uZW50aWFsIGJ1Y2tldHMQChgFIPQDYhQKBnJlcG9ydBAoUggKBhADGAIgAhp2CgZtZXRyaWMQChgFINgEggEvCgVGaXJzdBIFCAESAUESBwgCEgNTZXQSCwgDEgdPZkV2ZW50EgkIBBIFQ29kZXOCATIKBlNlY29uZBIICAASBFNvbWUSCAgEEgRNb3JlEgkICBIFRXZlbnQSCQgQEgVDb2Rlcxp9Cg1zZWNvbmQgbWV0cmljEAoYBSDZBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.h b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.h
index b770db4..d541b6e 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.h
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.h
@@ -1,13 +1,13 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-#ifndef COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
-#define COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
+#ifndef COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
+#define COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
 
 #include <cstdint>
 
-const char kCustomerName[] = "customer";
+const char kCustomerName[] = "the_customer";
 const uint32_t kCustomerId = 10;
-const char kProjectName[] = "project";
+const char kProjectName[] = "the_project";
 const uint32_t kProjectId = 5;
 
 // Linear bucket constants for linear buckets
@@ -56,89 +56,89 @@
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AnotherEvent = EventGroupsMetricDimensionTheFirstGroup::AnotherEvent;
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AThirdEvent = EventGroupsMetricDimensionTheFirstGroup::AThirdEvent;
 
-// Enum for project (Metric Dimension A second group)
-namespace __project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension A second group)
+namespace __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
 enum Enum {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 };
-}  // __project_metric_dimension_a_second_group_internal_scope_do_not_use__
-using ProjectMetricDimensionASecondGroup = __project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__
+using TheProjectMetricDimensionASecondGroup = __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-using EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup;
+using EventGroupsMetricDimensionASecondGroup = TheProjectMetricDimensionASecondGroup;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_This = EventGroupsMetricDimensionASecondGroup::This;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Is = EventGroupsMetricDimensionASecondGroup::Is;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Another = EventGroupsMetricDimensionASecondGroup::Another;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Test = EventGroupsMetricDimensionASecondGroup::Test;
 
-// Enum for project (Metric Dimension 2)
-namespace __project_metric_dimension_2_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension 2)
+namespace __the_project_metric_dimension_2_internal_scope_do_not_use__ {
 enum Enum {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
   Alias = HasNo,
 };
-}  // __project_metric_dimension_2_internal_scope_do_not_use__
-using ProjectMetricDimension2 = __project_metric_dimension_2_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_2_internal_scope_do_not_use__
+using TheProjectMetricDimension2 = __the_project_metric_dimension_2_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-using EventGroupsMetricDimension2 = ProjectMetricDimension2;
+using EventGroupsMetricDimension2 = TheProjectMetricDimension2;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_ThisMetric = EventGroupsMetricDimension2::ThisMetric;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_HasNo = EventGroupsMetricDimension2::HasNo;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Alias = EventGroupsMetricDimension2::Alias;
 
-// Enum for project (Metric Dimension First)
-namespace __project_metric_dimension_first_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension First)
+namespace __the_project_metric_dimension_first_internal_scope_do_not_use__ {
 enum Enum {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 };
-}  // __project_metric_dimension_first_internal_scope_do_not_use__
-using ProjectMetricDimensionFirst = __project_metric_dimension_first_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_first_internal_scope_do_not_use__
+using TheProjectMetricDimensionFirst = __the_project_metric_dimension_first_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension First) which has the same event codes
-using MetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using MetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_A = MetricMetricDimensionFirst::A;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Set = MetricMetricDimensionFirst::Set;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_OfEvent = MetricMetricDimensionFirst::OfEvent;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Codes = MetricMetricDimensionFirst::Codes;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-using SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using SecondMetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_A = SecondMetricMetricDimensionFirst::A;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Set = SecondMetricMetricDimensionFirst::Set;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_OfEvent = SecondMetricMetricDimensionFirst::OfEvent;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Codes = SecondMetricMetricDimensionFirst::Codes;
 
-// Enum for project (Metric Dimension Second)
-namespace __project_metric_dimension_second_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension Second)
+namespace __the_project_metric_dimension_second_internal_scope_do_not_use__ {
 enum Enum {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 };
-}  // __project_metric_dimension_second_internal_scope_do_not_use__
-using ProjectMetricDimensionSecond = __project_metric_dimension_second_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_second_internal_scope_do_not_use__
+using TheProjectMetricDimensionSecond = __the_project_metric_dimension_second_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension Second) which has the same event codes
-using MetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using MetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Some = MetricMetricDimensionSecond::Some;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_More = MetricMetricDimensionSecond::More;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Event = MetricMetricDimensionSecond::Event;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Codes = MetricMetricDimensionSecond::Codes;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-using SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using SecondMetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Some = SecondMetricMetricDimensionSecond::Some;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_More = SecondMetricMetricDimensionSecond::More;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Event = SecondMetricMetricDimensionSecond::Event;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const char kConfig[] = "KoMGCghjdXN0b21lchAKGvQFCgdwcm9qZWN0EAUaQgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYAxpsChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB4IBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGucBCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGiAKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBRoyChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAIadgoGbWV0cmljEAoYBSDYBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXMafQoNc2Vjb25kIG1ldHJpYxAKGAUg2QSCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+const char kConfig[] = "KosGCgx0aGVfY3VzdG9tZXIQChr4BQoLdGhlX3Byb2plY3QQBRpCCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDGmwKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoAVABYhAKCnRoZV9yZXBvcnQQChgHggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa5wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHggFFCg9UaGUgRmlyc3QgR3JvdXASCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBgCggE5Cg5BIHNlY29uZCBncm91cBIICAESBFRoaXMSBggCEgJJcxILCAMSB2Fub3RoZXISCAgEEgRUZXN0ggE1Eg4IABIKVGhpc01ldHJpYxIJCAISBUhhc05vEggIBBIETmFtZSoOCgVIYXNObxIFQWxpYXMaIAoObGluZWFyIGJ1Y2tldHMQChgFIJADQgcSBRCMARgFGjIKE2V4cG9uZW50aWFsIGJ1Y2tldHMQChgFIPQDYhQKBnJlcG9ydBAoUggKBhADGAIgAhp2CgZtZXRyaWMQChgFINgEggEvCgVGaXJzdBIFCAESAUESBwgCEgNTZXQSCwgDEgdPZkV2ZW50EgkIBBIFQ29kZXOCATIKBlNlY29uZBIICAASBFNvbWUSCAgEEgRNb3JlEgkICBIFRXZlbnQSCQgQEgVDb2Rlcxp9Cg1zZWNvbmQgbWV0cmljEAoYBSDZBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
 
-#endif  // COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
+#endif  // COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.rs b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.rs
index 36bbdc4..67f60d2 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.rs
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_filtered.cb.rs
@@ -1,8 +1,8 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-pub const CUSTOMER_NAME: &str = "customer";
+pub const CUSTOMER_NAME: &str = "the_customer";
 pub const CUSTOMER_ID: u32 = 10;
-pub const PROJECT_NAME: &str = "project";
+pub const PROJECT_NAME: &str = "the_project";
 pub const PROJECT_ID: u32 = 5;
 
 // Linear bucket constants for linear buckets
@@ -43,58 +43,58 @@
 // Alias for event groups (Metric Dimension The First Group) which has the same event codes
 pub use TheOtherMetricNameMetricDimension0 as EventGroupsMetricDimensionTheFirstGroup;
 
-// Enum for project (Metric Dimension A second group)
+// Enum for the_project (Metric Dimension A second group)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionASecondGroup {
+pub enum TheProjectMetricDimensionASecondGroup {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 }
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-pub use ProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
+pub use TheProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
 
-// Enum for project (Metric Dimension 2)
+// Enum for the_project (Metric Dimension 2)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimension2 {
+pub enum TheProjectMetricDimension2 {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
 }
-impl ProjectMetricDimension2 {
+impl TheProjectMetricDimension2 {
   #[allow(non_upper_case_globals)]
-  pub const Alias: ProjectMetricDimension2 = ProjectMetricDimension2::HasNo;
+  pub const Alias: TheProjectMetricDimension2 = TheProjectMetricDimension2::HasNo;
 }
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-pub use ProjectMetricDimension2 as EventGroupsMetricDimension2;
+pub use TheProjectMetricDimension2 as EventGroupsMetricDimension2;
 
-// Enum for project (Metric Dimension First)
+// Enum for the_project (Metric Dimension First)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionFirst {
+pub enum TheProjectMetricDimensionFirst {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 }
 // Alias for metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as MetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as MetricMetricDimensionFirst;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
 
-// Enum for project (Metric Dimension Second)
+// Enum for the_project (Metric Dimension Second)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionSecond {
+pub enum TheProjectMetricDimensionSecond {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 }
 // Alias for metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as MetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as MetricMetricDimensionSecond;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-pub const CONFIG: &str = "KoMGCghjdXN0b21lchAKGvQFCgdwcm9qZWN0EAUaQgoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYAxpsChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB4IBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGucBCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB4IBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGiAKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBRoyChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAIadgoGbWV0cmljEAoYBSDYBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXMafQoNc2Vjb25kIG1ldHJpYxAKGAUg2QSCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+pub const CONFIG: &str = "KosGCgx0aGVfY3VzdG9tZXIQChr4BQoLdGhlX3Byb2plY3QQBRpCCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDGmwKFXRoZV9vdGhlcl9tZXRyaWNfbmFtZRAKGAUgyAEoAVABYhAKCnRoZV9yZXBvcnQQChgHggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa5wEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHggFFCg9UaGUgRmlyc3QgR3JvdXASCwgAEgdBbkV2ZW50EhAIARIMQW5vdGhlckV2ZW50EhEIAhINQSB0aGlyZCBldmVudBgCggE5Cg5BIHNlY29uZCBncm91cBIICAESBFRoaXMSBggCEgJJcxILCAMSB2Fub3RoZXISCAgEEgRUZXN0ggE1Eg4IABIKVGhpc01ldHJpYxIJCAISBUhhc05vEggIBBIETmFtZSoOCgVIYXNObxIFQWxpYXMaIAoObGluZWFyIGJ1Y2tldHMQChgFIJADQgcSBRCMARgFGjIKE2V4cG9uZW50aWFsIGJ1Y2tldHMQChgFIPQDYhQKBnJlcG9ydBAoUggKBhADGAIgAhp2CgZtZXRyaWMQChgFINgEggEvCgVGaXJzdBIFCAESAUESBwgCEgNTZXQSCwgDEgdPZkV2ZW50EgkIBBIFQ29kZXOCATIKBlNlY29uZBIICAASBFNvbWUSCAgEEgRNb3JlEgkICBIFRXZlbnQSCQgQEgVDb2Rlcxp9Cg1zZWNvbmQgbWV0cmljEAoYBSDZBIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.dart b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.dart
index 091b711..57ba014 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.dart
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.dart
@@ -1,9 +1,9 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-const String customerName = 'customer';
+const String customerName = 'the_customer';
 // ignore: constant_identifier_names
 const int customerId = 10;
-const String projectName = 'project';
+const String projectName = 'the_project';
 // ignore: constant_identifier_names
 const int projectId = 5;
 
@@ -158,4 +158,4 @@
 const int SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const String config = 'KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz';
+const String config = 'KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=';
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.go b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.go
index 16bf9a1..ccd57eb 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.go
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.go
@@ -1,9 +1,9 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
 package package
-const CustomerName string = "customer";
+const CustomerName string = "the_customer";
 const CustomerId uint32 = 10;
-const ProjectName string = "project";
+const ProjectName string = "the_project";
 const ProjectId uint32 = 5;
 
 // Linear bucket constants for linear buckets
@@ -57,58 +57,58 @@
 // Alias for event groups (Metric Dimension The First Group) which has the same event codes
 type EventGroupsMetricDimensionTheFirstGroup = TheOtherMetricNameMetricDimension0
 
-// Enum for project (Metric Dimension A second group)
-type ProjectMetricDimensionASecondGroup uint32
+// Enum for the_project (Metric Dimension A second group)
+type TheProjectMetricDimensionASecondGroup uint32
 const (
-_ ProjectMetricDimensionASecondGroup = iota
+_ TheProjectMetricDimensionASecondGroup = iota
   This = 1
   Is = 2
   Another = 3
   Test = 4
 )
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-type EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup
+type EventGroupsMetricDimensionASecondGroup = TheProjectMetricDimensionASecondGroup
 
-// Enum for project (Metric Dimension 2)
-type ProjectMetricDimension2 uint32
+// Enum for the_project (Metric Dimension 2)
+type TheProjectMetricDimension2 uint32
 const (
-_ ProjectMetricDimension2 = iota
+_ TheProjectMetricDimension2 = iota
   ThisMetric = 0
   HasNo = 2
   Name = 4
 )
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-type EventGroupsMetricDimension2 = ProjectMetricDimension2
+type EventGroupsMetricDimension2 = TheProjectMetricDimension2
 
-// Enum for project (Metric Dimension First)
-type ProjectMetricDimensionFirst uint32
+// Enum for the_project (Metric Dimension First)
+type TheProjectMetricDimensionFirst uint32
 const (
-_ ProjectMetricDimensionFirst = iota
+_ TheProjectMetricDimensionFirst = iota
   A = 1
   Set = 2
   OfEvent = 3
   Codes = 4
 )
 // Alias for metric (Metric Dimension First) which has the same event codes
-type MetricMetricDimensionFirst = ProjectMetricDimensionFirst
+type MetricMetricDimensionFirst = TheProjectMetricDimensionFirst
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-type SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst
+type SecondMetricMetricDimensionFirst = TheProjectMetricDimensionFirst
 
-// Enum for project (Metric Dimension Second)
-type ProjectMetricDimensionSecond uint32
+// Enum for the_project (Metric Dimension Second)
+type TheProjectMetricDimensionSecond uint32
 const (
-_ ProjectMetricDimensionSecond = iota
+_ TheProjectMetricDimensionSecond = iota
   Some = 0
   More = 4
   Event = 8
   Codes = 16
 )
 // Alias for metric (Metric Dimension Second) which has the same event codes
-type MetricMetricDimensionSecond = ProjectMetricDimensionSecond
+type MetricMetricDimensionSecond = TheProjectMetricDimensionSecond
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-type SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond
+type SecondMetricMetricDimensionSecond = TheProjectMetricDimensionSecond
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const Config string = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+const Config string = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.h b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.h
index 841475d..6983df5 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.h
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.h
@@ -1,13 +1,13 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-#ifndef COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
-#define COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
+#ifndef COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
+#define COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
 
 #include <cstdint>
 
-const char kCustomerName[] = "customer";
+const char kCustomerName[] = "the_customer";
 const uint32_t kCustomerId = 10;
-const char kProjectName[] = "project";
+const char kProjectName[] = "the_project";
 const uint32_t kProjectId = 5;
 
 // Linear bucket constants for linear buckets
@@ -68,89 +68,89 @@
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AnotherEvent = EventGroupsMetricDimensionTheFirstGroup::AnotherEvent;
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AThirdEvent = EventGroupsMetricDimensionTheFirstGroup::AThirdEvent;
 
-// Enum for project (Metric Dimension A second group)
-namespace __project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension A second group)
+namespace __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
 enum Enum {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 };
-}  // __project_metric_dimension_a_second_group_internal_scope_do_not_use__
-using ProjectMetricDimensionASecondGroup = __project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__
+using TheProjectMetricDimensionASecondGroup = __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-using EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup;
+using EventGroupsMetricDimensionASecondGroup = TheProjectMetricDimensionASecondGroup;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_This = EventGroupsMetricDimensionASecondGroup::This;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Is = EventGroupsMetricDimensionASecondGroup::Is;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Another = EventGroupsMetricDimensionASecondGroup::Another;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Test = EventGroupsMetricDimensionASecondGroup::Test;
 
-// Enum for project (Metric Dimension 2)
-namespace __project_metric_dimension_2_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension 2)
+namespace __the_project_metric_dimension_2_internal_scope_do_not_use__ {
 enum Enum {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
   Alias = HasNo,
 };
-}  // __project_metric_dimension_2_internal_scope_do_not_use__
-using ProjectMetricDimension2 = __project_metric_dimension_2_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_2_internal_scope_do_not_use__
+using TheProjectMetricDimension2 = __the_project_metric_dimension_2_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-using EventGroupsMetricDimension2 = ProjectMetricDimension2;
+using EventGroupsMetricDimension2 = TheProjectMetricDimension2;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_ThisMetric = EventGroupsMetricDimension2::ThisMetric;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_HasNo = EventGroupsMetricDimension2::HasNo;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Alias = EventGroupsMetricDimension2::Alias;
 
-// Enum for project (Metric Dimension First)
-namespace __project_metric_dimension_first_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension First)
+namespace __the_project_metric_dimension_first_internal_scope_do_not_use__ {
 enum Enum {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 };
-}  // __project_metric_dimension_first_internal_scope_do_not_use__
-using ProjectMetricDimensionFirst = __project_metric_dimension_first_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_first_internal_scope_do_not_use__
+using TheProjectMetricDimensionFirst = __the_project_metric_dimension_first_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension First) which has the same event codes
-using MetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using MetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_A = MetricMetricDimensionFirst::A;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Set = MetricMetricDimensionFirst::Set;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_OfEvent = MetricMetricDimensionFirst::OfEvent;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Codes = MetricMetricDimensionFirst::Codes;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-using SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using SecondMetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_A = SecondMetricMetricDimensionFirst::A;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Set = SecondMetricMetricDimensionFirst::Set;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_OfEvent = SecondMetricMetricDimensionFirst::OfEvent;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Codes = SecondMetricMetricDimensionFirst::Codes;
 
-// Enum for project (Metric Dimension Second)
-namespace __project_metric_dimension_second_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension Second)
+namespace __the_project_metric_dimension_second_internal_scope_do_not_use__ {
 enum Enum {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 };
-}  // __project_metric_dimension_second_internal_scope_do_not_use__
-using ProjectMetricDimensionSecond = __project_metric_dimension_second_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_second_internal_scope_do_not_use__
+using TheProjectMetricDimensionSecond = __the_project_metric_dimension_second_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension Second) which has the same event codes
-using MetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using MetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Some = MetricMetricDimensionSecond::Some;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_More = MetricMetricDimensionSecond::More;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Event = MetricMetricDimensionSecond::Event;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Codes = MetricMetricDimensionSecond::Codes;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-using SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using SecondMetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Some = SecondMetricMetricDimensionSecond::Some;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_More = SecondMetricMetricDimensionSecond::More;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Event = SecondMetricMetricDimensionSecond::Event;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const char kConfig[] = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+const char kConfig[] = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
 
-#endif  // COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
+#endif  // COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_GEN_
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.rs b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.rs
index 7ce06ca..2c8003b 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.rs
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_for_testing.cb.rs
@@ -1,8 +1,8 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-pub const CUSTOMER_NAME: &str = "customer";
+pub const CUSTOMER_NAME: &str = "the_customer";
 pub const CUSTOMER_ID: u32 = 10;
-pub const PROJECT_NAME: &str = "project";
+pub const PROJECT_NAME: &str = "the_project";
 pub const PROJECT_ID: u32 = 5;
 
 // Linear bucket constants for linear buckets
@@ -55,58 +55,58 @@
 // Alias for event groups (Metric Dimension The First Group) which has the same event codes
 pub use TheOtherMetricNameMetricDimension0 as EventGroupsMetricDimensionTheFirstGroup;
 
-// Enum for project (Metric Dimension A second group)
+// Enum for the_project (Metric Dimension A second group)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionASecondGroup {
+pub enum TheProjectMetricDimensionASecondGroup {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 }
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-pub use ProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
+pub use TheProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
 
-// Enum for project (Metric Dimension 2)
+// Enum for the_project (Metric Dimension 2)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimension2 {
+pub enum TheProjectMetricDimension2 {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
 }
-impl ProjectMetricDimension2 {
+impl TheProjectMetricDimension2 {
   #[allow(non_upper_case_globals)]
-  pub const Alias: ProjectMetricDimension2 = ProjectMetricDimension2::HasNo;
+  pub const Alias: TheProjectMetricDimension2 = TheProjectMetricDimension2::HasNo;
 }
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-pub use ProjectMetricDimension2 as EventGroupsMetricDimension2;
+pub use TheProjectMetricDimension2 as EventGroupsMetricDimension2;
 
-// Enum for project (Metric Dimension First)
+// Enum for the_project (Metric Dimension First)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionFirst {
+pub enum TheProjectMetricDimensionFirst {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 }
 // Alias for metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as MetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as MetricMetricDimensionFirst;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
 
-// Enum for project (Metric Dimension Second)
+// Enum for the_project (Metric Dimension Second)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionSecond {
+pub enum TheProjectMetricDimensionSecond {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 }
 // Alias for metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as MetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as MetricMetricDimensionSecond;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-pub const CONFIG: &str = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+pub const CONFIG: &str = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.h b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.h
index e9076a5..2f35a0c 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.h
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.h
@@ -1,14 +1,14 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
-#ifndef COBALT_REGISTRY_CUSTOMER_PROJECT_NS1_NS2_GEN_
-#define COBALT_REGISTRY_CUSTOMER_PROJECT_NS1_NS2_GEN_
+#ifndef COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_NS1_NS2_GEN_
+#define COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_NS1_NS2_GEN_
 
 #include <cstdint>
 
 namespace ns1::ns2 {
-const char kCustomerName[] = "customer";
+const char kCustomerName[] = "the_customer";
 const uint32_t kCustomerId = 10;
-const char kProjectName[] = "project";
+const char kProjectName[] = "the_project";
 const uint32_t kProjectId = 5;
 
 // Linear bucket constants for linear buckets
@@ -57,90 +57,90 @@
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AnotherEvent = EventGroupsMetricDimensionTheFirstGroup::AnotherEvent;
 const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AThirdEvent = EventGroupsMetricDimensionTheFirstGroup::AThirdEvent;
 
-// Enum for project (Metric Dimension A second group)
-namespace __project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension A second group)
+namespace __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
 enum Enum {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 };
-}  // __project_metric_dimension_a_second_group_internal_scope_do_not_use__
-using ProjectMetricDimensionASecondGroup = __project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__
+using TheProjectMetricDimensionASecondGroup = __the_project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-using EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup;
+using EventGroupsMetricDimensionASecondGroup = TheProjectMetricDimensionASecondGroup;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_This = EventGroupsMetricDimensionASecondGroup::This;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Is = EventGroupsMetricDimensionASecondGroup::Is;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Another = EventGroupsMetricDimensionASecondGroup::Another;
 const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Test = EventGroupsMetricDimensionASecondGroup::Test;
 
-// Enum for project (Metric Dimension 2)
-namespace __project_metric_dimension_2_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension 2)
+namespace __the_project_metric_dimension_2_internal_scope_do_not_use__ {
 enum Enum {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
   Alias = HasNo,
 };
-}  // __project_metric_dimension_2_internal_scope_do_not_use__
-using ProjectMetricDimension2 = __project_metric_dimension_2_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_2_internal_scope_do_not_use__
+using TheProjectMetricDimension2 = __the_project_metric_dimension_2_internal_scope_do_not_use__::Enum;
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-using EventGroupsMetricDimension2 = ProjectMetricDimension2;
+using EventGroupsMetricDimension2 = TheProjectMetricDimension2;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_ThisMetric = EventGroupsMetricDimension2::ThisMetric;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_HasNo = EventGroupsMetricDimension2::HasNo;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
 const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Alias = EventGroupsMetricDimension2::Alias;
 
-// Enum for project (Metric Dimension First)
-namespace __project_metric_dimension_first_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension First)
+namespace __the_project_metric_dimension_first_internal_scope_do_not_use__ {
 enum Enum {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 };
-}  // __project_metric_dimension_first_internal_scope_do_not_use__
-using ProjectMetricDimensionFirst = __project_metric_dimension_first_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_first_internal_scope_do_not_use__
+using TheProjectMetricDimensionFirst = __the_project_metric_dimension_first_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension First) which has the same event codes
-using MetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using MetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_A = MetricMetricDimensionFirst::A;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Set = MetricMetricDimensionFirst::Set;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_OfEvent = MetricMetricDimensionFirst::OfEvent;
 const MetricMetricDimensionFirst MetricMetricDimensionFirst_Codes = MetricMetricDimensionFirst::Codes;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-using SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst;
+using SecondMetricMetricDimensionFirst = TheProjectMetricDimensionFirst;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_A = SecondMetricMetricDimensionFirst::A;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Set = SecondMetricMetricDimensionFirst::Set;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_OfEvent = SecondMetricMetricDimensionFirst::OfEvent;
 const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Codes = SecondMetricMetricDimensionFirst::Codes;
 
-// Enum for project (Metric Dimension Second)
-namespace __project_metric_dimension_second_internal_scope_do_not_use__ {
+// Enum for the_project (Metric Dimension Second)
+namespace __the_project_metric_dimension_second_internal_scope_do_not_use__ {
 enum Enum {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 };
-}  // __project_metric_dimension_second_internal_scope_do_not_use__
-using ProjectMetricDimensionSecond = __project_metric_dimension_second_internal_scope_do_not_use__::Enum;
+}  // __the_project_metric_dimension_second_internal_scope_do_not_use__
+using TheProjectMetricDimensionSecond = __the_project_metric_dimension_second_internal_scope_do_not_use__::Enum;
 // Alias for metric (Metric Dimension Second) which has the same event codes
-using MetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using MetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Some = MetricMetricDimensionSecond::Some;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_More = MetricMetricDimensionSecond::More;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Event = MetricMetricDimensionSecond::Event;
 const MetricMetricDimensionSecond MetricMetricDimensionSecond_Codes = MetricMetricDimensionSecond::Codes;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-using SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond;
+using SecondMetricMetricDimensionSecond = TheProjectMetricDimensionSecond;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Some = SecondMetricMetricDimensionSecond::Some;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_More = SecondMetricMetricDimensionSecond::More;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Event = SecondMetricMetricDimensionSecond::Event;
 const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-const char kConfig[] = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+const char kConfig[] = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
 }  // ns1::ns2
 
-#endif  // COBALT_REGISTRY_CUSTOMER_PROJECT_NS1_NS2_GEN_
+#endif  // COBALT_REGISTRY_THE_CUSTOMER_THE_PROJECT_NS1_NS2_GEN_
diff --git a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.rs b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.rs
index fe35271..d1d6764 100644
--- a/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.rs
+++ b/src/bin/config_parser/src/source_generator/source_generator_test_files/golden_with_ns.cb.rs
@@ -1,9 +1,9 @@
 // This file was generated by Cobalt's Config parser based on the configuration
 // YAML in the cobalt_config repository. Edit the YAML there to make changes.
 pub mod ns1::ns2 {
-pub const CUSTOMER_NAME: &str = "customer";
+pub const CUSTOMER_NAME: &str = "the_customer";
 pub const CUSTOMER_ID: u32 = 10;
-pub const PROJECT_NAME: &str = "project";
+pub const PROJECT_NAME: &str = "the_project";
 pub const PROJECT_ID: u32 = 5;
 
 // Linear bucket constants for linear buckets
@@ -44,59 +44,59 @@
 // Alias for event groups (Metric Dimension The First Group) which has the same event codes
 pub use TheOtherMetricNameMetricDimension0 as EventGroupsMetricDimensionTheFirstGroup;
 
-// Enum for project (Metric Dimension A second group)
+// Enum for the_project (Metric Dimension A second group)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionASecondGroup {
+pub enum TheProjectMetricDimensionASecondGroup {
   This = 1,
   Is = 2,
   Another = 3,
   Test = 4,
 }
 // Alias for event groups (Metric Dimension A second group) which has the same event codes
-pub use ProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
+pub use TheProjectMetricDimensionASecondGroup as EventGroupsMetricDimensionASecondGroup;
 
-// Enum for project (Metric Dimension 2)
+// Enum for the_project (Metric Dimension 2)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimension2 {
+pub enum TheProjectMetricDimension2 {
   ThisMetric = 0,
   HasNo = 2,
   Name = 4,
 }
-impl ProjectMetricDimension2 {
+impl TheProjectMetricDimension2 {
   #[allow(non_upper_case_globals)]
-  pub const Alias: ProjectMetricDimension2 = ProjectMetricDimension2::HasNo;
+  pub const Alias: TheProjectMetricDimension2 = TheProjectMetricDimension2::HasNo;
 }
 // Alias for event groups (Metric Dimension 2) which has the same event codes
-pub use ProjectMetricDimension2 as EventGroupsMetricDimension2;
+pub use TheProjectMetricDimension2 as EventGroupsMetricDimension2;
 
-// Enum for project (Metric Dimension First)
+// Enum for the_project (Metric Dimension First)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionFirst {
+pub enum TheProjectMetricDimensionFirst {
   A = 1,
   Set = 2,
   OfEvent = 3,
   Codes = 4,
 }
 // Alias for metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as MetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as MetricMetricDimensionFirst;
 
 // Alias for second metric (Metric Dimension First) which has the same event codes
-pub use ProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
+pub use TheProjectMetricDimensionFirst as SecondMetricMetricDimensionFirst;
 
-// Enum for project (Metric Dimension Second)
+// Enum for the_project (Metric Dimension Second)
 #[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
-pub enum ProjectMetricDimensionSecond {
+pub enum TheProjectMetricDimensionSecond {
   Some = 0,
   More = 4,
   Event = 8,
   Codes = 16,
 }
 // Alias for metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as MetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as MetricMetricDimensionSecond;
 
 // Alias for second metric (Metric Dimension Second) which has the same event codes
-pub use ProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
+pub use TheProjectMetricDimensionSecond as SecondMetricMetricDimensionSecond;
 
 // The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
-pub const CONFIG: &str = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";
+pub const CONFIG: &str = "KssHCgx0aGVfY3VzdG9tZXIQChq4BwoLdGhlX3Byb2plY3QQBRpdCg90aGVfbWV0cmljX25hbWUQChgFIGRiEQoKdGhlX3JlcG9ydBAKGI9OYhYKEHRoZV9vdGhlcl9yZXBvcnQQFBgDcgx0aGVfY3VzdG9tZXJ6C3RoZV9wcm9qZWN0GocBChV0aGVfb3RoZXJfbWV0cmljX25hbWUQChgFIMgBKAFQAWIQCgp0aGVfcmVwb3J0EAoYB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBNRILCAASB0FuRXZlbnQSEAgBEgxBbm90aGVyRXZlbnQSEQgCEg1BIHRoaXJkIGV2ZW50GMgBGoICCgxldmVudCBncm91cHMQChgFIKwCKAFQAWIQCgp0aGVfcmVwb3J0EB4YB3IMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjsKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdBpNChNleHBvbmVudGlhbCBidWNrZXRzEAoYBSD0A2IUCgZyZXBvcnQQKFIICgYQAxgCIAJyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3QakQEKBm1ldHJpYxAKGAUg2ARyDHRoZV9jdXN0b21lcnoLdGhlX3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpgBCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIMdGhlX2N1c3RvbWVyegt0aGVfcHJvamVjdIIBLwoFRmlyc3QSBQgBEgFBEgcIAhIDU2V0EgsIAxIHT2ZFdmVudBIJCAQSBUNvZGVzggEyCgZTZWNvbmQSCAgAEgRTb21lEggIBBIETW9yZRIJCAgSBUV2ZW50EgkIEBIFQ29kZXM=";
 }
