diff --git a/OWNERS b/OWNERS
index 965a1de..441f92f 100644
--- a/OWNERS
+++ b/OWNERS
@@ -12,4 +12,4 @@
 per-file settings_enums.proto=edgarwang@google.com
 
 # Adservices
-per-file adservices_enums.proto=binhnguyen@google.com
\ No newline at end of file
+per-file adservices_enums.proto=binhnguyen@google.com,pdevpura@google.com
diff --git a/stats/Android.bp b/stats/Android.bp
index ebff253..bf28866 100644
--- a/stats/Android.bp
+++ b/stats/Android.bp
@@ -23,9 +23,11 @@
 
 enum_protos = [
     "enums/adservices/common/*.proto",
+    "enums/adservices/enrollment/*.proto",
     "enums/adservices/fledge/*.proto",
-    "enums/anr/*.proto",
     "enums/adservices/measurement/*.proto",
+    "enums/anr/*.proto",
+    "enums/apex/*.proto",
     "enums/app/**/*.proto",
     "enums/autofill/**/*.proto",
     "enums/contexthub/*.proto",
@@ -33,6 +35,7 @@
     "enums/debug/*.proto",
     "enums/display/*.proto",
     "enums/dnd/*.proto",
+    "enums/federatedcompute/*.proto",
     "enums/hardware/**/*.proto",
     "enums/healthfitness/**/*.proto",
     "enums/hotword/*.proto",
@@ -73,9 +76,12 @@
     "enums/telephony/*.proto",
     "enums/telephony/qns/*.proto",
     "enums/telephony/satellite/*.proto",
+    "enums/transparency/*.proto",
     "enums/uwb/*.proto",
     "enums/view/**/*.proto",
+    "enums/wear/connectivity/*.proto",
     "enums/wear/media/*.proto",
+    "enums/wear/modes/*.proto",
     "enums/wifi/*.proto",
     ":data_stall_event_proto",
     ":device_policy_proto",
@@ -95,8 +101,10 @@
     "attribution_node.proto",
     "atoms/adpf/*.proto",
     "atoms/agif/*.proto",
+    "atoms/apex/*.proto",
     "atoms/aiwallpapers/*.proto",
     "atoms/art/*.proto",
+    "atoms/appsearch/*.proto",
     "atoms/bluetooth/*.proto",
     "atoms/corenetworking/**/*.proto",
     "atoms/autofill/*.proto",
@@ -110,6 +118,7 @@
     "atoms/gps/*.proto",
     "atoms/grammaticalinflection/*.proto",
     "atoms/hardware/biometrics/*.proto",
+    "atoms/hdmi/*.proto",
     "atoms/healthfitness/**/*.proto",
     "atoms/hotword/*.proto",
     "atoms/ike/*.proto",
@@ -120,6 +129,7 @@
     "atoms/view/inputmethod/*.proto",
     "atoms/permissioncontroller/*.proto",
     "atoms/placeholder/*.proto",
+    "atoms/power/*.proto",
     "atoms/rkpd/*.proto",
     "atoms/settings/*.proto",
     "atoms/sysui/*.proto",
@@ -130,8 +140,10 @@
     "atoms/kernel/*.proto",
     "atoms/wearservices/*.proto",
     "atoms/wear/media/*.proto",
+    "atoms/wear/prototiles/*.proto",
     "atoms/media/*.proto",
     "atoms/adservices/*.proto",
+    "atoms/wear/modes/*.proto",
     "atoms/wearpas/*.proto",
     "atoms/statsd/*.proto",
     "atoms/telecomm/*.proto",
@@ -142,8 +154,15 @@
     "atoms/telephony/satellite/*.proto",
     "atoms/automotive/caruilib/*.proto",
     "atoms/uwb/*.proto",
+    "atoms/ondevicepersonalization/*.proto",
+    "atoms/federatedcompute/*.proto",
+    "atoms/wear/connectivity/*.proto",
+    "atoms/devicelock/*.proto",
+    "atoms/cpu/*.proto",
     "atoms/sdksandbox/*.proto",
     "atoms/threadnetwork/*.proto",
+    "atoms/automotive/carlauncher/*.proto",
+    "atoms/transparency/*.proto",
 ]
 
 cc_library_host_shared {
diff --git a/stats/TEST_MAPPING b/stats/TEST_MAPPING
new file mode 100644
index 0000000..468045c
--- /dev/null
+++ b/stats/TEST_MAPPING
@@ -0,0 +1,15 @@
+{
+  "presubmit": [
+    {
+      "name": "stats-log-api-gen-test"
+    },
+    {
+      "name": "VendorAtomCodeGenJavaTest",
+      "options": [
+        {
+          "exclude-annotation": "org.junit.Ignore"
+        }
+      ]
+    }
+  ]
+}
diff --git a/stats/atom_field_options.proto b/stats/atom_field_options.proto
index 3b13d08..bfd50ad 100644
--- a/stats/atom_field_options.proto
+++ b/stats/atom_field_options.proto
@@ -87,8 +87,12 @@
     // BLE scans are to be turned off.
     optional int32 trigger_state_reset_value = 5;
 
-    // If the state change needs to count nesting.
-    optional bool nested = 6 [default = true];
+    // If the state change needs to count nesting. For example, given an exclusive_state field with
+    // possible states of OFF and ON, a sequence of N OFF events will require N ON events for the
+    // tracked state to change back to ON.
+    // Note: only valid for fields marked with exclusive_state where there are only 2 possible
+    // states.
+    optional bool nested = 6 [default = false];
 }
 
 // Used to generate StatsLog.write APIs.
diff --git a/stats/atoms.proto b/stats/atoms.proto
index 65540d0..8ed4420 100644
--- a/stats/atoms.proto
+++ b/stats/atoms.proto
@@ -44,8 +44,8 @@
 import "frameworks/proto_logging/stats/atoms/view/inputmethod/inputmethod_atoms.proto";
 import "frameworks/proto_logging/stats/atom_field_options.proto";
 import "frameworks/proto_logging/stats/enums/adservices/fledge/enums.proto";
-import "frameworks/proto_logging/stats/enums/anr/enums.proto";
 import "frameworks/proto_logging/stats/enums/adservices/measurement/enums.proto";
+import "frameworks/proto_logging/stats/enums/anr/enums.proto";
 import "frameworks/proto_logging/stats/enums/app/enums.proto";
 import "frameworks/proto_logging/stats/enums/app/job/enums.proto";
 import "frameworks/proto_logging/stats/enums/app/remoteprovisioner_enums.proto";
@@ -109,6 +109,7 @@
 import "frameworks/proto_logging/stats/enums/system/security/keystore2/enums.proto";
 import "frameworks/proto_logging/stats/enums/telecomm/enums.proto";
 import "frameworks/proto_logging/stats/enums/telephony/enums.proto";
+import "frameworks/proto_logging/stats/enums/transparency/enums.proto";
 import "frameworks/proto_logging/stats/enums/uwb/enums.proto";
 import "frameworks/proto_logging/stats/enums/view/enums.proto";
 import "frameworks/proto_logging/stats/enums/wifi/enums.proto";
@@ -160,8 +161,9 @@
                 14 [(module) = "framework"];
         MemoryFactorStateChanged memory_factor_state_changed = 15 [(module) = "framework"];
         ExcessiveCpuUsageReported excessive_cpu_usage_reported = 16 [(module) = "framework"];
-        CachedKillReported cached_kill_reported = 17 [(module) = "framework"];
-        ProcessMemoryStatReported process_memory_stat_reported = 18 [(module) = "framework"];
+        CachedKillReported cached_kill_reported = 17 [(module) = "framework", deprecated = true];
+        ProcessMemoryStatReported process_memory_stat_reported =
+                18 [(module) = "framework", deprecated = true];
         sysui.LauncherUIChanged launcher_event = 19 [(module) = "sysui"];
         BatterySaverModeStateChanged battery_saver_mode_state_changed =
                 20 [(module) = "framework", (module) = "statsdtest"];
@@ -212,7 +214,6 @@
         AppStartMemoryStateCaptured app_start_memory_state_captured = 55 [(module) = "framework"];
         ShutdownSequenceReported shutdown_sequence_reported = 56 [(module) = "framework"];
         BootSequenceReported boot_sequence_reported = 57;
-        DaveyOccurred davey_occurred = 58 [deprecated = true];
         OverlayStateChanged overlay_state_changed =
                 59 [(module) = "framework", (module) = "statsdtest"];
         ForegroundServiceStateChanged foreground_service_state_changed
@@ -658,7 +659,6 @@
         PrivacyToggleDialogInteraction privacy_toggle_dialog_interaction = 382 [(module) = "framework"];
         AppSearchOptimizeStatsReported app_search_optimize_stats_reported = 383 [(module) = "appsearch"];
         NonA11yToolServiceWarningReported non_a11y_tool_service_warning_report = 384 [(module) = "framework"];
-        AppSearchSetSchemaStatsReported app_search_set_schema_stats_reported = 385 [(module) = "appsearch"];
         AppCompatStateChanged app_compat_state_changed = 386 [(module) = "framework"];
         SizeCompatRestartButtonEventReported size_compat_restart_button_event_reported = 387 [(module) = "framework"];
         SplitscreenUIChanged splitscreen_ui_changed = 388 [(module) = "framework"];
@@ -906,8 +906,6 @@
         hardware.biometrics.BiometricTouchReported biometric_touch_reported = 577 [(module) = "sysui"];
         hotword.HotwordAudioEgressEventReported hotword_audio_egress_event_reported = 578
             [(module) = "framework"];
-        AppSearchSchemaMigrationStatsReported
-          app_search_schema_migration_stats_reported = 579 [(module) = "appsearch"];
         location.LocationEnabledStateChanged location_enabled_state_changed = 580 [(module) = "framework"];
         view.inputmethod.ImeRequestFinished ime_request_finished = 581 [(module) = "framework"];
         usb.UsbComplianceWarningsReported usb_compliance_warnings_reported = 582 [(module) = "framework"];
@@ -932,19 +930,21 @@
         corenetworking.connectivity.NetworkValidationFailureStatsDailyReported
             network_validation_failure_stats_daily_reported = 601 [(module) = "connectivity"];
         wearservices.WsComplicationTapped ws_complication_tapped = 602 [(module) = "wearservices"];
-        wearservices.WsWearTimeSession ws_wear_time_session = 610 [(module) = "wearservices"];
+        wearservices.WsNotificationBlocking ws_notification_blocking = 780 [(module) = "wearservices"];
     }
 
     // Pushed atom extensions.
     // The atom definitions are under atoms/<feature>/<feature>_extension_atoms.proto
     extensions 332; // ArtDatumReported art_datum_reported
     extensions 366; // OdrefreshReported odrefresh_reported
+    extensions 385; // AppSearchSetSchemaStatsReported app_search_set_schema_stats_reported
     extensions 467; // BackgroundDexoptJobEnded background_dexopt_job_ended
     extensions 488; // SandboxApiCalled sandbox_api_called
     extensions 528; // ExpressEventReported express_event_reported
     extensions 548; // OdsignReported odsign_reported
     extensions 550; // ArtDeviceDatumReported art_device_datum_reported
     extensions 565; // ArtDatumDeltaReported art_datum_delta_reported
+    extensions 579; // AppSearchSchemaMigrationStatsReported app_search_schema_migration_stats_reported
     extensions 585; // CredentialManagerApiCalled credential_manager_api_called
     extensions 593; // ExpressHistogramSampleReported express_histogram_sample_reported
     extensions 598; // AdServicesBackCompatGetTopicsReported ad_services_back_compat_get_topics_reported
@@ -957,6 +957,7 @@
     extensions 607; // AutofillSessionCommitted autofill_session_committed
     extensions 608; // MediaActionReported media_action_reported
     extensions 609; // MediaControlsLaunched media_controls_launched
+    extensions 610; // WsWearTimeSession ws_wear_time_session
     extensions 611; // LockscreenShortcutSelected lockscreen_shortcut_selected
     extensions 612; // LockscreenShortcutTriggered lockscreen_shortcut_triggered
     extensions 613; // BluetoothHashedDeviceNameReported bluetooth_hashed_device_name_reported
@@ -1041,8 +1042,13 @@
     extensions 692; // WifiLocalOnlyRequestReceived wifi_local_only_request_received
     extensions 693; // WifiLocalOnlyRequestScanTriggered wifi_local_only_request_scan_triggered
     extensions 694; // WifiThreadTaskExecuted wifi_thread_task_executed
+    extensions 695; // AdServicesMeasurementAdIdMatchForDebugKeys ad_services_ad_id_match_for_debug_keys
     extensions 696; // BluetoothProfileConnectionAttempted bluetooth_profile_connection_attempted
+    extensions 697; // AdServicesEnrollmentDataStored ad_services_enrollment_data_stored
+    extensions 698; // AdServicesEnrollmentFileDownloaded ad_services_enrollment_file_downloaded
+    extensions 699; // AdServicesEnrollmentMatched ad_services_enrollment_matched
     extensions 700; // WifiStateChanged wifi_state_changed
+    extensions 701; // HdmiEarcStatusReported hdmi_earc_status_reported
     extensions 702; // AdServicesConsentMigrated ad_services_consent_migrated
     extensions 703; // CronetEngineCreated cronet_engine_created
     extensions 704; // CronetTrafficReported cronet_traffic_reported
@@ -1052,25 +1058,81 @@
     extensions 708; // AiWallpapersTermSelected ai_wallpapers_term_selected
     extensions 709; // AiWallpapersWallpaperSet ai_wallpapers_wallpaper_set
     extensions 710; // AiWallpapersSessionSummary ai_wallpapers_session_summary
+    extensions 711; // OnDevicePersonalizationApiCalled ondevicepersonalization_api_called
+    extensions 712; // FederatedComputeApiCalled federated_compute_api_called
+    extensions 713; // CellularRadioPowerStateChanged cellular_radio_power_state_changed
+    extensions 714; // AdServicesEnrollmentFailed ad_services_enrollment_failed
+    extensions 715; // WearModeStateChanged wear_mode_state_changed
     extensions 716; // LauncherImpressionEventV2 launcher_impression_event_v2
+    extensions 717; // ExternalTvInputEvent external_tv_input_event
     extensions 718; // StylusPredictionMetricsReported stylus_prediction_metrics_reported
+    extensions 719; // PnoScanStarted pno_scan_started
+    extensions 720; // PnoScanStopped pno_scan_stopped
+    extensions 721; // MediatorUpdated mediator_updated
+    extensions 722; // WifiIsUnusableReported wifi_is_unusable_reported
+    extensions 723; // WifiApCapabilitiesReported wifi_ap_capabilities_reported
+    extensions 724; // HdmiSoundbarModeStatusReported hdmi_soundbar_mode_status_reported
+    extensions 725; // UserRiskEventReported user_risk_event_reported
+    extensions 726; // DeviceLockCheckInRequestReported device_lock_check_in_request_reported
+    extensions 727; // DeviceLockProvisioningCompleteReported device_lock_provisioning_complete_reported
+    extensions 728; // DeviceLockKioskAppRequestReported device_lock_kiosk_app_request_reported
     extensions 729; // MediaProjectionStateChanged media_projection_state_changed
     extensions 730; // MediaProjectionTargetChanged media_projection_target_changed
+    extensions 731; // WearPowerMenuOpened wear_power_menu_opened
+    extensions 732; // ApexInstallationRequested apex_installation_requested
+    extensions 733; // ApexInstallationStaged apex_installation_staged
+    extensions 734; // ApexInstallationEnded apex_installation_ended
     extensions 735; // SandboxActivityEventOccurred sandbox_activity_event_occurred
+    extensions 736; // RendererInitialized renderer_initialized
+    extensions 737; // SchemaVersionReceived schema_version_received
     extensions 738; // ThreadnetworkTelemetryDataReported threadnetwork_telemetry_data_reported
     extensions 739; // ThreadnetworkTopoEntryRepeated threadnetwork_topo_entry_repeated
     extensions 740; // ThreadnetworkDeviceInfoReported threadnetwork_device_info_reported
+    extensions 741; // LayoutInspected layout_inspected
+    extensions 742; // LayoutExpressionsInspected layout_expression_inspected
+    extensions 743; // LayoutAnimationsInspected layout_animations_inspected
+    extensions 744; // MaterialComponentsInspected material_components_inspected
+    extensions 745; // TileRequested tile_requested
+    extensions 746; // StateResponseReceived state_response_received
+    extensions 747; // TileResponseReceived tile_response_received
+    extensions 748; // InflationFinished inflation_finished
+    extensions 749; // InflationFailed inflation_failed
+    extensions 750; // IgnoredInflationFailuresReported ignored_inflation_failures_reported
+    extensions 751; // DrawableRendered drawable_rendered
     extensions 752; // StatsSocketLossReported stats_socket_loss_reported
+    extensions 753; // DisplaySwitchLatencyTracked display_switch_latency_tracked
+    extensions 754; // KernelOomKillOccurred kernel_oom_kill_occurred
+    extensions 755; // WearAssistantOpened wear_assistant_opened
+    extensions 756; // AdServicesMeasurementClickVerification ad_services_measurement_click_verification
+    extensions 757; // WearMediaOutputSwitcherDeviceScanApiLatency wear_media_output_switcher_device_scan_api_latency
+    extensions 758; // WearMediaOutputSwitcherSassDeviceUnavailable wear_media_output_switcher_sass_device_unavailable
+    extensions 759; // WearMediaOutputSwitcherFastPairApiTimeout wear_media_output_switcher_fastpair_api_timeout
     extensions 760; // IkeLivenessCheckSessionValidated ike_liveness_check_session_validated
+    extensions 761; // HotwordEventEgressSize hotword_egress_size_atom_reported
     extensions 762; // CronetEngineBuilderInitialized cronet_engine_builder_initialized
     extensions 763; // CronetHttpFlagsInitialized cronet_http_flags_initialized
     extensions 764; // CronetInitialized cronet_initialized
+    extensions 765; // AdServicesEncryptionKeyFetched ad_services_encryption_key_fetched
+    extensions 766; // AdServicesEncryptionKeyDbTransactionEnded ad_services_encryption_key_db_transaction_ended
+    extensions 767; // DestinationRegisteredBeacons destination_registered_beacons
+    extensions 768; // ReportInteractionApiCalled report_interaction_api_called
+    extensions 769; // InteractionReportingTableCleared interaction_reporting_table_cleared
+    extensions 770; // CarRecentsEventReported car_recents_event_reported
+    extensions 771; // FederatedComputeTrainingEventReported federated_compute_training_event_reported
+    extensions 772; // ThermalStatusCalled thermal_status_called
+    extensions 773; // ThermalHeadroomCalled thermal_headroom_called
+    extensions 774; // ThermalHeadroomThresholdsCalled thermal_headroom_thresholds_called
+    extensions 775; // BootIntegrityInfoReported boot_integrity_info_reported
+    extensions 776; // ScreenOffReported screen_off_reported
     extensions 777; // ApfSessionInfoReported apf_session_info_reported
     extensions 778; // IpClientRaInfoReported ip_client_ra_info_reported
     extensions 779; // NetworkRequestStateChanged network_request_state_changed
     extensions 781; // BluetoothContentProfileErrorReported bluetooth_content_profile_error_reported
     extensions 782; // BluetoothRfcommConnectionAttempted bluetooth_rfcomm_connection_attempted
     extensions 783; // NetworkStatsRecorderFileOperated network_stats_recorder_file_operated
+    extensions 821; // NegotiatedSecurityAssociation negotiated_security_association
+    extensions 850; // VpnConnectionStateChanged vpn_connection_state_changed
+    extensions 851; // VpnConnectionReported vpn_connection_reported
     extensions 9999; // Atom9999 atom_9999
     // StatsdStats tracks platform atoms with ids up to 900.
     // Update StatsdStats::kMaxPushedAtomId when atom ids here approach that value.
@@ -1306,13 +1368,24 @@
     extensions 10191; // TouchpadUsage touchpad_usage
     extensions 10192; // DreamSettingSnapshot dream_setting_snapshot
     extensions 10193; // WifiModuleInfo wifi_module_info
+    extensions 10194; // WifiSettingInfo wifi_setting_info
+    extensions 10195; // WifiComplexSettingInfo wifi_complex_setting_info
+    extensions 10196; // SysproxyBluetoothBytesTransfer sysproxy_bluetooth_bytes_transfer
+    extensions 10197; // WsStandaloneModeSnapshot ws_standalone_mode_snapshot
+    extensions 10198; // WifiConfiguredNetworkInfo wifi_configured_network_info;
+    extensions 10199; // CpuPolicy cpu_policy
+    extensions 10200; // ProxyBytesTransferByFgBg proxy_bytes_transfer_by_fg_bg
+    extensions 10201; // ThermalHeadroomThresholds thermal_headroom_thresholds
+    extensions 10202; // Reserved for b/308823939.
+    extensions 10203; // Reserved for b/308823939.
+    extensions 10204; // Reserved for b/309512867.
     extensions 10205; // ArtDeviceStatus art_device_status
     extensions 99999; // Atom99999 atom_99999
 
     // DO NOT USE field numbers above 100,000 in AOSP.
     // Field numbers 100,000 - 199,999 are reserved for non-AOSP (e.g. OEMs) to use.
     // Field numbers 200,000 and above are reserved for future use; do not use them at all.
-    reserved 83, 360 to 363, 492, 597, 10008, 10036, 10040, 10041, 21004, 21005;
+    reserved 58, 83, 360 to 363, 492, 597, 10008, 10036, 10040, 10041, 21004, 21005;
 }
 
 /*
@@ -1331,9 +1404,8 @@
  *     underscore_separated name as defined in Atom.
  *   - If an atom represents work that can be attributed to an app, there can
  *     be exactly one AttributionChain field. It must be field number 1.
- *   - A field that is a uid should be a string field, tagged with the [xxx]
- *     annotation. The generated code on android will be represented by UIDs,
- *     and those UIDs will be translated in xxx to those strings.
+ *   - A field that is a uid should be an int32 field, tagged with the
+ *     [(is_uid) = true] annotation.
  *
  * CONVENTIONS:
  *   - Events are past tense. e.g. ScreenStateChanged, not ScreenStateChange.
@@ -1517,7 +1589,7 @@
   optional int32 fgs_seconds = 7;
   optional int32 bound_top_seconds = 8;
   optional int32 bound_fgs_seconds = 9;
-  optional int32 important_foreground_seconds = 10;
+  optional int32 important_fg_bg_seconds = 10;
   optional int32 cached_seconds = 11;
   optional int32 frozen_seconds = 12;
   optional int32 other_seconds = 13;
@@ -1585,7 +1657,10 @@
         CRITICAL = 4;   // critical memory.
 
     }
-    optional State factor = 1 [(state_field_option).exclusive_state = true];
+    optional State factor = 1 [
+        (state_field_option).exclusive_state = true,
+        (state_field_option).nested = false
+    ];
 }
 
 /**
@@ -1656,6 +1731,14 @@
     optional int32 tx_kbps = 6 [default = -1];
     // estimated rx throughput in kbps
     optional int32 rx_kbps = 7 [default = -1];
+   // External scorer UID if external scorer is enabled. Otherwise WIFI_UID for
+   // AOSP scorer.
+   optional int32 scorer_uid = 8;
+   // Whether or not Wi-Fi is predicted as usable by the scorer
+   // Note: 'is_wifi_predicted_as_usable' is deprectaed by 'wifi_predicted_usability_state'.
+   optional bool is_wifi_predicted_as_usable = 9;
+   // Wi-Fi usability state as predicted by the scorer
+   optional android.net.wifi.WifiPredictedUsabilityState wifi_predicted_usability_state = 10;
 }
 
 /**
@@ -1749,6 +1832,21 @@
     optional bool is_oob_pseudonym_enabled = 11;
     // The client mode role for the connection, can use to determine the connection type.
     optional android.net.wifi.ClientModeRole role = 12;
+    // The status code specific to each failure code.
+    // - For FAILURE_ASSOCIATION_REJECTION, the value should be one of
+    //   SupplicantStaIfaceHal.StaIfaceStatusCode.
+    // - For FAILURE_NETWORK_DISCONNECTION, the value should be
+    //   one of SupplicantStaIfaceHal.StaIfaceReasonCode.
+    // - For FAILURE_AUTHENTICATION_EAP, the value should be a EAP failure code.
+    // For all other failure codes, this should be 0.
+    optional int32 failure_specific_status_code = 13;
+    // Information only applicable for EAP networks.
+    optional android.net.wifi.EapType eap_type = 14;
+    optional android.net.wifi.EapInnerMethod eap_inner_method = 15;
+    optional android.net.wifi.RoamingType passpoint_roaming_type = 16;
+    // carrier ID of the network
+    optional int32 carrier_id = 17;
+    optional android.net.wifi.TofuConfiguration tofu_configuration = 18;
 }
 
 /**
@@ -1832,6 +1930,40 @@
         SUPPLICANT_DISCONNECTED = 10002;
         CONNECTING_WATCHDOG_TIMER = 10003;
         ROAM_WATCHDOG_TIMER = 10004;
+
+        // New reasons tracking disconnections initiated by wifi framework
+        DISCONNECT_GENERAL = 10005; // Framework disconnect, generic reason
+        // Disconnecting due to unspecified IP reachability lost.
+        DISCONNECT_NUD_FAILURE_GENERIC = 10006;
+        // Disconnecting due to IP reachability lost from roaming
+        DISCONNECT_NUD_FAILURE_ROAM = 10007;
+        // Disconnecting due to IP reachability lost from the CONFIRM command
+        DISCONNECT_NUD_FAILURE_CONFIRM = 10008;
+        // Disconnecting due to IP reachability lost from kernel check
+        DISCONNECT_NUD_FAILURE_ORGANIC = 10009;
+        // Connectivity no longer wants this network
+        DISCONNECT_UNWANTED_BY_CONNECTIVITY = 10010;
+        // Timeout creating the IP client
+        DISCONNECT_CREATE_IP_CLIENT_TIMEOUT = 10011;
+        DISCONNECT_IP_PROVISIONING_FAILURE = 10012; // IP provisioning failure
+        DISCONNECT_P2P_REQUESTED_DISCONNECT = 10013; // Disconnect by P2P
+        // Network is removed from the WifiConfigManager
+        DISCONNECT_NETWORK_REMOVED = 10014;
+        DISCONNECT_NETWORK_UNTRUSTED = 10015; // Network is marked as untrusted
+        DISCONNECT_NETWORK_METERED = 10016; // Network is marked as metered
+        DISCONNECT_TEMP_DISABLED = 10017; // Network is temporarily disabled
+        DISCONNECT_PERM_DISABLED = 10018; // Network is permanently disabled
+        DISCONNECT_CARRIER_OFFLOAD_DISABLED = 10019;
+        // Disconnecting due to Passpoint terms and conditions page
+        DISCONNECT_PASSPOINT_TAC = 10020;
+        // Disconnecting due to issues with terms and conditions URL
+        DISCONNECT_VNC_REQUEST = 10021;
+        // Connected to a network that is already removed
+        DISCONNECT_UNKNOWN_NETWORK = 10022;
+        // User initiated a new connection
+        DISCONNECT_NEW_CONNECTION_USER = 10023;
+        // New connection triggered by non-user
+        DISCONNECT_NEW_CONNECTION_OTHERS = 10024;
     }
 
     // How long the session lasted from successful connection to disconnect.
@@ -1851,6 +1983,26 @@
 
     // Last seen link speed before the disconnect.
     optional int32 last_link_speed = 6;
+
+    // Time since the last RSSI and link speed update.
+    // Useful for filtering out very old data
+    optional int32 time_since_last_rssi_poll_seconds = 7;
+
+    // Time from the last NETWORK_CONNECTION_EVENT to the disconnect
+    optional int32 connected_time_since_last_roam_seconds = 8;
+
+    // The purpose the of the connection
+    optional android.net.wifi.ClientModeRole role = 9;
+
+    // The type of EAP authentication. Only applicable for EAP networks.
+    optional android.net.wifi.EapType eap_type = 10;
+
+    optional android.net.wifi.EapInnerMethod eap_inner_method = 11;
+
+    optional android.net.wifi.RoamingType passpoint_roaming_type = 12;
+
+    // Carrier id of the network.
+    optional int32 carrier_id = 13;
 }
 
 /**
@@ -1861,7 +2013,9 @@
  */
 message WifiConnectionStateChanged {
     optional bool is_connected = 1 [
-            (state_field_option).exclusive_state = true];
+        (state_field_option).exclusive_state = true,
+        (state_field_option).nested = false
+    ];
 
     // Band bucket the connected network was on.
     // Filled for both connected and disconnected cases.
@@ -2333,6 +2487,26 @@
 
     // Hash of the namespace set via JobScheduler.forNamespace(String).
     optional string namespace_hash = 40;
+
+    // System estimated/measured bytes that the job
+    // downloaded over its runtime. Only valid for FINISHED
+    // state. We measure here for the SOURCE UID
+    optional int64 system_measured_source_download_bytes = 41;
+
+    // System estimated/measured uploaded bytes that the job
+    // uploaded over its runtime. Only valid for FINISHED
+    // state. We measure here for the SOURCE UID
+    optional int64 system_measured_source_upload_bytes = 42;
+
+    // System estimated/measured bytes that the job
+    // downloaded over its runtime. Only valid for FINISHED
+    // state. We measure here for the CALLING UID
+    optional int64 system_measured_calling_download_bytes = 43;
+
+    // System estimated/measured uploaded bytes that the job
+    // uploaded over its runtime. Only valid for FINISHED
+    // state. We measure here for the CALLING UID
+    optional int64 system_measured_calling_upload_bytes = 44;
 }
 
 /**
@@ -3284,6 +3458,7 @@
         REASON_APP_NOT_RESPONDING = 4;
         REASON_NATIVE_CRASH_DURING_BOOT = 5;
         REASON_NETWORK_RELATED_CRASH = 6;
+        REASON_BOOT_LOOPING = 7;
     }
     optional RollbackReasonType rollback_reason = 4;
 
@@ -4427,20 +4602,6 @@
 }
 
 /**
- * Logs the duration of a davey (jank of >=700ms) when it occurs
- *
- * Logged from:
- *   frameworks/base/libs/hwui/JankTracker.cpp
- */
-message DaveyOccurred {
-    // The UID that logged this atom.
-    optional int32 uid = 1 [(is_uid) = true];
-
-    // Amount of time it took to render the frame. Should be >=700ms.
-    optional int64 jank_duration_millis = 2;
-}
-
-/**
  * Logs phone signal strength changes.
  *
  * Logged from:
@@ -4524,6 +4685,15 @@
     optional int32 color_variant = 20;
     optional int64 time_elapsed_millis = 21;
     optional int32 effect_status_code = 22;
+    optional int32 app_session_id = 23;
+    optional android.stats.style.SetWallpaperEntryPoint set_wallpaper_entry_point = 24;
+    optional android.stats.style.WallpaperDestination wallpaper_destination = 25;
+    optional android.stats.style.ColorSource color_source = 26;
+    optional int32 seed_color = 27;
+    optional android.stats.style.ClockSize clock_size = 28;
+    optional bool toggle_on = 29;
+    optional string shortcut = 30;
+    optional string shortcut_slot_id = 31;
 }
 
 /**
@@ -5130,6 +5300,9 @@
 
     // The stopped state (if any) the package was in before the launch
     optional PackageStoppedState package_stopped_state = 25;
+
+    // Reserved for b/281564325.
+    reserved 26;
 }
 
 message AppStartCanceled {
@@ -5743,7 +5916,7 @@
  */
 message AppDied {
     // timestamp(elapsedRealtime) of record creation
-    optional uint64 timestamp_millis = 1 [(state_field_option).exclusive_state = true];
+    optional uint64 timestamp_millis = 1;
 }
 
 /**
@@ -6726,7 +6899,10 @@
         DIALOG_LINE_ITEM = 5;
     }
 
-    optional Type type = 1 [(state_field_option).exclusive_state = true];
+    optional Type type = 1 [
+        (state_field_option).exclusive_state = true,
+        (state_field_option).nested = false
+    ];
 }
 
 /**
@@ -7431,13 +7607,15 @@
  * Logged from:
  *  frameworks/base/core/java/com/android/internal/jank/FrameTracker.java
  *
- * Next Tag: 9
+ * Next Tag: 10
  */
 message UIInteractionFrameInfoReported {
     optional android.jank.InteractionType interaction_type = 1;
 
     optional android.jank.DisplayResolution display_resolution = 8;
 
+    optional android.jank.DisplayRefreshRate display_refresh_rate = 9;
+
     // Number of frames rendered during the interaction.
     optional int64 total_frames = 2;
 
@@ -9262,8 +9440,24 @@
     message UidBatteryConsumer {
         optional int32 uid = 1 [(is_uid) = true];
         optional BatteryConsumerData battery_consumer_data = 2;
-        optional int64 time_in_foreground_millis = 3;
-        optional int64 time_in_background_millis = 4;
+        // DEPRECATED Use time_in_state instead.
+        optional int64 time_in_foreground_millis = 3 [deprecated = true];
+        // DEPRECATED Use time_in_state instead.
+        optional int64 time_in_background_millis = 4 [deprecated = true];
+
+        message TimeInState {
+            enum ProcessState {
+                UNSPECIFIED = 0;
+                FOREGROUND = 1;
+                BACKGROUND = 2;
+                FOREGROUND_SERVICE = 3;
+            }
+
+            optional ProcessState process_state = 1;
+            optional int64 time_in_state_millis = 2;
+        }
+
+        repeated TimeInState time_in_state = 5;
     }
     repeated UidBatteryConsumer uid_battery_consumers = 5;
 
@@ -10682,6 +10876,7 @@
         CHILD_TASK_ENTER_PIP = 9;
         RECREATE_SPLIT = 10;
         FULLSCREEN_SHORTCUT = 11;
+        ENTER_DESKTOP = 12;
     }
 
     // The event action
@@ -10966,7 +11161,7 @@
  *   frameworks/av/media/libstagefright/MediaCodec.cpp
  *   frameworks/av/services/mediaanalytics/statsd_codec.cpp
  *
- * Next Tag: 80
+ * Next Tag: 79
  */
 message MediaCodecReported {
     optional int64 timestamp_nanos = 1;
@@ -13360,157 +13555,6 @@
     optional int64 native_time_since_last_optimize_millis = 13;
 }
 
-/**
- * Logs detailed stats for setting schema in AppSearch.
- *
- * stats pushed from:
- *   frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
- *
- * Next tag: 26
- */
-message AppSearchSetSchemaStatsReported {
-    // The sampling interval for this specific type of stats
-    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
-    optional int32 sampling_interval = 1;
-
-    // # of previous skipped sample for this specific type of stats
-    // We can't push atoms too closely, so some samples might be skipped
-    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
-    // For example, the true count of an event could be estimated as:
-    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
-    optional int32 num_skipped_sample = 2;
-
-    // Package UID of the application.
-    optional int32 uid = 3 [(is_uid) = true];
-
-    // Hash of the database name within AppSearch
-    optional int32 database = 4;
-
-    // Needs to be sync with AppSearchResult#ResultCode in
-    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
-    optional int32 status_code = 5;
-
-    // Overall time used for setting schema including the binder latency
-    optional int32 total_latency_millis = 6;
-
-    // Number of newly added schema types
-    optional int32 new_type_count = 7;
-
-    // Number of deleted schema types
-    optional int32 deleted_type_count = 8;
-
-    // Number of compatible schema type changes
-    optional int32 compatible_type_change_count = 9;
-
-    // Number of index-incompatible schema type changes
-    optional int32 index_incompatible_type_change_count = 10;
-
-    // Number of backwards-incompatible schema type changes
-    optional int32 backwards_incompatible_type_change_count = 11;
-
-    // Time used for verifying the incoming call.
-    optional int32  verify_incoming_call_latency_millis = 12;
-
-    // Time used for creating or waiting the user executor.
-    optional int32  executor_acquisition_latency_millis = 13;
-
-    // Time used for rebuilding objects from bundles.
-    optional int32  rebuild_from_bundle_latency_millis = 14;
-
-    // Time passed while waiting to acquire the lock during Java function calls.
-    optional int32  java_lock_acquisition_latency_millis = 15;
-
-    // Time used for the rewrite schema to proto.
-    optional int32  rewrite_schema_latency_millis = 16;
-
-    // Overall time used for the native function call.
-    optional int32  total_native_latency_millis = 17;
-
-    // Time used for the apply visibility settings function call.
-    optional int32  visibility_setting_latency_millis = 18;
-
-    // Time used for the dispatch change notification function call.
-    optional int32  dispatch_change_notifications_latency_millis = 19;
-
-    // Time used for the optimization function call.
-    optional int32  mOptimize_latency_millis = 20;
-
-    /** Whether this package is observed. */
-    optional bool is_package_observed = 21;
-
-    /** Time used for the get old schema. */
-    optional int32  get_old_schema_latency_millis = 22;
-
-    /** Time used for the get registered observer function call. */
-    optional int32  get_observer_latency_millis = 23;
-
-    /** Time used for the preparing change notification action. */
-    optional int32  preparing_change_notification_latency_millis = 24;
-
-    // Type of the SetSchema call relative to SchemaMigration case.
-    // This is in sync with
-    // packages/modules/AppSearch/service/java/com/android/server/appsearch/external/localstorage/stats/SetSchemaStats.java
-    optional int32 schema_migration_call_type = 25;
-}
-
-/**
- * Logs detailed stats for schema migration in AppSearch.
- *
- * stats pushed from:
- *   packages/modules/AppSearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
- *
- * Next tag: 15
- */
-message AppSearchSchemaMigrationStatsReported {
-    // The sampling interval for this specific type of stats
-    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
-    optional int32 sampling_interval = 1;
-
-    // # of previous skipped sample for this specific type of stats
-    // We can't push atoms too closely, so some samples might be skipped
-    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
-    // For example, the true count of an event could be estimated as:
-    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
-    optional int32 num_skipped_sample = 2;
-
-    // Package UID of the application.
-    optional int32 uid = 3 [(is_uid) = true];
-
-    // Hash of the database name within AppSearch
-    optional int32 database = 4;
-
-    // Needs to be sync with AppSearchResult#ResultCode in
-    // packages/modules/AppSearch/framework/java/external/android/app/appsearch/AppSearchResult.java
-    optional int32 status_code = 5;
-
-    // Overall time used for setting schema including the binder latency
-    optional int32 total_latency_millis = 6;
-
-    // Overall time used for getting schema during schema migration
-    optional int32 schema_migration_get_schema_latency_millis = 7;
-
-    // Overall time used for querying and transforming documents during schema migration
-    optional int32 schema_migration_query_and_transform_latency_millis = 8;
-
-    // Overall time used for first setSchema during schema migration
-    optional int32 schema_migration_first_set_schema_latency_millis = 9;
-
-    // Overall time used for second setSchema during schema migration
-    optional int32 schema_migration_second_set_schema_latency_millis = 10;
-
-    // Overall time used for saving documents during schema migration
-    optional int32 schema_migration_save_document_latency_millis = 11;
-
-    // Number of document that need to be migrated to another version
-    optional int32 total_need_migrated_document_count = 12;
-
-    // Number of successfully migrated and saved in Icing
-    optional int32 total_success_migrated_document_count = 13;
-
-    // Number of migration failure during schema migration
-    optional int32 schema_migration_failure_count = 14;
-}
-
 // Reports information in external/icing/proto/icing/proto/storage.proto#DocumentStorageInfoProto
 // Next tag: 15
 message AppSearchDocumentStorageInfo {
@@ -13657,7 +13701,7 @@
  * Reported from:
  *   packages/modules/AppSearch/service/java/com/android/server/appsearch/contactsindexer/ContactsIndexerManagerService.java
  *
- * Next tag: 11
+ * Next tag: 18
  */
 message ContactsIndexerUpdateStatsReported {
     enum UpdateType {
@@ -13701,6 +13745,30 @@
 
     // Number of old contacts failed to be deleted
     optional int32 number_of_contacts_delete_failed = 10;
+
+    // Number of old contacts to be deleted that were not found
+    optional int32 number_of_contacts_delete_not_found = 11;
+
+    // Start timestamp of the update in millis
+    optional int64 update_start_timestamp_millis = 12;
+
+    // Timestamp of the last full update in millis (not including this update)
+    optional int64 last_full_update_timestamp_millis = 13;
+
+    // Timestamp of the last delta update in millis (not including this update)
+    optional int64 last_delta_update_timestamp_millis = 14;
+
+    // Timestamp of the last contact to be updated from CP2 in millis
+    optional int64 last_contact_updated_timestamp_millis = 15;
+
+    // Timestamp of the last contact to be deleted from CP2 in millis
+    optional int64 last_contact_deleted_timestamp_millis = 16;
+
+    // The previous update's last_contact_updated_timestamp_millis
+    // This field is only set for a full update and expected to match
+    // last_contacted_update_timestamp_millis. If the fields do not match, then we
+    // were unexpectedly not synced up with CP2 at the time of the update.
+    optional int64 previous_last_contact_updated_timestamp_millis = 17;
 }
 
 /**
@@ -14207,6 +14275,10 @@
     // Whether advanced extensions session is being used
     optional bool ext_is_advanced = 25;
     // End: Extension Metrics
+
+    optional bool used_ultrawide = 26;
+
+    optional bool used_zoom_override = 27;
 }
 
 /**
@@ -15258,6 +15330,18 @@
 
     // Handover state of the device
     optional bool handover_in_progress = 37;
+
+    // When the RAT is IWLAN, if it used cross-SIM calling when call started.
+    optional bool is_iwlan_cross_sim_at_start = 38;
+
+    // When the RAT is IWLAN, if it used cross-SIM calling when call ended.
+    optional bool is_iwlan_cross_sim_at_end = 39;
+
+    // When the RAT is IWLAN, if it used cross-SIM calling when call connected.
+    optional bool is_iwlan_cross_sim_at_connected = 40;
+
+    // Whether Vonr is enabled
+    optional bool vonr_enabled = 41;
 }
 
 /**
@@ -15344,6 +15428,10 @@
 
     // Whether mobile data is enable.
     optional bool isDataEnabled = 14;
+
+    // When the voice RAT is NETWORK_TYPE_IWLAN, determines whether it is over
+    // cross-SIM calling (WiFi calling over other SIM's cellular data).
+    optional bool is_iwlan_cross_sim = 15;
 }
 
 /**
@@ -15395,6 +15483,12 @@
     // Number of active eSIM profiles.
     // This number is always equal to or less than the number of SIMs.
     optional int32 esim_count = 3;
+
+    // Number of active eSIM slots in the device.
+    optional int32 active_esim_slot_count = 4;
+
+    // Number of active slots using Multiple Enabled Profiles in the device.
+    optional int32 active_mep_slot_count = 5;
 }
 
 /**
@@ -15427,6 +15521,8 @@
     optional int32 auto_data_switch_toggle_count = 3;
     // True if work profile is enabled on the device
     optional bool has_managed_profile_dedicated_sub = 4;
+    // Number of SIM slots with support for Multiple Enabled Profiles on the device
+    optional int32 mep_supported_slot_count = 5;
 }
 
 /**
@@ -15786,6 +15882,10 @@
 
     // Whether the call is for internet on nonDDS due to auto data switch feature
     optional bool is_non_dds = 22;
+
+    // When the 'rat_at_end' field is IWLAN, determines if the data call setup was
+    // over cross-SIM calling (Wifi calling over cellular data).
+    optional bool is_iwlan_cross_sim = 23;
 }
 
 /**
@@ -15896,6 +15996,10 @@
 
     // Total number of instances of registration termination that matches the above conditions.
     optional int32 count = 8;
+
+    // When the 'rat_at_end' field is IWLAN, indicates whether the ImsRegistrationTech is
+    // REGISTRATION_TECH_CROSS_SIM.
+    optional bool is_iwlan_cross_sim = 9;
 }
 
 /**
@@ -15935,6 +16039,15 @@
     optional int32 video_available_seconds = 10;
     optional int32 ut_capable_seconds = 11;
     optional int32 ut_available_seconds = 12;
+
+    // Total time IMS was registering (connecting time), rounded to 5 minutes
+    optional int32 registering_seconds = 13;
+    // Total time IMS was unregistered (unconnected time), rounded to 5 minutes
+    optional int32 unregistered_seconds = 14;
+
+    // When the 'rat' field is IWLAN, indicates whether the ImsRegistrationTech is
+    // REGISTRATION_TECH_CROSS_SIM.
+    optional bool is_iwlan_cross_sim = 15;
 }
 
 /*
@@ -16383,6 +16496,7 @@
         PROFILE_MANAGED = 6;
         SYSTEM_HEADLESS = 7;
         PROFILE_CLONE = 8;
+        PROFILE_PRIVATE = 9;
     }
     optional UserType user_type = 5;
     // What are the flags attached to the target user
@@ -17941,6 +18055,8 @@
     optional int32 handshake_duration_millis = 4;
 
     optional android.stats.tls.Source source = 5;
+
+    repeated int32 uid = 6 [(is_uid) = true];
 }
 
 /**
@@ -19156,6 +19272,10 @@
     // Android U
     // The UID of the client.
     optional int32 uid = 22 [(is_uid) = true];
+
+    // Android U
+    // The sample rate used by the client.
+    optional int32 sample_rate_client = 23;
 }
 
 /**
@@ -19636,7 +19756,10 @@
     }
 
     // The state of the provider.
-    optional State state = 2 [(state_field_option).exclusive_state = true];
+    optional State state = 2 [
+        (state_field_option).exclusive_state = true,
+        (state_field_option).nested = false
+    ];
 }
 
 /*
@@ -21200,6 +21323,10 @@
 
     // Indicates whether VoNR is enabled
     optional bool vonr_enabled = 18;
+
+    // Indicates whether cross-SIM calling (WiFi calling over cellular data) is
+    // enabled.
+    optional bool cross_sim_calling_enabled = 19;
 }
 
 /*
@@ -21425,16 +21552,8 @@
     // we are deprecating the use of this going forward
     optional string content_digest = 3;
 
-    enum DigestAlgorithmType {
-        UNKNOWN = 0;
-        CHUNKED_SHA256 = 1;
-        CHUNKED_SHA512 = 2;
-        VERITY_CHUNKED_SHA256 = 3;
-        SHA256 = 4;
-    }
-
     // the algorithm that the content digest is computed
-    optional DigestAlgorithmType algo_type = 4;
+    optional com.android.os.transparency.DigestAlgorithmType algo_type = 4;
 
     // the SHA256 digest(s) of the APEX's signer certificate(s)
     repeated string signer_sha256_digest = 5;
@@ -21459,17 +21578,10 @@
     // the split name (empty if it's the base)
     optional string split_name = 11;
 
-    enum DigestAlgorithmType {
-        UNKNOWN = 0;
-        CHUNKED_SHA256 = 1;
-        CHUNKED_SHA512 = 2;
-        VERITY_CHUNKED_SHA256 = 3;
-        SHA256 = 4;
-    }
     // the hex encoded value of digest of the content of the MBA
     optional string content_digest = 3;
     // the algorithm that the content_digest is computed
-    optional DigestAlgorithmType algo_type = 4;
+    optional com.android.os.transparency.DigestAlgorithmType algo_type = 4;
     // the SHA256 digest(s) of the APEX's signer certificate(s)
     repeated string signer_sha256_digest = 5;
 
@@ -21822,7 +21934,7 @@
  */
 message AdServicesApiCalled {
     // The name of the api that was called.
-    // Can be classified as one of the three:
+    // Can be classified as one of the following:
     //
     // Targeting
     //  * GetTopics()
@@ -21841,6 +21953,7 @@
     //  * setAppInstallAdvertisers()
     //  * reportInteraction()
     //  * updateAdCounterHistogram()
+    //  * fetchAndJoinCustomAudience()
     //
     // Measurement - client side
     //   * register() : SOURCE
@@ -21849,12 +21962,17 @@
     //   * registerWebSource()
     //   * registerWebTrigger()
     //   * getMeasurementApiStatus()
+    //   * registerSource() : accepts a list of source registration URIs
     //
     // AdId
     //   * GetAdId()
     //
     // AppsetId
     //   * GetAppsetId()
+    //
+    // AdExtDataService
+    //   * onGetAdServicesExtData()
+    //   * onPutAdServicesExtData()
 
 
     enum AdServicesApiClassType {
@@ -21864,6 +21982,7 @@
         MEASUREMENT = 3;
         ADID = 4;
         APPSETID = 5;
+        ADEXT_DATA_SERVICE = 6;
     }
 
     enum AdServicesApiName {
@@ -21892,6 +22011,10 @@
         SET_APP_INSTALL_ADVERTISERS = 22;
         REPORT_INTERACTION = 23;
         UPDATE_AD_COUNTER_HISTOGRAM = 24;
+        FETCH_AND_JOIN_CUSTOM_AUDIENCE = 25;
+        REGISTER_SOURCES = 26;
+        GET_AD_SERVICES_EXT_DATA = 27;
+        PUT_AD_SERVICES_EXT_DATA = 28;
     }
 
     optional AdServicesApiClassType api_class = 1 [deprecated = true];
@@ -21899,7 +22022,7 @@
     // The actual name of the api within the 3 classes described above.
     optional AdServicesApiName  api_name = 2;
 
-    optional string app_package_name = 3;
+    optional string app_package_name = 3; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
     optional string sdk_package_name = 4;
 
     optional int32 latency_millis = 5;
@@ -21916,6 +22039,33 @@
         UNKNOWN_REPORT = 0;
         EVENT = 1;
         AGGREGATE = 2;
+        DEBUG_EVENT = 3;
+        DEBUG_AGGREGATE = 4;
+        VERBOSE_DEBUG_SOURCE_DESTINATION_LIMIT = 5;
+        VERBOSE_DEBUG_SOURCE_NOISED = 6;
+        VERBOSE_DEBUG_SOURCE_STORAGE_LIMIT = 7;
+        VERBOSE_DEBUG_SOURCE_SUCCESS = 8;
+        VERBOSE_DEBUG_SOURCE_UNKNOWN_ERROR = 9;
+        VERBOSE_DEBUG_SOURCE_FLEXIBLE_EVENT_REPORT_VALUE_ERROR = 10;
+        VERBOSE_DEBUG_TRIGGER_AGGREGATE_DEDUPLICATED = 11;
+        VERBOSE_DEBUG_TRIGGER_AGGREGATE_INSUFFICIENT_BUDGET = 12;
+        VERBOSE_DEBUG_TRIGGER_AGGREGATE_NO_CONTRIBUTIONS = 13;
+        VERBOSE_DEBUG_TRIGGER_AGGREGATE_REPORT_WINDOW_PASSED = 14;
+        VERBOSE_DEBUG_TRIGGER_ATTRIBUTIONS_PER_SOURCE_DESTINATION_LIMIT = 15;
+        VERBOSE_DEBUG_TRIGGER_EVENT_DEDUPLICATED = 16;
+        VERBOSE_DEBUG_TRIGGER_EVENT_EXCESSIVE_REPORTS = 17;
+        VERBOSE_DEBUG_TRIGGER_EVENT_LOW_PRIORITY = 18;
+        VERBOSE_DEBUG_TRIGGER_EVENT_NO_MATCHING_CONFIGURATIONS = 19;
+        VERBOSE_DEBUG_TRIGGER_EVENT_NOISE = 20;
+        VERBOSE_DEBUG_TRIGGER_EVENT_REPORT_WINDOW_PASSED = 21;
+        VERBOSE_DEBUG_TRIGGER_NO_MATCHING_FILTER_DATA = 22;
+        VERBOSE_DEBUG_TRIGGER_NO_MATCHING_SOURCE = 23;
+        VERBOSE_DEBUG_TRIGGER_REPORTING_ORIGIN_LIMIT = 24;
+        VERBOSE_DEBUG_TRIGGER_EVENT_STORAGE_LIMIT = 25;
+        VERBOSE_DEBUG_TRIGGER_UNKNOWN_ERROR = 26;
+        VERBOSE_DEBUG_TRIGGER_AGGREGATE_STORAGE_LIMIT = 27;
+        VERBOSE_DEBUG_TRIGGER_AGGREGATE_EXCESSIVE_REPORTS = 28;
+        VERBOSE_DEBUG_UNKNOWN = 29;
     }
 
     optional ReportType type = 1;
@@ -21931,6 +22081,10 @@
     optional android.adservices.service.measurement.ReportUploadMethod upload_method = 4;
     // delay (in milliseconds) between scheduled delivery time and actual delivery time.
     optional int64 reporting_delay_millis = 5;
+    optional string app_package_name = 6; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
+    optional int32 retry_count = 7;
+    optional int32 http_response_code = 8;
+    optional bool is_marked_for_deletion = 9;
 }
 
 /**
@@ -21952,6 +22106,10 @@
     optional android.adservices.service.measurement.RegistrationFailureType failure_type = 7;
     // delay (in milliseconds) between registration queue request and the time it gets processed
     optional int64 registration_delay_millis = 8;
+    optional string app_package_name = 9; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
+    optional int32 retry_count = 10;
+    optional int32 http_response_code = 11;
+    optional bool is_redirect = 12;
 }
 
 /**
@@ -23471,6 +23629,10 @@
         GA_UX_LANDING_PAGE_OPT_OUT = 65;
         // user clicked opt out on the landing page.
         LANDING_PAGE_OPT_OUT = 66;
+        // (enrolled) user clicked on the privacy sandbox entry point.
+        PRIVACY_SANDBOX_ENTRY_POINT_CLICKED = 67;
+        // daily maintenance job was run.
+        DAILY_MAINTENANCE_JOB_FINISHED = 68;
     }
     // UI action performed by user.
     optional AdServiceSettingsName action = 2;
@@ -23511,7 +23673,7 @@
     // Default ad id state when consent notification was first sent.
     optional AdServicesSettingsDefaultAdIdState default_ad_id_state = 4;
 
-    // Type of AdService feature running on device.
+    // (Deprecated) Type of AdService feature running on device.
     enum PrivacySandboxFeatureType {
         // fallback when getFeature failed.
         FEATURE_UNSPECIFIED = 0;
@@ -23529,8 +23691,48 @@
         PRIVACY_SANDBOX_RECONSENT_FF = 6;
     }
 
-    // Privacy sandbox feature currently running on the device.
-    optional PrivacySandboxFeatureType feature_type = 5;
+    // (Deprecated) Privacy sandbox feature currently running on the device.
+    optional PrivacySandboxFeatureType feature_type = 5 [deprecated = true];
+
+    // Type of privacy sandbox UX.
+    enum PrivacySandboxUx {
+        // fallback when no UX can be selected.
+        UNSUPPORTED_UX = 0;
+        // all UXs that are not unspecified.
+        UNSPECIFIED_UX = 1;
+        // GA UX.
+        GA_UX = 2;
+        // Beta UX.
+        BETA_UX = 3;
+        // UX for Android RVC.
+        RVC_UX = 4;
+    }
+
+    // Type of privacy sandbox UX.
+    optional PrivacySandboxUx ux = 6;
+
+    // Type of privacy sandbox enrollment channel.
+    enum PrivacySandboxUxEnrollmentChannel {
+        // fallback when no enrollment channel can be selected.
+        UNSUPPORTED_CHANNEL = 0;
+        // all enrollment channels that are unspecified.
+        UNSPECIFIED_CHANNEL = 1;
+        // already enrolled channel.
+        ALREADY_ENROLLED_CHANNEL = 2;
+        // consent notification debug channel.
+        CONSENT_NOTIFICATION_DEBUG_CHANNEL = 3;
+        // first consent notification.
+        FIRST_CONSENT_NOTIFICATION_CHANNEL = 4;
+        // reconsent notification.
+        RECONSENT_NOTIFICATION_CHANNEL = 5;
+        // consent notification reset channel.
+        CONSENT_NOTIFICATION_RESET_CHANNEL = 6;
+        // 2nd GA notification post R OTA.
+        RVC_POST_OTA_NOTIFICATION_CHANNEL = 7;
+    }
+
+    // Type of privacy sandbox enrollment channel.
+    optional PrivacySandboxUxEnrollmentChannel enrollment_channel = 7;
 }
 
 // Logs daily ambient brightness stats.
@@ -24455,6 +24657,10 @@
 
   // Active watch face package uid.
   optional int32 watch_face_package_uid = 3 [(is_uid) = true];
+
+  /* Active watch face class name. This will be
+  null for Declarative WF packages, as these packages have only one WF. */
+  optional string watch_face_class_name = 5;
 }
 
 message UnsafeIntentEventReported {
diff --git a/stats/atoms/adpf/adpf_extension_atoms.proto b/stats/atoms/adpf/adpf_extension_atoms.proto
new file mode 100644
index 0000000..9c8da67
--- /dev/null
+++ b/stats/atoms/adpf/adpf_extension_atoms.proto
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.adpf;
+
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/attribution_node.proto";
+import "frameworks/proto_logging/stats/enums/os/enums.proto";
+
+option java_package = "com.android.os.adpf";
+option java_multiple_files = true;
+
+extend Atom {
+    optional ThermalStatusCalled thermal_status_called = 772 [(module) = "framework"];
+    optional ThermalHeadroomCalled thermal_headroom_called = 773 [(module) = "framework"];
+    optional ThermalHeadroomThresholdsCalled thermal_headroom_thresholds_called = 774 [(module) = "framework"];
+    optional ThermalHeadroomThresholds thermal_headroom_thresholds = 10201 [(module) = "framework"];
+}
+
+enum ThermalApiStatus {
+    UNSPECIFIED_THERMAL_API_FAILURE = 0;
+    SUCCESS = 1;
+    HAL_NOT_READY = 2;
+    FEATURE_NOT_SUPPORTED = 3;
+    INVALID_ARGUMENT = 4;
+    // if the thermal HAL reports no temperature for SKIN type
+    NO_TEMPERATURE = 5;
+    // if the thermal HAL reports no matching threshold for the SKIN temperature
+    NO_TEMPERATURE_THRESHOLD = 6;
+}
+
+/**
+ * Logs the PowerManager#getCurrentThermalStatus API usage.
+ *  Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java.
+ */
+message ThermalStatusCalled {
+    // UID of the package.
+    optional int32 uid = 1 [(is_uid) = true];
+
+    // API call status.
+    optional ThermalApiStatus api_status = 2;
+
+    // Thermal throttling status.
+    optional android.os.ThrottlingSeverityEnum status = 3;
+}
+
+/**
+ * Logs the PowerManager#getThermalHeadroom API usage.
+ *  Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java.
+ */
+message ThermalHeadroomCalled {
+    // UID of the package.
+    optional int32 uid = 1 [(is_uid) = true];
+
+    // API call status.
+    optional ThermalApiStatus api_status = 2;
+
+    // Thermal headroom.
+    optional float headroom = 3;
+}
+
+/**
+ * Logs the PowerManager#getThermalHeadroomThresholds API usage.
+ * Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java.
+ */
+message ThermalHeadroomThresholdsCalled {
+    // UID of the package.
+    optional int32 uid = 1 [(is_uid) = true];
+
+    // API call status.
+    optional ThermalApiStatus api_status = 2;
+}
+
+/**
+ * Logs the current thermal headroom thresholds of a device.
+ * Logged from frameworks/base/services/core/java/com/android/server/power/ThermalManagerService.java.
+ */
+message ThermalHeadroomThresholds {
+    // Thermal headroom threshold for that status.
+    repeated float headroom = 1;
+}
diff --git a/stats/atoms/adservices/adservices_extension_atoms.proto b/stats/atoms/adservices/adservices_extension_atoms.proto
index 19d5d28..c2e6c75 100644
--- a/stats/atoms/adservices/adservices_extension_atoms.proto
+++ b/stats/atoms/adservices/adservices_extension_atoms.proto
@@ -22,7 +22,9 @@
 import "frameworks/proto_logging/stats/atom_field_options.proto";
 import "frameworks/proto_logging/stats/enums/adservices/common/adservices_enums.proto";
 import "frameworks/proto_logging/stats/enums/app/job/enums.proto";
+import "frameworks/proto_logging/stats/enums/adservices/enrollment/enums.proto";
 import "frameworks/proto_logging/stats/enums/adservices/measurement/enums.proto";
+import "frameworks/proto_logging/stats/enums/adservices/fledge/enums.proto";
 
 option java_package = "com.android.os.adservices";
 option java_multiple_files = true;
@@ -57,9 +59,38 @@
   optional AdServicesMeasurementWipeout
       ad_services_measurement_wipeout = 676
         [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesMeasurementAdIdMatchForDebugKeys
+      ad_services_measurement_ad_id_match_for_debug_keys = 695
+        [(module) = "adservices", (truncate_timestamp) = true];
+
+  optional AdServicesEnrollmentDataStored ad_services_enrollment_data_stored = 697
+      [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesEnrollmentFileDownloaded
+      ad_services_enrollment_file_downloaded = 698
+      [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesEnrollmentMatched ad_services_enrollment_matched = 699
+      [(module) = "adservices", (truncate_timestamp) = true];
 
   optional AdServicesConsentMigrated ad_services_consent_migrated = 702
   [(module) = "adservices", (truncate_timestamp) = true];
+
+  optional AdServicesEnrollmentFailed ad_services_enrollment_failed = 714
+      [(module) = "adservices", (truncate_timestamp) = true];
+
+  optional AdServicesMeasurementClickVerification ad_services_measurement_click_verification = 756
+      [(module) = "adservices", (truncate_timestamp) = true];
+
+  optional AdServicesEncryptionKeyFetched ad_services_encryption_key_fetched = 765
+      [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesEncryptionKeyDbTransactionEnded ad_services_encryption_key_db_transaction_ended = 766
+      [(module) = "adservices", (truncate_timestamp) = true];
+
+  optional DestinationRegisteredBeacons destination_registered_beacons = 767
+      [(module) = "adservices", (truncate_timestamp) = true];
+  optional ReportInteractionApiCalled report_interaction_api_called = 768
+      [(module) = "adservices", (truncate_timestamp) = true];
+  optional InteractionReportingTableCleared interaction_reporting_table_cleared = 769
+      [(module) = "adservices", (truncate_timestamp) = true];
 }
 
 /**
@@ -124,6 +155,7 @@
   optional bool is_matched = 3;
   optional int64 join_key_hash = 4;
   optional int64 join_key_hash_limit = 5;
+  optional string app_package_name = 6; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
 }
 
 /**
@@ -178,6 +210,7 @@
   optional android.adservices.service.measurement.DelayedSourceRegistrationStatus registration_status = 1;
   // delay (in milliseconds) between a source registration and a previously registered trigger with matching attribution destination
   optional int64 missed_source_delay_millis = 2;
+  optional string app_package_name = 3; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
 }
 
 /**
@@ -192,6 +225,12 @@
   optional bool is_install_attribution = 6;
   // delay (in milliseconds) between trigger registration and a trigger becoming attributed.
   optional int64 trigger_to_attribution_delay_millis = 7;
+  optional string app_package_name = 8; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
+  optional int32 aggregate_report_count = 9;
+  optional int32 aggregate_debug_report_count = 10;
+  optional int32 event_report_count = 11;
+  optional int32 event_debug_report_count = 12;
+  optional int32 retry_count = 13;
 }
 
 /**
@@ -207,6 +246,55 @@
  */
 message AdServicesMeasurementWipeout {
   optional android.adservices.service.measurement.WipeoutCause wipeout_cause = 1;
+  optional string app_package_name = 2; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
+}
+
+/**
+ * Logs Ad Id match state for debug keys when measurement reports are being generated.
+ */
+message AdServicesMeasurementAdIdMatchForDebugKeys {
+  optional string adtech_enrollment_id = 1;
+  optional android.adservices.AttributionType attribution_type = 2;
+  optional bool is_matched = 3;
+  optional int64 num_unique_ad_ids_used = 4;
+  optional int64 num_unique_ad_id_limit = 5;
+  optional string app_package_name = 6; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
+}
+
+/**
+ * Logs when AdServices enrollment data is stored.
+ */
+message AdServicesEnrollmentDataStored {
+  optional android.stats.adservices.enrollment.TransactionType transaction_type = 1;
+  optional bool success = 2;
+  optional int32 build_id = 3; // id of the enrollment file downloaded via mdd
+}
+
+/**
+ * Logs when AdServices enrollment file get downloaded.
+ */
+message AdServicesEnrollmentFileDownloaded {
+  optional bool success = 1;
+  optional int32 build_id = 2; // id of the enrollment file downloaded via mdd
+}
+
+/**
+ * Logs when AdServices enrollment match occurs.
+ */
+message AdServicesEnrollmentMatched {
+  optional bool success = 1;
+  optional int32 build_id = 2; // id of the enrollment file downloaded via mdd
+}
+
+/**
+ * Logs when AdServices enrollment fails.
+ */
+message AdServicesEnrollmentFailed {
+  optional int32 build_id = 1; // id of the enrollment file downloaded via mdd
+  optional android.stats.adservices.enrollment.DataFileGroupStatus data_file_group_status = 2;
+  optional int32 enrollment_record_count_in_table = 3;
+  optional string query_parameter = 4;
+  optional android.stats.adservices.enrollment.ErrorCause error_cause = 5;
 }
 
 /**
@@ -239,6 +327,12 @@
 
     // Migrating consent from App Search to system service
     APPSEARCH_TO_SYSTEM_SERVICE = 2;
+
+    // Migrating consent from AdServicesExtDataStorageService to system service
+    ADEXT_SERVICE_TO_SYSTEM_SERVICE = 3;
+
+    // Migrating consent from AdServicesExtDataStorageService to App Search
+    ADEXT_SERVICE_TO_APPSEARCH = 4;
   }
 
   // Logs the opt-in/ opt-out value of measurement app
@@ -261,6 +355,169 @@
 
   // Logs the Migration status
   optional MigrationStatus migration_status = 7;
+}
 
+/**
+ * Logs for AdServices click verification for measurement API calls.
+ */
+ message AdServicesMeasurementClickVerification {
+  //  The final source type of the source.
+  optional android.adservices.service.measurement.SourceType source_type = 1;
 
+  // If an input event was included with the registration.
+  // The calling app wanted a click event if an input event is present.
+  optional bool input_event_present = 2;
+
+  // If the system click verification passed.
+  optional bool system_click_verification_passed = 3;
+
+  // If the flag is set to enable the system click verification check.
+  optional bool system_click_verification_enabled = 4;
+
+  // The delay (in millis) from when the input event was created to when the API was called.
+  optional int64 input_event_delay_millis = 5;
+
+  // The max difference (in millis) between input event creation and API call for the source to not get downgraded.
+  optional int64 valid_delay_window_millis = 6;
+
+  // The package calling the API.
+  optional string app_package_name = 7; // [(datapol.semantic_type) = ST_SOFTWARE_ID, (contains_pii) = false]
+}
+
+/**
+ * Logs for AdServices encryption key background job status.
+ */
+message AdServicesEncryptionKeyFetched {
+
+  // Encryption key fetch job type.
+  enum FetchJobType {
+    UNKNOWN_JOB = 0;
+    ENCRYPTION_KEY_DAILY_FETCH_JOB = 1;
+    MDD_DOWNLOAD_JOB = 2;
+  }
+
+  // Encryption key fetch status.
+  enum FetchStatus {
+    UNKNOWN = 0;
+    NULL_ENDPOINT = 1;
+    INVALID_ENDPOINT = 2;
+    IO_EXCEPTION = 3;
+    BAD_REQUEST_EXCEPTION = 4;
+    KEY_NOT_MODIFIED = 5;
+    SUCCESS = 6;
+  }
+
+  // Encryption key fetch job type.
+  optional FetchJobType fetch_job_type = 1;
+  // Encryption key fetch status.
+  optional FetchStatus fetch_status = 2;
+  // Whether the key is fetched for the first time.
+  optional bool is_first_time_fetch = 3;
+  // Enrollment id for the adtech corresponding to the encryption key.
+  // Example: "XYZABC"
+  optional string adtech_enrollment_id = 4;
+  // Company id for the adtech corresponding to this encryption key.
+  // Example: "XYZCompany"
+  optional string company_id = 5;
+  // Encryption key url.
+  optional string encryption_key_url = 6;
+}
+
+/**
+ * Logs for AdServices encryption key datastore transaction status.
+ */
+message AdServicesEncryptionKeyDbTransactionEnded {
+
+  // Encryption key datastore transaction type.
+  enum DbTransactionType {
+    UNKNOWN = 0;
+    READ_TRANSACTION_TYPE = 1;
+    WRITE_TRANSACTION_TYPE = 2;
+  }
+
+  // Encryption key datastore transaction status.
+  enum DbTransactionStatus {
+    UNKNOWN_EXCEPTION = 0;
+    INVALID_KEY= 1;
+    INSERT_EXCEPTION = 2;
+    DELETE_EXCEPTION = 3;
+    SEARCH_EXCEPTION = 4;
+    SUCCESS = 5;
+  }
+
+  // Encryption key dao method names.
+  enum MethodName {
+    UNKNOWN_METHOD = 0;
+    GET_KEY_FROM_ENROLLMENT_ID = 1;
+    GET_KEY_FROM_ENROLLMENT_ID_AND_KEY_TYPE = 2;
+    GET_KEY_FROM_ENROLLMENT_ID_AND_KEY_ID = 3;
+    GET_KEY_FROM_REPORTING_ORIGIN = 4;
+    GET_ALL_KEYS = 5;
+    INSERT_KEY = 6;
+    INSERT_KEYS = 7;
+    DELETE_KEY = 8;
+  }
+
+  // Encryption key datastore transaction type.
+  optional DbTransactionType db_transaction_type = 1;
+  // Encryption key datastore transaction status.
+  optional DbTransactionStatus  db_transaction_status = 2;
+  // Encryption key DAO method name.
+  optional MethodName method_name = 3;
+}
+
+/**
+ * Logs for beacon level reporting for destination registered beacons.
+ */
+message DestinationRegisteredBeacons {
+
+  // Logs the range of key size for interaction key.
+  enum InteractionKeySizeRangeType {
+    UNSET_TYPE = 0;
+    // The key size is smaller than 50% maximum key size.
+    MUCH_SMALLER_THAN_MAXIMUM_KEY_SIZE = 1;
+    // The key size is equal or greater than 50% maximum key size but smaller than maximum key size.
+    SMALLER_THAN_MAXIMUM_KEY_SIZE = 2;
+    // The key size is equal to maximum key size.
+    EQUAL_TO_MAXIMUM_KEY_SIZE = 3;
+    // The key size is greater than maximum key size.
+    LARGER_THAN_MAXIMUM_KEY_SIZE = 4;
+  }
+
+  // The entity who registered the beacons.
+  optional android.adservices.service.BeaconReportingDestinationType destination = 1;
+
+  // Number of beacons ad-tech tries to register during reportImpression.
+  optional int32 attempted_registered_beacons = 2;
+
+  // Key size range for interactionKey in every registerAdBeacon call.
+  repeated InteractionKeySizeRangeType attempted_key_sizes = 3;
+
+  // Size of registered_ad_interactions database after each update to it.
+  optional int32 table_num_rows = 4;
+
+  // The status response code in AdServices.
+  optional int32 status_code = 5;
+}
+
+/**
+ * Logs for beacon level reporting for ReportInteraction API.
+ */
+message ReportInteractionApiCalled {
+  // The entity who registered the beacons.
+  optional android.adservices.service.BeaconReportingDestinationType destination = 1;
+
+  // Number of matching uris for the reportInteraction request is found.
+  optional int32 num_matching_uris = 2;
+}
+
+/**
+ * Logs for beacon level reporting for clearing interaction reporting table.
+ */
+message InteractionReportingTableCleared {
+  // Number of registered URIs cleared every 24 hours.
+  optional int32 num_uris_cleared = 1;
+
+  // Number of unreported URIs before clearing.
+  optional int32 num_unreported_uris = 2;
 }
\ No newline at end of file
diff --git a/stats/atoms/apex/apex_extension_atoms.proto b/stats/atoms/apex/apex_extension_atoms.proto
new file mode 100644
index 0000000..2f8ac15
--- /dev/null
+++ b/stats/atoms/apex/apex_extension_atoms.proto
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// This file contains extension atoms for apex and vendor apex installation events.
+
+syntax = "proto2";
+
+package android.os.statsd.apex;
+
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/enums/apex/enums.proto";
+
+option java_package = "com.android.os.apex";
+
+extend Atom {
+    optional ApexInstallationRequested apex_installation_requested = 732 [(module) = "apex"];
+    optional ApexInstallationStaged apex_installation_staged = 733 [(module) = "apex"];
+    optional ApexInstallationEnded apex_installation_ended = 734 [(module) = "apex"];
+}
+
+/**
+ * APEXs can installed by either Google or OEMs. These atoms capture basic
+ * metadata of APEXs being installed on a device.
+ *
+ * Logs when an apex installation is started, staged, and ended.
+ * Pushed from:
+ *    system/apex/apexd/apexd.cpp
+ */
+
+message ApexInstallationRequested {
+    // Module in the APEX
+    optional string module_name = 1;
+    // The version code of the APEX
+    optional int64 version_code = 2;
+    // Byte size of the APEX file
+    optional int64 package_size_bytes = 3;
+    // The hex encoded SHA256 digest of the APEX file
+    optional string file_hash = 4;
+    // Lets us determine if apex is a vendor apex
+    optional android.apex.PreinstallPartition apex_preinstall_partition = 5;
+    // Was a Staged or a Rebootless install requested
+    optional android.apex.InstallationType installation_type = 6;
+    // Is this request a rollback?
+    optional bool request_is_rollback = 7;
+    // Apex's FileInfo's Manifest provides these data points
+    optional bool provides_shared_apex_libs = 8;
+    // HAL's provided by this apex
+    repeated string provided_hals = 9;
+}
+
+message ApexInstallationStaged {
+    optional string file_hash = 1;
+}
+
+message ApexInstallationEnded {
+    optional string file_hash = 1;
+    optional android.apex.InstallResultType installation_result = 2;
+}
diff --git a/stats/atoms/appsearch/appsearch_extension_atoms.proto b/stats/atoms/appsearch/appsearch_extension_atoms.proto
new file mode 100644
index 0000000..1249b18
--- /dev/null
+++ b/stats/atoms/appsearch/appsearch_extension_atoms.proto
@@ -0,0 +1,165 @@
+package android.os.statsd.appsearch;
+
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
+
+option java_package = "com.android.os.appsearch";
+option java_multiple_files = true;
+
+extend Atom {
+  // Pushed atoms
+  optional AppSearchSetSchemaStatsReported app_search_set_schema_stats_reported = 385 [(module) = "appsearch"];
+  optional AppSearchSchemaMigrationStatsReported
+          app_search_schema_migration_stats_reported = 579 [(module) = "appsearch"];
+}
+
+/**
+ * Logs detailed stats for setting schema in AppSearch.
+ *
+ * stats pushed from:
+ *   frameworks/base/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
+ *
+ * Next tag: 26
+ */
+message AppSearchSetSchemaStatsReported {
+    // The sampling interval for this specific type of stats
+    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
+    optional int32 sampling_interval = 1;
+
+    // # of previous skipped sample for this specific type of stats
+    // We can't push atoms too closely, so some samples might be skipped
+    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
+    // For example, the true count of an event could be estimated as:
+    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
+    optional int32 num_skipped_sample = 2;
+
+    // Package UID of the application.
+    optional int32 uid = 3 [(is_uid) = true];
+
+    // Hash of the database name within AppSearch
+    optional int32 database = 4;
+
+    // Needs to be sync with AppSearchResult#ResultCode in
+    // frameworks/base/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
+    optional int32 status_code = 5;
+
+    // Overall time used for setting schema including the binder latency
+    optional int32 total_latency_millis = 6;
+
+    // Number of newly added schema types
+    optional int32 new_type_count = 7;
+
+    // Number of deleted schema types
+    optional int32 deleted_type_count = 8;
+
+    // Number of compatible schema type changes
+    optional int32 compatible_type_change_count = 9;
+
+    // Number of index-incompatible schema type changes
+    optional int32 index_incompatible_type_change_count = 10;
+
+    // Number of backwards-incompatible schema type changes
+    optional int32 backwards_incompatible_type_change_count = 11;
+
+    // Time used for verifying the incoming call.
+    optional int32  verify_incoming_call_latency_millis = 12;
+
+    // Time used for creating or waiting the user executor.
+    optional int32  executor_acquisition_latency_millis = 13;
+
+    // Time used for rebuilding objects from bundles.
+    optional int32  rebuild_from_bundle_latency_millis = 14;
+
+    // Time passed while waiting to acquire the lock during Java function calls.
+    optional int32  java_lock_acquisition_latency_millis = 15;
+
+    // Time used for the rewrite schema to proto.
+    optional int32  rewrite_schema_latency_millis = 16;
+
+    // Overall time used for the native function call.
+    optional int32  total_native_latency_millis = 17;
+
+    // Time used for the apply visibility settings function call.
+    optional int32  visibility_setting_latency_millis = 18;
+
+    // Time used for the dispatch change notification function call.
+    optional int32  dispatch_change_notifications_latency_millis = 19;
+
+    // Time used for the optimization function call.
+    optional int32  optimize_latency_millis = 20;
+
+    /** Whether this package is observed. */
+    optional bool is_package_observed = 21;
+
+    /** Time used for the get old schema. */
+    optional int32  get_old_schema_latency_millis = 22;
+
+    /** Time used for the get registered observer function call. */
+    optional int32  get_observer_latency_millis = 23;
+
+    /** Time used for the preparing change notification action. */
+    optional int32  preparing_change_notification_latency_millis = 24;
+
+    // Type of the SetSchema call relative to SchemaMigration case.
+    // This is in sync with
+    // packages/modules/AppSearch/service/java/com/android/server/appsearch/external/localstorage/stats/SetSchemaStats.java
+    optional int32 schema_migration_call_type = 25;
+}
+
+/**
+ * Logs detailed stats for schema migration in AppSearch.
+ *
+ * stats pushed from:
+ *   packages/modules/AppSearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
+ *
+ * Next tag: 15
+ */
+message AppSearchSchemaMigrationStatsReported {
+    // The sampling interval for this specific type of stats
+    // For example, sampling_interval=10 means that one out of every 10 stats was logged.
+    optional int32 sampling_interval = 1;
+
+    // # of previous skipped sample for this specific type of stats
+    // We can't push atoms too closely, so some samples might be skipped
+    // In order to extrapolate the counts, we need to save the number of skipped stats and add it back
+    // For example, the true count of an event could be estimated as:
+    //   SUM(sampling_interval * (num_skipped_sample + 1)) as est_count
+    optional int32 num_skipped_sample = 2;
+
+    // Package UID of the application.
+    optional int32 uid = 3 [(is_uid) = true];
+
+    // Hash of the database name within AppSearch
+    optional int32 database = 4;
+
+    // Needs to be sync with AppSearchResult#ResultCode in
+    // packages/modules/AppSearch/framework/java/external/android/app/appsearch/AppSearchResult.java
+    optional int32 status_code = 5;
+
+    // Overall time used for setting schema including the binder latency
+    optional int32 total_latency_millis = 6;
+
+    // Overall time used for getting schema during schema migration
+    optional int32 schema_migration_get_schema_latency_millis = 7;
+
+    // Overall time used for querying and transforming documents during schema migration
+    optional int32 schema_migration_query_and_transform_latency_millis = 8;
+
+    // Overall time used for first setSchema during schema migration
+    optional int32 schema_migration_first_set_schema_latency_millis = 9;
+
+    // Overall time used for second setSchema during schema migration
+    optional int32 schema_migration_second_set_schema_latency_millis = 10;
+
+    // Overall time used for saving documents during schema migration
+    optional int32 schema_migration_save_document_latency_millis = 11;
+
+    // Number of document that need to be migrated to another version
+    optional int32 total_need_migrated_document_count = 12;
+
+    // Number of successfully migrated and saved in Icing
+    optional int32 total_success_migrated_document_count = 13;
+
+    // Number of migration failure during schema migration
+    optional int32 schema_migration_failure_count = 14;
+}
\ No newline at end of file
diff --git a/stats/atoms/art/art_extension_atoms.proto b/stats/atoms/art/art_extension_atoms.proto
index 8815b2f..127b118 100644
--- a/stats/atoms/art/art_extension_atoms.proto
+++ b/stats/atoms/art/art_extension_atoms.proto
@@ -9,7 +9,7 @@
 option java_multiple_files = true;
 
 extend Atom {
-    // Pushed atomes
+    // Pushed atoms
     optional ArtDatumReported art_datum_reported = 332 [(module) = "art"];
     // Deprecated in favour of the ArtDeviceStatus pulled atom
     optional ArtDeviceDatumReported art_device_datum_reported = 550 [(module) = "art", deprecated = true];
@@ -350,4 +350,3 @@
     }
     optional BootImageStatus boot_image_status = 1;
 }
-
diff --git a/stats/atoms/automotive/carlauncher/automotive_carlauncher_atoms.proto b/stats/atoms/automotive/carlauncher/automotive_carlauncher_atoms.proto
new file mode 100644
index 0000000..ae5375b
--- /dev/null
+++ b/stats/atoms/automotive/carlauncher/automotive_carlauncher_atoms.proto
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto2";
+
+package android.os.statsd.automotive.carlauncher;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+option java_package = "com.android.os.automotive.carlauncher";
+option java_multiple_files = true;
+
+extend Atom {
+  optional CarRecentsEventReported car_recents_event_reported = 770 [(module) = "carlauncher"];
+}
+
+/**
+ * Logs when an recents event occurs in carlauncher.
+ *
+ * Logged from package: packages/apps/Car/Launcher
+ */
+message CarRecentsEventReported {
+  enum RECENTS_EVENT_TYPE {
+    UNSPECIFIED = 0;
+    SESSION_STARTED = 1;
+    SESSION_FINISHED = 2;
+    APP_LAUNCHED = 3;
+    APP_DISMISSED = 4;
+    CLEAR_ALL = 5;
+  }
+  optional int64 session_id = 1;
+  optional int64 event_id = 2;
+  optional RECENTS_EVENT_TYPE event_type = 3;
+  optional int32 total_task_count = 4;
+  optional int32 event_task_index = 5;
+  optional int64 time_to_event_millis = 6;
+  optional int32 package_uid = 7 [(is_uid) = true];
+}
diff --git a/stats/atoms/bluetooth/bluetooth_extension_atoms.proto b/stats/atoms/bluetooth/bluetooth_extension_atoms.proto
index ed10dea..ed7ecb4 100644
--- a/stats/atoms/bluetooth/bluetooth_extension_atoms.proto
+++ b/stats/atoms/bluetooth/bluetooth_extension_atoms.proto
@@ -259,6 +259,17 @@
   optional int32 tag = 4;
 }
 
+message BluetoothRemoteDeviceInformation {
+  // SHA256 hashed Bluetooth device name.
+  optional string allowlisted_device_name_hash = 1;
+
+  // Class of Device
+  optional int32 class_of_device = 2;
+
+  // The first three bytes of MAC address
+  optional int32 oui = 3;
+}
+
 /**
 * Logs RFCOMM connection attempts
 *
@@ -283,4 +294,9 @@
 
   // Uid of the app that calls RFCOMM connection API
   optional int32 uid = 6 [(is_uid) = true]; // [(datapol.semantic_type) = ST_SOFTWARE_ID]
+
+  // Remote Device Information
+  optional BluetoothRemoteDeviceInformation remote_device_information = 7 [(log_mode) = MODE_BYTES];
 }
+
+
diff --git a/stats/atoms/corenetworking/platform/vpn_extension_atoms.proto b/stats/atoms/corenetworking/platform/vpn_extension_atoms.proto
new file mode 100644
index 0000000..ebc0978
--- /dev/null
+++ b/stats/atoms/corenetworking/platform/vpn_extension_atoms.proto
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.corenetworking.platform;
+
+option java_package = "com.android.os.corenetworking.platform";
+option java_multiple_files = true;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/corenetworking/platform/enums.proto";
+
+extend Atom {
+    // pushed atom
+    optional VpnConnectionStateChanged vpn_connection_state_changed = 850
+        [(module) = "framework"];
+
+    // pushed atom
+    optional VpnConnectionReported vpn_connection_reported = 851 [(module) = "framework"];
+}
+
+/**
+ * Log VPN connection events to develop metrics analyzing the effect of VPN usage on device
+ * performance and battery life.
+ *
+ * Logs from: services/core/java/com/android/server/connectivity/Vpn.java.
+ *
+ */
+message VpnConnectionStateChanged {
+
+  // The VPN connection state(connected/disconnected)
+  optional android.corenetworking.platform.ConnectionState connection_state = 1 [
+        (state_field_option).exclusive_state = true,
+        (state_field_option).nested = false
+    ];
+}
+
+
+/**
+ * Logs the VPN connection stats for analysis performance of VPN
+ *
+ * Logs from: services/core/java/com/android/server/connectivity/Vpn.java.
+ *
+ */
+message VpnConnectionReported {
+  // VPN connection types defined in
+  // frameworks/base/core/java/android/net/VpnManager.java
+  optional android.corenetworking.platform.VpnType vpn_type = 1;
+
+  // The IP address type in the VPN connection(IPv4/IPv6/IPv4v6)
+  optional android.corenetworking.platform.IpType conn_ip_protocol = 2;
+
+  // The IP protocol of the VPN server(IPv4/IPv6/IPv4v6)
+  optional android.corenetworking.platform.IpType server_ip_protocol = 3;
+
+  // UDP Encapsulation/ESP
+  optional android.corenetworking.platform.EncapType encap_type = 4;
+
+  // Is the VPN a bypassable VPN
+  optional bool bypassability = 5;
+
+  // Is the VPN opt-in to do network validation
+  optional bool validation_required = 6;
+
+  optional android.corenetworking.platform.VpnProfileType vpn_profile_type = 7;
+
+  // Bitmasked value for allowed algorithms
+  optional int32 allowed_alogithms = 8;
+
+  // The MTU configuration of the VPN network
+  optional int32 mtu = 9;
+
+  // True if the local networks will be excluded from VPN. This
+  // should only work with bypassable VPNs.
+  optional bool local_route_excluded = 10;
+
+  // Is the VPN a metered VPN
+  optional bool metered = 11;
+
+  // Is the VPN configured with a proxy
+  optional bool proxy_setup = 12;
+
+  // Is the VPN connection a always-on VPN
+  optional bool always_on_vpn = 13;
+
+  // Is the VPN connection a lockdown VPN
+  optional bool lockdown_vpn = 14;
+
+  // The dnses for a VPN network can either come from network side
+  // or use user pre-configured dnses. True if the VPN uses user
+  // preconfigured dnses, false otherwise.
+  optional bool preconfigured_dns = 15;
+
+  // The route for a VPN network can either come from network side
+  // or use user pre-configured routes. True if the VPN uses user
+  // preconfigured routes, false otherwise.
+  optional bool preconfigured_routes = 16;
+
+  // Is the NAT keepalive controllled by the system to send the
+  // keepalive dynamically
+  optional int32 is_auto_keepalive = 17;
+
+  // The duration of connected period in seconds
+  optional int32 connected_period_seconds = 18;
+
+  // The list of underlying network type during the VPN connection
+  repeated int32 underlying_network_type = 19;
+
+  // The duration of VPN validated period in seconds
+  optional int32 vpn_validated_period_seconds = 20;
+
+  // Count of the validation attempts
+  optional int32 validation_attempts = 21;
+
+  // Count of the successful validation attempts
+  optional int32 validation_attempts_success = 22;
+
+  // The list of session lost reason during the VPN connection
+  // 0 for success, or other errors for session lost reason
+  repeated android.corenetworking.platform.ErrorCode error_code = 23;
+
+  // The all attempt recovery informations in the VPN connection
+  optional RecoveryInfoPerAttempt recovery_info_per_attempt = 24[(log_mode) = MODE_BYTES];
+
+  // The recovery latency is approxymiate to un-validated period
+  optional int32 recovery_latency = 25;
+
+  // Control plane health
+  // The list of each ike attempt informations during the VPN connection
+  optional IkeAttempts ike_attempts = 26[(log_mode) = MODE_BYTES];
+
+  // The list of each network switch info during the VPN connection
+  optional SwitchAttempts switch_attempts = 27[(log_mode) = MODE_BYTES];
+}
+
+/**
+ * Log one ike attempt event informations
+ */
+message IkeAttemptEvent {
+  // Result of the ike attempt
+  optional bool success = 1;
+
+  // The latency of ike attempt in milliseconds
+  optional int32 latency_milliseconds = 2;
+}
+
+/**
+ * Log all ike attempt informations during the VPN connection
+ */
+message IkeAttempts {
+   repeated IkeAttemptEvent ike_attempt_event = 1;
+}
+
+/**
+ * Log one network switch attempt event informations
+ */
+message SwitchAttemptEvent {
+  // Result of the network switch attempt
+  optional bool success = 1;
+
+  // The latency of the network switch attempt in milliseconds
+  optional int32 latency_milliseconds = 2;
+}
+
+/**
+ * Log all network switch attempt informations during the VPN connection
+ */
+message SwitchAttempts {
+  repeated SwitchAttemptEvent switch_attempt_event = 1;
+}
+
+/**
+ * Log the recovery info for the attempt
+ */
+message RecoveryInfoForAttempt {
+  // Type of recover action for the attempt
+  optional android.corenetworking.platform.RecoverAction type = 1;
+
+  // Recovery count
+  optional int32 count = 2;
+}
+
+
+/**
+ * Log all attempted recovery informations on the VPN connection
+ */
+message RecoveryInfoPerAttempt {
+  // The list of recovery info per each attempt in the connection
+  repeated RecoveryInfoForAttempt recovery_info_for_attempt = 1;
+}
diff --git a/stats/atoms/cpu/cpu_atoms.proto b/stats/atoms/cpu/cpu_atoms.proto
new file mode 100644
index 0000000..808aece
--- /dev/null
+++ b/stats/atoms/cpu/cpu_atoms.proto
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.cpu;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+option java_package = "com.android.os.cpu";
+option java_multiple_files = true;
+
+extend Atom {
+    optional CpuPolicy cpu_policy = 10199 [(module) = "framework"];
+}
+
+/**
+ * Logs information related to CPU policies such as frequency limits.
+ */
+message CpuPolicy {
+    // The cpufreq policy ID.
+    optional int32 policy = 1;
+
+    // The current maximum frequency.
+    optional int32 scaling_max_freq_khz = 2;
+
+    // The normal maximum frequency.
+    optional int32 cpuinfo_max_freq_khz = 3;
+}
\ No newline at end of file
diff --git a/stats/atoms/devicelock/devicelock_extension_atoms.proto b/stats/atoms/devicelock/devicelock_extension_atoms.proto
new file mode 100644
index 0000000..5af5df6
--- /dev/null
+++ b/stats/atoms/devicelock/devicelock_extension_atoms.proto
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.devicelock;
+
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
+
+option java_package = "com.android.os.devicelock";
+option java_multiple_files = true;
+
+extend Atom {
+  optional DeviceLockCheckInRequestReported device_lock_check_in_request_reported = 726
+          [(module) = "devicelock"];
+  optional DeviceLockProvisioningCompleteReported device_lock_provisioning_complete_reported = 727
+          [(module) = "devicelock"];
+  optional DeviceLockKioskAppRequestReported device_lock_kiosk_app_request_reported = 728
+          [(module) = "devicelock"];
+}
+
+message DeviceLockCheckInRequestReported {
+  enum RequestType {
+    // Default value for the request type
+    UNKNOWN = 0;
+    // The Check-in request is getDeviceCheckInStatus
+    GET_DEVICE_CHECK_IN_STATUS = 1;
+    // The Check-in request is pauseDeviceProvisioning
+    PAUSE_DEVICE_PROVISIONING = 2;
+    // The Check-in request is reportDeviceProvisioningComplete
+    // DEPRECATED, because the gRPC call for this log type is removed
+    REPORT_DEVICE_PROVISIONING_COMPLETE = 3 [deprecated = true];
+    // The Check-in request is reportDeviceProvisionState
+    REPORT_DEVICE_PROVISION_STATE = 4;
+    // The Check-in request is isDeviceInApprovedCountry
+    IS_DEVICE_IN_APPROVED_COUNTRY = 5;
+  }
+
+  optional RequestType type= 1;
+}
+
+message DeviceLockProvisioningCompleteReported {
+  optional int64 time_spent_on_provisioning_seconds = 1;
+}
+
+message DeviceLockKioskAppRequestReported {
+  optional int32 kiosk_app_uid = 1 [(is_uid) = true];
+}
diff --git a/stats/atoms/dnd/dnd_atoms.proto b/stats/atoms/dnd/dnd_atoms.proto
index e6863ba..e22709e 100644
--- a/stats/atoms/dnd/dnd_atoms.proto
+++ b/stats/atoms/dnd/dnd_atoms.proto
@@ -66,4 +66,6 @@
     optional android.stats.dnd.PeopleType allow_messages_from = 18;
 
     optional android.stats.dnd.ConversationType allow_conversations_from = 19;
+
+    optional android.stats.dnd.ChannelType allow_channels = 20;
 }
diff --git a/stats/atoms/federatedcompute/federatedcompute_extension_atoms.proto b/stats/atoms/federatedcompute/federatedcompute_extension_atoms.proto
new file mode 100644
index 0000000..c9dbccb
--- /dev/null
+++ b/stats/atoms/federatedcompute/federatedcompute_extension_atoms.proto
@@ -0,0 +1,94 @@
+
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+package android.os.statsd.federatedcompute;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/federatedcompute/enums.proto";
+
+option java_package = "com.android.os.federatedcompute";
+option java_multiple_files = true;
+
+extend Atom {
+  optional FederatedComputeApiCalled federated_compute_api_called =
+            712 [(module) = "ondevicepersonalization", (truncate_timestamp) = true];
+  optional FederatedComputeTrainingEventReported federated_compute_training_event_reported =
+            771 [(module) = "ondevicepersonalization", (truncate_timestamp) = true];
+}
+
+/**
+ * Logs when an FederatedCompute api is called.
+ */
+message FederatedComputeApiCalled {
+    enum FederatedComputeApiClassType {
+        API_CLASS_UNKNOWN = 0;
+    }
+
+    enum FederatedComputeApiName {
+        API_NAME_UNKNOWN = 0;
+        SCHEDULE = 1;
+        CANCEL = 2;
+    }
+
+    optional FederatedComputeApiClassType api_class = 1;
+
+    optional FederatedComputeApiName api_name = 2;
+
+    optional int32 latency_millis = 3;
+
+    // response_code is the error/failure code for the given api.
+    optional int32 response_code = 4;
+}
+
+/**
+ * Logs when an federated computation training event occurs.
+ */
+message FederatedComputeTrainingEventReported {
+  optional int64 client_version = 1; // [(datapol.semantic_type) = ST_SOFTWARE_ID]
+
+  // The kind of train event.
+  optional android.federatedcompute.TrainingEventKind
+      kind = 2;
+
+  // The task id of this run.
+  optional int64 task_id = 3;
+
+  // For TRAIN_INTERRUPTED and TRAIN_COMPLETED:
+  // the wall time of the duration, in milliseconds, since the matching
+  // STARTED event.  (Note: This is a time duration, not a timestamp, so
+  // annotating it with ST_TIMESTAMP is not necessary and would be inaccurate.)
+  optional int64 duration_millis = 4;
+
+  // For TRAIN_INTERRUPTED and TRAIN_COMPLETED:
+  // the number of bytes (of serialized example protos) which had been fed
+  // since the matching started event.
+  optional int64 example_size = 5;
+
+  /////////////////////////////////////////////////////////
+  // Information about data transfer for TRAIN_DOWNLOADED/TRAIN_UPLOADED events
+
+  // How long it took client to transfer the data
+  optional int64 data_transfer_duration_millis = 6;
+
+  // Number of bytes sent from the client to the server.
+  optional int64 bytes_uploaded = 7;
+
+  // Number of bytes sent from the server to the client.
+  optional int64 bytes_downloaded = 8;
+}
diff --git a/stats/atoms/framework/framework_extension_atoms.proto b/stats/atoms/framework/framework_extension_atoms.proto
index 7457886..a7d9df4 100644
--- a/stats/atoms/framework/framework_extension_atoms.proto
+++ b/stats/atoms/framework/framework_extension_atoms.proto
@@ -29,8 +29,10 @@
     optional InTaskActivityStarted in_task_activity_started = 685 [(module) = "framework"];
     optional CachedAppsHighWaterMark cached_apps_high_watermark = 10189 [(module) = "framework"];
     optional StylusPredictionMetricsReported stylus_prediction_metrics_reported = 718 [(module) = "libinput"];
+    optional UserRiskEventReported user_risk_event_reported = 725 [(module) = "framework"];
     optional MediaProjectionStateChanged media_projection_state_changed = 729 [(module) = "framework"];
     optional MediaProjectionTargetChanged media_projection_target_changed = 730 [(module) = "framework"];
+    optional ProxyBytesTransferByFgBg proxy_bytes_transfer_by_fg_bg = 10200 [(module) = "framework"];
 }
 
 /**
@@ -174,6 +176,70 @@
 }
 
 /**
+ * Logs user risk events sent to UserRiskManager
+ */
+message UserRiskEventReported {
+  optional EventType event_type = 1;
+
+  // Call Details
+
+  // time that an active call was connected (picked up), -1 if a call is not active
+  optional int64 call_connected_timestamp_millis = 2;
+  optional CallDirection call_direction = 3;
+  optional NumberVerificationStatus call_number_verification_status = 4;
+  // time of the last update to the contact associated with the call, -1 if there is no contact
+  optional int64 call_contact_last_updated_timestamp_millis = 5;
+  optional int32 call_log_previous_incoming_count = 6;
+  optional int32 call_log_previous_outgoing_count = 7;
+
+  // Media Projection Details
+
+  // time of MP start, -1 if MP is not active
+  optional int64 mp_start_timestamp_millis = 8;
+  optional int32 mp_app_uid = 9 [(is_uid) = true];
+  optional int32 mp_installing_app_uid = 10 [(is_uid) = true];
+  // time that the MP app was installed
+  optional int64 mp_app_first_install_timestamp_millis = 11;
+
+  // A11y details
+
+  // time of A11y grant, -1 if not granted
+  optional int64 a11y_capability_granted_timestamp_millis = 12;
+  optional int32 a11y_app_uid = 13 [(is_uid) = true];
+  optional int32 a11y_installing_app_uid = 14 [(is_uid) = true];
+  // time that the A11y app was installed
+  optional int64 a11y_app_first_install_timestamp_mills = 15;
+
+  enum EventType {
+    UNKNOWN = 0;
+    A11Y_CONSENT_DIALOG_SHOWN = 1;
+    A11Y_GRANTED = 2;
+    A11Y_DENIED = 3;
+    A11Y_APP_UNINSTALLED = 4;
+    MEDIA_PROJECTION_CONSENT_DIALOG_SHOWN = 5;
+    MEDIA_PROJECTION_GRANTED = 6;
+    MEDIA_PROJECTION_DENIED = 7;
+    MEDIA_PROJECTION_STARTED = 8;
+    ACTIVE_CALL_STARTED = 9;
+    ACTIVE_CALL_CHANGED = 10;
+    ACTIVE_CALL_ENDED = 11;
+  }
+
+  enum CallDirection {
+    UNKNOWN_DIRECTION = 0;
+    INCOMING = 1;
+    OUTGOING = 2;
+  }
+
+  enum NumberVerificationStatus {
+    UNKNOWN_STATUS = 0;
+    NOT_VERIFIED = 1;
+    PASSED = 2;
+    FAILED = 3;
+  }
+}
+
+/**
  * Logs when MediaProjection goes through state changes.
  *
  * MediaProjection API allows apps to capture the contents of a display
@@ -310,3 +376,23 @@
     WINDOWING_MODE_FREEFORM = 4;
   }
 }
+
+/**
+ * Pulls bytes transferred via network with TYPE_PROXY from NetworkStats. Each pull produces atoms
+ * that record stats of all processes that used sysproxy since device boot.
+ * Network with TYPE_PROXY is used on Wear OS to enable internet access via Bluetooth when the
+ * companion phone is connected to the watch.
+ */
+message ProxyBytesTransferByFgBg {
+  optional int32 uid = 1 [(is_uid) = true];
+
+  optional bool is_foreground = 2;
+
+  optional int64 rx_bytes = 3;
+
+  optional int64 rx_packets = 4;
+
+  optional int64 tx_bytes = 5;
+
+  optional int64 tx_packets = 6;
+}
diff --git a/stats/atoms/hdmi/hdmi_extension_atoms.proto b/stats/atoms/hdmi/hdmi_extension_atoms.proto
new file mode 100644
index 0000000..e1ba773
--- /dev/null
+++ b/stats/atoms/hdmi/hdmi_extension_atoms.proto
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.hdmi;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/stats/hdmi/enums.proto";
+
+option java_package = "com.android.os.hdmi";
+option java_multiple_files = true;
+
+extend Atom {
+  optional HdmiEarcStatusReported hdmi_earc_status_reported = 701 [(module) = "framework"];
+  optional HdmiSoundbarModeStatusReported hdmi_soundbar_mode_status_reported
+      = 724 [(module) = "framework"];
+}
+/**
+* Push atom that logs the status of the eARC feature in 3 dimensions: whether the
+* hardware supports it, whether the setting is enabled and whether a connection is
+* established.
+*
+* Logged whenever the device wakes up and when the HAL reports an update in the
+* connection state.
+**/
+message HdmiEarcStatusReported {
+  // whether the hardware supports eARC
+  optional bool is_supported = 1;
+  // whether eARC is enabled
+  optional bool is_enabled = 2;
+  // If log_reason == LOG_REASON_EARC_STATUS_CHANGED, the state just before the change.
+  // Otherwise, the current state.
+  optional android.stats.hdmi.ConnectionState old_connected_state = 3;
+  // If log_reason == LOG_REASON_EARC_STATUS_CHANGED, the state just after the change.
+  // Otherwise, the current state.
+  optional android.stats.hdmi.ConnectionState new_connected_state = 4;
+  // The event that triggered the log.
+  optional android.stats.hdmi.LogReason log_reason = 5;
+}
+
+/**
+* Push atom that logs the status of the Dynamic Soundbar mode feature in 2 dimensions: whether the
+* hardware supports it and whether the setting is enabled.
+*
+* Logged whenever the device wakes up or the Dynamic Soundbar mode setting is toggled.
+**/
+message HdmiSoundbarModeStatusReported {
+  // whether the hardware supports Dynamic soundbar mode
+  optional bool is_supported = 1;
+  // whether the Dynamic soundbar mode setting is enabled
+  optional bool is_enabled = 2;
+  // the event that triggered the log.
+  optional android.stats.hdmi.DynamicSoundbarModeLogReason log_reason = 3;
+}
diff --git a/stats/atoms/healthfitness/api/api_extension_atoms.proto b/stats/atoms/healthfitness/api/api_extension_atoms.proto
index e4e48d5..1562687 100644
--- a/stats/atoms/healthfitness/api/api_extension_atoms.proto
+++ b/stats/atoms/healthfitness/api/api_extension_atoms.proto
@@ -57,6 +57,9 @@
 
   // Type of rate limiting being used (If any)
   optional android.healthfitness.api.RateLimit rate_limit = 6;
+
+  // The API caller's foreground status
+  optional android.healthfitness.api.ForegroundState caller_foreground_state = 7;
 }
 
 // Track if users are connecting apps with Health Connect
@@ -68,6 +71,8 @@
   // Number of apps on device that can be connected to Health Connect.
   optional int32 available_apps_count = 2;
 
+  // Set true is the user has one app reading or writing in past 30 days
+  optional bool isMonthlyActiveUser = 3;
 }
 
 // Monitor Health Connect database
@@ -141,4 +146,4 @@
   optional android.healthfitness.api.DataType data_type_six = 11
   [(field_restriction_option).health_connect = true];
 
-}
\ No newline at end of file
+}
diff --git a/stats/atoms/hotword/hotword_atoms.proto b/stats/atoms/hotword/hotword_atoms.proto
index f24d96d..5ea02ed 100644
--- a/stats/atoms/hotword/hotword_atoms.proto
+++ b/stats/atoms/hotword/hotword_atoms.proto
@@ -87,8 +87,8 @@
         // Indicates that the service was restarted regularly.
         SCHEDULE = 2;
 
-        // Indicates that the service was restarted due to service crashed.
-        CRASH = 3;
+        // Deprecated. Indicates that the service was restarted due to service crashed.
+        CRASH = 3 [deprecated = true];
     }
     optional Reason reason = 2;
 
@@ -108,8 +108,8 @@
         // Indicates that the system got the keyphrase from DSP.
         KEYPHRASE_TRIGGER = 0;
 
-        // Indicates that the system can not inform the service to verify the keyphrase.
-        FAILED_TO_INFORM_SERVICE = 1;
+        // Deprecated. Indicates that the system can not inform the service to verify the keyphrase.
+        FAILED_TO_INFORM_SERVICE = 1 [deprecated = true];
 
         // Indicates that the callback was not invoked within timeout after informing
         // the service.
@@ -139,6 +139,18 @@
         // Indicates that the system called rejected callback when the trusted process was
         // restarted.
         REJECTED_FROM_RESTART = 10;
+
+        // Indicates keyphrase was classified as training data.
+        TRAINING_DATA = 11;
+
+        // Indicates training data egress limit was reached.
+        TRAINING_DATA_EGRESS_LIMIT_REACHED = 12;
+
+        // Indicates that system got security exception when handling training data callback.
+        TRAINING_DATA_SECURITY_EXCEPTION = 13;
+
+        // Indicates that system got remote exception when handling training data callback.
+        TRAINING_DATA_REMOTE_EXCEPTION = 14;
     }
     // What result after detecting.
     optional Result result = 2;
@@ -218,44 +230,56 @@
         // Indicates that the updateState was not invoked successfully.
         CALL_UPDATE_STATE_EXCEPTION = 19;
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the audio egress starts.
-        AUDIO_EGRESS_START = 20;
+        AUDIO_EGRESS_START = 20 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the audio egress ends.
-        AUDIO_EGRESS_END = 21;
+        AUDIO_EGRESS_END = 21 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the audio egress got interrupted exception.
-        AUDIO_EGRESS_INTERRUPTED_EXCEPTION = 22;
+        AUDIO_EGRESS_INTERRUPTED_EXCEPTION = 22 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the client is not granted permission to access audio egress.
-        AUDIO_EGRESS_NO_PERMISSION = 23;
+        AUDIO_EGRESS_NO_PERMISSION = 23 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the client is inactive over a period of time.
-        AUDIO_EGRESS_INACTIVE_CLIENT = 24;
+        AUDIO_EGRESS_INACTIVE_CLIENT = 24 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the HotwordDetectionService is inactive over a period
         // of time.
-        AUDIO_EGRESS_INACTIVE_HOTWORD_DETECTION_SERVICE = 25;
+        AUDIO_EGRESS_INACTIVE_HOTWORD_DETECTION_SERVICE = 25 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the list of audio stream is empty.
-        AUDIO_EGRESS_EMPTY_AUDIO_STREAM_LIST = 26;
+        AUDIO_EGRESS_EMPTY_AUDIO_STREAM_LIST = 26 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that there is no data from the system audio stream.
-        AUDIO_EGRESS_SOURCE_IS_EMPTY = 27;
+        AUDIO_EGRESS_SOURCE_IS_EMPTY = 27 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the copy buffer size the client sets is illegal.
-        AUDIO_EGRESS_ILLEGAL_COPY_BUFFER_SIZE = 28;
+        AUDIO_EGRESS_ILLEGAL_COPY_BUFFER_SIZE = 28 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the audio egress is closed with error from the system.
-        AUDIO_EGRESS_CLOSE_ERROR_FROM_SYSTEM = 29;
+        AUDIO_EGRESS_CLOSE_ERROR_FROM_SYSTEM = 29 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the audio egress is closed with error from the client
         // side.
-        AUDIO_EGRESS_CLOSE_ERROR_FROM_CLIENT = 30;
+        AUDIO_EGRESS_CLOSE_ERROR_FROM_CLIENT = 30 [deprecated = true];
 
+        // Deprecated. Use HotwordAudioEgressEventReported instead.
         // Indicates that the audio egress is closed with error from the
         // HotwordDetectionService.
-        AUDIO_EGRESS_CLOSE_ERROR_FROM_HOTWORD_DETECTION_SERVICE = 31;
+        AUDIO_EGRESS_CLOSE_ERROR_FROM_HOTWORD_DETECTION_SERVICE = 31 [deprecated = true];
     }
     optional Event event = 2;
 
diff --git a/stats/atoms/hotword/hotword_extension_atoms.proto b/stats/atoms/hotword/hotword_extension_atoms.proto
new file mode 100644
index 0000000..efde4f2
--- /dev/null
+++ b/stats/atoms/hotword/hotword_extension_atoms.proto
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.hotword;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/hotword/enums.proto";
+
+option java_package = "com.android.os.hotword";
+option java_multiple_files = true;
+
+extend Atom {
+  optional HotwordEventEgressSize hotword_egress_size_atom_reported = 761 [(module) = "framework"];
+}
+
+/**
+ * Logs data size for events egressed from hotword detection service to default assistant.
+ */
+message HotwordEventEgressSize {
+  // Type of event being egressed.
+  enum HotwordEventType {
+    // Represents an unspecified event.
+    HOTWORD_EVENT_UNSPECIFIED = 0;
+
+    // Represents a hotword detection event.
+    HOTWORD_DETECTION = 1;
+
+    // Represents a hotword rejection event.
+    HOTWORD_REJECTION = 2;
+
+    // Represents a hotword training data event.
+    HOTWORD_TRAINING_DATA = 3;
+  }
+
+  // Event that was egressed.
+  optional HotwordEventType event_type = 1;
+
+  // Size of the event that was egressed in bytes.
+  optional int64 event_size_bytes = 2;
+
+  // The type of detector.
+  optional android.hotword.HotwordDetectorType detector_type = 3;
+
+  // The UID for which the assistant application is active.
+  optional int32 uid = 4 [(is_uid) = true];
+}
diff --git a/stats/atoms/ike/ike_extension_atoms.proto b/stats/atoms/ike/ike_extension_atoms.proto
index 2661276..c25e48d 100644
--- a/stats/atoms/ike/ike_extension_atoms.proto
+++ b/stats/atoms/ike/ike_extension_atoms.proto
@@ -29,6 +29,8 @@
     optional IkeSessionTerminated ike_session_terminated = 678 [(module) = "ike"];
     optional IkeLivenessCheckSessionValidated ike_liveness_check_session_validated =
             760 [(module) = "ike"];
+    optional NegotiatedSecurityAssociation negotiated_security_association =
+            821 [(module) = "ike"];
 }
 
 /**
@@ -57,7 +59,8 @@
     optional android.stats.ike.IkeCaller ike_caller = 1;
 
     // To determine task at which liveness check was initiated.
-    optional android.stats.ike.IkeTask ike_task = 2;
+    // Deprecated: use IkeState instead to use more precise IKE state
+    optional android.stats.ike.IkeTask ike_task = 2 [deprecated = true];
 
     // Underlying network type that checked the Liveness.
     optional android.stats.ike.IkeUnderlyingNetworkType ike_underlying_network_type = 3;
@@ -71,5 +74,40 @@
 
     // True if the Liveness check is successful. False if the Liveness check is failed.
     optional bool result_success = 6;
+
+    // To determine the state at which liveness check was initiated.
+    optional android.stats.ike.IkeState ike_state = 7;
+}
+
+/**
+ * Log that the IKE or Child session SA negotiated or failed
+ */
+message NegotiatedSecurityAssociation {
+    /** Calling module IWLAN or VPN or VCN */
+    optional android.stats.ike.IkeCaller ike_caller = 1;
+
+    /** IKE session or Child session */
+    optional android.stats.ike.SessionType session_type = 2;
+
+    /** Initial session setup or Rekey session */
+    optional android.stats.ike.SessionState session_state = 3;
+
+    /** negotiated DH-Groups */
+    optional android.stats.ike.DhGroups dh_group = 4;
+
+    /** negotiated encryption algorithms */
+    optional android.stats.ike.EncryptionAlgorithms encryption_algorithm = 5;
+
+    /** negotiated encryption algorithms key length */
+    optional android.stats.ike.KeyLengths key_length = 6;
+
+    /** negotiated integrity algorithms */
+    optional android.stats.ike.IntegrityAlgorithms integrity_algorithm = 7;
+
+    /** negotiated Prf algorithms */
+    optional android.stats.ike.PrfAlgorithms prf_algorithms = 8;
+
+    /** negotiation failures */
+    optional android.stats.ike.IkeError ike_error = 9;
 }
 
diff --git a/stats/atoms/input/input_extension_atoms.proto b/stats/atoms/input/input_extension_atoms.proto
index 123eedb..cb226f2 100644
--- a/stats/atoms/input/input_extension_atoms.proto
+++ b/stats/atoms/input/input_extension_atoms.proto
@@ -74,6 +74,8 @@
     optional int32 product_id = 3;
     // Keyboard configuration details
     optional RepeatedKeyboardLayoutConfig repeated_keyboard_layout_config = 4 [(log_mode) = MODE_BYTES];
+    // The Input Device Bus ID
+    optional android.input.InputDeviceBus device_bus = 5;
 }
 
 /**
@@ -95,7 +97,10 @@
     // Key pressed to trigger the keyboard event
     repeated int32 key_code = 4;
     // Flag based modifier state when keyboard event was triggered
+    // This field represents the decimal version of the flag in binary
     optional int32 modifier_state = 5;
+    // The Input Device Bus ID
+    optional android.input.InputDeviceBus device_bus = 6;
 }
 
 /**
@@ -121,19 +126,21 @@
     // The Input Device Bus ID
     optional android.input.InputDeviceBus device_bus = 4;
 
-    // The duration of the aggregated usage session for this Input Device.
+    // The duration of the aggregated usage session for this Input Device, in
+    // milliseconds.
     // (The int32_t will overflow at ~25 days)
     optional int32 usage_duration_millis = 5;
 
     // The breakdown of this usage session by source.
     repeated android.input.InputDeviceUsageType usage_sources = 6;
     // The breakdown of usage duration for each of the {@link usage_sources}
-    // reported above.
+    // reported above, in milliseconds.
     repeated int32 usage_durations_per_source = 7;
 
     // The breakdown of this usage session by uid.
     repeated int32 uids = 8 [(is_uid) = true];
-    // The breakdown of usage duration for each of the {@link uids} reported above.
+    // The breakdown of usage duration for each of the {@link uids} reported
+    // above, in milliseconds.
     repeated int32 usage_durations_per_uid = 9;
 }
 
diff --git a/stats/atoms/kernel/kernel_extension_atoms.proto b/stats/atoms/kernel/kernel_extension_atoms.proto
new file mode 100644
index 0000000..8b6ae30
--- /dev/null
+++ b/stats/atoms/kernel/kernel_extension_atoms.proto
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.kernel;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+option java_package = "com.android.os.kernel";
+option java_multiple_files = true;
+
+extend Atom {
+    optional KernelOomKillOccurred kernel_oom_kill_occurred = 754
+        [(module) = "framework"];
+}
+
+/**
+ * Logs each time the kernel's out-of-memory (OOM) killer claims a victim.
+ * Logged from:
+ *  frameworks/base/services/core/java/com/android/server/am/OomStatsReporter.java
+ */
+message KernelOomKillOccurred {
+    // The uid if available. -1 means not available.
+    optional int32 uid = 1 [(is_uid) = true];
+
+    // The pid if available. -1 means not available.
+    optional int32 pid = 2;
+
+    // Recorded oom score when getting killed.
+    optional int32 oom_score_adj = 3;
+
+    // Millisecond timestamp of when the kill was detected by the memhealth driver.
+    optional int64 timestamp_millis = 4;
+
+    // Name of the killed process.
+    optional string process_name = 5;
+}
diff --git a/stats/atoms/location/location_atoms.proto b/stats/atoms/location/location_atoms.proto
index 69402db..24de049 100644
--- a/stats/atoms/location/location_atoms.proto
+++ b/stats/atoms/location/location_atoms.proto
@@ -30,6 +30,8 @@
  *   frameworks/base/services/core/java/com/android/server/location/LocationManagerService.java
  */
 message LocationEnabledStateChanged {
-  optional bool location_enabled = 1
-                [(state_field_option).exclusive_state = true];
+  optional bool location_enabled = 1 [
+     (state_field_option).exclusive_state = true,
+     (state_field_option).nested = false
+  ];
 }
diff --git a/stats/atoms/location/location_extension_atoms.proto b/stats/atoms/location/location_extension_atoms.proto
index d322e67..ea1d3c5 100644
--- a/stats/atoms/location/location_extension_atoms.proto
+++ b/stats/atoms/location/location_extension_atoms.proto
@@ -36,6 +36,8 @@
  *   frameworks/base/services/core/java/com/android/server/location/LocationManagerService.java
  */
 message EmergencyStateChanged {
-  optional bool is_in_emergency = 1
-      [(state_field_option).exclusive_state = true];
+  optional bool is_in_emergency = 1 [
+     (state_field_option).exclusive_state = true,
+     (state_field_option).nested = false
+  ];
 }
diff --git a/stats/atoms/ondevicepersonalization/ondevicepersonalization_extension_atoms.proto b/stats/atoms/ondevicepersonalization/ondevicepersonalization_extension_atoms.proto
new file mode 100644
index 0000000..d3c570e
--- /dev/null
+++ b/stats/atoms/ondevicepersonalization/ondevicepersonalization_extension_atoms.proto
@@ -0,0 +1,56 @@
+
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto2";
+package android.os.statsd.ondevicepersonalization;
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+option java_package = "com.android.os.ondevicepersonalization";
+option java_multiple_files = true;
+extend Atom {
+  optional OnDevicePersonalizationApiCalled ondevicepersonalization_api_called =
+            711 [(module) = "ondevicepersonalization", (truncate_timestamp) = true];
+}
+/**
+ * Logs when an OnDevicePersonalization api is called.
+ */
+message OnDevicePersonalizationApiCalled {
+    enum OnDevicePersonalizationApiClassType {
+        UNKNOWN = 0;
+        DOWNLOADING = 1;
+        SERVING = 2;
+        OPTIMIZATION = 3;
+        REPORTING = 4;
+    }
+    enum OnDevicePersonalizationApiName {
+        API_NAME_UNKNOWN = 0;
+        EXECUTE = 1;
+        REQUEST_SURFACE_PACKAGE = 2;
+        SERVICE_ON_EXECUTE = 3;
+        SERVICE_ON_DOWNLOAD_COMPLETED = 4;
+        SERVICE_ON_RENDER = 5;
+        SERVICE_ON_EVENT = 6;
+        SERVICE_ON_TRAINING_EXAMPLE = 7;
+    }
+    optional OnDevicePersonalizationApiClassType api_class = 1;
+    optional OnDevicePersonalizationApiName api_name = 2;
+    // end to end latency of the operation
+    optional int32 latency_millis = 3;
+    // response_code is the error/failure code for the given api.
+    optional int32 response_code = 4;
+    // latency excluding time spent in user code
+    optional int32 overhead_latency_millis = 5;
+}
diff --git a/stats/atoms/power/power_extension_atoms.proto b/stats/atoms/power/power_extension_atoms.proto
new file mode 100644
index 0000000..a0e0eb3
--- /dev/null
+++ b/stats/atoms/power/power_extension_atoms.proto
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.power;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+extend Atom {
+  optional ScreenOffReported screen_off_reported = 776 [(module) = "framework"];
+}
+
+/**
+ * Logs when the screen is turned off.
+ *
+ * Logged from:
+ *   frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
+ */
+message ScreenOffReported {
+  enum Reason {
+    UNKNOWN = 0;
+    POWER_BUTTON = 1;
+    TIMEOUT = 2;
+  }
+  enum TimeoutReason {
+    UNKNOWN_REASON = 0;
+    DEFAULT = 1;
+    FACE_DOWN = 2;
+    ENCLOSED = 3;
+  }
+  optional Reason screen_off_reason = 1;
+  optional TimeoutReason timeout_reason = 2;
+  optional int64 millis_until_normal_timeout = 3;
+}
diff --git a/stats/atoms/sysui/sysui_atoms.proto b/stats/atoms/sysui/sysui_atoms.proto
index 67d88f2..fb31d6d 100644
--- a/stats/atoms/sysui/sysui_atoms.proto
+++ b/stats/atoms/sysui/sysui_atoms.proto
@@ -189,7 +189,8 @@
     // e.g., SEARCHBOX_ALLAPPS, FOLDER_WORKSPACE
     optional int32 hierarchy = 18;
 
-    optional bool is_work_profile = 19;
+    // deprecated, use user_type field instead
+    optional bool is_work_profile = 19 [deprecated = true];
 
     // Used to store the predicted rank of the target
     optional int32 rank = 20 [default = -1];
@@ -221,6 +222,16 @@
         TRACKPAD = 2;
     }
     optional InputType input_type = 28;
+
+    // Specifies the type of the user the event connected with
+    enum UserType {
+         TYPE_UNKNOWN = 0;
+         TYPE_MAIN = 1;
+         TYPE_WORK = 2;
+         TYPE_CLONED = 3;
+         TYPE_PRIVATE = 4;
+    }
+    optional UserType user_type = 29;
 }
 
 message LauncherAttributes {
diff --git a/stats/atoms/sysui/sysui_extension_atoms.proto b/stats/atoms/sysui/sysui_extension_atoms.proto
index c58ba33..c7da6d5 100644
--- a/stats/atoms/sysui/sysui_extension_atoms.proto
+++ b/stats/atoms/sysui/sysui_extension_atoms.proto
@@ -20,11 +20,14 @@
 
 import "frameworks/proto_logging/stats/atoms.proto";
 import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/telephony/enums.proto";
+import "frameworks/proto_logging/stats/enums/os/enums.proto";
 
 extend Atom {
   optional LockscreenShortcutSelected lockscreen_shortcut_selected = 611 [(module) = "sysui"];
   optional LockscreenShortcutTriggered lockscreen_shortcut_triggered = 612 [(module) = "sysui"];
   optional LauncherImpressionEventV2 launcher_impression_event_v2 = 716 [(module) = "sysui"];
+  optional DisplaySwitchLatencyTracked display_switch_latency_tracked = 753 [(module) = "sysui"];
 }
 
 /**
@@ -87,3 +90,88 @@
     // The result source of the search result as defined in vendor/unbundled_google/libraries/searchuilib/src/com/android/app/search/SearchTargetExtras.java
     optional int32 result_source = 8;
 }
+
+/**
+ * Logs for Display Switch Latency Tracking.
+ *
+ * Next Tag: 22
+*/
+message DisplaySwitchLatencyTracked {
+
+    // Latency tracked between device state change is received in SysUI and the switched display
+    // being unblocked and turned on (onScreenTurnedOn received in sysui from power manager)
+    optional int32 latency_ms = 1;
+
+    // The state of device before the Display Switch event.
+    // This field defines the fold-state of the device.
+    optional android.telephony.FoldState from_foldable_device_state = 2;
+    // This field provides additional information about device state
+    optional StateEnum from_state = 3;
+    // This field will store the uid of the top running task(app only).
+    optional int32 from_focused_app_uid = 4 [(is_uid) = true];
+    // This field will have the uid of the app being used in picture-in-picture mode. The value
+    // will be -1 if no picture-in-picture is ongoing*/
+    optional int32 from_pip_app_uid = 5 [(is_uid) = true];
+    // At the moment of Display Switch if screen_state is equal to
+    // SPLIT_SCREEN_APPS/ OVERVIEW/ FREEFORM_APPS or pip_app_uid is not -1, then this field will
+    // store the uids of apps present in split-screen mode.
+    repeated int32 from_visible_apps_uid = 6 [(is_uid) = true];
+    // Density of the display for the device being tracked in dpi.
+    optional int32 from_density_dpi = 7;
+
+    // The state of the device after the Display Switch event.
+    optional StateEnum to_state = 8;
+    optional android.telephony.FoldState to_foldable_device_state = 9;
+    optional int32 to_focused_app_uid = 10 [(is_uid) = true];
+    optional int32 to_pip_app_uid = 11 [(is_uid) = true];
+    repeated int32 to_visible_apps_uid = 12 [(is_uid) = true];
+    optional int32 to_density_dpi = 13;
+
+    // Additional data useful for analyzing latency issues
+    // Total number of notifications present in Notification panel during Display Switch event.
+    optional int32 notification_count = 14;
+    // Number of TYPE_EXTERNAL displays at the moment of Display Switch.
+    optional int32 external_display_count = 15;
+    // Throttling level at the moment of Display Switch provided by thermal api.
+    optional android.os.ThrottlingSeverityEnum throttling_level = 16;
+    // Virtual-skin temperature in Celsius of the device at the moment of Display Switch.
+    optional int32 vskin_temperature_c = 17;
+
+    // Fields tracking time elapsed between relevant events in milliseconds. Default values of
+    // below fields will be -1 in case they are not tracked.
+    // The time elapsed between the hall sensor unfold event and the first hinge angle event.
+    optional int32 hall_sensor_to_first_hinge_angle_change_ms = 18;
+    // The time elapsed between the hall sensor unfold/fold event and the device state change
+    // event.
+    optional int32 hall_sensor_to_device_state_change_ms = 19;
+    // The time elapsed between the onScreenTurningOn call and the onDrawn callback in SystemUI.
+    optional int32 onscreenturningon_to_ondrawn_ms = 20;
+    // The time elapsed between the onDrawn callback and the onScreenTurnedOn call in SystemUI.
+    optional int32 ondrawn_to_onscreenturnedon_ms = 21;
+
+    enum StateEnum {
+      // The device is in none of the above mentioned states.
+      UNKNOWN = 0;
+      // When the device is sleeping with AOD enabled (Always on display).
+      AOD = 1;
+      // Device folded/unfolded when on lockscreen.
+      LOCKSCREEN = 2;
+      // Notification shade is open currently.
+      NOTIFICATION_SHADE = 3;
+      // When an app is being used in full-screen mode.
+      FULL_SCREEN_APP = 4;
+      // When 2 apps are being used in split-screen mode.
+      SPLIT_SCREEN_APPS = 5;
+      // Launcher app is being displayed currently.
+      LAUNCHER = 6;
+      // Overview/Recent apps screen is being displayed on the screen
+      // currently
+      OVERVIEW = 7;
+      // Freeform apps are currently being used, i.e. single or multiple apps are being
+      // displayed on screen in which the window size of each app is resizable.
+      FREEFORM_APPS = 8;
+      // Screen is off currently.
+      SCREEN_OFF = 9;
+    }
+
+}
diff --git a/stats/atoms/telephony/satellite/satellite_extension_atoms.proto b/stats/atoms/telephony/satellite/satellite_extension_atoms.proto
index 669cd5a..f584ffd 100644
--- a/stats/atoms/telephony/satellite/satellite_extension_atoms.proto
+++ b/stats/atoms/telephony/satellite/satellite_extension_atoms.proto
@@ -150,4 +150,10 @@
   optional android.telephony.ServiceStateEnum cellular_service_state = 4;
   // Total count of times this event has occurred.
   optional int32 count = 5;
+  // Whether the device supports multiple SIMs.
+  optional bool is_multi_sim = 6;
+  // Handover type from emergency call to satellite messaging
+  optional android.telephony.RecommendingHandoverType recommending_handover_type = 7;
+  // Whether satellite communication is allowed in current location.
+  optional bool is_satellite_allowed_in_current_location = 8;
 }
\ No newline at end of file
diff --git a/stats/atoms/telephony/telephony_extension_atoms.proto b/stats/atoms/telephony/telephony_extension_atoms.proto
index 75ad180..5c247f0 100644
--- a/stats/atoms/telephony/telephony_extension_atoms.proto
+++ b/stats/atoms/telephony/telephony_extension_atoms.proto
@@ -26,9 +26,15 @@
 option java_multiple_files = true;
 
 extend Atom {
+    optional CellularRadioPowerStateChanged cellular_radio_power_state_changed = 713 [(module) = "telephony"];
     optional EmergencyNumbersInfo emergency_numbers_info = 10180 [(module) = "telephony"];
 }
 
+message CellularRadioPowerStateChanged {
+    optional android.telephony.CellularRadioPowerStateEnum state = 1
+            [(state_field_option).exclusive_state = true, (state_field_option).nested = false];
+}
+
 /**
  * pulled atom to capture all emergency numbers information stored.
  */
diff --git a/stats/atoms/transparency/boot_integrity_extension_atoms.proto b/stats/atoms/transparency/boot_integrity_extension_atoms.proto
new file mode 100644
index 0000000..b7ce3eb
--- /dev/null
+++ b/stats/atoms/transparency/boot_integrity_extension_atoms.proto
@@ -0,0 +1,30 @@
+syntax = "proto2";
+
+package android.os.statsd.transparency;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+option java_package = "com.android.os.transparency";
+option java_multiple_files = true;
+
+extend Atom {
+    optional BootIntegrityInfoReported boot_integrity_info_reported = 775 [(module) = "framework"];
+}
+
+/**
+ * Boot integrity related information.
+ *
+ * * Sepolicy hash is calculated from /sys/fs/selinux/policy.
+ *
+ * Logs when boot is complete.
+ * Pushed from:
+ *    frameworks/base/services/core/java/com/android/server/BinaryTransparencyService.java
+ */
+message BootIntegrityInfoReported {
+    // the hex encoded string of sepolicy (from sysfs) hash
+    optional string sepolicy_hash = 1;
+    // the hex encoded string of VBMeta Digest value
+    optional string vbmeta_digest = 2;
+}
+
diff --git a/stats/atoms/tv/tv_extension_atoms.proto b/stats/atoms/tv/tv_extension_atoms.proto
index 8482e32..2a8edb6 100644
--- a/stats/atoms/tv/tv_extension_atoms.proto
+++ b/stats/atoms/tv/tv_extension_atoms.proto
@@ -26,6 +26,7 @@
 
 extend Atom {
   optional TvLowPowerStandbyPolicy tv_low_power_standby_policy = 679 [(module) = "tv_settings"];
+  optional ExternalTvInputEvent external_tv_input_event = 717 [(module) = "framework"];
 }
 
 /**
@@ -38,3 +39,58 @@
    repeated string allowed_features = 4;
    optional bool is_selected = 5;
 }
+
+/**
+ * Logs external TV input events.
+ */
+message ExternalTvInputEvent {
+    enum EventType {
+        UNKNOWN = 0;
+        // a specific input is selected by user/TV App to be displayed on the screen.
+        TUNED = 1;
+        // the currently tuned input is released from the screen by selecting a
+        // new input, TV powering off, going to Home screen, etc.
+        RELEASED = 2;
+        // connection state of the current input is changed,
+        // e.g. connecting/disconnecting the cable.
+        CONNECTION_STATE_CHANGED = 3;
+        // device info is updated for the currently selected HDMI-CEC input.
+        DEVICE_INFO_UPDATED = 4;
+    }
+    enum InputState {
+        // keep in sync with TvInputManager.InputState.
+        CONNECTED = 0;
+        CONNECTED_STANDBY = 1;
+        DISCONNECTED = 2;
+    }
+    enum InputType {
+        // keep in sync with TvinputInfo.Type.
+        TUNER = 0;
+        OTHER = 1000;
+        COMPOSITE = 1001;
+        SVIDEO = 1002;
+        SCART = 1003;
+        COMPONENT = 1004;
+        VGA = 1005;
+        DVI = 1006;
+        HDMI = 1007;
+        DISPLAY_PORT = 1008;
+    }
+    // Type of the event.
+    optional EventType event_type = 1;
+    // Connection state of this input.
+    optional InputState input_state = 2;
+    // type of the input.
+    optional InputType input_type = 3;
+    // Vendor id of the external device for HDMI-CEC input.
+    // For non-CEC input, the value is 0xFFFFFF (16777215 in decimal).
+    optional int32 device_vendor_id = 4;
+    // HDMI port number on TV for HDMI input.
+    // For non-HDMI input, the value is -1.
+    optional int32 hdmi_port = 5;
+    // ID of this TIF (TV Input Framework) session.
+    optional string tif_session_id = 6;
+    // OSD display name of the external device for HDMI-CEC input,
+    // or user-displayed label for other TV inputs.
+    optional string display_name = 7;
+}
diff --git a/stats/atoms/wear/connectivity/wear_connectivity_extension_atoms.proto b/stats/atoms/wear/connectivity/wear_connectivity_extension_atoms.proto
new file mode 100644
index 0000000..a421d33
--- /dev/null
+++ b/stats/atoms/wear/connectivity/wear_connectivity_extension_atoms.proto
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.wear.connectivity;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/wear/connectivity/enums.proto";
+
+option java_package = "com.android.os.wear.connectivity";
+option java_multiple_files = true;
+
+extend Atom {
+  optional MediatorUpdated mediator_updated = 721 [(module) = "wearconnectivity"];
+  optional SysproxyBluetoothBytesTransfer sysproxy_bluetooth_bytes_transfer = 10196
+      [(module) = "wearconnectivity"];
+}
+
+/**
+ * Logged whenever WearXMediator changes status, for example ON -> OFF.
+ *
+ * Logged from package:
+ * frameworks/opt/wear/src/com/android/clockwork/connectivity
+ */
+message MediatorUpdated {
+  // e.g. Bluetooth, Wifi, Wifi Scan, Cellular Radio, Cellular Data
+  optional com.google.android.wearable.connectivity.MediatorType mediatorType = 1;
+
+  // The mediator action taken. e.g. ON/OFF
+  optional com.google.android.wearable.connectivity.MediatorAction action = 2;
+
+  // The reason of mediator state change
+  optional com.google.android.wearable.connectivity.Reason reason = 3;
+
+  // The event that triggers mediator state change
+  optional com.google.android.wearable.connectivity.TriggerEvent triggerEvent = 4;
+
+  // Timestamp of the event log time in ElapsedRealtime
+  optional int64 timestamp_millis = 5;
+}
+
+/**
+ * Pulls bytes transferred via Sysproxy. Each pull produces atoms that record stats of all processes
+ * that used sysproxy since device boot. Sysproxy is a process that runs on Wear OS and that enables
+ * internet access via Bluetooth when the companion phone is connected to the watch.
+ */
+message SysproxyBluetoothBytesTransfer {
+  // UID of a process that had some bytes received or transmitted via sysproxy.
+  // UID is set to -1 if it impossible to identify which process the bytes should be attributed to.
+  optional int32 uid = 1 [(is_uid) = true];
+
+  // Number of bytes received since device boot.
+  optional int64 rx_bytes = 2;
+
+  // Number of bytes transmitted since device boot.
+  optional int64 tx_bytes = 3;
+}
diff --git a/stats/atoms/wear/media/wear_media_atoms.proto b/stats/atoms/wear/media/wear_media_atoms.proto
index 91e69fd..6f953a0 100644
--- a/stats/atoms/wear/media/wear_media_atoms.proto
+++ b/stats/atoms/wear/media/wear_media_atoms.proto
@@ -36,4 +36,6 @@
   optional string media_player_package_name = 1;
   // Depicts source of the request. Values : (PHONE/WATCH)
   optional android.app.wearservices.RequestSource source = 2;
+  // Version of the media session apk installed in the device.
+  optional int64 version_code = 3;
 }
diff --git a/stats/atoms/wear/media/wear_media_extension_atoms.proto b/stats/atoms/wear/media/wear_media_extension_atoms.proto
index cfe4c17..5df1d31 100644
--- a/stats/atoms/wear/media/wear_media_extension_atoms.proto
+++ b/stats/atoms/wear/media/wear_media_extension_atoms.proto
@@ -21,6 +21,7 @@
 import "frameworks/proto_logging/stats/atom_field_options.proto";
 import "frameworks/proto_logging/stats/atoms.proto";
 import "frameworks/proto_logging/stats/enums/wear/media/enums.proto";
+import "frameworks/proto_logging/stats/enums/media/outputswitcher/enums.proto";
 
 option java_package = "com.android.os.wear.media";
 option java_multiple_files = true;
@@ -33,6 +34,18 @@
 
   optional MediaControlsLaunched media_controls_launched = 609
       [(module) = "wearmedia"];
+
+  optional MediaSessionStateChanged media_session_state_changed = 677
+      [(module) = "wearmedia"];
+
+  optional WearMediaOutputSwitcherDeviceScanApiLatency
+      wear_media_output_switcher_device_scan_api_latency = 757 [(module) = "MediaOutputSwitcher"];
+
+  optional WearMediaOutputSwitcherSassDeviceUnavailable
+      wear_media_output_switcher_sass_device_unavailable = 758 [(module) = "MediaOutputSwitcher"];
+
+  optional WearMediaOutputSwitcherFastPairApiTimeout
+      wear_media_output_switcher_fastpair_api_timeout = 759 [(module) = "MediaOutputSwitcher"];
 }
 
 message MediaActionReported {
@@ -50,13 +63,14 @@
 
   // Depicts is the media session being referred is remote or local.
   optional bool is_remote_session = 4;
+
+  // Version of the media session apk installed in the device.
+  optional int64 version_code = 5;
 }
 
 message MediaControlsLaunched {
-  // Package name of the app that the user used to perform the action (eg: UMO
-  // or a 3p media app)
-
-  optional int32 media_controls_package_uid = 1;
+  // Deprecated circa 6/2023
+  optional int32 media_controls_package_uid = 1 [deprecated=true];
 
   // Package name of the app that owns the media session. (This app is on the
   // paired phone, and not on the watch, hence cannot use uid)
@@ -68,4 +82,93 @@
 
   optional com.google.android.wearable.media.sessions.LaunchSource
       launch_source = 3;
+
+  // Version of the media session apk installed in the device.
+  optional int64 version_code = 4;
+}
+
+message MediaSessionStateChanged {
+  // States of the media session
+  enum SessionStateEnum {
+    SESSION_UNKNOWN = 0;
+    SESSION_IDLE = 1;
+    SESSION_BUFFERING = 2;
+    SESSION_READY = 3;
+    SESSION_ENDED = 4;
+    SESSION_DESTROYED = 5;
+  }
+
+  enum PlaybackSuppressionReason {
+    PLAYBACK_SUPPRESSION_REASON_UNKNOWN = 0;
+    PLAYBACK_SUPPRESSION_REASON_NONE = 1;
+    PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS = 2;
+    PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_ROUTE = 3;
+    PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT = 4;
+  }
+
+  // Package name of the app that owns the media session. (If is_remote_session
+  // = True, then the app is on the phone and we can’t use uid)
+  optional string media_player_package_name = 1;
+
+  // Deprecated circa 5/2023
+  optional int32 session_id = 2 [deprecated=true];
+
+  // Depicts is the media session being referred to as remote or local.
+  optional bool is_remote_session = 3;
+
+  // State of the media session
+  optional SessionStateEnum state = 4;
+
+  // Depicts if the media session should play when ready.
+  optional bool is_play_when_ready = 5;
+
+  optional PlaybackSuppressionReason playback_suppression_reason = 6;
+
+  // Depicts if the playback was suppressed previously due to unsuitable output
+  // and then resolved.
+  optional bool has_playback_suppression_due_to_unsuitable_output_resolved = 7;
+
+  // Version of the media session apk installed in the device.
+  optional int64 version_code = 8;
+
+}
+
+/**
+ * Logs the latency of different device scan APIs used in OutputSwitcher.
+ *
+ * Logged from:
+ * package: vendor/google_clockwork/packages/Media
+ */
+message WearMediaOutputSwitcherDeviceScanApiLatency {
+  // Latency of notifying OutputSwitcher that a SASS device is available to connect to.
+  optional int32 latency_in_millis = 1;
+
+  // Name of the media app package from where Output Switcher got triggered.
+  optional string triggering_package_name = 2;
+
+  optional com.google.android.wearable.media.routing.MediaDeviceType media_device_type = 3;
+
+  optional com.google.android.wearable.media.routing.MediumType medium_type = 4;
+}
+
+/**
+ * Logs data when no SASS device is available.
+ *
+ * Logged from:
+ * package: vendor/google_clockwork/packages/Media
+ */
+message WearMediaOutputSwitcherSassDeviceUnavailable {
+  // Name of the media app package from where Output Switcher got triggered.
+  optional string triggering_package_name = 1;
+}
+
+/**
+ * Logs data when FastPair API times out.
+ *
+ * Logged from:
+ * package: vendor/google_clockwork/packages/Media
+ */
+message WearMediaOutputSwitcherFastPairApiTimeout {
+  // Name of the media app package from where Output Switcher got triggered.
+  optional string triggering_package_name = 1;
 }
diff --git a/stats/atoms/wear/modes/wear_modes_extension_atoms.proto b/stats/atoms/wear/modes/wear_modes_extension_atoms.proto
new file mode 100644
index 0000000..81e98e3
--- /dev/null
+++ b/stats/atoms/wear/modes/wear_modes_extension_atoms.proto
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.wear.modes;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/wear/modes/enums.proto";
+
+option java_package = "com.android.os.wear.modes";
+option java_multiple_files = true;
+
+extend Atom {
+  optional WearModeStateChanged wear_mode_state_changed = 715 [(module) = "framework"];
+}
+
+// This file contains atom related to Modes in Wear.
+
+message WearModeStateChanged {
+  // ModeId of the mode being toggled
+  optional com.google.android.wearable.modes.telemetry.ModeId mode_id = 1;
+
+  // ModeState of the mode being toggled [MODE_STATE_OFF, MODE_STATE_ON]
+  optional com.google.android.wearable.modes.telemetry.ModeState mode_state = 2;
+
+  // Current Wifi state when mode is toggled
+  optional com.google.android.wearable.modes.telemetry.NetworkState current_wifi_state = 3;
+
+  // Current LTE state when mode is toggled
+  optional com.google.android.wearable.modes.telemetry.NetworkState current_cellular_state = 4;
+
+  // Current BT state when mode is toggled
+  optional com.google.android.wearable.modes.telemetry.NetworkState current_bluetooth_state = 5;
+
+  // Current Battery level. Should be in [0, 100].
+  optional int32 battery_level = 6;
+}
diff --git a/stats/atoms/wear/prototiles/prototiles_extension_atoms.proto b/stats/atoms/wear/prototiles/prototiles_extension_atoms.proto
new file mode 100644
index 0000000..b720ad3
--- /dev/null
+++ b/stats/atoms/wear/prototiles/prototiles_extension_atoms.proto
@@ -0,0 +1,417 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless optional by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto2";
+
+package android.os.statsd.wear.prototiles;
+
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/atoms.proto";
+
+option java_package = "com.android.os.wear.prototiles";
+option java_multiple_files = true;
+
+extend Atom {
+  optional RendererInitialized renderer_initialized = 736
+  [(module) = "prototiles"];
+  optional SchemaVersionReceived schema_version_received = 737
+  [(module) = "prototiles"];
+  optional LayoutInspected layout_inspected = 741
+  [(module) = "prototiles"];
+  optional LayoutExpressionsInspected layout_expression_inspected = 742
+  [(module) = "prototiles"];
+  optional LayoutAnimationsInspected layout_animations_inspected = 743
+  [(module) = "prototiles"];
+  optional MaterialComponentsInspected material_components_inspected = 744
+  [(module) = "prototiles"];
+  optional TileRequested tile_requested = 745
+  [(module) = "prototiles"];
+  optional StateResponseReceived state_response_received = 746
+  [(module) = "prototiles"];
+  optional TileResponseReceived tile_response_received = 747
+  [(module) = "prototiles"];
+  optional InflationFinished inflation_finished = 748
+  [(module) = "prototiles"];
+  optional InflationFailed inflation_failed = 749
+  [(module) = "prototiles"];
+  optional IgnoredInflationFailuresReported ignored_inflation_failures_reported = 750
+  [(module) = "prototiles"];
+  optional DrawableRendered drawable_rendered = 751
+  [(module) = "prototiles"];
+
+}
+
+/**
+ * This atom captures the initialization duration and the renderer version when
+ * the renderer finish initializing.
+ */
+message RendererInitialized {
+  // Renderer initializing duration.
+  optional int32 renderer_initialization_duration_millis = 1;
+  // Version of the renderer installed in the device.
+  optional int64 version_code = 2;
+}
+
+/**
+ * This atom captures the tile schema version when the tile get rendered for the
+ * first time.
+ */
+message SchemaVersionReceived {
+  optional int32 package_uid = 1 [(is_uid) = true];
+  // Layout schema version used by the tile.
+  optional int32 tile_schema_version_major = 2;
+  optional int32 tile_schema_version_minor = 3;
+}
+
+/**
+ * This atom captures the structure of the inspected layout. We do inspect every
+ * layout before it starts rendering.
+ */
+message LayoutInspected {
+  enum LayoutDepthBucket {
+    LAYOUT_DEPTH_BUCKET_UNSPECIFIED = 0;
+    LAYOUT_DEPTH_BUCKET_UNDER_FIVE_NODES = 1;
+    LAYOUT_DEPTH_BUCKET_FIVE_TO_TEN_NODES = 2;
+    LAYOUT_DEPTH_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3;
+    LAYOUT_DEPTH_BUCKET_TWENTY_FIVE_TO_FIFTY_NODES = 4;
+    LAYOUT_DEPTH_BUCKET_OVER_FIFTY_NODES = 5;
+  }
+  enum LayoutElementCountBucket {
+    LAYOUT_ELEMENT_COUNT_BUCKET_UNSPECIFIED = 0;
+    LAYOUT_ELEMENT_COUNT_BUCKET_UNDER_TEN_ELEMENTS = 1;
+    LAYOUT_ELEMENT_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_ELEMENTS = 2;
+    LAYOUT_ELEMENT_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_ELEMENTS = 3;
+    LAYOUT_ELEMENT_COUNT_BUCKET_FIFTY_TO_HUNDRED_ELEMENTS = 4;
+    LAYOUT_ELEMENT_COUNT_BUCKET_OVER_HUNDRED_ELEMENTS = 5;
+  }
+  enum LayoutBinarySizeBucket {
+    LAYOUT_BINARY_SIZE_BUCKET_UNSPECIFIED = 0;
+    LAYOUT_BINARY_SIZE_BUCKET_UNDER_ONE_KIB = 1;
+    LAYOUT_BINARY_SIZE_BUCKET_ONE_TO_TEN_KIB = 2;
+    LAYOUT_BINARY_SIZE_BUCKET_TEN_TO_TWENTY_FIVE_KIB = 3;
+    LAYOUT_BINARY_SIZE_BUCKET_TWENTY_FIVE_TO_FIFTY_KIB = 4;
+    LAYOUT_BINARY_SIZE_BUCKET_FIFTY_TO_HUNDRED_KIB = 5;
+    LAYOUT_BINARY_SIZE_BUCKET_OVER_HUNDRED_KIB = 6;
+  }
+
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // The depth of the inspected layout.
+  optional LayoutDepthBucket layout_depth_bucket = 3;
+  // The node count fo the inspected layout.
+  optional LayoutElementCountBucket layout_element_count_bucket = 4;
+  // The binary size of the inspected layout.
+  optional LayoutBinarySizeBucket layout_size_bucket = 5;
+}
+
+/**
+ * This atom captures the structure of nodes in the inspected layout. We do
+ * inspect every expression when inspecting the layout.
+ */
+message LayoutExpressionsInspected {
+  enum TotalExpressionNodeCountBucket {
+    TOTAL_EXPRESSION_NODE_COUNT_BUCKET_UNSPECIFIED = 0;
+    TOTAL_EXPRESSION_NODE_COUNT_BUCKET_UNDER_TEN_NODES = 1;
+    TOTAL_EXPRESSION_NODE_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 2;
+    TOTAL_EXPRESSION_NODE_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_NODES = 3;
+    TOTAL_EXPRESSION_NODE_COUNT_BUCKET_OVER_FIFTY_NODES = 4;
+  }
+  enum MaxNodesCountPerExpressionBucket {
+    MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_UNSPECIFIED = 0;
+    MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_UNDER_FIVE_NODES = 1;
+    MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_FIVE_TO_TEN_NODES = 2;
+    MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3;
+    MAX_NODES_COUNT_PER_EXPRESSION_BUCKET_OVER_TWENTY_FIVE_NODES = 5;
+  }
+  enum MaxNodesDepthPerExpressionBucket {
+    MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_UNSPECIFIED = 0;
+    MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_UNDER_FIVE_NODES = 1;
+    MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_FIVE_TO_TEN_NODES = 2;
+    MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3;
+    MAX_NODES_DEPTH_PER_EXPRESSION_BUCKET_OVER_TWENTY_FIVE_NODES = 5;
+  }
+
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // Count of expression nodes in the inspected layout.
+  optional TotalExpressionNodeCountBucket total_expression_node_count_bucket =
+    3;
+  // Maximum count of nodes among all expression in inspected layout.
+  optional MaxNodesCountPerExpressionBucket
+    max_nodes_count_per_expression_bucket = 4;
+  // Maximum expression depth among all expression in inspected layout.
+  optional MaxNodesDepthPerExpressionBucket
+    max_nodes_depth_per_expression_bucket = 5;
+  // Platform data sources used in the inspected expressions (Bitset instead of repeated enum).
+  optional int32 platform_data_source = 6;
+}
+
+/**
+ * This atom captures the animation objects structure in the inspected layout.
+ * We do inspect every animation when inspecting the layout.
+ */
+message LayoutAnimationsInspected {
+
+  enum MaxAnimationDurationBucket {
+    MAX_ANIMATION_DURATION_BUCKET_UNSPECIFIED = 0;
+    MAX_ANIMATION_DURATION_BUCKET_UNDER_ONE_HUNDRED_MS = 1;
+    MAX_ANIMATION_DURATION_BUCKET_ONE_HUNDRED_MS_TO_FIVE_HUNDRED_MS = 2;
+    MAX_ANIMATION_DURATION_BUCKET_FIVE_HUNDRED_MS_TO_ONE_S = 3;
+    MAX_ANIMATION_DURATION_BUCKET_ONE_S_TO_FIVE_S = 4;
+    MAX_ANIMATION_DURATION_BUCKET_OVER_FIVE_S = 5;
+  }
+
+  enum AnimationCountBucket {
+    ANIMATION_COUNT_BUCKET_UNSPECIFIED = 0;
+    ANIMATION_COUNT_BUCKET_ZERO = 1;
+    ANIMATION_COUNT_BUCKET_ONE_TO_THREE = 2; // [1:3[
+    ANIMATION_COUNT_BUCKET_THREE_TO_FIVE = 3; // [3:5[
+    ANIMATION_COUNT_BUCKET_FIVE_TO_TEN = 4; // [5:10[
+    ANIMATION_COUNT_BUCKET_OVER_TEN = 5;
+  }
+
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // Count of animations in the inspected layout.
+  optional AnimationCountBucket animation_count_bucket = 3;
+  // The maximum duration of an animation in the inspected layout.
+  optional MaxAnimationDurationBucket max_animation_duration_bucket = 4;
+  // Animation types that are used in the inspected layout (Bitset instead of repeated enum).
+  optional int32 animation_type = 5;
+  // Whether the layout has a continues animation.
+  optional bool has_continuous_animation = 6;
+}
+
+/**
+ * This atom captures the material components structure in the inspected layout.
+ * We do inspect every material component when inspecting the layout.
+ */
+message MaterialComponentsInspected {
+
+  enum MaterialComponentCountBucket {
+    MATERIAL_COMPONENT_COUNT_BUCKET_UNSPECIFIED = 0;
+    MATERIAL_COMPONENT_COUNT_BUCKET_ZERO = 1;
+    MATERIAL_COMPONENT_COUNT_BUCKET_ONE_TO_FIVE = 2; // [1:5[
+    MATERIAL_COMPONENT_COUNT_BUCKET_FIVE_TO_TEN = 3; // [5:10[
+    MATERIAL_COMPONENT_COUNT_BUCKET_OVER_TEN = 4;
+  }
+
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // Number of material components used in the layout.
+  optional MaterialComponentCountBucket material_component_count_bucket = 3;
+  // Material component types used in the layout (Bitset instead of repeated enum).
+  optional int32 material_component_type = 4;
+}
+
+/**
+ * This atom captures the tile requests.
+ */
+message TileRequested {
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // The reason of firing a tile request.
+  optional int32 count_of_freshness_based_request = 3;
+  optional int32 count_of_user_interaction_based_request = 4;
+  optional int32 count_of_visibility_change_based_request = 5;
+}
+
+/**
+ * This atom captures the received State response.
+ */
+message StateResponseReceived {
+  enum StateEntriesCountBucket {
+    STATE_ENTRIES_COUNT_BUCKET_UNSPECIFIED = 0;
+    STATE_ENTRIES_COUNT_BUCKET_UNDER_TEN_ENTRIES = 1;
+    STATE_ENTRIES_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_ENTRIES = 2;
+    STATE_ENTRIES_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_ENTRIES = 3;
+    STATE_ENTRIES_COUNT_BUCKET_FIFTY_TO_HUNDRED_ENTRIES = 4;
+    STATE_ENTRIES_COUNT_BUCKET_OVER_HUNDRED_ENTRIES = 5;
+  }
+  enum StateBinarySizeBucket {
+    STATE_BINARY_SIZE_BUCKET_UNSPECIFIED = 0;
+    STATE_BINARY_SIZE_BUCKET_UNDER_ONE_KIB = 1;
+    STATE_BINARY_SIZE_BUCKET_ONE_TO_TEN_KIB = 2;
+    STATE_BINARY_SIZE_BUCKET_TEN_TO_TWENTY_FIVE_KIB = 3;
+    STATE_BINARY_SIZE_BUCKET_TWENTY_FIVE_TO_FIFTY_KIB = 4;
+    STATE_BINARY_SIZE_BUCKET_FIFTY_TO_HUNDRED_KIB = 5;
+    STATE_BINARY_SIZE_BUCKET_OVER_HUNDRED_KIB = 6;
+  }
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // Whether it is an initial state
+  optional bool is_initial_state = 3;
+  // Count of state entries.
+  optional StateEntriesCountBucket state_entries_count_bucket = 4;
+  // Binary size of the state object.
+  optional StateBinarySizeBucket state_binary_size_bucket = 5;
+}
+
+/**
+ * This atom captures the structure of the received tile response.
+ */
+message TileResponseReceived {
+  enum TimeLineEntriesCountBucket {
+    TIMELINE_ENTRIES_COUNT_BUCKET_UNSPECIFIED = 0;
+    TIMELINE_ENTRIES_COUNT_BUCKET_ONE_ENTRY = 1;
+    TIMELINE_ENTRIES_COUNT_BUCKET_TWO_TO_FIVE_ENTRIES = 2;
+    TIMELINE_ENTRIES_COUNT_BUCKET_FIVE_TO_TEN_ENTRIES = 3;
+    TIMELINE_ENTRIES_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_ENTRIES = 4;
+    TIMELINE_ENTRIES_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_ENTRIES = 5;
+    TIMELINE_ENTRIES_COUNT_BUCKET_FIFTY_TO_HUNDRED_ENTRIES = 6;
+    TIMELINE_ENTRIES_COUNT_BUCKET_OVER_HUNDRED_ENTRIES = 7;
+  }
+  enum AvgTimelineEntryDurationBucket {
+    TIMELINE_DURATION_BUCKET_UNSPECIFIED = 0;
+    TIMELINE_DURATION_BUCKET_UNDER_ONE_S = 1;
+    TIMELINE_DURATION_BUCKET_ONE_S_TO_TEN_S = 2;
+    TIMELINE_DURATION_BUCKET_TEN_S_TO_TWENTY_S = 3;
+    TIMELINE_DURATION_BUCKET_TWENTY_S_TO_FORTY_S = 4;
+    TIMELINE_DURATION_BUCKET_FORTY_S_TO_ONE_M = 5;
+    TIMELINE_DURATION_BUCKET_ONE_M_TO_TEN_M = 6;
+    TIMELINE_DURATION_BUCKET_TEN_M_TO_THIRTY_M = 7;
+    TIMELINE_DURATION_BUCKET_THIRTY_M_TO_ONE_H = 8;
+    TIMELINE_DURATION_BUCKET_ONE_H_TO_THREE_H = 9;
+    TIMELINE_DURATION_BUCKET_OVER_THREE_H = 10;
+  }
+  enum FreshnessBucket {
+    FRESHNESS_BUCKET_UNSPECIFIED = 0;
+    FRESHNESS_BUCKET_UNDER_ONE_S = 1;
+    FRESHNESS_BUCKET_ONE_S_TO_TEN_S = 2;
+    FRESHNESS_BUCKET_TEN_S_TO_TWENTY_S = 3;
+    FRESHNESS_BUCKET_TWENTY_S_TO_FORTY_S = 4;
+    FRESHNESS_BUCKET_FORTY_S_TO_ONE_M = 5;
+    FRESHNESS_BUCKET_ONE_M_TO_TEN_M = 6;
+    FRESHNESS_BUCKET_TEN_M_TO_THIRTY_M = 7;
+    FRESHNESS_BUCKET_THIRTY_M_TO_ONE_H = 8;
+    FRESHNESS_BUCKET_ONE_H_TO_THREE_H = 9;
+    FRESHNESS_BUCKET_OVER_THREE_H = 10;
+  }
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+
+  optional TimeLineEntriesCountBucket timeline_entries_count_bucket = 3;
+  // The avg duration of timelines in this tile response.
+  optional AvgTimelineEntryDurationBucket avg_timeline_entry_duration_bucket = 4;
+  // The freshness value for the tile.
+  optional FreshnessBucket freshness_bucket = 5;
+  // Whether the resource version changed.
+  optional bool resource_version_changed = 6;
+}
+
+/**
+ * This atom captures the result of layout inflation.
+ */
+message InflationFinished {// Layout
+  enum InflationDurationBucket {
+    INFLATION_DURATION_BUCKET_UNSPECIFIED = 0;
+    INFLATION_DURATION_BUCKET_UNDER_ONE_MS = 1;
+    INFLATION_DURATION_BUCKET_ONE_MS_TO_TEN_MS = 2;
+    INFLATION_DURATION_BUCKET_TEN_MS_TO_FIFTY_MS = 3;
+    INFLATION_DURATION_BUCKET_FIFTY_MS_TO_HUNDRED_MS = 4;
+    INFLATION_DURATION_BUCKET_HUNDRED_MS_TO_THREE_HUNDRED_MS = 5;
+    INFLATION_DURATION_BUCKET_THREE_HUNDRED_MS_TO_SIX_HUNDRED_MS = 6;
+    INFLATION_DURATION_BUCKET_SIX_HUNDRED_MS_TO_ONE_S = 7;
+    INFLATION_DURATION_BUCKET_OVER_ONE_S = 10;
+  }
+  enum NodeInfoCountBucket {
+    NODE_INFO_COUNT_BUCKET_UNSPECIFIED = 0;
+    NODE_INFO_COUNT_BUCKET_UNDER_FIVE_NODES = 1;
+    NODE_INFO_COUNT_BUCKET_FIVE_TO_TEN_NODES = 2;
+    NODE_INFO_COUNT_BUCKET_TEN_TO_TWENTY_FIVE_NODES = 3;
+    NODE_INFO_COUNT_BUCKET_TWENTY_FIVE_TO_FIFTY_NODES = 4;
+    NODE_INFO_COUNT_BUCKET_OVER_FIFTY_NODES = 5;
+  }
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // Inflation duration.
+  optional InflationDurationBucket inflation_duration_bucket = 3;
+  // Changed NodeInfo objects count. NodeInfo is the entity representing the
+  // rendered view.
+  optional NodeInfoCountBucket changed_nodes_count_bucket = 4;
+  // Total count of NodeInfo objects.
+  optional NodeInfoCountBucket total_node_count_bucket = 5;
+}
+
+/**
+ * This atom captures inflation blocking failures. These are failures that
+ causes the whole layout to be dropped.
+
+ */
+message InflationFailed {
+  enum BlockingFailure {
+    BLOCKING_FAILURE_UNKNOWN = 0;
+    BLOCKING_FAILURE_NO_FAILURES = 1;
+    BLOCKING_FAILURE_MAX_LAYOUT_DEPTH_EXCEEDED = 2;
+    BLOCKING_FAILURE_MAX_EXPRESSION_NODE_COUNT_EXCEEDED = 3;
+  }
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // A failure causing the rendering to abort.
+  optional BlockingFailure blocking_failure = 3;
+}
+
+// Atom to capture ignored failures during an inflation.
+message IgnoredInflationFailuresReported {
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // A list of ignored failures (Bitset instead of repeated enum).
+  optional int32 ignored_failure = 3;
+}
+
+/**
+ * This atom captures the drawables used for each layout.
+ */
+message DrawableRendered {
+  enum DrawableBinarySizeBucket {
+    DRAWABLE_BINARY_SIZE_BUCKET_UNSPECIFIED = 0;
+    DRAWABLE_BINARY_SIZE_BUCKET_UNDER_TEN_KIB = 1;
+    DRAWABLE_BINARY_SIZE_BUCKET_TEN_TO_FIFTY_KIB = 2;
+    DRAWABLE_BINARY_SIZE_BUCKET_FIFTY_TO_HUNDRED_KIB = 3;
+    DRAWABLE_BINARY_SIZE_BUCKET_HUNDRED_TO_THREE_HUNDRED_KIB = 4;
+    DRAWABLE_BINARY_SIZE_BUCKET_THREE_HUNDRED_TO_SIX_HUNDRED_KIB = 5;
+    DRAWABLE_BINARY_SIZE_BUCKET_SIX_HUNDRED_TO_ONE_MB = 6;
+    DRAWABLE_BINARY_SIZE_BUCKET_ONE_MB_TO_FIVE_MB = 7;
+    DRAWABLE_BINARY_SIZE_BUCKET_OVER_FIVE_MB = 8;
+  }
+
+  enum DrawablePixelsCountBucket {
+    DRAWABLE_PIXEL_SIZE_BUCKET_UNSPECIFIED = 0;
+    DRAWABLE_PIXEL_SIZE_BUCKET_UNDER_100_PX = 1;
+    DRAWABLE_PIXEL_SIZE_BUCKET_100_TO_1000_PX = 2;
+    DRAWABLE_PIXEL_SIZE_BUCKET_1000_TO_10000_PX = 3;
+    DRAWABLE_PIXEL_SIZE_BUCKET_10000_TO_100000_PX = 4;
+    DRAWABLE_PIXEL_SIZE_BUCKET_100000_TO_10000000_PX = 5;
+    DRAWABLE_PIXEL_SIZE_BUCKET_OVER_10000000_PX = 6;
+  }
+  optional int32 package_uid = 1 [(is_uid) = true];
+  optional int32 classname_hash = 2;
+  // Drawable types (Bitset instead of repeated enum).
+  // Bit to drawable type mapping is as follow:
+  //  - 0 -> UNKNOWN
+  //  - 1 -> BITMAP
+  //  - 2 -> VECTOR_DRAWABLE
+  //  - 3 -> ANIMATED_IMAGE_DRAWABLE
+  //  - 4 -> ANIMATED_VECTOR_DRAWABLE
+  //  - 5 -> STATE_BASED
+  //  For example, if the inflated layout contains a Bitmap and a state based
+  //  drawable, the drawable_type field will be equal to 34 = (100010)b.
+  optional int32 drawable_type = 3;
+  // Binary size of the largest drawable.
+  optional DrawableBinarySizeBucket binary_size_bucket = 4;
+  // Pixels count of the largest drawable. Calculated as Height (px) x width
+  // (px).
+  optional DrawablePixelsCountBucket drawable_pixels_count_bucket = 5;
+}
diff --git a/stats/atoms/wearpas/wearpas_extension_atoms.proto b/stats/atoms/wearpas/wearpas_extension_atoms.proto
index 2a5cc5a..d74b41d 100644
--- a/stats/atoms/wearpas/wearpas_extension_atoms.proto
+++ b/stats/atoms/wearpas/wearpas_extension_atoms.proto
@@ -162,36 +162,38 @@
   }
 
   enum Status {
+    STATUS_UNSPECIFIED = 0;
+
     /**
      * If the triggered anomaly rule does not have additional reactions beyond
      * "WW stats" and "bugreport", this will be sent once upon detection.
      */
-    NEW_NO_REACTIONS = 0;
+    NEW_NO_REACTIONS = 1;
 
     /**
      * If the triggered anomaly rule does have additional reactions, this will
      * be sent once upon detection and be followed by one of
      * {RESOLVED_POST_REACTIONS, UNRESOLVED_POST_REACTIONS}
      */
-    NEW_REACTIONS_PENDING = 1;
+    NEW_REACTIONS_PENDING = 2;
 
     /**
      * Following an anomaly with additional reactions, this will be sent if the
      * reactions have resolved the anomaly.
      */
-    RESOLVED_POST_REACTIONS = 2;
+    RESOLVED_POST_REACTIONS = 3;
 
     /**
      * Following an anomaly with additional reactions, this will be sent if the
      * reactions have not resolved the anomaly.
      */
-    UNRESOLVED_POST_REACTIONS = 3;
+    UNRESOLVED_POST_REACTIONS = 4;
 
     /**
      * Following an anomaly with bugreport triggering enabled, this will be sent
      * if a bugreport is actually triggered (e.g. if rate limiting allows).
      */
-    BUGREPORT_TRIGGERED = 4;
+    BUGREPORT_TRIGGERED = 5;
   }
 
   /* Power entity type for which an anomaly was detected */
@@ -207,7 +209,7 @@
   optional int32 rule_id = 3;
 
   /**
-   * Resource ID for standard Google stock apps/resources
+   * Resource ID (cross-device) for standard Google stock apps/resources
    * (ONLY FACTORY GOOGLE FLASHED APPS). Mapping is stored server-side.
    */
   optional int32 resource_holder_id = 4;
diff --git a/stats/atoms/wearservices/wearservices_atoms.proto b/stats/atoms/wearservices/wearservices_atoms.proto
index 03e9f99..8659efb 100644
--- a/stats/atoms/wearservices/wearservices_atoms.proto
+++ b/stats/atoms/wearservices/wearservices_atoms.proto
@@ -61,16 +61,85 @@
 
   // Importance of the notification after this update.
   optional android.app.wearservices.NotificationImportance importance = 4;
+
+  // The transport channel this notification is coming from.
+  optional android.app.wearservices.NotificationTransportChannel
+      transport_channel = 5;
+
+  // The alerting effect of the notification.
+  optional android.app.wearservices.NotificationAlertingEffect alerting_effect =
+      6;
+
+  // The group alert behavior of the notification.
+  optional android.app.wearservices.NotificationGroupAlertBehavior
+      group_alert_behavior = 7;
+
+  // The alert behavior controlled by the ALERT_ONLY_ONCE flag.
+  optional android.app.wearservices.NotificationAlertOnlyOnce alert_only_once =
+      8;
+
+  // The group type of the notification.
+  optional android.app.wearservices.NotificationGroupType group_type = 9;
+
+  // The style of the notification.
+  optional android.app.wearservices.NotificationStyle style = 10;
+
+  // The hidden reason of the notification.
+  optional android.app.wearservices.NotificationHiddenReason hidden_reason = 11;
+
+  // The categories for the notification.
+  optional android.app.wearservices.NotificationCategory category = 12;
+
+  // Whether this notification has set FLAG_ONGOING_EVENT. Which means there may
+  // be many updates for this notification. (eg. app download progress updates).
+  optional bool is_ongoing_notification = 13;
+
+  // Whether this notification is an emergency cell broadcast message.
+  optional bool is_emergency = 14;
+
+  // Whether this notification comes from apps running in the work profile.
+  optional bool is_work_profile = 15;
+
+  // The content intent actions for the notification.
+  optional android.app.wearservices.NotificationContentIntent content_intent =
+      16;
+
+  // Whether actions contain remote input (e.g. Reply).
+  optional bool has_remote_input = 17;
+
+  // Number value for all actions, including actions with remote input. Count
+  // wearable actions if they exist, otherwise counting the standard actions.
+  // Can be 0 or above, cap to 10 as we have this same limit in SysUI.
+  optional int32 action_count = 18;
+
+  // Whether this notification contains bigPicture image, largeIcon image, or
+  // message images.
+  optional bool has_big_images = 19;
+
+  // Whether this notification has set a dismissal-id.
+  optional bool has_dismissal_id = 20;
+
+  // Whether this notification has set FLAG_FOREGROUND_SERVICE. Which means the
+  // notification may be frequently updated.
+  optional bool is_foreground_service = 21;
 }
 
-/**
- * Atom used to log the wear time for Wearables.
- *
- * Logged from package :
- * vendor/google_clockwork_partners/packages/WearServices
- */
-message WsWearTimeSession {
-    optional int64 session_duration_millis = 1;
+/** Logged when a notification is blocked/unblocked in the WearServices application. */
+message WsNotificationBlocking {
+  // Package name of the application that created the notification event.
+  optional string package_name = 1;
+
+  // Device on which the notification event was created.
+  optional android.app.wearservices.RequestSource source_device = 2;
+
+  // Defines on which device the blocked state is changed.
+  optional android.app.wearservices.DeviceLocation device_location = 3;
+
+  // Defines in which profile the application is installed.
+  optional android.app.wearservices.Profile profile= 4;
+
+  // Blocking status of the notifications for the application.
+  optional android.app.wearservices.NotificationBlockingStatus notification_blocking_status = 5;
 }
 
 /** Logged when a complication is tapped by the user. */
diff --git a/stats/atoms/wearservices/wearservices_extension_atoms.proto b/stats/atoms/wearservices/wearservices_extension_atoms.proto
index 2170072..f545987 100644
--- a/stats/atoms/wearservices/wearservices_extension_atoms.proto
+++ b/stats/atoms/wearservices/wearservices_extension_atoms.proto
@@ -26,21 +26,28 @@
 option java_multiple_files = true;
 
 extend Atom {
+  // Pushed Atom
+  optional WsWearTimeSession ws_wear_time_session = 610
+      [(module) = "wearservices"];
 
   optional WsIncomingCallActionReported ws_incoming_call_action_reported = 626
-      [(module) = "wearservices_metrics"];
+      [(module) = "wearservices"];
 
   optional WsCallDisconnectionReported ws_call_disconnection_reported = 627
-      [(module) = "wearservices_metrics"];
+      [(module) = "wearservices"];
 
   optional WsCallDurationReported ws_call_duration_reported = 628
-      [(module) = "wearservices_metrics"];
+      [(module) = "wearservices"];
 
   optional WsCallUserExperienceLatencyReported ws_call_user_experience_latency_reported = 629
-      [(module) = "wearservices_metrics"];
+      [(module) = "wearservices"];
 
   optional WsCallInteractionReported ws_call_interaction_reported = 630
-      [(module) = "wearservices_metrics"];
+      [(module) = "wearservices"];
+
+  // Pulled Atom
+  optional WsStandaloneModeSnapshot ws_standalone_mode_snapshot = 10197
+      [(module) = "wearservices"];
 }
 
 /**
@@ -150,3 +157,25 @@
   // CALL_SOURCE_PHONE_COMPANION)
   optional android.app.wearservices.CallSource call_source = 2;
 }
+
+/**
+ * Atom used to log the wear time for Wearables.
+ *
+ * Logged from package :
+ * vendor/google_clockwork_partners/packages/WearServices
+ */
+message WsWearTimeSession {
+    optional int64 session_duration_millis = 1;
+}
+
+/**
+* A snapshot of the tether status on certain watches.
+* (go/wear-tether-mode-telemetry)
+*
+* Logged from package :
+* vendor/google_clockwork_partners/packages/WearServices
+*/
+message WsStandaloneModeSnapshot {
+  // Depicts the standalone/tether status of the watch.
+  optional android.app.wearservices.TetherConfigurationStatus tether_configuration_status = 1;
+}
diff --git a/stats/atoms/wearsysui/wearsysui_extension_atoms.proto b/stats/atoms/wearsysui/wearsysui_extension_atoms.proto
new file mode 100644
index 0000000..abf7551
--- /dev/null
+++ b/stats/atoms/wearsysui/wearsysui_extension_atoms.proto
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd.wearsysui;
+
+import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/atom_field_options.proto";
+
+option java_package = "com.android.os.wearsysui";
+option java_multiple_files = true;
+
+extend Atom {
+  // Pushed Atom
+  optional WearPowerMenuOpened wear_power_menu_opened = 731
+  [(module) = "framework"];
+  optional WearAssistantOpened wear_assistant_opened = 755
+  [(module) = "framework"];
+}
+
+/**
+ * Logs whenever the Power Menu is opened for Wear
+ * Logged from :
+ * vendor/google_clockwork/packages/SystemUI/src/com/google/android/clockwork/systemui/statusbar/WearGlobalActionsProvider.java
+ */
+message WearPowerMenuOpened {
+  optional bool device_provisioned = 1;
+  optional bool setup_wizard_completed = 2;
+}
+
+/**
+ * Logs whenever Assistant is opened for Wear
+ * Logged from :
+ * vendor/google_clockwork/packages/SystemUI/src/com/google/android/clockwork/systemui/assist/WearAssistManager.java
+ */
+message WearAssistantOpened {
+  optional bool in_retail_mode = 1;
+}
\ No newline at end of file
diff --git a/stats/atoms/wifi/wifi_extension_atoms.proto b/stats/atoms/wifi/wifi_extension_atoms.proto
index 1151741..2dae6a7 100644
--- a/stats/atoms/wifi/wifi_extension_atoms.proto
+++ b/stats/atoms/wifi/wifi_extension_atoms.proto
@@ -20,6 +20,7 @@
 
 import "frameworks/proto_logging/stats/atom_field_options.proto";
 import "frameworks/proto_logging/stats/atoms.proto";
+import "frameworks/proto_logging/stats/enums/stats/connectivity/network_stack.proto";
 import "frameworks/proto_logging/stats/enums/wifi/enums.proto";
 import "frameworks/proto_logging/stats/attribution_node.proto";
 
@@ -45,10 +46,17 @@
         = 693 [(module) = "wifi"];
     optional WifiThreadTaskExecuted wifi_thread_task_executed = 694 [(module) = "wifi"];
     optional WifiStateChanged wifi_state_changed = 700 [(module) = "wifi"];
+    optional PnoScanStarted pno_scan_started = 719 [(module) = "wifi"];
+    optional PnoScanStopped pno_scan_stopped = 720 [(module) = "wifi"];
+    optional WifiIsUnusableReported wifi_is_unusable_reported = 722 [(module) = "wifi"];
+    optional WifiApCapabilitiesReported wifi_ap_capabilities_reported= 723 [(module) = "wifi"];
 
     // Pull metrics
     optional WifiAwareCapabilities wifi_aware_capabilities = 10190 [(module) = "wifi"];
     optional WifiModuleInfo wifi_module_info = 10193 [(module) = "wifi"];
+    optional WifiSettingInfo wifi_setting_info = 10194 [(module) = "wifi"];
+    optional WifiComplexSettingInfo wifi_complex_setting_info = 10195 [(module) = "wifi"];
+    optional WifiConfiguredNetworkInfo wifi_configured_network_info = 10198 [(module) = "wifi"];
 }
 
 /**
@@ -221,10 +229,6 @@
         STOP_EVENT_HOSTAPD_FAILURE = 4;
         // Stopped due to no usage timeout
         STOP_EVENT_NO_USAGE_TIMEOUT = 5;
-        // Single DBS instance stopped due to no usage timeout
-        STOP_EVENT_NO_USAGE_TIMEOUT_ONE_INSTANCE = 6;
-        // Single DBS instance stopped due to failure
-        STOP_EVENT_INSTANCE_FAILURE = 7;
     }
     // Soft AP stop event
     optional StopEvent stop_event = 1;
@@ -248,50 +252,52 @@
     optional android.net.wifi.WifiStandard standard = 10;
     // Max num of associated clients for the entire session
     optional int32 max_clients = 11;
+    // Whether or not the opportunistic no usage timeout for DBS is enabled
+    optional bool is_dbs_timeout_enabled = 12;
+    // Band of the DBS instance that failed, if any
+    optional int32 dbs_instance_failure_band = 13;
+    // Band of the DBS instance that timed out, if any
+    optional int32 dbs_instance_timeout_band = 14;
+    // Upstream transport type at the time of stopping
+    optional android.stats.connectivity.TransportType upstream_transport = 15;
 }
 
 /**
  * Logged when wifi lock is released
  */
 message WifiLockReleased {
-    // Attribution tag of the caller
-    optional string attribution_tag = 1;
-    // UID of the caller
-    optional int32 uid = 2;
+    // The AttributionNode to identify the caller
+    repeated AttributionNode attribution_node = 1;
     // Permission model of the caller
-    optional android.net.wifi.WifiCallerType caller_type = 3;
+    optional android.net.wifi.WifiCallerType caller_type = 2;
     // Lock mode
-    optional android.net.wifi.WifiModeEnum mode = 4;
+    optional android.net.wifi.WifiModeEnum mode = 3;
     // For how long the lock is acquired in milliseconds
-    optional int32 acquired_duration = 5;
+    optional int64 acquired_duration_ms = 4;
     // Whether power save disable is allowed during lock acquire
-    optional bool is_powersave_disable_allowed = 6;
+    optional bool is_powersave_disable_allowed = 5;
     // Whether the application which acquired the lock is exempted from screen ON
-    optional bool is_app_exempted_from_screen_on = 7;
+    optional bool is_app_exempted_from_screen_on = 6;
     // Whether the application which acquired the lock is exempted from being foreground
-    optional bool is_app_exempted_from_foreground = 8;
+    optional bool is_app_exempted_from_foreground = 7;
 }
 
 /**
  * Logged when wifi lock is deactivated
  */
 message WifiLockDeactivated {
-    // Attribution tag of the caller
-    optional string attribution_tag = 1;
-    // UID of the caller
-    optional int32 uid = 2;
-    // Permission model of the caller
-    optional android.net.wifi.WifiCallerType caller_type = 3;
+    // The AttributionNode to identify the caller
+    repeated AttributionNode attribution_node = 1;
     // Lock mode
-    optional android.net.wifi.WifiModeEnum mode = 4;
+    optional android.net.wifi.WifiModeEnum mode = 2;
     // For how long the lock is activated in milliseconds
-    optional int32 activated_duration = 5;
+    optional int64 activated_duration_ms = 3;
     // Whether power save disable is allowed during the lock activation
-    optional bool is_powersave_disable_allowed = 6;
+    optional bool is_powersave_disable_allowed = 4;
     // Whether the application which activated the lock is exempted from screen ON
-    optional bool is_exempted_from_screen_on = 7;
+    optional bool is_exempted_from_screen_on = 5;
     // Whether the application which activated the lock is exempted from being foreground
-    optional bool is_exempted_from_foreground = 8;
+    optional bool is_exempted_from_foreground = 6;
 }
 
 /**
@@ -386,4 +392,295 @@
     optional bool wifi_wake_enabled = 2;
     // If the state change was due to Wi-Fi Wake
     optional bool enabled_by_wifi_wake = 3;
-}
\ No newline at end of file
+}
+
+// Logged when a PNO scan is started.
+message PnoScanStarted {
+    // Whether this scan includes Passpoint SSIDs
+    optional bool includes_passpoint_ssids = 1;
+}
+
+// Logged when a PNO scan is stopped.
+message PnoScanStopped {
+    enum StopReason {
+        UNSPECIFIED = 0;
+        SCAN_FAILED = 1;
+        FOUND_RESULTS = 2;
+    }
+
+    enum FailureCode {
+        // Default value. Error is unknown
+        UNSPECIFIED_FAILURE = 0;
+        // No error occurred
+        NO_FAILURE = 1;
+        // Wificond scan returned a failure
+        WIFICOND_SCAN_FAILURE = 2;
+        // An error occurred while requesting the wificond scan
+        WIFICOND_REQUEST_FAILURE = 3;
+        // WifiScanningService returned a failure
+        WIFI_SCANNING_SERVICE_FAILURE = 4;
+    }
+
+    // Reason that this scan stopped
+    optional StopReason stop_reason = 1;
+    // Number of results found by this scan
+    optional int32 num_results = 2;
+    // Whether we were scanning for Passpoint SSIDs
+    optional bool scanned_for_passpoint_ssids = 3;
+    // Whether any Passpoint results were found
+    optional bool includes_passpoint_results = 4;
+    // Whether this scan led to the selection of a connection candidate
+    optional bool candidate_selected = 5;
+    // Whether the connection candidate is a Passpoint network
+    optional bool candidate_is_passpoint = 6;
+    // Failure code if this scan stopped due to a failure
+    optional FailureCode failure_code = 7;
+}
+
+/**
+ * Pulled to indicate a single boolean Wifi setting.
+ */
+message WifiSettingInfo {
+    enum SettingName {
+        UNSPECIFIED = 0;
+        WIFI_SCAN_ALWAYS_AVAILABLE = 1;
+        WIFI_SCAN_THROTTLE = 2;
+        WIFI_SCORING = 3;
+        WIFI_PASSPOINT = 4;
+        WIFI_WAKE = 5;
+        WIFI_ENHANCED_MAC_RANDOMIZATION = 6;
+        WIFI_NETWORKS_AVAILABLE_NOTIFICATION = 7;
+        LOCATION_MODE = 8;
+    }
+
+    // Name of the Wifi setting
+    optional SettingName setting_name = 1;
+    // Whether the setting is enabled
+    optional bool enabled = 2;
+}
+
+/**
+ * Pulled to indicate a single non-boolean Wifi setting.
+ */
+message WifiComplexSettingInfo {
+    enum MultiInternetMode {
+        // Default value. Mode is unknown.
+        MULTI_INTERNET_MODE_UNSPECIFIED = 0;
+        // Simultaneous connection to multiple APs is disabled
+        MULTI_INTERNET_MODE_DISABLED = 1;
+        // Enabled but restricted to a single network on multiple bands
+        MULTI_INTERNET_MODE_DBS_AP = 2;
+        // Enabled and allowed to connect to multiple APs using different bands
+        MULTI_INTERNET_MODE_MULTI_AP = 3;
+    }
+
+    // Wifi multi-internet mode
+    optional MultiInternetMode multi_internet_mode = 1;
+}
+
+/**
+ * Logged for every Wi-Fi unusable event.
+ */
+message WifiIsUnusableReported {
+   enum ReportType {
+      // Default/Invalid
+      TYPE_UNKNOWN = 0;
+      // There is a data stall from tx failures
+      TYPE_DATA_STALL_BAD_TX = 1;
+      // There is a data stall from rx failures
+      TYPE_DATA_STALL_TX_WITHOUT_RX = 2;
+      // There is a data stall from both tx and rx failures
+      TYPE_DATA_STALL_BOTH = 3;
+      // Firmware generated an alert
+      TYPE_FIRMWARE_ALERT = 4;
+      // IP Manager lost reachability to network neighbors
+      TYPE_IP_REACHABILITY_LOST = 5;
+   }
+   // Type of this report
+   optional ReportType type = 1;
+   // External scorer UID if external scorer is enabled. Otherwise WIFI_UID for
+   // AOSP scorer.
+   optional int32 scorer_uid = 2 [(is_uid) = true];
+   // Whether or not Wi-Fi is predicted as usable by the scorer
+   // Note: 'is_wifi_predicted_as_usable' is deprectaed by 'wifi_predicted_usability_state'.
+   optional bool is_wifi_predicted_as_usable = 3;
+   // Wi-Fi usability state as predicted by the scorer
+   optional android.net.wifi.WifiPredictedUsabilityState wifi_predicted_usability_state = 4;
+}
+
+/**
+ * AP capabilities logged for every Wi-Fi connection
+ */
+message WifiApCapabilitiesReported {
+    /**
+     * Online certificate status protocol stapling type
+     */
+    enum OcspType {
+        TYPE_OCSP_UNKNOWN = 0;
+        // Do not use OCSP stapling
+        TYPE_OCSP_NONE = 1;
+        // Try to use OCSP stapling, but not require response
+        TYPE_OCSP_REQUEST_CERT_STATUS = 2;
+        // Require valid OCSP stapling response
+        TYPE_OCSP_REQUIRE_CERT_STATUS = 3;
+        // Require valid OCSP stapling response for all not-trusted certificates
+        // in the server certificate chain
+        TYPE_OCSP_REQUIRE_ALL_NON_TRUSTED_CERTS_STATUS = 4;
+    }
+
+    /**
+     * 6 GHz AP type as encoded in 'HE operation -> 6 GHz operation info -> Control ->
+     * Regulatory info'
+     */
+    enum ApType6GHz {
+       AP_TYPE_6HZ_UNKNOWN = 0;
+       AP_TYPE_6GHZ_INDOOR = 1;
+       AP_TYPE_6GHZ_STANDARD_POWER = 2;
+       AP_TYPE_6GHZ_LOW_POWER_INDOOR = 3;
+       AP_TYPE_6GHZ_VERY_LOW_POWER = 4;
+    }
+
+    // Whether roaming is initiated by the framework to connect this AP
+    optional bool is_framework_initiated_roaming = 1;
+    // The center frequency of the primary 20 MHz frequency (in MHz) of the channel over which the
+    // connection was made.
+    optional int32 channel_frequency_mhz = 2;
+    // Band of the channel_frequency_mhz
+    optional android.net.wifi.WifiBandBucket band_mhz = 3;
+    // The DTIM period (in beacon periods) of the AP
+    optional int32 dtimPeriod = 4;
+    // Security mode of the connection
+    optional android.net.wifi.SecurityMode connected_security_mode = 5;
+    // Whether AP is hidden
+    optional bool is_hidden = 6;
+    // Whether the AP is configured incorrectly as hidden by the user
+    optional bool is_incorrectly_configured_as_hidden = 7;
+    // Wi-Fi standard of the connection
+    optional android.net.wifi.WifiStandard standard = 8;
+    // Whether IEEE 802.11b supported by the AP
+    optional bool is_11b_supported = 9;
+    // EAP type used by the AP
+    optional android.net.wifi.EapType eap_type = 10;
+    // EAP inner method used by the AP
+    optional android.net.wifi.EapInnerMethod eap_inner_method = 11;
+    // OCSP used by the AP
+    optional OcspType ocsp_type = 12;
+    // Whether the AP enabled PMK caching
+    optional bool is_pmk_caching_enabled = 13;
+    // Whether AP supports MBO
+    optional bool is_mbo_supported = 14;
+    // Whether AP supports OCE
+    optional bool is_oce_supported = 15;
+    // Whether the AP supports FILS
+    optional bool is_fils_supported = 16;
+    // Whether AP requires TWT support (individual or broadcast)
+    optional bool is_twt_required = 17;
+    // Whether the AP supports individual TWT agreements
+    optional bool is_individual_twt_supported = 18;
+    // Whether the AP supports broadcast TWT agreements
+    optional bool is_broadcast_twt_supported = 19;
+    // Whether the AP supports restricted TWT agreements
+    optional bool is_restricted_twt_supported = 20;
+    // Whether the AP supports IEEE 802.11mc
+    optional bool is_11mc_supported = 21;
+    // Whether the AP supports IEEE 802.11az
+    optional bool is_11az_supported = 22;
+    // Passpoint release version if a Passpoint connection, otherwise PassPointRelease.UNKNOWN
+    optional android.net.wifi.PasspointRelease passpoint_release = 23;
+    // If the Passpoint connection is provided by the Home provider or Roaming/visited network
+    optional bool is_passpoint_home_provider = 24;
+    // 6 GHz AP type
+    optional ApType6GHz ap_type_6ghz = 25;
+    // Whether AP supports ECPS priority access
+    optional bool is_ecps_priority_access_supported = 26;
+}
+
+/*
+ * Pulled to indicate a single configured network on the device.
+ */
+message WifiConfiguredNetworkInfo {
+    enum MacRandomization {
+        // Default value. Mode is unknown
+        MAC_RANDOMIZATION_UNSPECIFIED = 0;
+        // Factory MAC is used when connecting to this network
+        MAC_RANDOMIZATION_NONE = 1;
+        // Randomized MAC is generated once and reused for all connections to this network
+        MAC_RANDOMIZATION_PERSISTENT = 2;
+        // Randomized MAC is used and is not persisted across connections to this network
+        MAC_RANDOMIZATION_NON_PERSISTENT = 3;
+        // Framework decides on the MAC randomization strategy
+        MAC_RANDOMIZATION_AUTO = 4;
+    }
+
+    enum MeteredOverride {
+        // Default value. Mode is unknown
+        METERED_OVERRIDE_UNSPECIFIED = 0;
+        // No metered override
+        METERED_OVERRIDE_NONE = 1;
+        // Override network to be metered
+        METERED_OVERRIDE_METERED = 2;
+        // Override network to be unmetered
+        METERED_OVERRIDE_NOT_METERED = 3;
+    }
+
+    enum TofuConfiguration {
+        // Default value.
+        TOFU_CONFIGURATION_UNSPECIFIED = 0;
+        // TOFU is not enabled on the enterprise config.
+        TOFU_CONFIGURATION_NOT_ENABLED = 1;
+        // TOFU is enabled pre-connection.
+        TOFU_CONFIGURATION_ENABLED_PRE_CONNECTION = 2;
+        // Root CA was configured post-TOFU connection.
+        TOFU_CONFIGURATION_CONFIGURE_ROOT_CA = 3;
+        // Certificate pinning was used post-TOFU connection.
+        TOFU_CONFIGURATION_CERT_PINNING = 4;
+    }
+
+    enum TofuDialogState {
+        // Default value.
+        TOFU_DIALOG_STATE_UNSPECIFIED = 0;
+        // Dialog was rejected by the user.
+        TOFU_DIALOG_STATE_REJECTED = 1;
+        // Dialog was accepted by the user.
+        TOFU_DIALOG_STATE_ACCEPTED = 2;
+    }
+
+    // Unique ID for this network
+    optional int64 network_id = 1;
+    // Whether this is an Enterprise network
+    optional bool is_enterprise = 2;
+    // Whether this is a hidden network
+    optional bool is_hidden = 3;
+    // Whether this is a Passpoint network
+    optional bool is_passpoint = 4;
+    // Whether this is a suggestion network
+    optional bool is_suggestion = 5;
+    // Whether this network has a UTF-8 SSID
+    optional bool is_utf_8_ssid = 6;
+    // Whether the SSID translation feature is enabled
+    optional bool is_ssid_translation_enabled = 7;
+    // Whether this network was configured using TOFU
+    optional bool configured_using_tofu = 8;
+    // Whether this network has encountered a captive portal
+    optional bool encountered_captive_portal = 9;
+    // Whether this network has auto-join enabled
+    optional bool auto_join_enabled = 10;
+    // Security mode used by this network
+    optional android.net.wifi.SecurityMode connected_security_mode = 11;
+    // MAC randomization setting used by this network
+    optional MacRandomization mac_randomization = 12;
+    // Metered override setting used by this network
+    optional MeteredOverride metered_override = 13;
+    // EAP type used by this network
+    optional android.net.wifi.EapType eap_type = 14;
+    // EAP inner authentication method used by this network
+    optional android.net.wifi.EapInnerMethod eap_inner_auth_method = 15;
+    // Whether this network supports free OpenRoaming
+    optional bool free_open_roaming_supported = 16;
+    // Whether this network supports settled OpenRoaming
+    optional bool settled_open_roaming_supported = 17;
+    // Trust On First Use (TOFU) configuration for this network
+    optional TofuConfiguration tofu_configuration = 18;
+    // Whether the user accepted the TOFU dialog
+    optional TofuDialogState tofu_dialog_state = 19;
+}
diff --git a/stats/enums/adservices/common/adservices_enums.proto b/stats/enums/adservices/common/adservices_enums.proto
index e547f3d..13cf648 100644
--- a/stats/enums/adservices/common/adservices_enums.proto
+++ b/stats/enums/adservices/common/adservices_enums.proto
@@ -75,6 +75,11 @@
  * - Measurement errors: 2001-3000
  * - Fledge errors: 3001-4000
  * - UX errors: 4001-5000
+ * - FederatedCompute errors: 5001-6000
+ * - AdExtDataServiceErrors: 6001-7000
+ * - IAPC errors: 7001 - 8000
+ *
+ * NOTE: AdId / AdSetId don't have a range yet (because they're just using common codes)
  */
 enum ErrorCode {
   // Common Errors: 1-1000
@@ -98,6 +103,15 @@
   // Shared pref reset failure.
   SHARED_PREF_RESET_FAILURE = 8;
 
+  // Remote exception when calling the Cobalt upload API.
+  COBALT_UPLOAD_API_REMOTE_EXCEPTION = 9;
+
+  // Exception occurred when parsing the Adservices Config XML provided by an app.
+  APP_MANIFEST_CONFIG_PARSING_ERROR = 10;
+
+  // Generic exception when dealing with shared prefs.
+  SHARED_PREF_EXCEPTION = 11;
+
   // Topics errors: 1001-2000
   // Remote exception when calling get topics.
   GET_TOPICS_REMOTE_EXCEPTION = 1001;
@@ -219,10 +233,64 @@
   // Error occurred when unable to fetch job scheduler.
   TOPICS_FETCH_JOB_SCHEDULER_FAILURE = 1039;
 
+  // Error occurred while deleting a table for Topics.
+  TOPICS_DELETE_TABLE_FAILURE = 1040;
+
+  // Cobalt initialisation failure for Topics.
+  TOPICS_COBALT_LOGGER_INITIALIZATION_FAILURE = 1041;
+
+  // Failure to convert plaintext topic object to encrypted topic.
+  TOPICS_ENCRYPTION_FAILURE = 1042;
+
+  // Topics encryption key with invalid length.
+  TOPICS_ENCRYPTION_INVALID_KEY_LENGTH = 1043;
+
+  // Topics encryption with invalid response length.
+  TOPICS_ENCRYPTION_INVALID_RESPONSE_LENGTH = 1044;
+
+  // Topics encryption key failed to decode with Base64 decoder.
+  TOPICS_ENCRYPTION_KEY_DECODE_FAILURE = 1045;
+
+  // Topics encryption received null params in request for the encrypter.
+  TOPICS_ENCRYPTION_NULL_REQUEST = 1046;
+
+  // Topics encryption received null response from the encrypter.
+  TOPICS_ENCRYPTION_NULL_RESPONSE = 1047;
+
+  // Topics encryption received error while serialization to JSON.
+  TOPICS_ENCRYPTION_SERIALIZATION_ERROR = 1048;
+
+  // Topics encryption public key is missing.
+  TOPICS_ENCRYPTION_KEY_MISSING = 1049;
+
   // Measurement errors: 2001-3000
-  // Error eccurred when inserting enrollment data to DB.
+  // Error occurred when inserting enrollment data to DB.
   ENROLLMENT_DATA_INSERT_ERROR = 2001;
 
+  // Error occurred when deleting enrollment data to DB.
+  ENROLLMENT_DATA_DELETE_ERROR = 2002;
+
+  // Measurement foreground unknown failure.
+  MEASUREMENT_FOREGROUND_UNKNOWN_FAILURE = 2003;
+
+  // Measurement datastore failure.
+  MEASUREMENT_DATASTORE_FAILURE = 2004;
+
+  // Measurement datastore unknown failure.
+  MEASUREMENT_DATASTORE_UNKNOWN_FAILURE = 2005;
+
+  // Measurement invalid parameter fetching public keys.
+  MEASUREMENT_PUBLIC_KEY_FETCHER_INVALID_PARAMETER = 2006;
+
+  // Measurement IO exception while fetching public keys.
+  MEASUREMENT_PUBLIC_KEY_FETCHER_IO_ERROR = 2007;
+
+  // Measurement error while parsing public keys.
+  MEASUREMENT_PUBLIC_KEY_FETCHER_PARSING_ERROR = 2008;
+
+  // Failure to save seed in SharedPreferences
+  ENROLLMENT_SHARED_PREFERENCES_SEED_SAVE_FAILURE = 2009;
+
   // UX errors: 4001-5000
   CONSENT_REVOKED_ERROR = 4001;
 
@@ -262,8 +330,46 @@
   // App search consent data migration failure.
   APP_SEARCH_DATA_MIGRATION_FAILURE = 4013;
 
-  // Ad services entry point failure.
+  // Adservices entry point failure.
   AD_SERVICES_ENTRY_POINT_FAILURE = 4014;
+
+  // Used to be MEASUREMENT_FOREGROUND_UNKNOWN_FAILURE but renamed in
+  // commit 94af8756d2f03ff17924721ee1b7c4a4520377ff
+  RESERVED_ERROR_CODE_4015 = 4015;
+
+  // FederatedCompute errors: 5001-6000
+  // Datastore exception while deleting a federated task.
+  DELETE_TASK_FAILURE = 5001;
+
+  // Exception while trying to close file descriptor.
+  FILE_DESCRIPTOR_CLOSE_ERROR = 5002;
+
+  // Error message indicating invalid federated job plan type.
+  CLIENT_PLAN_SPEC_ERROR = 5003;
+
+  // Exception when trying to parse protobuf message.
+  INVALID_PROTOBUF_ERROR = 5004;
+
+  // Exception occurred when isolated training process runs.
+  ISOLATED_TRAINING_PROCESS_ERROR = 5005;
+
+  // Exception while trying to iterate data.
+  ITERATOR_NEXT_FAILURE = 5006;
+
+  // Timeout exception while trying to iterate data.
+  ITERATOR__NEXT_TIMEOUT = 5007;
+
+  // AdExtDataService get failed
+  GET_ADEXT_DATA_SERVICE_ERROR = 6001;
+
+  // AdExtDataService put failed
+  PUT_ADEXT_DATA_SERVICE_ERROR = 6002;
+
+  // IAPC errors: 7001-8000
+  // AdIdProviderService is not available.
+  IAPC_AD_ID_PROVIDER_NOT_AVAILABLE = 7001;
+  // Exception when calling UpdateAdId API in service side.
+  IAPC_UPDATE_AD_ID_API_ERROR = 7002;
 }
 
 /**
@@ -277,6 +383,11 @@
   AD_ID = 4;
   APP_SET_ID = 5;
   UX = 6;
+  // Use COMMON enum when the error happens in the common code path.
+  COMMON = 7;
+  // Represents federatedcompute APK in OnDevicePersonalization module.
+  FEDERATED_COMPUTE = 8;
+  ADEXT_DATA_SERVICE = 9;
 }
 
 /**
@@ -326,4 +437,3 @@
   // Non-European Union user (based on isoCountryInfo).
   ROW = 2;
 }
-
diff --git a/stats/enums/adservices/enrollment/enums.proto b/stats/enums/adservices/enrollment/enums.proto
new file mode 100644
index 0000000..88faa1a
--- /dev/null
+++ b/stats/enums/adservices/enrollment/enums.proto
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+package android.stats.adservices.enrollment;
+
+option java_outer_classname = "EnrollmentProtoEnums";
+option java_multiple_files = true;
+
+/**
+ * Enum used by EnrollmentDataStats.
+ */
+enum TransactionType {
+  UNKNOWN_TRANSACTION_TYPE = 0;
+  READ_TRANSACTION_TYPE = 1;
+  WRITE_TRANSACTION_TYPE = 2;
+}
+
+/**
+ * Enum used by EnrollmentDataFailed.
+ */
+enum DataFileGroupStatus {
+  UNKNOWN_DATA_FILE_GROUP_STATUS = 0;
+  DOWNLOADED_DATA_FILE_GROUP_STATUS = 1;
+  PENDING_DATA_FILE_GROUP_STATUS = 2;
+  PENDING_CUSTOM_VALIDATION = 3;
+}
+
+/**
+ * Enum used by EnrollmentDataFailed.
+ */
+enum ErrorCause {
+  UNKNOWN_ERROR_CAUSE = 0;
+  ENROLLMENT_NOT_FOUND_ERROR_CAUSE = 1;
+  ENROLLMENT_BLOCKLISTED_ERROR_CAUSE = 2;
+}
\ No newline at end of file
diff --git a/stats/enums/adservices/fledge/enums.proto b/stats/enums/adservices/fledge/enums.proto
index 850454e..98370ab 100644
--- a/stats/enums/adservices/fledge/enums.proto
+++ b/stats/enums/adservices/fledge/enums.proto
@@ -27,4 +27,12 @@
   UNSET = 0;
   JAVASCRIPT = 1;
   WASM = 2;
+}
+
+// Logs the type of beacon reporting destination.
+enum BeaconReportingDestinationType {
+  UNSET_DESTINATION = 0;
+  SELLER_DESTINATION = 1;
+  BUYER_DESTINATION = 2;
+  SELLER_AND_BUYER_DESTINATION = 3;
 }
\ No newline at end of file
diff --git a/stats/enums/adservices/measurement/enums.proto b/stats/enums/adservices/measurement/enums.proto
index 261ccf7..c408522 100644
--- a/stats/enums/adservices/measurement/enums.proto
+++ b/stats/enums/adservices/measurement/enums.proto
@@ -25,8 +25,10 @@
  */
 enum SourceType {
   UNKNOWN_SOURCE_TYPE = 0;
-  EVENT_SOURCE_TYPE = 1;
-  NAVIGATION_SOURCE_TYPE = 2;
+  EVENT_SOURCE_TYPE = 1; // only deprecated for AdServicesMeasurementAttribution in favor of a VIEW_SOURCE_TYPE
+  NAVIGATION_SOURCE_TYPE = 2; // only deprecated for AdServicesMeasurementAttribution in favor of a CLICK_SOURCE_TYPE
+  VIEW_SOURCE_TYPE = 3;
+  CLICK_SOURCE_TYPE = 4;
 }
 
 /**
@@ -46,6 +48,9 @@
   UNKNOWN_STATUS = 0;
   SUCCESS_STATUS = 1;
   FAILURE_STATUS = 2;
+  AGGREGATE_REPORT_GENERATED_SUCCESS_STATUS = 3;
+  EVENT_REPORT_GENERATED_SUCCESS_STATUS = 4;
+  AGGREGATE_AND_EVENT_REPORTS_GENERATED_SUCCESS_STATUS = 5;
 }
 
 /**
@@ -58,6 +63,7 @@
   ENROLLMENT_REGISTRATION_FAILURE_TYPE = 3;
   REDIRECT_REGISTRATION_FAILURE_TYPE = 4;
   STORAGE_REGISTRATION_FAILURE_TYPE = 5;
+  JOB_RETRY_LIMIT_EXCEEDED_REGISTRATION_FAILURE_TYPE = 6;
 }
 
 /**
@@ -69,6 +75,11 @@
   NETWORK_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 2;
   DATASTORE_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 3;
   REPORT_NOT_PENDING_REPORT_UPLOAD_FAILURE_TYPE = 4;
+  JOB_RETRY_LIMIT_EXCEEDED_REPORT_UPLOAD_FAILURE_TYPE = 5;
+  SERIALIZATION_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 6;
+  ENCRYPTION_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 7;
+  UNSUCCESSFUL_HTTP_RESPONSE_CODE_FAILURE_TYPE = 8;
+  REPORT_NOT_FOUND_FAILURE_TYPE = 9;
 }
 
 /**
@@ -112,6 +123,8 @@
   NO_TOP_LEVEL_FILTER_MATCH_ATTRIBUTION_FAILURE_TYPE = 5;
   RATE_LIMIT_EXCEEDED_ATTRIBUTION_FAILURE_TYPE = 6;
   NO_REPORTS_GENERATED_ATTRIBUTION_FAILURE_TYPE = 7;
+  JOB_RETRY_LIMIT_EXCEEDED_ATTRIBUTION_FAILURE_TYPE = 8;
+  TRIGGER_NOT_FOUND_FAILURE_TYPE = 9;
 }
 
 /**
@@ -138,4 +151,7 @@
   UNINSTALL_WIPEOUT_CAUSE = 1;
   CONSENT_FLIP_WIPEOUT_CAUSE = 2;
   CLEAR_DATA_WIPEOUT_CAUSE = 3;
+  DELETE_REGISTRATIONS_API_CLEAR_DATA_WIPEOUT_CAUSE = 4;
+  PACKAGE_CHANGED_WIPEOUT_CAUSE = 5;
+  ROLLBACK_WIPEOUT_CAUSE = 6;
 }
\ No newline at end of file
diff --git a/stats/enums/anr/enums.proto b/stats/enums/anr/enums.proto
index 05d63b8..1b36438 100644
--- a/stats/enums/anr/enums.proto
+++ b/stats/enums/anr/enums.proto
@@ -33,4 +33,5 @@
     INPUT_DISPATCHING_TIMEOUT = 5;
     CONTENT_PROVIDER_NOT_RESPONDING = 6;
     SHORT_FGS_TIMEOUT = 7;
+    JOB_SERVICE = 8;
 }
diff --git a/stats/enums/apex/enums.proto b/stats/enums/apex/enums.proto
new file mode 100644
index 0000000..b4debcb
--- /dev/null
+++ b/stats/enums/apex/enums.proto
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.apex;
+
+enum InstallationType {
+    UNKNOWN_INSTALL_TYPE = 0;
+    STAGED = 1;
+    REBOOTLESS = 2;
+}
+
+enum InstallResultType {
+    UNKNOWN_INSTALL_RESULT = 0;
+    INSTALL_SUCCESSFUL = 1;
+    INSTALL_FAILURE_APEX_READING = 2;
+    INSTALL_FAILURE_APEX_VALIDATION = 3;
+    INSTALL_FAILURE_APEX_PREPARATION = 4;
+    INSTALL_FAILURE_APEX_STAGING = 5;
+    INSTALL_FAILURE_APEX_INSTALLATION = 6;
+    INSTALL_FAILURE_APEX_ACTIVATION = 7;
+}
+
+enum PreinstallPartition {
+    PARTITION_UNKNOWN = 0;
+    PARTITION_OTHER = 1;
+    PARTITION_PRODUCT = 2;
+    PARTITION_SYSTEM = 3;
+    PARTITION_SYSTEM_EXT = 4;
+    PARTITION_VENDOR = 5;
+}
diff --git a/stats/enums/app/enums.proto b/stats/enums/app/enums.proto
index 2e25db7..9abe224 100644
--- a/stats/enums/app/enums.proto
+++ b/stats/enums/app/enums.proto
@@ -272,6 +272,13 @@
     APP_OP_USE_FULL_SCREEN_INTENT = 133;
     APP_OP_CAMERA_SANDBOXED = 134;
     APP_OP_RECORD_AUDIO_SANDBOXED = 135;
+    APP_OP_RECEIVE_SANDBOX_TRIGGER_AUDIO = 136;
+    APP_OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA = 137;
+    APP_OP_CREATE_ACCESSIBILITY_OVERLAY = 138;
+    APP_OP_MEDIA_ROUTING_CONTROL = 139;
+    APP_OP_ENABLE_MOBILE_DATA_BY_USER = 140;
+    APP_OP_RESERVED_FOR_TESTING = 141;
+    APP_OP_RAPID_CLEAR_NOTIFICATIONS_BY_LISTENER = 142;
 }
 
 /**
@@ -567,6 +574,23 @@
      * was no longer being used; this would be set only when the reason is {@link #REASON_OTHER}.
      */
      SUBREASON_SDK_SANDBOX_NOT_NEEDED = 28;
+
+    /**
+     * The process was killed because the binder proxy limit for system server was exceeded.
+     */
+     SUBREASON_EXCESSIVE_BINDER_OBJECTS = 29;
+
+    /**
+     * The process was killed by the [kernel] Out-of-memory (OOM) killer; this
+     * would be set only when the reason is {@link #REASON_LOW_MEMORY}.
+     */
+    SUBREASON_OOM_KILL = 30;
+
+    /**
+     * The process was killed because its async kernel binder buffer is running out
+     * while being frozen.
+     */
+    SUBREASON_FREEZER_BINDER_ASYNC_FULL = 31;
 }
 
 /**
@@ -674,3 +698,50 @@
     BROADCAST_DELIVERY_GROUP_POLICY_MOST_RECENT = 1;
     BROADCAST_DELIVERY_GROUP_POLICY_MERGED = 2;
 }
+
+/**
+ * Most recent state of startup.
+ */
+enum AppStartStartupState {
+    STARTUP_STATE_STARTED = 0;
+    STARTUP_STATE_ERROR = 1;
+    STARTUP_STATE_FIRST_FRAME_DRAWN = 2;
+}
+
+/**
+ * The reason code of what triggered the process's start.
+ */
+enum AppStartReasonCode {
+    START_REASON_ALARM = 0;
+    START_REASON_BACKUP = 1;
+    START_REASON_BOOT_COMPLETE = 2;
+    START_REASON_BROADCAST = 3;
+    START_REASON_CONTENT_PROVIDER = 4;
+    START_REASON_JOB = 5;
+    START_REASON_LAUNCHER = 6;
+    START_REASON_OTHER = 7;
+    START_REASON_PUSH = 8;
+    START_REASON_RESUMED_ACTIVITY = 9;
+    START_REASON_SERVICE = 10;
+    START_REASON_START_ACTIVITY = 11;
+}
+
+/**
+ * Type of process start.
+ */
+enum AppStartStartType {
+    START_TYPE_COLD = 0;
+    START_TYPE_WARM = 1;
+    START_TYPE_HOT = 2;
+}
+
+/**
+ * An instruction on how the activity should be launched.
+ */
+enum AppStartLaunchMode {
+    LAUNCH_MODE_STANDARD = 0;
+    LAUNCH_MODE_SINGLE_TOP = 1;
+    LAUNCH_MODE_SINGLE_INSTANCE = 2;
+    LAUNCH_MODE_SINGLE_TASK = 3;
+    LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK = 4;
+}
diff --git a/stats/enums/app/settings_enums.proto b/stats/enums/app/settings_enums.proto
index 5f8df41..44f3be8 100644
--- a/stats/enums/app/settings_enums.proto
+++ b/stats/enums/app/settings_enums.proto
@@ -1184,19 +1184,16 @@
 
     // ACTION: Settings > System > Languages > Regional preferences > First day of week > Set the
     // preferred first day of week.
-    // VALUE: first day of week.
     // OS: U
     ACTION_SET_FIRST_DAY_OF_WEEK = 1827;
 
     // ACTION: Settings > System > Languages > Regional preferences > Numbers preference >
     // Choose the language
-    // VALUE: language.
     // OS: U
     ACTION_CHOOSE_LANGUAGE_FOR_NUMBERS_PREFERENCES = 1828;
 
     // ACTION: Settings > System > Languages > Regional preferences > Numbers preference >
     // Choose the language > Set the preferred numbers preferences.
-    // VALUE: numbers preferences.
     // OS: U
     ACTION_SET_NUMBERS_PREFERENCES = 1829;
 
@@ -1205,17 +1202,14 @@
     ACTION_LANGUAGES_LEARN_MORE = 1830;
 
     // ACTION: Settings > System > Languages > System Languages > Add a language
-    // VALUE: language.
     // OS: U
     ACTION_ADD_LANGUAGE = 1831;
 
     // ACTION: Settings > System > Languages > System Languages > Remove a language
-    // VALUE: language.
     // OS: U
     ACTION_REMOVE_LANGUAGE = 1832;
 
     // ACTION: Settings > System > Languages > System Languages > Re-order a language
-    // VALUE: language.
     // OS: U
     ACTION_REORDER_LANGUAGE = 1833;
 
@@ -1230,7 +1224,6 @@
 
     // ACTION: Settings > System > Languages > System Languages > Select a not available language
     // as system language
-    // VALUE: language
     // OS: U
     ACTION_NOT_SUPPORTED_SYSTEM_LANGUAGE = 1836;
 
@@ -1327,6 +1320,22 @@
     // OS: U
     ACTION_LEARN_TOUCHPAD_GESTURE_CLICK = 1855;
 
+    // ACTION: Settings > System > Languages > System Languages > Terms of address > Not specified
+    // OS: V
+    ACTION_TERMS_OF_ADDRESS_NOT_SPECIFIED = 1856;
+
+    // ACTION: Settings > System > Languages > System Languages > Terms of address > Feminine
+    // OS: V
+    ACTION_TERMS_OF_ADDRESS_FEMININE = 1857;
+
+    // ACTION: Settings > System > Languages > System Languages > Terms of address > Masculine
+    // OS: V
+    ACTION_TERMS_OF_ADDRESS_MASCULINE = 1858;
+
+    // ACTION: Settings > System > Languages > System Languages > Terms of address > Neutral
+    // OS: V
+    ACTION_TERMS_OF_ADDRESS_NEUTRAL = 1859;
+
     // ACTION: Settings > Battery > Battery usage
     // CATEGORY: SETTINGS
     // OS: UQPR1
@@ -1341,6 +1350,164 @@
     // CATEGORY: SETTINGS
     // OS: UQPR1
     ACTION_BATTERY_TIPS_CARD_DISMISS = 1862;
+
+    // ACTION: Settings > Connected devices > Previously used with account -> Pair device
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    ACTION_SETTINGS_PREVIOUSLY_USED_WITH_ACCOUNT_BLUETOOTH_PAIR = 1863;
+    // ACTION: Settings > Connected devices > Previously used with account -> Pair device error
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    ACTION_SETTINGS_PREVIOUSLY_USED_WITH_ACCOUNT_BLUETOOTH_PAIR_ERROR = 1864;
+    // ACTION: Settings > Connected devices > Previously used with account -> Pair device not found
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    ACTION_SETTINGS_PREVIOUSLY_USED_WITH_ACCOUNT_BLUETOOTH_PAIR_NOT_FOUND = 1865;
+    // ACTION: Logged when user tries to pair a Fast pair Bluetooth device from Settings app
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    ACTION_SETTINGS_BLUETOOTH_PAIR_FAST_PAIR_DEVICE = 1866;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > App default selected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_APP_DEFAULT_SELECTED = 1867;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > App default unselected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_APP_DEFAULT_UNSELECTED = 1868;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > Full screen selected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_FULL_SCREEN_SELECTED = 1869;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > Full screen unselected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_FULL_SCREEN_UNSELECTED = 1870;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > Half screen selected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_HALF_SCREEN_SELECTED = 1871;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > Half screen unselected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_HALF_SCREEN_UNSELECTED = 1872;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > 4:3 selected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_4_3_SELECTED = 1873;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > 4:3 unselected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_4_3_UNSELECTED = 1874;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > 16:9 selected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_16_9_SELECTED = 1875;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > 16:9 unselected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_16_9_UNSELECTED = 1876;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > 3:2 selected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_3_2_SELECTED = 1877;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > 3:2 unselected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_3_2_UNSELECTED = 1878;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > Display size selected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_DISPLAY_SIZE_SELECTED = 1879;
+
+    // ACTION: Settings > Apps > App Info > Aspect Ratio > Display size unselected
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    ACTION_USER_ASPECT_RATIO_DISPLAY_SIZE_UNSELECTED = 1880;
+
+    // Action: Settings > Apps > AppInfo > Battery > allow background usage
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    ACTION_APP_BATTERY_USAGE_ALLOW_BACKGROUND = 1881;
+
+    // Action: Settings > Apps > AppInfo > Battery > disable background usage
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    ACTION_APP_BATTERY_USAGE_DISABLE_BACKGROUND = 1882;
+
+    // Action: Settings > Battery settings > Battery tip > Battery health
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    ACTION_BATTERY_HEALTH_TIP = 1883;
+
+    // Private space setup flow
+    // OPEN: Settings > Security&Privacy > Private Space > Set up
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_START = 1884;
+
+    // OPEN: Settings > Security&Privacy > Private Space > Cancel
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_CANCEL = 1885;
+
+    // OPEN: Settings > Security&Privacy > Private Space > Set up > Wait 15 sec
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_SPACE_CREATED = 1886;
+
+    // OPEN: Settings > Security&Privacy > Private Space > Set up > Error > Try again
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_TRY_CREATE_SPACE_AGAIN = 1887;
+
+    // OPEN: Settings > Security&Privacy > Private Space > Set up > Error > Cancel
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_CANCEL_CREATE_SPACE = 1888;
+
+    // OPEN: Settings > Security&Privacy > Private Space >
+    // Set up > Wait 15 sec > Google account setup
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_SUCCESS = 1889;
+
+    // OPEN: Settings > Security&Privacy > Private Space >
+    // Set up > Wait 15 sec > Google account setup error > Try again
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_TRY_CREATE_ACCOUNT_AGAIN = 1890;
+
+    // OPEN: Settings > Security&Privacy > Private Space > Set up > Wait 15 sec >
+    // Google account setup  > Choose new lock
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_NEW_LOCK = 1891;
+
+    // OPEN: Settings > Security&Privacy > Private Space > Set up > Wait 15 sec >
+    // Google account setup  > Use screen lock
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_USE_SCREEN_LOCK = 1892;
+
+    // OPEN: Settings > Security&Privacy > Private Space >
+    // Set up > Google account setup > Screen lock setup > Done
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACTION_PRIVATE_SPACE_SETUP_DONE = 1893;
 }
 
 /**
@@ -4143,6 +4310,16 @@
     // OS: U
     VPN_APP_MANAGEMENT = 2033;
 
+    // OPEN: Settings > System > Languages > System Languages > Terms of address
+    // CATEGORY: SETTINGS
+    // OS: V
+    TERMS_OF_ADDRESS = 2034;
+
+    // OPEN: Settings > Notifications > Polite notifications
+    // CATEGORY: SETTINGS
+    // OS: U
+    SETTINGS_POLITE_NOTIFICATIONS = 2035;
+
     // OPEN: Settings > Display > Screen saver > When to start
     // CATEGORY: SETTINGS
     // OS: U
@@ -4158,9 +4335,135 @@
     // OS: U
     FOLD_LOCK_BEHAVIOR = 2038;
 
+    // OPEN: Settings > Connected devices > Previously used with account
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    FAST_PAIR_DEVICES = 2039;
+
+    // OPEN: Settings > Security & Privacy > Private Space
+    // CATEGORY: SETTINGS
+    // OS: V
+    PRIVATE_SPACE_SETTINGS = 2040;
+
+    // OPEN: Settings > System > Developer options > Quarantined Apps
+    // CATEGORY: SETTINGS
+    // OS: V
+    QUARANTINED_APPS_DEV_CONTROL = 2041;
+
     // OPEN: Settings > Developer Options > Enable 16k pages
     // CATEGORY: SETTINGS
     DIALOG_ENABLE_16K_PAGES = 2042;
+
+    // OPEN: Settings > Storage > Private profile tab
+    // CATEGORY: SETTINGS
+    // OS: V
+    SETTINGS_STORAGE_CATEGORY_PRIVATE = 2043;
+
+    // OPEN: Settings > Account > Private profile tab
+    // CATEGORY: SETTINGS
+    // OS: V
+    ACCOUNT_PRIVATE = 2044;
+
+    // OPEN: Settings > Privacy & Security > More security & privacy > Scanning for deceptive apps
+    // CATEGORY: SETTINGS
+    // OS: U
+    CONTENT_PROTECTION_PREFERENCE = 2045;
+
+    // ACTION: Allow Voice activation of an assistant app
+    // CATEGORY: SETTINGS
+    // OS: V
+    APP_SPECIAL_PERMISSION_RECEIVE_SANDBOX_TRIGGER_AUDIO_ALLOW = 2046;
+
+    // ACTION: Deny Voice activation of an assistant app
+    // CATEGORY: SETTINGS
+    // OS: V
+    APP_SPECIAL_PERMISSION_RECEIVE_SANDBOX_TRIGGER_AUDIO_DENY = 2047;
+
+    // OPEN: Settings > Connected devices > Connection preferences > Audio sharing
+    // CATEGORY: SETTINGS
+    // OS: V
+    AUDIO_SHARING_SETTINGS = 2048;
+
+    // Open: Audio sharing start dialog
+    // CATEGORY: SETTINGS
+    // OS: V
+    DIALOG_START_AUDIO_SHARING = 2049;
+
+    // Open: Audio sharing stop dialog
+    // CATEGORY: SETTINGS
+    // OS: V
+    DIALOG_STOP_AUDIO_SHARING = 2050;
+
+    // Open: Audio sharing switch device dialog
+    // CATEGORY: SETTINGS
+    // OS: V
+    DIALOG_AUDIO_SHARING_SWITCH_DEVICE = 2051;
+
+    // Open: Audio sharing switch active dialog
+    // CATEGORY: SETTINGS
+    // OS: V
+    DIALOG_AUDIO_SHARING_SWITCH_ACTIVE = 2052;
+
+    // OPEN: Settings > System > Developer options > Widevine settings
+    // CATEGORY: SETTINGS
+    // OS: V
+    WIDEVINE_SETTINGS = 2053;
+
+    // OPEN: Settings > Apps > App Info > Aspect Ratio
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    USER_ASPECT_RATIO_APP_INFO_SETTINGS = 2054;
+
+    // OPEN: Settings > Battery > [App Use details] > Manage background usage
+    // CATEGORY: SETTINGS
+    // OS: UQPR2
+    FUELGAUGE_POWER_USAGE_MANAGE_BACKGROUND = 2055;
+
+    // OPEN: Settings > Apps > Aspect Ratio
+    // CATEGORY: SETTINGS
+    // OS: UQPR1
+    USER_ASPECT_RATIO_APP_LIST_SETTINGS = 2056;
+
+    // OPEN: Settings > System > Developer options > Develop App picker
+    // CATEGORY: SETTINGS
+    // OS: V
+    DEVELOPMENT_APP_PICKER = 2057;
+
+    // OPEN: Settings > Security & Privacy > Private Space , when the feature is not set up
+    // CATEGORY: SETTINGS
+    // OS: V
+    PRIVATE_SPACE_SETUP_EDUCATION = 2058;
+
+    // OPEN: Settings > Security & Privacy > Private Space > Set up
+    // CATEGORY: SETTINGS
+    // OS: V
+    PRIVATE_SPACE_SETUP_SPACE_CREATION = 2059;
+
+    // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait, Error
+    // CATEGORY: SETTINGS
+    // OS: V
+    PRIVATE_SPACE_SETUP_SPACE_CREATION_ERROR = 2060;
+
+    // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait, Success
+    // CATEGORY: SETTINGS
+    // OS: V
+    PRIVATE_SPACE_SETUP_LOCK = 2061;
+
+    // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait > Use screen lock > Error
+    // CATEGORY: SETTINGS
+    // OS: V
+    PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_ERROR = 2062;
+
+    // OPEN: Settings > Security & Privacy > Private Space > Set up > Wait >
+    // > Use screen lock > Set account
+    // CATEGORY: SETTINGS
+    // OS: V
+    PRIVATE_SPACE_SETUP_FINISH = 2063;
+
+    // OPEN: Settings > Apps > Special App Access > Change Media Output
+    // CATEGORY: SETTINGS
+    // OS: V
+    MEDIA_ROUTING_CONTROL = 2064;
 }
 
 // Battery Saver schedule types.
@@ -4176,13 +4479,13 @@
     // The client app doesn't set session source.
     SESSION_UNKNOWN = 0;
     // The session start from opening the Settings app.
-    BROWSE = 1;
+    SESSION_BROWSE = 1;
     // The session start from Settings Search result.
-    SEARCH = 2;
+    SESSION_SEARCH = 2;
     // The session start from other app via Intent.
-    EXTERNAL = 3;
+    SESSION_EXTERNAL = 3;
     // The session start from the Slice invoking.
-    SLICE_TYPE = 4;
+    SESSION_SLICE_TYPE = 4;
 }
 
 // Physical keyboard settings entrypoint type of the from source.
diff --git a/stats/enums/app/tvsettings_enums.proto b/stats/enums/app/tvsettings_enums.proto
index 666f71d..8ef24b3 100644
--- a/stats/enums/app/tvsettings_enums.proto
+++ b/stats/enums/app/tvsettings_enums.proto
@@ -1218,6 +1218,10 @@
     // TvSettings > Connected Devices (Slice) > [A connected device] > Forget
     CONNECTED_SLICE_DEVICE_ENTRY_FORGET = 0x18230000;
 
+    // TvSettings > Connected Devices (Slice) > [A connected audio device] >
+    // Listen to TV audio on this device
+    CONNECTED_SLICE_DEVICE_ENTRY_TOGGLE_ACTIVE_AUDIO_OUTPUT = 0x18240000;
+
     // TvSettings > Connected Devices (Slice) > HDMI-CEC
     CONNECTED_SLICE_HDMICEC = 0x18300000;
 
diff --git a/stats/enums/app/wearservices/wearservices_enums.proto b/stats/enums/app/wearservices/wearservices_enums.proto
index 1dca414..845674b 100644
--- a/stats/enums/app/wearservices/wearservices_enums.proto
+++ b/stats/enums/app/wearservices/wearservices_enums.proto
@@ -136,6 +136,19 @@
   NOTIFICATION_ACTION_REMOVE = 3;
 }
 
+// Describes which transport channel is this notification coming from.
+// Next ID: 3
+enum NotificationTransportChannel {
+  // Unknown notification transport channel
+  NOTIFICATION_TRANSPORT_UNKNOWN = 0;
+
+  // Notification comes from wearable API
+  NOTIFICATION_TRANSPORT_WEARABLE = 1;
+
+  // Notification comes from MCU (only exists on device supported offloading)
+  NOTIFICATION_TRANSPORT_MCU = 2;
+}
+
 // Importance of the notification after this update.
 // Next ID: 8
 enum NotificationImportance {
@@ -164,6 +177,222 @@
   NOTIFICATION_IMPORTANCE_MAX = 7;
 }
 
+// The alerting effect of the notification.
+// Next ID: 5
+enum NotificationAlertingEffect {
+  // Unknown value.
+  NOTIFICATION_ALERTING_EFFECT_UNKNOWN = 0;
+
+  // No alerting effect.
+  NOTIFICATION_ALERTING_EFFECT_NONE = 1;
+
+  // Alerting effect is HAPTICS.
+  NOTIFICATION_ALERTING_EFFECT_HAPTICS = 2;
+
+  // Alerting effect is SOUND.
+  NOTIFICATION_ALERTING_EFFECT_SOUND = 3;
+
+  // Alerting effect is HAPTICS together with SOUND.
+  NOTIFICATION_ALERTING_EFFECT_HAPTICS_AND_SOUND = 4;
+}
+
+// The group alert behavior of the notification.
+//
+// Note: In the Wear SysUI. Alerts will always happen on the child, for example,
+// 1). If summary is set to alert, but the first child is muted, the alert will
+// happen on the child item.
+// 2). If summary and first child both set to alert, there will be only 1 alerts
+// happening on the first child.
+// Therefore, we will overcount if we count alerting summary items, and we will
+// undercount if we skip alerting summary items. And unfortunately we can not
+// avoid this inaccuracy in the metrics.
+// Next ID: 4
+enum NotificationGroupAlertBehavior {
+  // Unknown value.
+  NOTIFICATION_GROUP_ALERT_BEHAVIOR_UNKNOWN = 0;
+
+  // The alert behavior set to ALL, or notification is not grouped, or the group
+  // type matches the alert behavior (e.g. group child, while the alert behavior
+  // is also set to child.)
+  // We collapsed these non-critical cases to reduce cardinality.
+  NOTIFICATION_GROUP_ALERT_BEHAVIOR_ALERT_ALLOWED = 1;
+
+  // The alert behavior is set to ALERT_SUMMARY, but the current notification is
+  // a child.
+  NOTIFICATION_GROUP_ALERT_BEHAVIOR_DELEGATED_TO_SUMMARY = 2;
+
+  // The alert behavior is set to ALERT_CHILD, but the current notification is a
+  // summary.
+  NOTIFICATION_GROUP_ALERT_BEHAVIOR_DELEGATED_TO_CHILD = 3;
+}
+
+// The alert behavior controlled by the ALERT_ONLY_ONCE flag.
+// Next ID: 4
+enum NotificationAlertOnlyOnce {
+  // Unknown value.
+  NOTIFICATION_ALERT_ONLY_ONCE_UNKNOWN = 0;
+
+  // The flag not set.
+  NOTIFICATION_ALERT_ONLY_ONCE_NOT_SET = 1;
+
+  // The flag set, and current item is the first update.
+  NOTIFICATION_ALERT_ONLY_ONCE_ALERT_ON_FIRST = 2;
+
+  // The flag set, and current item is not the first update.
+  NOTIFICATION_ALERT_ONLY_ONCE_MUTE_ON_UPDATES = 3;
+}
+
+// The group type of the notification.
+// Next ID: 4
+enum NotificationGroupType {
+  // Unknown value.
+  NOTIFICATION_GROUP_TYPE_UNKNOWN = 0;
+
+  // No group assigneed
+  NOTIFICATION_GROUP_TYPE_NO_GROUP = 1;
+
+  // This notification is a group summary
+  NOTIFICATION_GROUP_TYPE_GROUP_SUMMARY = 2;
+
+  // This notification is a group child
+  NOTIFICATION_GROUP_TYPE_GROUP_CHILD = 3;
+}
+
+// The style of the notification.
+// Next ID: 7
+enum NotificationStyle {
+  // Unknown value.
+  NOTIFICATION_STYLE_UNKNOWN = 0;
+
+  // The notification has not specific any style.
+  NOTIFICATION_STYLE_UNSPECIFIED = 1;
+
+  // The notification is InboxStyle.
+  NOTIFICATION_STYLE_INBOX = 2;
+
+  // The notification is BigTextStyle.
+  NOTIFICATION_STYLE_BIG_TEXT = 3;
+
+  // The notification is BigPictureStyle.
+  NOTIFICATION_STYLE_BIG_PICTURE = 4;
+
+  // The notification is MessagingStyle.
+  NOTIFICATION_STYLE_MESSAGING = 5;
+
+  // The notification is MediaStyle.
+  NOTIFICATION_STYLE_MEDIA = 6;
+}
+
+// The categories for the notification.
+// Next ID: 7
+enum NotificationCategory {
+  // Unknown value.
+  NOTIFICATION_CATEGORY_UNKNOWN = 0;
+
+  // No category set for the notificatioin.
+  NOTIFICATION_CATEGORY_NONE = 1;
+
+  // Notification set with other categories
+  NOTIFICATION_CATEGORY_OTHERS = 2;
+
+  // Notification set with CATEGORY_CALL.
+  NOTIFICATION_CATEGORY_CALL = 3;
+
+  // Notification set with CATEGORY_ALARM.
+  NOTIFICATION_CATEGORY_ALARM = 4;
+
+  // Notification set with CATEGORY_REMINDER.
+  NOTIFICATION_CATEGORY_REMINDER = 5;
+
+  // Notification set with CATEGORY_EVENT.
+  NOTIFICATION_CATEGORY_EVENT = 6;
+}
+
+// The ongoing type for the notification.
+// Next ID: 7
+enum NotificationHiddenReason {
+  // Unknown value.
+  NOTIFICATION_HIDDEN_REASON_UNKNOWN = 0;
+
+  // The notification is not hidden.
+  NOTIFICATION_HIDDEN_REASON_NONE = 1;
+
+  // The notification hidden with other reasons.
+  NOTIFICATION_HIDDEN_REASON_OTHERS = 2;
+
+  // The notification has set with ongoing activity. Which means it is hidden.
+  NOTIFICATION_HIDDEN_REASON_ONGOING_ACTIVITY = 3;
+
+  // The notification is media style.
+  NOTIFICATION_HIDDEN_REASON_MEDIA_STYLE = 4;
+
+  // The notification is bound with foreground service.
+  NOTIFICATION_HIDDEN_REASON_FOREGROUND_SERVICE = 5;
+
+  // The notification is hidden by dismissal id flow.
+  NOTIFICATION_HIDDEN_REASON_MANAGED_DISMISSAL = 6;
+}
+
+// The content intent button settings for the notification.
+// Next ID: 5
+enum NotificationContentIntent {
+  // Unknown value.
+  NOTIFICATION_CONTENT_INTENT_UNKNOWN = 0;
+
+  // No content intent set.
+  NOTIFICATION_CONTENT_INTENT_NONE = 1;
+
+  // Content intent set with OPEN_ON_WATCH.
+  NOTIFICATION_CONTENT_INTENT_OPEN_ON_WATCH = 2;
+
+  // Content intent set with OPEN_ON_PHONE.
+  NOTIFICATION_CONTENT_INTENT_OPEN_ON_PHONE = 3;
+
+  // Content intent set with BOTH actions.
+  NOTIFICATION_CONTENT_INTENT_BOTH = 4;
+}
+
+// Defines on which device the notification blocked state is changed for an application.
+// Next ID: 4
+enum DeviceLocation {
+  // Unknown value.
+  DEVICE_LOCATION_UNKNOWN = 0;
+
+  // The notification is blocked on the watch.
+  DEVICE_LOCATION_WATCH = 1;
+
+  // The notification is blocked on the phone.
+  DEVICE_LOCATION_PHONE = 2;
+
+  // The notification is blocked both on the watch and the phone.
+  DEVICE_LOCATION_WATCH_AND_PHONE = 3;
+}
+
+// Defines in which profile the application is installed.
+// Next ID: 3
+enum Profile {
+  // Unknown value.
+  PROFILE_UNKNOWN = 0;
+
+  // The application is installed in the personal profile.
+  PROFILE_PERSONAL = 1;
+
+  // The application is installed in the work profile.
+  PROFILE_WORK = 2;
+}
+
+// Defines the blocking status of the application for notifications.
+// Next ID: 3
+enum NotificationBlockingStatus {
+  // Unknown value.
+  NOTIFICATION_BLOCKING_STATUS_UNKNOWN = 0;
+
+  // The notifications for the applications are blocked on the device.
+  NOTIFICATION_BLOCKING_STATUS_BLOCKED = 1;
+
+  // The notifications for the applications are unblocked on the device.
+  NOTIFICATION_BLOCKING_STATUS_UNBLOCKED = 2;
+}
 
 // This enum depicts an action taken on a call
 // Next ID: 4
@@ -334,3 +563,20 @@
   // Depicts an error where creating an outgoing call failed
   DISCONNECTION_ERROR_CODE_OUTGOING_CALL_FAILURE = 5;
 }
+
+// This enum depicts the tether mode of certain watches, they are corresponding
+// to vendor/google_clockwork/sdk/lib/src/com/google/wear/tether/TetherConfigurationClient.java
+// Next ID: 4
+enum TetherConfigurationStatus {
+  // Depicts an unknown tether status
+  TETHER_CONFIGURATION_UNKNOWN = 0;
+
+  // Depicts the watch is in standalone mode
+  TETHER_CONFIGURATION_STANDALONE = 1;
+
+  // Depicts the watch is in tethered mode
+  TETHER_CONFIGURATION_TETHERED = 2;
+
+  // Depicts the watch is in restricted connection mode
+  TETHER_CONFIGURATION_RESTRICTED = 3;
+}
diff --git a/stats/enums/app/wearsettings_enums.proto b/stats/enums/app/wearsettings_enums.proto
index de89b6d..6cf7c2c 100644
--- a/stats/enums/app/wearsettings_enums.proto
+++ b/stats/enums/app/wearsettings_enums.proto
@@ -36,16 +36,28 @@
 }
 
 // IDs for settings UI elements.
-// Next ID: 408
+// Next ID: 497
 enum ItemId {
   // An unknown settings item. This may be set if no preference key is mapped to an enum value or as
   // a catch-all for values not yet added to this proto file.
   UNKNOWN = 0;
 
+  ACCESSIBILITY_COLOR_CORRECTION = 416;
+  ACCESSIBILITY_COLOR_CORRECTION_ENABLED = 417;
+  ACCESSIBILITY_COLOR_CORRECTION_DEUTERANOMALY = 418;
+  ACCESSIBILITY_GESTURES = 419;
   ACCESSIBILITY_COLOR_INVERSION = 103;
+  ACCESSIBILITY_GRAYSCALE_CORRECTION = 420;
+  ACCESSIBILITY_TALKBACK_SETTINGS = 421;
+  ACCESSIBILITY_SERVICE_TALKBACK = 422;
+  ACCESSIBILITY_PROTANOMALY_CORRECTION = 423;
+  ACCESSIBILITY_TRITANOMALY_CORRECTION = 424;
   ACCESSIBILITY_FONT_SIZE = 369;
   ACCESSIBILITY_LARGE_TEXT = 102;
   ACCESSIBILITY_MAGNIFICATION = 104;
+  ACCESSIBILITY_MAGNIFICATION_SIZE = 413;
+  ACCESSIBILITY_MAGNIFICATION_SETTINGS = 414;
+  ACCESSIBILITY_MAGNIFICATION_EDGE_HAPTIC = 415;
   ACCESSIBILITY_SERVICE = 314;
   ACCESSIBILITY_SIDE_BUTTON = 105;
   ACCESSIBILITY_SOUND = 370;
@@ -58,9 +70,11 @@
   ACCESSIBILITY_TTS_ENGINE_LISTENTOSAMPLE = 109;
   ACCESSIBILITY_TTS_RATES = 110;
   ACCESSIBILITY_VIBRATION = 371;
+  ACCESSIBILITY_REDUCE_ANIMATION = 412;
   ACCOUNTS_ADD_ACCOUNT = 115;
   ACCOUNT_REMOVE_ACCOUNT = 230;
   ACTIVE_DEVICE_ADMINS = 113;
+  ACTIVE_UNLOCK = 425;
   APPS_APP_NOTIFICATIONS = 342;
   APPS_APP_STORAGE = 367;
   APPS_ASSISTANT = 366;
@@ -83,6 +97,9 @@
   ASSISTANT_HOTWORD_DETECTION = 197;
   ASSISTANT_LONG_PRESS_TO_ASSISTANT = 336;
   ASSISTANT_VOICE_ASSISTANT = 309;
+  AUDIO_ADJUSTMENT = 409;
+  AUDIO_BALANCE_SLIDER_PREFERENCE = 410;
+  AUDIO_BALANCE_LEFT_RIGHT_TEXT = 411;
   BATTERY_SAVER_AUTO_BATTERY_SAVER_ENABLED = 324;
   BATTERY_SAVER_BATTERY_SAVER = 315;
   BLUETOOTH_ENABLED = 135;
@@ -138,6 +155,8 @@
   CONNECTIVITY_AIRPLANE_MODE = 120;
   CONNECTIVITY_BLUETOOTH = 133;
   CONNECTIVITY_CELLULAR = 20;
+  // WearOS only
+  CONNECTIVITY_CONNECTED_FITNESS = 496;
   CONNECTIVITY_NFC = 219;
   CONNECTIVITY_WIFI = 8;
   DATE_TIME_AUTO_DATE_TIME = 129;
@@ -166,9 +185,11 @@
   DEVELOPER_POINTER_LOCATION = 226;
   DEVELOPER_POWER_OPTIMIZATIONS = 227;
   DEVELOPER_SHOW_TOUCHES = 240;
+  DEVELOPER_SHOW_ROTARY_INPUT = 488;
   DEVELOPER_SMART_ILLUMINATE = 252;
   DEVELOPER_STAY_ON_WHILE_PLUGGED_IN = 255;
   DEVELOPER_TRANSITION_ANIMATION_SCALE = 303;
+  DEVELOPER_USE_DEVELOPER_OPTIONS = 489;
   DEVELOPER_WEAR_DEVELOPER_OPTIONS = 272;
   DEVELOPER_WIFI_LOGGING = 277;
   DEVELOPER_WINDOW_ANIMATION_SCALE = 304;
@@ -223,6 +244,7 @@
   ESIM_TEST_UTIL = 359;
   ESIM_TEST_VOICE_TWINNING_STATE = 362;
   FACTORY_RESET = 193;
+  FONT_BOLD_TEXT = 408;
   GESTURES_TILT_TO_BRIGHT = 344;
   GESTURES_TILT_TO_WAKE = 260;
   GESTURES_TOUCH_TO_WAKE = 320;
@@ -289,6 +311,7 @@
   SYSTEM_INPUT_METHODS = 201;
   SYSTEM_PHONE_SWITCH = 407;
   SYSTEM_SYSTEM_UPDATE = 257;
+  SYSTEM_TTS = 490;
   VIBRATION_LEVEL = 268;
   VIBRATION_MUTE_WHEN_OFF_BODY = 318;
   VIBRATION_VIBRATE_FOR_CALLS = 267;
@@ -307,4 +330,71 @@
   WIFI_TOGGLE = 280;
   WIFI_VIEW_IP_ADDRESS = 281;
   WIFI_VIEW_MAC_ADDRESS = 282;
+  SCREENSHOT_PREFERENCE = 426;
+  SCREEN_UNLOCK_SOUND = 427;
+  CHARGING_SOUNDS = 428;
+  MONO_AUDIO = 429;
+  ROTATORY_WAKE = 430;
+  WATCH_LICENSE = 431;
+  WATCH_SYSTEM_LICENSES = 432;
+  FONT_SLIDER = 433;
+  ASSISTANT_SETTING = 434;
+  ACCOUNT_SETTING = 435;
+  DIVIDER_PREFERENCE = 436;
+  ENTERPRISE_SET_DEFAULT_APPS = 437;
+  ENTERPRISE_INSTALLED_PACKAGES = 438;
+  LOCATION_ACCESS_PACKAGES = 439;
+  MICROPHONE_ACCESS_PACKAGES = 440;
+  CAMERA_ACCESS_PACKAGES = 441;
+  ENTERPRISE_PRIVACY = 442;
+  ESIM_SETTINGS = 443;
+  ESIM_PROFILE_NICKNAME = 444;
+  MAIN_SECURITY = 445;
+  ACCESSIBILITY_VIBRATION_WATCH = 446;
+  ACCESSIBILITY_VIBRATION_WATCH_SWITCH = 447;
+  ACCESSIBILITY_VIBRATION_WATCH_TYPE_DIGIT = 448;
+  ACCESSIBILITY_VIBRATION_WATCH_TYPE_TERSE = 449;
+  ACCESSIBILITY_VIBRATION_WATCH_SPEED = 450;
+  WEAR_BATTERY_SAVER_EXPLANATION_TEXT = 451;
+  BATTERY_SAVER_SECTION_TITLE_TEXT = 452;
+  BATTERY_SAVER_EXPLANATION_TEXT = 453;
+  HIGH_BRIGHTNESS_KEY = 454;
+  ACCESSIBILITY_RTT = 455;
+  DEFAULT_APPS = 456;
+  DEFAULT_ASSIST = 457;
+  USE_TEXT_CONTEXT = 458;
+  USE_TEXT_CONTEXT_SUMMARY = 459;
+  USE_SCREENSHOT = 460;
+  USE_SCREENSHOT_SUMMARY = 461;
+  WIRELESS_DEBUG = 462;
+  WIRELESS_DEBUG_TOGGLE = 463;
+  WIRELESS_DEBUG_DEVICE_NAME = 464;
+  WIRELESS_DEBUG_IP_PORT = 465;
+  WIRELESS_DEBUG_SUMMARY = 466;
+  WIRELESS_DEBUG_PAIRING = 467;
+  WIRELESS_ADB_DEVICE_NAME = 468;
+  WIRELESS_ADB_DEVICE_FINGERPRINT = 469;
+  USAGE_ACCESS = 470;
+  SMDP_ADDRESS = 471;
+  SYSTEM_STATE_OVERLAY_SETTINGS = 472;
+  SYSTEM_STATE_OVERLAY = 473;
+  LANGUAGE_PREFERENCE = 474;
+  FREE_MEM_OVERLAY = 475;
+  PSS_OVERLAY = 476;
+  MANAGE_PERMISSIONS = 477;
+  STEM_1 = 478;
+  STEM_2 = 479;
+  STEM_3 = 480;
+  OEM_UNLOCK_ENABLE = 481;
+  BACKUP_SETTING = 482;
+  ADVANCE_PERMISSIONS_INSTALL_UNKNOWN = 483;
+  WET_MODE = 484;
+  DIAGNOSTICS = 485;
+  PARENTAL_CONTROLS = 486;
+  VIBRATION_SWITCH = 487;
+  WEAR_POWER_ANOMALY_SERVICE = 491;
+  BATTERY_SAVER_SETTINGS = 492;
+  BATTERY_SAVER_AUTO_BATTERY_SAVER_ON = 493;
+  BATTERY_SAVER_AUTO_BATTERY_SAVER_OFF = 494;
+  PRIVACY_DASHBOARD = 495;
 }
diff --git a/stats/enums/bluetooth/enums.proto b/stats/enums/bluetooth/enums.proto
index 854a273..077f3e5 100644
--- a/stats/enums/bluetooth/enums.proto
+++ b/stats/enums/bluetooth/enums.proto
@@ -327,7 +327,7 @@
         LE_SCAN_DURATION_COUNT_BATCH_1H = 120108;
         LE_SCAN_DURATION_COUNT_BATCH_1HP = 120109;
 
-        // [120,200 - 120,300) LE scan radio active duration
+        // [120,200 - 120,250) LE scan radio active duration
         LE_SCAN_RADIO_DURATION_ALL = 120200;
         LE_SCAN_RADIO_DURATION_REGULAR = 120201;
         LE_SCAN_RADIO_DURATION_BATCH = 120202;
@@ -336,6 +336,22 @@
         LE_SCAN_RADIO_DURATION_BATCH_SCREEN_ON = 120205;
         LE_SCAN_RADIO_DURATION_BATCH_SCREEN_OFF = 120206;
 
+        // [120,250 - 120,300) LE scan radio scan mode count
+        LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT = 120250;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT = 120251;
+        LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT = 120252;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT = 120253;
+        LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT = 120254;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT = 120255;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT = 120256;
+        LE_SCAN_RADIO_SCAN_MODE_OPPORTUNISTIC_COUNT_SCREEN_OFF = 120257;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_POWER_COUNT_SCREEN_OFF = 120258;
+        LE_SCAN_RADIO_SCAN_MODE_BALANCED_COUNT_SCREEN_OFF = 120259;
+        LE_SCAN_RADIO_SCAN_MODE_LOW_LATENCY_COUNT_SCREEN_OFF = 120260;
+        LE_SCAN_RADIO_SCAN_MODE_AMBIENT_DISCOVERY_COUNT_SCREEN_OFF = 120261;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_COUNT_SCREEN_OFF = 120262;
+        LE_SCAN_RADIO_SCAN_MODE_SCREEN_OFF_BALANCED_COUNT_SCREEN_OFF = 120263;
+
         // [120,300 - 120,400) LE scan results count
         LE_SCAN_RESULTS_COUNT_ALL = 120300;
         LE_SCAN_RESULTS_COUNT_REGULAR = 120301;
@@ -388,7 +404,7 @@
         // [120,800 - 120,900) LE advertise error count
         LE_ADV_ERROR_ON_START_COUNT = 120800;
 
-  // [120,900 - 121,000) GATT Related Count
+   // [120,900 - 121,000) GATT Related Count
         GATT_CLIENT_CONNECT_IS_DIRECT = 120900;
         GATT_CLIENT_CONNECT_IS_AUTOCONNECT = 120901;
         GATT_CLIENT_CONNECT_IS_DIRECT_IN_FOREGROUND = 120902;
@@ -400,6 +416,7 @@
         GATT_SERVER_CONNECT_IS_AUTOCONNECT_IN_FOREGROUND = 120908;
         GATT_SERVER_CONNECT_IS_AUTOCONNECT_NOT_IN_FOREGROUND = 120909;
 
+   // [121,000 - 121,100) System state related
         // [121,000 - 121,010) Screen on/off count
         SCREEN_ON_EVENT = 121000;
         SCREEN_OFF_EVENT = 121001;
diff --git a/stats/enums/corenetworking/platform/enums.proto b/stats/enums/corenetworking/platform/enums.proto
new file mode 100644
index 0000000..af2a3fd
--- /dev/null
+++ b/stats/enums/corenetworking/platform/enums.proto
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package android.corenetworking.platform;
+
+option java_outer_classname = "platformProtoEnums";
+option java_multiple_files = true;
+
+enum IpType {
+  IT_UNKNOWN = 0;
+  IT_IPv4 = 1;
+  IT_IPv6 = 2;
+  IT_IPv4v6 = 3;
+}
+
+enum EncapType {
+  ET_UNKNOWN = 0;
+  ET_UDP = 1;
+  ET_ESP = 2;
+}
+
+enum ConnectionState {
+  CS_UNKNOWN = 0;
+  CS_CONNECTED = 1;     // vpn connection is connected
+  CS_DISCONNECTED = 2;   // vpn connection is disconnected
+}
+
+enum VpnType {
+  // Consider legacy ones as unknown
+  TYPE_VPN_NONE = 0;
+  TYPE_VPN_SERVICE = 1;
+  TYPE_VPN_PLATFORM = 2;
+  TYPE_VPN_LEGACY = 3;
+  TYPE_VPN_OEM = 4;
+}
+
+enum RecoverAction {
+  RA_NONE = 0;
+  RA_MOBIKE = 1;
+  RA_SESSION_RESET = 2;
+}
+
+enum VpnProfileType {
+  TYPE_UNKNOWN = 0;
+  TYPE_PPTP = 1;
+  TYPE_L2TP_IPSEC_PSK = 2;
+  TYPE_L2TP_IPSEC_RSA = 3;
+  TYPE_TYPE_IPSEC_XAUTH_PSK = 4;
+  TYPE_IPSEC_XAUTH_RSA = 5;
+  TYPE_IPSEC_HYBRID_RSA = 6;
+  TYPE_IKEV2_IPSEC_USER_PASS = 7;
+  TYPE_IKEV2_IPSEC_PSK = 8;
+  TYPE_IKEV2_IPSEC_RSA = 9;
+  TYPE_IKEV2_FROM_IKE_TUN_CONN_PARAMS = 10;
+}
+
+enum ErrorCode {
+  EC_UNKNOWN = 0;
+  EC_NO_ERROR = 1;
+  // ErrorType in IkeProtocolException.java
+  EC_UNSUPPORTED_CRITICAL_PAYLOAD = 2;
+  EC_INVALID_IKE_SPI = 3;
+  EC_INVALID_MAJOR_VERSION = 4;
+  EC_INVALID_SYNTAX = 5;
+  EC_INVALID_MESSAGE_ID = 6;
+  EC_NO_PROPOSAL_CHOSEN = 7;
+  EC_INVALID_KE_PAYLOAD = 8;
+  EC_AUTHENTICATION_FAILED = 9;
+  EC_SINGLE_PAIR_REQUIRED = 10;
+  EC_NO_ADDITIONAL_SAS = 11;
+  EC_INTERNAL_ADDRESS_FAILURE = 12;
+  EC_FAILED_CP_REQUIRED = 13;
+  EC_TS_UNACCEPTABLE = 14;
+  EC_INVALID_SELECTORS = 15;
+  EC_TEMPORARY_FAILURE = 16;
+  EC_CHILD_SA_NOT_FOUND = 17;
+  // ERROR_CODE_* in VpnManager.java
+  EC_NETWORK_UNKNOWN_HOST = 18;
+  EC_NETWORK_PROTOCOL_TIMEOUT = 19;
+  EC_NETWORK_LOST = 20;
+  EC_NETWORK_IO = 21;
+}
diff --git a/stats/enums/dnd/dnd_enums.proto b/stats/enums/dnd/dnd_enums.proto
index c47ebf2..8bef8c5 100644
--- a/stats/enums/dnd/dnd_enums.proto
+++ b/stats/enums/dnd/dnd_enums.proto
@@ -55,6 +55,14 @@
   CONV_NONE = 3;
 }
 
+// Enum used in DNDPolicyProto to indicate the type of channels permitted to
+// break through DND. Mirrors values in ZenPolicy.
+enum ChannelType {
+  CHANNEL_TYPE_UNSET = 0;
+  CHANNEL_TYPE_PRIORITY = 1;
+  CHANNEL_TYPE_NONE = 2;
+}
+
 // Enum used in DNDStateChanged to identify the type of rule that changed.
 enum RuleType {
   UNKNOWN_RULE = 0;
diff --git a/stats/enums/federatedcompute/enums.proto b/stats/enums/federatedcompute/enums.proto
new file mode 100644
index 0000000..06a92e3
--- /dev/null
+++ b/stats/enums/federatedcompute/enums.proto
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+package android.federatedcompute;
+
+option java_outer_classname = "FederatedComputeProtoEnums";
+option java_multiple_files = true;
+
+// Enum used to track federated computation job stages.
+// Next Tag: 45
+enum TrainingEventKind {
+  // Undefined value.
+  TRAIN_UNDEFINED = 0;
+
+  // Indicates that training was scheduled but did not start due to runtime
+  // checks (e.g. insufficient battery levels).
+  TRAIN_NOT_STARTED = 1;
+
+  // Client started downloading train phase info from the server
+  TRAIN_DOWNLOAD_STARTED = 2;
+
+  // Client is about to issue an eligibility eval checkin request to the
+  // server.
+  TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED = 3;
+
+  // Client received eligibility eval plan & checkpoint URIs from the server,
+  // but hasn't downloaded them yet. Also logged when the plan/checkpoint
+  // resources were actually supplied inline in the protocol response message
+  // and no actual HTTP fetch needs to happen anymore. This ensures that this
+  // event can always be compared against
+  // TRAIN_ELIGIBILITY_EVAL_PLAN_RECEIVED.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_PLAN_URI_RECEIVED = 4;
+
+  // Client received an eligibility eval plan from the server.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_PLAN_URI_RECEIVED.
+  TRAIN_ELIGIBILITY_EVAL_PLAN_RECEIVED = 5;
+
+  // Client was told by the server that there is no eligibility eval plan for
+  // the given population.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_NOT_CONFIGURED = 6;
+
+  // Client was rejected from an eligibility eval checkin request.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_TURNED_AWAY = 7;
+
+  // Client issued an eligibility eval checkin request, but an IO error was
+  // encountered.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_ERROR_IO = 8;
+
+  // Client issued an eligibility eval checkin request, but an invalid payload
+  // was received.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_ERROR_INVALID_PAYLOAD = 9;
+
+  // Client issued an eligibility eval checkin request, but got interrupted on
+  // the client. Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_CLIENT_INTERRUPTED = 10;
+
+  // Client issued an eligibility eval checkin request, but server aborted.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_SERVER_ABORTED = 11;
+
+  // Client issued a regular checkin request, but got an IO error.
+  // Always preceded by TRAIN_DOWNLOAD_STARTED.
+  TRAIN_DOWNLOAD_ERROR_IO = 12;
+
+  // Client issued a regular checkin request, but the server returned an
+  // invalid payload.
+  // Always preceded by TRAIN_DOWNLOAD_STARTED.
+  TRAIN_DOWNLOAD_ERROR_INVALID_PAYLOAD = 13;
+
+  // Client issued a regular checin request, but got interrupted on the
+  // client. Always preceded by TRAIN_DOWNLOAD_STARTED.
+  TRAIN_DOWNLOAD_CLIENT_INTERRUPTED = 14;
+
+  // Client issued a regular checin request, but got aborted by the server.
+  // Always preceded by TRAIN_DOWNLOAD_STARTED.
+  TRAIN_DOWNLOAD_SERVER_ABORTED = 15;
+
+  // Client received plan and checkpoint URIs from the server, but hasn't
+  // actually downloaded them yet. Also logged when the plan/checkpoint
+  // resources were actually supplied inline in the protocol response message
+  // and no actual HTTP fetch needs to happen anymore. This ensures that this
+  // event can always be compared against TRAIN_DOWNLOAD_PLAN_RECEIVED.
+  // Always preceded by TRAIN_DOWNLOAD_STARTED.
+  TRAIN_DOWNLOAD_PLAN_URI_RECEIVED = 16;
+
+  // Client received a plan from the server.
+  // Always preceded by TRAIN_DOWNLOADED_PLAN_URI_RECEIVED.
+  TRAIN_DOWNLOAD_PLAN_RECEIVED = 17;
+
+  // Client was rejected from a checkin request.
+  // Always preceded by TRAIN_DOWNLOAD_STARTED.
+  TRAIN_DOWNLOAD_TURNED_AWAY = 18;
+
+  // Client started eligibility eval computation.
+  TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED = 19;
+
+  // Client encountered a TensorFlow error during eligibility eval task
+  // computation.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_TENSORFLOW = 20;
+
+  // Reading from disk failed during eligibility eval task computation.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_IO = 21;
+
+  // Input parameters are invalid for eligibility eval task computation.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_INVALID_ARGUMENT = 22;
+
+  // Client encountered an example selector error during eligibility eval task
+  // computation.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 23;
+
+  // Eligibility eval computation was interrupted by the client.
+  TRAIN_ELIGIBILITY_EVAL_COMPUTATION_CLIENT_INTERRUPTED = 24;
+
+  // Client finished eligibility eval computation.
+  // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED.
+  TRAIN_ELIGIBILITY_EVAL_COMPUTATION_COMPLETED = 25;
+
+  // Client started computation.
+  TRAIN_COMPUTATION_STARTED = 26;
+
+  // A TensorFlow error was encountered during computation, or the output from
+  // the computation was missing or of an unexpected type. Always preceded by
+  // TRAIN_COMPUTATION_STARTED.
+  TRAIN_COMPUTATION_ERROR_TENSORFLOW = 27;
+
+  // Reading from disk failed during computation.
+  // Always preceded by TRAIN_COMPUTATION_STARTED.
+  TRAIN_COMPUTATION_ERROR_IO = 28;
+
+  // Input parameters are invalid for the given computation.
+  // Always preceded by TRAIN_COMPUTATION_STARTED.
+  TRAIN_COMPUTATION_ERROR_INVALID_ARGUMENT = 29;
+
+  // An error occurred when processing the example selector.
+  // Always preceded by TRAIN_COMPUTATION_STARTED.
+  TRAIN_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 30;
+
+  // Client got interrupted during computation.
+  // Always preceded by TRAIN_COMPUTATION_STARTED.
+  TRAIN_COMPUTATION_CLIENT_INTERRUPTED = 31;
+
+  // Client finished computation.
+  // Always preceded by TRAIN_COMPUTATION_STARTED.
+  TRAIN_COMPUTATION_COMPLETED = 32;
+
+  // Client starts to upload successfully computed results.
+  TRAIN_RESULT_UPLOAD_STARTED = 33;
+
+  // An error occurred during upload.
+  // Always preceded by TRAIN_RESULT_UPLOAD_STARTED.
+  TRAIN_RESULT_UPLOAD_ERROR_IO = 34;
+
+  // Upload was interrupted by the client.
+  // Always preceded by TRAIN_RESULT_UPLOAD_STARTED.
+  TRAIN_RESULT_UPLOAD_CLIENT_INTERRUPTED = 35;
+
+  // Upload was aborted by the server.
+  // Always preceded by TRAIN_RESULT_UPLOAD_STARTED.
+  TRAIN_RESULT_UPLOAD_SERVER_ABORTED = 36;
+
+  // Client uploaded training results to the server
+  // Always preceded by TRAIN_RESULT_UPLOAD_STARTED.
+  TRAIN_RESULT_UPLOADED = 37;
+
+  // Client starts to upload failure report.
+  TRAIN_FAILURE_UPLOAD_STARTED = 38;
+
+  // An error occurred during upload.
+  // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED.
+  TRAIN_FAILURE_UPLOAD_ERROR_IO = 39;
+
+  // Upload was interrupted.
+  // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED.
+  TRAIN_FAILURE_UPLOAD_CLIENT_INTERRUPTED = 40;
+
+  // Upload was interrupted.
+  // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED.
+  TRAIN_FAILURE_UPLOAD_SERVER_ABORTED = 41;
+
+  // Client uploaded failure report to the server
+  // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED.
+  TRAIN_FAILURE_UPLOADED = 42;
+
+  // Client failed to initialize a component, but execution was not halted.
+  TRAIN_INITIALIZATION_ERROR_NONFATAL = 43;
+
+  // Client failed to initialize a component, and execution was halted.
+  TRAIN_INITIALIZATION_ERROR_FATAL = 44;
+}
diff --git a/stats/enums/healthfitness/OWNERS b/stats/enums/healthfitness/OWNERS
new file mode 100644
index 0000000..4d65ae5
--- /dev/null
+++ b/stats/enums/healthfitness/OWNERS
@@ -0,0 +1,2 @@
+teog@google.com
+magdi@google.com
\ No newline at end of file
diff --git a/stats/enums/healthfitness/api/enums.proto b/stats/enums/healthfitness/api/enums.proto
index ae1aa94..a5e269e 100644
--- a/stats/enums/healthfitness/api/enums.proto
+++ b/stats/enums/healthfitness/api/enums.proto
@@ -114,4 +114,11 @@
   VO2_MAX = 32;
   WEIGHT = 33;
   WHEELCHAIR_PUSHES = 34;
-}
\ No newline at end of file
+}
+
+enum ForegroundState {
+  UNSPECIFIED = 0;
+  FOREGROUND = 1;
+  BACKGROUND = 2;
+}
+
diff --git a/stats/enums/healthfitness/ui/enums.proto b/stats/enums/healthfitness/ui/enums.proto
index 8d9eff7..670795d 100644
--- a/stats/enums/healthfitness/ui/enums.proto
+++ b/stats/enums/healthfitness/ui/enums.proto
@@ -33,7 +33,7 @@
     DATA_AND_ACCESS_BUTTON = 2;
     SEE_ALL_RECENT_ACCESS_BUTTON = 3;
     RECENT_ACCESS_ENTRY = 4;
-    BACKUP_DATA_BUTTON = 5;
+    MANAGE_DATA_BUTTON = 153;
 
     // Onboarding page
     ONBOARDING_COMPLETED_BUTTON = 6;
@@ -246,7 +246,24 @@
     ERROR_PAGE_STATE = 151;
     WITH_DATA_PAGE_STATE = 152;
 
-    // Next available: 153;
+    // Manage data page
+    BACKUP_DATA_BUTTON = 5;
+    DATA_SOURCES_AND_PRIORITY_BUTTON = 154;
+    SET_UNITS_BUTTON = 155;
+
+    // Data sources page
+    DATA_TYPE_SPINNER_BUTTON = 156;
+    DATA_TOTALS_CARD = 157;
+    APP_SOURCE_BUTTON = 158;
+    ADD_AN_APP_BUTTON = 159;
+    EDIT_SOURCE_LIST_BUTTON = 160;
+    REORDER_APP_SOURCE_BUTTON = 162;
+    REMOVE_APP_SOURCE_BUTTON = 163;
+
+    // Add an app page
+    POTENTIAL_PRIORITY_APP_BUTTON = 161;
+
+    // Next available: 162;
 
 }
 
@@ -282,6 +299,10 @@
     MIGRATION_MODULE_UPDATE_NEEDED_PAGE = 23;
     MIGRATION_MORE_SPACE_NEEDED_PAGE = 24;
     MIGRATION_PAUSED_PAGE = 25;
+    // New IA and Source controls
+    MANAGE_DATA_PAGE = 26;
+    DATA_SOURCES_PAGE = 27;
+    ADD_AN_APP_PAGE = 28;
 }
 
 enum Action {
diff --git a/stats/enums/input/enums.proto b/stats/enums/input/enums.proto
index 832b3be..6549783 100644
--- a/stats/enums/input/enums.proto
+++ b/stats/enums/input/enums.proto
@@ -114,8 +114,11 @@
 
 /**
  * Criteria for keyboard layout selection
+ * DEPRECATED: Since Enums should include a default UNSPECIFIED value
+ * as the first value in the declaration
  */
 enum KeyboardLayoutSelectionCriteria {
+    option deprecated = true;
     // Manual selection by user
     USER = 0;
     // Auto-detection based on device provided language tag and layout type
@@ -127,6 +130,40 @@
 }
 
 /**
+ * Criteria for keyboard layout selection
+ */
+enum LayoutSelectionCriteriaKeyboard {
+    // Unspecified
+    LAYOUT_SELECTION_CRITERIA_UNSPECIFIED = 0;
+    // Manual selection by user
+    LAYOUT_SELECTION_CRITERIA_USER = 1;
+    // Auto-detection based on device provided language tag and layout type
+    LAYOUT_SELECTION_CRITERIA_DEVICE = 2;
+    // Auto-detection based on IME provided language tag and layout type
+    LAYOUT_SELECTION_CRITERIA_VIRTUAL_KEYBOARD = 3;
+    // Default selection
+    LAYOUT_SELECTION_CRITERIA_DEFAULT = 4;
+}
+
+/**
+ * Keyboard Layout Type
+ * This enum is for layout types provided both by the physical keyboard
+ * and the  IME
+ */
+enum KeyboardLayoutType {
+    LAYOUT_TYPE_UNDEFINED = 0;
+    LAYOUT_TYPE_QWERTY = 1;
+    LAYOUT_TYPE_QWERTZ = 2;
+    LAYOUT_TYPE_AZERTY = 3;
+    LAYOUT_TYPE_DVORAK = 4;
+    LAYOUT_TYPE_COLEMAK = 5;
+    LAYOUT_TYPE_WORKMAN = 6;
+    LAYOUT_TYPE_TURKISH_F = 7;
+    LAYOUT_TYPE_TURKISH_Q = 8;
+    LAYOUT_TYPE_EXTENDED = 9;
+}
+
+/**
  * Contains usage type/category definitions.
  * Logged in InputDeviceUsageReported atom.
  */
diff --git a/stats/enums/jank/enums.proto b/stats/enums/jank/enums.proto
index 924bd36..ffd472f 100644
--- a/stats/enums/jank/enums.proto
+++ b/stats/enums/jank/enums.proto
@@ -95,11 +95,18 @@
     LOCKSCREEN_CLOCK_MOVE_ANIMATION = 71;
     LAUNCHER_OPEN_SEARCH_RESULT = 72;
     LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK = 79;
-    SHADE_EXPAND_FROM_STATUS_BAR = 80;
     IME_INSETS_SHOW_ANIMATION = 81;
     IME_INSETS_HIDE_ANIMATION = 82;
     SPLIT_SCREEN_DOUBLE_TAP_DIVIDER = 83;
+    LAUNCHER_UNFOLD_ANIM = 84;
+    PREDICTIVE_BACK_CROSS_ACTIVITY = 85;
+    PREDICTIVE_BACK_CROSS_TASK = 86;
+    PREDICTIVE_BACK_HOME = 87;
+    LAUNCHER_SEARCH_QSB_OPEN = 88;
+
     reserved 2;
+    reserved 73 to 78; // For b/281564325.
+    reserved 80;
 }
 
 enum DisplayResolution {
@@ -110,6 +117,16 @@
     QHD = 4; // 2560x1440 <= x
 }
 
+enum DisplayRefreshRate {
+  UNKNOWN_REFRESH_RATE = 0;
+  VARIABLE_REFRESH_RATE = 1; // RR changed during the CUJ.
+  RR_30_HZ = 2;  //        x < 50
+  RR_60_HZ = 3;  //  50 <= x < 80
+  RR_90_HZ = 4;  //  80 <= x < 110
+  RR_120_HZ = 5; // 110 <= x < 180
+  RR_240_HZ = 6; // 180 <= x
+}
+
 /**
   * Enum used by UIActionLatencyReported.
   */
@@ -138,5 +155,8 @@
     ACTION_REQUEST_IME_SHOWN = 21;
     ACTION_REQUEST_IME_HIDDEN = 22;
     ACTION_SMARTSPACE_DOORBELL = 23;
+    reserved 24 to 26; // For b/281564325.
+    ACTION_NOTIFICATION_BIG_PICTURE_LOADED = 27;
+    ACTION_KEYGUARD_FPS_UNLOCK_TO_HOME = 28;
+    ACTION_BACK_SYSTEM_ANIMATION = 29;
 }
-
diff --git a/stats/enums/media/outputswitcher/enums.proto b/stats/enums/media/outputswitcher/enums.proto
index 67e1861..151358e 100644
--- a/stats/enums/media/outputswitcher/enums.proto
+++ b/stats/enums/media/outputswitcher/enums.proto
@@ -55,6 +55,7 @@
   MEDIUMTYPE_CAST_OUTPUT = 2;
   MEDIUMTYPE_PROPRIETARY_OUTPUT = 3;
   MEDIUMTYPE_UNKNOWN = 4;
+  MEDIUMTYPE_BLE = 5;
 }
 
 // Indicates the scan state of list of available devices.
@@ -69,4 +70,5 @@
   MEDIADEVICETYPE_BLUETOOTH = 0;
   MEDIADEVICETYPE_FASTPAIR = 1;
   MEDIADEVICETYPE_BUILTIN_SPEAKER = 2;
+  MEDIADEVICETYPE_SASS = 3;
 }
diff --git a/stats/enums/mms/enums.proto b/stats/enums/mms/enums.proto
index 273d62f..807f3d5 100644
--- a/stats/enums/mms/enums.proto
+++ b/stats/enums/mms/enums.proto
@@ -35,4 +35,5 @@
   MMS_RESULT_ERROR_INVALID_SUBSCRIPTION_ID = 9;
   MMS_RESULT_ERROR_INACTIVE_SUBSCRIPTION = 10;
   MMS_RESULT_ERROR_DATA_DISABLED = 11;
+  MMS_RESULT_ERROR_MMS_DISABLED_BY_CARRIER = 12;
 }
\ No newline at end of file
diff --git a/stats/enums/os/enums.proto b/stats/enums/os/enums.proto
index 1cc3b8f..4c63a2a 100644
--- a/stats/enums/os/enums.proto
+++ b/stats/enums/os/enums.proto
@@ -105,6 +105,16 @@
 
     // Neural Processing Unit.
     TEMPERATURE_TYPE_NPU = 9;
+    TEMPERATURE_TYPE_TPU = 10;
+    TEMPERATURE_TYPE_DISPLAY = 11;
+    TEMPERATURE_TYPE_MODEM = 12;
+    TEMPERATURE_TYPE_SOC = 13;
+    TEMPERATURE_TYPE_WIFI = 14;
+    TEMPERATURE_TYPE_CAMERA = 15;
+    TEMPERATURE_TYPE_FLASHLIGHT = 16;
+    TEMPERATURE_TYPE_SPEAKER = 17;
+    TEMPERATURE_TYPE_AMBIENT = 18;
+    TEMPERATURE_TYPE_POGO = 19;
 }
 
 // Device throttling severity
@@ -140,6 +150,14 @@
     MODEM = 4;
     NPU = 5;
     COMPONENT = 6;
+    TPU = 7;
+    POWER_AMPLIFIER = 8;
+    DISPLAY = 9;
+    SPEAKER = 10;
+    WIFI = 11;
+    CAMERA = 12;
+    FLASHLIGHT = 13;
+    USB_PORT = 14;
 };
 
 // Wakelock types, primarily used by android/os/PowerManager.java.
diff --git a/stats/enums/service/enums.proto b/stats/enums/service/enums.proto
index c0c4242..f524b94 100644
--- a/stats/enums/service/enums.proto
+++ b/stats/enums/service/enums.proto
@@ -54,4 +54,9 @@
     COMPLIANCE_WARNING_BC_1_2 = 2;
     COMPLIANCE_WARNING_MISSING_RP = 3;
     COMPLIANCE_WARNING_OTHER = 4;
+    COMPLIANCE_WARNING_INPUT_POWER_LIMITED = 5;
+    COMPLIANCE_WARNING_MISSING_DATA_LINES = 6;
+    COMPLIANCE_WARNING_ENUMERATION_FAIL = 7;
+    COMPLIANCE_WARNING_FLAKY_CONNECTION = 8;
+    COMPLIANCE_WARNING_UNRELIABLE_IO = 9;
 }
diff --git a/stats/enums/stats/accessibility/accessibility_enums.proto b/stats/enums/stats/accessibility/accessibility_enums.proto
index 3303c01..3bef30a 100644
--- a/stats/enums/stats/accessibility/accessibility_enums.proto
+++ b/stats/enums/stats/accessibility/accessibility_enums.proto
@@ -28,6 +28,7 @@
   A11Y_FLOATING_MENU = 5;
   A11Y_GESTURE = 6;
   A11Y_WEAR_TRIPLE_PRESS_GESTURE = 7;
+  TWO_FINGER_TRIPLE_TAP = 8;
 }
 
 // The service status code.
diff --git a/stats/enums/stats/dnsresolver/dns_resolver.proto b/stats/enums/stats/dnsresolver/dns_resolver.proto
index fa7d370..b859ee9 100644
--- a/stats/enums/stats/dnsresolver/dns_resolver.proto
+++ b/stats/enums/stats/dnsresolver/dns_resolver.proto
@@ -195,6 +195,8 @@
     NT_ETHERNET_VPN = 11;
     // Indicates this network uses a Wi-Fi+Cellular+VPN transport.
     NT_WIFI_CELLULAR_VPN = 12;
+    // Indicates this network uses an Satellite transport.
+    NT_SATELLITE = 13;
 }
 
 enum CacheStatus{
diff --git a/stats/enums/stats/hdmi/enums.proto b/stats/enums/stats/hdmi/enums.proto
index 7621663..a7dc59a 100644
--- a/stats/enums/stats/hdmi/enums.proto
+++ b/stats/enums/stats/hdmi/enums.proto
@@ -122,4 +122,31 @@
     INVALID_OPERAND = 13;
     REFUSED = 14;
     UNABLE_TO_DETERMINE = 15;
+}
+
+// State of the eARC connection.
+// Values correspond to EarcStatus in com.android.server.hdmi.Constants, offset by 1.
+enum ConnectionState {
+    HDMI_EARC_STATUS_UNKNOWN = 0;
+    HDMI_EARC_STATUS_IDLE = 1;
+    HDMI_EARC_STATUS_EARC_PENDING = 2;
+    HDMI_EARC_STATUS_ARC_PENDING = 3;
+    HDMI_EARC_STATUS_EARC_CONNECTED = 4;
+
+}
+
+// Reason parameter of the eARC connection state logging.
+enum LogReason {
+    LOG_REASON_UNKNOWN = 0;
+    LOG_REASON_WAKE = 1;
+    LOG_REASON_EARC_STATUS_CHANGED = 2;
+    LOG_REASON_EARC_STATUS_CHANGED_UNSUPPORTED_PORT = 3;
+    LOG_REASON_EARC_STATUS_CHANGED_WRONG_STATE = 4;
+}
+
+// Reason parameter of the Dynamic soundbar mode state logging.
+enum DynamicSoundbarModeLogReason {
+    LOG_REASON_DSM_UNKNOWN = 0;
+    LOG_REASON_DSM_WAKE = 1;
+    LOG_REASON_DSM_SETTING_TOGGLED = 2;
 }
\ No newline at end of file
diff --git a/stats/enums/stats/ike/ike.proto b/stats/enums/stats/ike/ike.proto
index 91c0541..82b6bd0 100644
--- a/stats/enums/stats/ike/ike.proto
+++ b/stats/enums/stats/ike/ike.proto
@@ -29,6 +29,12 @@
     SESSION_CHILD = 2;
 }
 
+enum SessionState {
+    SESSION_STATE_UNKNOWN = 0;
+    SESSION_STATE_INITIAL = 1;
+    SESSION_STATE_REKEY = 2;
+}
+
 enum IkeState {
     STATE_UNKNOWN = 0;
     STATE_IKE_KILL = 1;
@@ -50,6 +56,7 @@
     STATE_IKE_DELETE_LOCAL_DELETE = 17;
     STATE_IKE_DPD_LOCAL_INFO = 18;
     STATE_IKE_MOBIKE_LOCAL_INFO = 19;
+    STATE_IKE_DPD_ON_DEMAND_LOCAL_INFO = 20;
 
     STATE_CHILD_KILL = 101;
     STATE_CHILD_INITIAL = 102;
@@ -66,6 +73,57 @@
     STATE_CHILD_REKEY_REMOTE_DELETE = 113;
 }
 
+enum DhGroups {
+    DH_GROUP_UNSPECIFIED = 0;
+    DH_GROUP_NONE = 1;
+    DH_GROUP_1024_BIT_MODP = 2;
+    DH_GROUP_1536_BIT_MODP = 5;
+    DH_GROUP_2048_BIT_MODP = 14;
+    DH_GROUP_3072_BIT_MODP = 15;
+    DH_GROUP_4096_BIT_MODP = 16;
+    DH_GROUP_CURVE_25519 = 31;
+}
+
+enum IntegrityAlgorithms {
+    INTEGRITY_ALGORITHM_UNSPECIFIED = 0;
+    INTEGRITY_ALGORITHM_NONE = 1;
+    INTEGRITY_ALGORITHM_HMAC_SHA1_96 = 2;
+    INTEGRITY_ALGORITHM_AES_XCBC_96 = 5;
+    INTEGRITY_ALGORITHM_AES_CMAC_96 = 8;
+    INTEGRITY_ALGORITHM_HMAC_SHA2_256_128 = 12;
+    INTEGRITY_ALGORITHM_HMAC_SHA2_384_192 = 13;
+    INTEGRITY_ALGORITHM_HMAC_SHA2_512_256 = 14;
+}
+
+enum PrfAlgorithms {
+    PSEUDORANDOM_FUNCTION_UNSPECIFIED = 0;
+    PSEUDORANDOM_FUNCTION_HMAC_SHA1 = 2;
+    PSEUDORANDOM_FUNCTION_AES128_XCBC = 4;
+    PSEUDORANDOM_FUNCTION_SHA2_256 = 5;
+    PSEUDORANDOM_FUNCTION_SHA2_384 = 6;
+    PSEUDORANDOM_FUNCTION_SHA2_512 = 7;
+    PSEUDORANDOM_FUNCTION_AES128_CMAC = 8;
+}
+
+enum EncryptionAlgorithms {
+    ENCRYPTION_ALGORITHM_UNSPECIFIED = 0;
+    ENCRYPTION_ALGORITHM_3DES = 3;
+    ENCRYPTION_ALGORITHM_AES_CBC = 12;
+    ENCRYPTION_ALGORITHM_AES_CTR = 13;
+    ENCRYPTION_ALGORITHM_AES_GCM_8 = 18;
+    ENCRYPTION_ALGORITHM_AES_GCM_12 = 19;
+    ENCRYPTION_ALGORITHM_AES_GCM_16 = 20;
+    ENCRYPTION_ALGORITHM_CHACHA20_POLY1305 = 28;
+}
+
+enum KeyLengths {
+    KEY_LEN_UNSPECIFIED = 0;
+    KEY_LEN_UNUSED = 1;
+    KEY_LEN_AES_128 = 128;
+    KEY_LEN_AES_192 = 192;
+    KEY_LEN_AES_256 = 256;
+}
+
 // IkeError consists of 32 bits with the top 4 bits always unset,
 // the next 12 bits representing the error categories and the
 // rest 16 bits representing the detailed error causes.
@@ -106,6 +164,7 @@
     ERROR_PROTOCOL_CHILD_SA_NOT_FOUND= 0x0004002C;
 }
 
+// Deprecated. Use IkeState instead.
 enum IkeTask {
     IKE_TASK_UNSPECIFIED = 0;
     IKE_TASK_ON_DEMAND_DPD = 1;
@@ -122,3 +181,4 @@
     NETWORK_CELLULAR = 2;
 }
 
+
diff --git a/stats/enums/stats/style/style_enums.proto b/stats/enums/stats/style/style_enums.proto
index 84cc8d6..f91599f 100644
--- a/stats/enums/stats/style/style_enums.proto
+++ b/stats/enums/stats/style/style_enums.proto
@@ -50,6 +50,16 @@
     SNAPSHOT = 28;
     WALLPAPER_EFFECT_PROBE = 29;
     WALLPAPER_EFFECT_FG_DOWNLOAD = 30;
+    THEME_COLOR_APPLIED = 31;
+    GRID_APPLIED = 32;
+    CLOCK_APPLIED = 33;
+    CLOCK_COLOR_APPLIED = 34;
+    CLOCK_SIZE_APPLIED = 35;
+    THEMED_ICON_APPLIED = 36;
+    LOCK_SCREEN_NOTIFICATION_APPLIED = 37;
+    SHORTCUT_APPLIED = 38;
+    DARK_THEME_APPLIED = 39;
+    RESET_APPLIED = 40;
 }
 
 enum LocationPreference {
@@ -75,6 +85,7 @@
     LAUNCHED_CROP_AND_SET_ACTION = 6;
     LAUNCHED_DEEP_LINK = 7;
     LAUNCHED_SETTINGS_SEARCH = 8;
+    LAUNCHED_KEYGUARD = 9;
 }
 
 enum EffectPreference {
@@ -85,3 +96,33 @@
     EFFECT_APPLIED_ABORTED = 4;
     EFFECT_APPLIED_STARTED = 5;
 }
+
+enum SetWallpaperEntryPoint {
+    SET_WALLPAPER_ENTRY_POINT_UNSPECIFIED = 0;
+    SET_WALLPAPER_ENTRY_POINT_WALLPAPER_PREVIEW = 1;
+    SET_WALLPAPER_ENTRY_POINT_WALLPAPER_QUICK_SWITCHER = 2;
+    SET_WALLPAPER_ENTRY_POINT_LAUNCHER_WALLPAPER_QUICK_SWITCHER = 3;
+    SET_WALLPAPER_ENTRY_POINT_ROTATION_WALLPAPER = 4;
+    SET_WALLPAPER_ENTRY_POINT_RESET = 5;
+    SET_WALLPAPER_ENTRY_POINT_RESTORE = 6;
+}
+
+enum WallpaperDestination {
+    WALLPAPER_DESTINATION_UNSPECIFIED = 0;
+    WALLPAPER_DESTINATION_HOME_SCREEN = 1;
+    WALLPAPER_DESTINATION_LOCK_SCREEN = 2;
+    WALLPAPER_DESTINATION_HOME_AND_LOCK_SCREEN = 3;
+}
+
+enum ColorSource {
+    COLOR_SOURCE_UNSPECIFIED = 0;
+    COLOR_SOURCE_HOME_SCREEN_WALLPAPER = 1;
+    COLOR_SOURCE_LOCK_SCREEN_WALLPAPER = 2;
+    COLOR_SOURCE_PRESET_COLOR = 3;
+}
+
+enum ClockSize {
+    CLOCK_SIZE_UNSPECIFIED = 0;
+    CLOCK_SIZE_DYNAMIC = 1;
+    CLOCK_SIZE_SMALL = 2;
+}
diff --git a/stats/enums/telephony/enums.proto b/stats/enums/telephony/enums.proto
index 38eb26f..6f73cb6 100644
--- a/stats/enums/telephony/enums.proto
+++ b/stats/enums/telephony/enums.proto
@@ -92,6 +92,14 @@
     NETWORK_TYPE_NR = 20;
 }
 
+// Cellular radio power state, see android/telephony/TelephonyManager.java for definitions.
+enum CellularRadioPowerStateEnum {
+    RADIO_POWER_STATE_UNKNOWN = 0;
+    RADIO_POWER_STATE_OFF = 1;
+    RADIO_POWER_STATE_ON = 2;
+    RADIO_POWER_STATE_UNAVAILABLE = 3;
+}
+
 // Roaming type enums, see android.telephony.ServiceState.RoamingType for definitions.
 enum RoamingTypeEnum {
     ROAMING_TYPE_NOT_ROAMING = 0;
@@ -293,6 +301,7 @@
     DEACTIVATE_REASON_RAT_NOT_ALLOWED = 10;
     DEACTIVATE_REASON_ROAMING_DISABLED = 11;
     DEACTIVATE_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED = 12;
+    DEACTIVATE_REASON_DATA_SERVICE_OPTION_NOT_SUPPORTED = 13;
     DEACTIVATE_REASON_DATA_SERVICE_NOT_READY = 14;
     DEACTIVATE_REASON_POWER_OFF_BY_CARRIER = 15;
     DEACTIVATE_REASON_DATA_STALL = 16;
diff --git a/stats/enums/telephony/satellite/enums.proto b/stats/enums/telephony/satellite/enums.proto
index ab96e98..7bc20df 100644
--- a/stats/enums/telephony/satellite/enums.proto
+++ b/stats/enums/telephony/satellite/enums.proto
@@ -69,4 +69,11 @@
   NT_RADIO_TECHNOLOGY_EMTC_NTN = 3;
   /* Proprietary technology like Iridium or Bullitt */
   NT_RADIO_TECHNOLOGY_PROPRIETARY = 4;
-}
\ No newline at end of file
+}
+
+// Handover type from emergency call to satellite messaging
+enum RecommendingHandoverType {
+  RECOMMENDING_HANDOVER_TYPE_UNKNOWN = 0;
+  RECOMMENDING_HANDOVER_TYPE_SOS = 1;
+  RECOMMENDING_HANDOVER_TYPE_T911 = 2;
+}
diff --git a/stats/enums/transparency/enums.proto b/stats/enums/transparency/enums.proto
new file mode 100644
index 0000000..9155002
--- /dev/null
+++ b/stats/enums/transparency/enums.proto
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+package com.android.os.transparency;
+
+option java_multiple_files = true;
+
+/**
+ * Digest algorithm types, used in BinaryTransparencyService.java.
+ */
+enum DigestAlgorithmType {
+    DIGEST_ALGORITHM_UNKNOWN = 0;
+    DIGEST_ALGORITHM_CHUNKED_SHA256 = 1;
+    DIGEST_ALGORITHM_CHUNKED_SHA512 = 2;
+    DIGEST_ALGORITHM_VERITY_CHUNKED_SHA256 = 3;
+    DIGEST_ALGORITHM_SHA256 = 4;
+}
diff --git a/stats/enums/uwb/enums.proto b/stats/enums/uwb/enums.proto
index f8ca532..daf5aea 100644
--- a/stats/enums/uwb/enums.proto
+++ b/stats/enums/uwb/enums.proto
@@ -26,6 +26,7 @@
     FIRA = 1;
     CCC = 2;
     CUSTOMIZED = 3;
+    ALIRO = 4;
 }
 // UWB scrambled timestamp sequence (STS) type
 enum Sts {
@@ -100,4 +101,4 @@
     TWO_WAY = 2;
     DL_TDOA = 3;
     OWR_AOA = 4;
-}
\ No newline at end of file
+}
diff --git a/stats/enums/view/inputmethod/OWNERS b/stats/enums/view/inputmethod/OWNERS
new file mode 100644
index 0000000..3870bb2
--- /dev/null
+++ b/stats/enums/view/inputmethod/OWNERS
@@ -0,0 +1,2 @@
+roosa@google.com
+cosminbaies@google.com
diff --git a/stats/enums/view/inputmethod/enums.proto b/stats/enums/view/inputmethod/enums.proto
index 67e6476..cca96de 100644
--- a/stats/enums/view/inputmethod/enums.proto
+++ b/stats/enums/view/inputmethod/enums.proto
@@ -62,6 +62,8 @@
     REASON_REMOVE_IME_SCREENSHOT_FROM_IMMS = 35;
     REASON_UPDATE_IME_PARENT_FROM_IMMS = 36;
     REASON_HIDE_WHEN_INPUT_TARGET_INVISIBLE = 37;
+    REASON_HIDE_CLOSE_CURRENT_SESSION = 38;
+    REASON_HIDE_SOFT_INPUT_FROM_VIEW = 39;
 }
 
 // The type of the IME request, used by android/view/inputmethod/ImeTracker.java.
@@ -174,7 +176,7 @@
     // Started the IME window insets show animation.
     PHASE_CLIENT_CONTROL_ANIMATION = 33;
     // Checked that the IME is controllable.
-    PHASE_CLIENT_DISABLED_USER_ANIMATION = 34;
+    PHASE_CLIENT_DISABLED_USER_ANIMATION = 34 [deprecated = true];
     // Collecting insets source controls.
     PHASE_CLIENT_COLLECT_SOURCE_CONTROLS = 35;
     // Reached the insets source consumer's show request method.
diff --git a/stats/enums/wear/connectivity/enums.proto b/stats/enums/wear/connectivity/enums.proto
new file mode 100644
index 0000000..dc7a6f0
--- /dev/null
+++ b/stats/enums/wear/connectivity/enums.proto
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package com.google.android.wearable.connectivity;
+
+option java_multiple_files = true;
+
+enum MediatorType {
+    WEAR_BLUETOOTH_MEDIATOR = 0;
+    WEAR_CELLULAR_DATA_MEDIATOR = 1;
+    WEAR_CELLULAR_MEDIATOR = 2;
+    WEAR_WIFI_MEDIATOR = 3;
+    WEAR_WIFI_SCAN_MEDIATOR = 4;
+}
+
+enum MediatorAction {
+    ACTION_UNKNOWN = 0;
+    DISABLE_PNO_SCAN = 1;
+    ENABLE_PNO_SCAN = 2;
+    MOBILE_DATA_OFF = 3;
+    MOBILE_DATA_ON = 4;
+    PROXY_CONNECTED = 5;
+    PROXY_DISCONNECTED = 6;
+    RADIO_OFF = 7;
+    RADIO_ON = 8;
+    BT_DISCONNECT_UX_FINISHED = 9;
+}
+
+/**
+ * Keep sorted order in each block. Last enum num is 60
+ */
+enum TriggerEvent {
+    TRIGGER_EVENT_UNKNOWN = 0;
+    BEDTIME_MODE_UPDATE = 1;
+    CELL_ONLY_MODE_UPDATE = 2;
+    DISABLE_MEDIATOR_SETTING_UPDATE = 3;
+    MODE_MANAGER_UPDATE = 4;
+    ON_BOOT_COMPLETED = 5;
+
+    // WearWifiMediator & WearCellularMediator
+    ACTIVITY_MODE_UPDATE = 6;
+    CALL_STATE_CHANGED_EMERGENCY_ENDED = 7;
+    COMPANION_CONNECTION_CHANGED = 8;
+    DEVICE_ENABLE_CHANGED = 9;
+    DEVICE_IDLE_MODE_CHANGED = 10;
+    ON_USER_UNLOCKED = 11;
+    POWER_SAVE_MODE_CHANGED = 12;
+    PROXY_CONNECTED_UPDATE = 13;
+    THERMAL_EMERGENCY_MODE_UPDATE = 14;
+
+    // WearWifiMediator Only
+    CHARGING_STATE_CHANGE = 15;
+    ENABLE_WIFI_WHILE_CHARGING_SETTING = 16;
+    HARDWARE_LOW_POWER_MODE_CHANGE = 17;
+    IN_WIFI_SETTING_MENU = 18;
+    NEW_EMERGENCY_OUTGOING_CALL = 19;
+    NUM_CONFIGURED_NETWORK_UPDATE = 20;
+    NUM_UNMETERED_REQ_UPDATE = 21;
+    NUM_WIFI_REQ_UPDATE = 22;
+    WIFI_BACKOFF_CHANGE = 23;
+    WIFI_ON_WHEN_PROXY_DISCONNECTED_SETTING = 24;
+    WIFI_SETTING_CHANGE = 25;
+    WIFI_STATE_DISABLED = 26;
+    WIFI_STATE_ENABLED = 27;
+    WIFI_STATE_ENABLED_UNEXPECTED = 28;
+
+    // WearCellularMediator Only
+    CELL_AUTO_SETTING = 29;
+    CELL_ON_SETTING = 30;
+    CONNECTION_STATE_CHANGED_PDN_DISCONNECTED = 31;
+    EMERGENCY_CALLBACK_MODE_CHANGED = 32;
+    EMERGENCY_RADIO_ON_TIMEOUT = 33;
+    ESIM_PROFILE_ACTIVATION_SETTING = 34;
+    ESIM_TEST_MODE = 35;
+    HFP_CONNECTION_CHANGED = 36;
+    MOBILE_SIGNAL_DETECTOR_SETTING = 37;
+    NUM_CELLULAR_REQ_UPDATE = 38;
+    SIGNAL_STATE_CHANGED = 39;
+    SIM_STATE_CHANGED = 40;
+    SUBSCRIPTIONS_CHANGED = 41;
+    SUBSCRIPTION_PHONE_STATE_CHANGED = 42;
+    VOWIFI_STATE_UPDATE = 43;
+    WIFI_CONNECTED_UPDATE = 44;
+    WIFI_DISCONNECTED_UPDATE = 45;
+    WIFI_SIGNAL_STRENGTH_CHANGE = 46;
+
+    // WearCellularDataMediator Only
+    FORCE_CELLULAR_DATA_UPDATE = 47;
+    ON_CELLULAR_SIGNAL_CHANGED = 48;
+    SUBSCRIPTION_UPDATE = 49;
+    WIFI_CONNECTION_UPDATE = 50;
+
+    BATTERY_SAVER_MODE_UPDATE = 51;
+    NO_DATA_UPDATE = 52;
+    INTERACTIVE_MODE_UPDATE = 53;
+    AIRPLANE_MODE_UPDATE = 54;
+    POOR_SIGNAL_DETECTION_UPDATE = 55;
+    CONNECTIVITY_KEEP_DATA_ON_UPDATE = 56;
+    UI_TIMEOUT_NO_INTERACTION = 57;
+    UI_BT_DISCONNECT_INTENDED = 58;
+    UI_WAIT_FOR_BT_RECONNECT = 59;
+    UI_CANCELLED = 60;
+}
+
+/**
+ * Keep sorted order in each block. Last enum num is 52
+ */
+enum Reason {
+    REASON_UNKNOWN = 0;
+    OFF_ACTIVITY_MODE = 1;
+    OFF_BEDTIME_MODE_ENABLED = 2;
+    OFF_CELL_ONLY_MODE = 3;
+    OFF_MODE_MANAGER = 4;
+    OFF_THERMAL_EMERGENCY = 5;
+    OFF_USER_ABSENT = 6;
+    OFF_WIFI_CONNECTED = 7;
+    ON_CELL_ONLY_MODE = 8;
+    ON_TEST_DEFAULT_STATE = 9;
+
+    // WearWifiMediator & WearCellularMediator
+    OFF_DEVICE_DISABLED = 10;
+    OFF_DIRECTBOOT = 11;
+    OFF_POWER_SAVE = 12;
+    ON_EMERGENCY = 13;
+    ON_NETWORK_REQUEST = 14;
+    ON_PROXY_DISCONNECTED = 15;
+
+    // WearBluetoothMediator Only
+    OFF_TIME_ONLY_MODE = 16;
+    OFF_SETTINGS_PREFERENCE = 17;
+    ON_AUTO = 18;
+    ON_BOOT_AUTO = 19;
+    OFF_HFP_ENABLE = 20;
+    ON_HFP_ENABLE = 21;
+    ON_CONNECTED = 22;
+    ON_CONNECTED_NO_INTERNET = 23;
+    OFF_DISCONNECTED = 24;
+
+    // WearWifiMediator Only
+    OFF_HARDWARE_LOW_POWER = 25;
+    OFF_NO_CONFIGURED_NETWORKS = 26;
+    OFF_NO_REQUESTS = 27;
+    OFF_WAIT_FOR_BT_ON_BOOT = 28;
+    OFF_WIFI_BACKOFF = 29;
+    OFF_WIFI_SETTING_OFF = 30;
+    ON_CHARGING = 31;
+    ON_IN_WIFI_SETTINGS = 32;
+
+    // WearWifiScanMediator Only
+    NO_DISABLE_REASONS = 33;
+    MODE_MANAGER_REQUEST = 34;
+
+    // WearCellularMediator Only
+    OFF_BEDTIME_HFP = 35;
+    OFF_CELL_SETTING = 36;
+    OFF_ESIM_DEACTIVATED = 37;
+    OFF_INITIAL_BOOT = 38;
+    OFF_NO_SIGNAL = 39;
+    OFF_PROXY_CONNECTED = 40;
+    OFF_SIM_ABSENT = 41;
+    OFF_UNSTABLE_SIGNAL = 42;
+    OFF_VOWIFI_AVAILABLE = 43;
+    ON_ESIM_TEST_MODE = 44;
+    ON_NO_CELL_AUTO = 45;
+    ON_PHONE_CALL = 46;
+
+    // WearCellularDataMediator Only
+    OFF_FORCE_CELLULAR_DATA_OFF = 47;
+    ON_NO_DISABLE_REASONS = 48;
+    OFF_CELL_POOR_SIGNAL = 49;
+
+    OFF_NO_DATA_ENABLED = 50;
+    OFF_POOR_SIGNAL = 51;
+    ON_PEEK_SIGNAL = 52;
+}
diff --git a/stats/enums/wear/media/enums.proto b/stats/enums/wear/media/enums.proto
index eba078f..e7789fc 100644
--- a/stats/enums/wear/media/enums.proto
+++ b/stats/enums/wear/media/enums.proto
@@ -30,6 +30,14 @@
   RESUME = 5;
   VOLUME_INCREASE = 6;
   VOLUME_DECREASE = 7;
+  SEEK_IN_CURRENT_MEDIA_ITEM = 8;
+  SEEK_BACK = 9;
+  SEEK_FORWARD = 10;
+  // CustomActions can be used to extend the capabilities of the standard transport controls
+  // by exposing app specific actions to Controllers. This is for app defined custom actions
+  // insteractions captured by wear media controls. For more information, see
+  // https://developer.android.com/reference/android/media/session/PlaybackState.CustomAction
+  CUSTOM_ACTION = 11;
 }
 
 // Indicates the type of launch source
diff --git a/stats/enums/wear/modes/enums.proto b/stats/enums/wear/modes/enums.proto
new file mode 100644
index 0000000..152be6c
--- /dev/null
+++ b/stats/enums/wear/modes/enums.proto
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package com.google.android.wearable.modes.telemetry;
+
+// Indicates type of Mode state
+enum ModeState {
+  MODE_STATE_UNKNOWN = 0;
+  MODE_STATE_OFF = 1;
+  MODE_STATE_ON = 2;
+}
+
+// Indicates Mode Id for a specific mode
+enum ModeId {
+  UNKNOWN_MODE = 0;
+  AIRPLANE_MODE = 1;
+  BEDTIME_MODE = 2;
+  BATTERY_SAVER_MODE = 3;
+  DO_NOT_DISTURB_MODE = 4;
+  THEATER_MODE = 5;
+  TOUCH_LOCK_MODE = 6;
+  SCHOOL_MODE = 7;
+  OFF_BODY = 8;
+}
+
+// Indicates Network state as being on or off
+enum NetworkState {
+  UNKNOWN = 0;
+  OFF = 1;
+  ON = 2;
+}
diff --git a/stats/enums/wifi/enums.proto b/stats/enums/wifi/enums.proto
index 9dd4a57..50cd220 100644
--- a/stats/enums/wifi/enums.proto
+++ b/stats/enums/wifi/enums.proto
@@ -50,7 +50,10 @@
     WIFI_MODE_FULL_LOW_LATENCY = 4;
 }
 
-// What permission model the caller has
+/**
+ * What permission model the caller has.
+ * Calculated with WifiPermissionsUtil#getWifiCallerType
+ */
 enum WifiCallerType {
     UNKNOWN = 0;
     SETTINGS = 1; // caller is SETTINGS or SETUP_WIZARD
@@ -203,6 +206,58 @@
     STA_STATUS_CONNECTED_6_GHZ = 4;
 }
 
+enum EapType {
+    // Unknown Type
+    TYPE_UNKNOWN = 0;
+    // EAP_TLS (13)
+    TYPE_EAP_TLS = 1;
+    // EAP_TTLS (21)
+    TYPE_EAP_TTLS = 2;
+    // EAP_SIM (18)
+    TYPE_EAP_SIM = 3;
+    // EAP_AKA (23)
+    TYPE_EAP_AKA = 4;
+    // EAP_AKA_PRIME (50)
+    TYPE_EAP_AKA_PRIME = 5;
+    TYPE_EAP_WAPI_CERT = 6;
+    TYPE_EAP_UNAUTH_TLS = 7;
+    TYPE_EAP_PEAP = 8;
+    TYPE_EAP_PWD = 9;
+    TYPE_EAP_OTHERS = 10;
+}
+
+enum EapInnerMethod {
+    METHOD_UNKNOWN = 0;
+    METHOD_PAP = 1;
+    METHOD_MSCHAP = 2;
+    METHOD_MSCHAP_V2 = 3;
+    METHOD_OTHERS = 4;
+    // Generic Token Card
+    METHOD_GTC = 5;
+    // EAP-Subscriber Identity Module [RFC-4186]
+    METHOD_SIM = 6;
+    // EAP-Authentication and Key Agreement [RFC-4187]
+    METHOD_AKA = 7;
+    // EAP-Authentication and Key Agreement Prime [RFC-5448]
+    METHOD_AKA_PRIME = 8;
+}
+
+enum RoamingType {
+    ROAMING_UNKNOWN = 0;
+    // Not a Passpoint network
+    ROAMING_NOT_PASSPOINT = 1;
+    // Non-Roaming
+    ROAMING_NONE = 2;
+    // Other RCOI Roaming
+    ROAMING_RCOI_OTHERS = 3;
+    // Free OpenRoaming
+    ROAMING_RCOI_OPENROAMING_FREE = 4;
+    // Settled OpenRoaming
+    ROAMING_RCOI_OPENROAMING_SETTLED = 5;
+    // Not RCOI roaming
+    ROAMING_NOT_RCOI = 6;
+}
+
 /**
  * Wi-Fi Standards
  */
@@ -263,4 +318,59 @@
     AWARE_INITIATE_BOOTSTRAPPING_REQUEST = 20;
     AWARE_RESPOND_TO_BOOTSTRAPPING_INDICATION_REQUEST = 21;
     AWARE_TERMINATE_PAIRING_REQUEST = 22;
-}
\ No newline at end of file
+}
+
+/**
+ * Wi-Fi Security modes defined by the combinations of cipher suite, AKM and PMF
+ */
+enum SecurityMode {
+    SECURITY_MODE_UNKNOWN = 0;
+    SECURITY_MODE_INVALID = 1;
+    SECURITY_MODE_WPA3_ENTERPRISE_192_BIT = 2;
+    SECURITY_MODE_WPA3_ENTERPRISE = 3;
+    SECURITY_MODE_WPA3_PERSONAL = 4;
+    SECURITY_MODE_WPA3_WPA2_PERSONAL_TRANSITION = 5;
+    SECURITY_MODE_DPP = 6;
+    SECURITY_MODE_WPA2_PERSONAL = 7;
+    SECURITY_MODE_WPA2_WPA_PERSONAL_TRANSITION = 8;
+    SECURITY_MODE_WAPI_CERT = 9;
+    SECURITY_MODE_WAPI_PSK = 10;
+    SECURITY_MODE_WPA_ENTERPRISE_LEGACY = 11;
+    SECURITY_MODE_WPA_PERSONAL_LEGACY = 12;
+    SECURITY_MODE_OWE = 13;
+    SECURITY_MODE_OWE_TRANSITION = 14;
+    SECURITY_MODE_WEP = 15;
+    SECURITY_MODE_NONE = 16;
+}
+
+enum TofuConfiguration {
+    // Default value.
+    TOFU_CONFIGURATION_UNSPECIFIED = 0;
+    // TOFU is not enabled on the enterprise config.
+    TOFU_CONFIGURATION_NOT_ENABLED = 1;
+    // TOFU is enabled pre-connection.
+    TOFU_CONFIGURATION_ENABLED_PRE_CONNECTION = 2;
+    // Root CA was configured post-TOFU connection.
+    TOFU_CONFIGURATION_CONFIGURE_ROOT_CA = 3;
+    // Certificate pinning was used post-TOFU connection.
+    TOFU_CONFIGURATION_CERT_PINNING = 4;
+}
+
+/**
+ * Passpoint release versions
+ */
+enum PasspointRelease {
+  PASSPOINT_RELEASE_UNKNOWN = 0;
+  PASSPOINT_RELEASE_1 = 1;
+  PASSPOINT_RELEASE_2 = 2;
+  PASSPOINT_RELEASE_3 = 3;
+}
+
+/**
+ * Wi-Fi usability state as predicted by the network scorer
+ */
+enum WifiPredictedUsabilityState {
+   WIFI_USABILITY_PREDICTED_UNKNOWN = 0;
+   WIFI_USABILITY_PREDICTED_USABLE = 1;
+   WIFI_USABILITY_PREDICTED_UNUSABLE = 2;
+ }
diff --git a/stats/express/catalog/bluetooth.cfg b/stats/express/catalog/bluetooth.cfg
index 6768534..600a001 100644
--- a/stats/express/catalog/bluetooth.cfg
+++ b/stats/express/catalog/bluetooth.cfg
@@ -14,7 +14,7 @@
     id: "bluetooth.value_cvsd_codec_usage_over_hfp"
     type: COUNTER
     display_name: "HFP codec usage -- CVSD"
-    description: "Counter on how many time CVSD codec is used for HFP."
+    description: "Counter on how many times CVSD codec is used for HFP."
     owner_email: "wescande@google.com"
     owner_email: "rotkiewicz@google.com"
     unit: UNIT_COUNT
@@ -24,7 +24,7 @@
     id: "bluetooth.value_msbc_codec_usage_over_hfp"
     type: COUNTER
     display_name: "HFP codec usage -- mSbc"
-    description: "Counter on how many time mSbc codec is used for HFP."
+    description: "Counter on how many times mSbc codec is used for HFP."
     owner_email: "wescande@google.com"
     owner_email: "rotkiewicz@google.com"
     unit: UNIT_COUNT
@@ -34,7 +34,7 @@
     id: "bluetooth.value_aptx_codec_usage_over_hfp"
     type: COUNTER
     display_name: "HFP codec usage -- AptX"
-    description: "Counter on how many time AptX codec is used for HFP."
+    description: "Counter on how many times AptX codec is used for HFP."
     owner_email: "wescande@google.com"
     owner_email: "rotkiewicz@google.com"
     unit: UNIT_COUNT
@@ -44,8 +44,53 @@
     id: "bluetooth.value_lc3_codec_usage_over_hfp"
     type: COUNTER
     display_name: "HFP codec usage -- LC3"
-    description: "Counter on how many time LC3 codec is used for HFP."
+    description: "Counter on how many times LC3 codec is used for HFP."
     owner_email: "wescande@google.com"
     owner_email: "rotkiewicz@google.com"
     unit: UNIT_COUNT
 }
+
+express_metric {
+    id: "bluetooth.value_auto_on_supported"
+    type: COUNTER
+    display_name: "Auto on -- support"
+    description: "How many times the Bluetooth start with AutoOnFeature supported"
+    owner_email: "wescande@google.com"
+    unit: UNIT_COUNT
+}
+
+express_metric {
+    id: "bluetooth.value_auto_on_triggered"
+    type: COUNTER
+    display_name: "Auto on -- trigger"
+    description: "How many times the Bluetooth restart because of AutoOnFeature"
+    owner_email: "wescande@google.com"
+    unit: UNIT_COUNT
+}
+
+express_metric {
+    id: "bluetooth.value_auto_on_disabled"
+    type: COUNTER
+    display_name: "Auto on -- disabled"
+    description: "How many times the user manually disable the AutoOnFeature"
+    owner_email: "wescande@google.com"
+    unit: UNIT_COUNT
+}
+
+express_metric {
+    id: "bluetooth.value_auto_on_enabled"
+    type: COUNTER
+    display_name: "Auto on -- enabled"
+    description: "How many times the user manually enable the AutoOnFeature"
+    owner_email: "wescande@google.com"
+    unit: UNIT_COUNT
+}
+
+express_metric {
+    id: "bluetooth.value_auto_on_hidden_usage"
+    type: COUNTER
+    display_name: "Auto on -- usage of pre-V hidden API"
+    description: "How many times the AutoOnFeature is used on device prior to V"
+    owner_email: "wescande@google.com"
+    unit: UNIT_COUNT
+}
diff --git a/stats/express/catalog/content_capture.cfg b/stats/express/catalog/content_capture.cfg
new file mode 100644
index 0000000..c1b2956
--- /dev/null
+++ b/stats/express/catalog/content_capture.cfg
@@ -0,0 +1,8 @@
+express_metric {
+    id: "content_capture.value_content_capture_wrong_thread_count"
+    display_name: "Content Capture running on wrong thread count"
+    description: "Number of times Content Capture running on the wrong thread"
+    owner_email: "mingweiliao@google.com"
+    unit: UNIT_COUNT
+    type: COUNTER
+}
diff --git a/stats/express/catalog/device_lock.cfg b/stats/express/catalog/device_lock.cfg
new file mode 100644
index 0000000..e9e571b
--- /dev/null
+++ b/stats/express/catalog/device_lock.cfg
@@ -0,0 +1,24 @@
+
+# Value metrics related to Device Lock
+
+express_metric {
+  id: "device_lock.value_resets_unsuccessful_provisioning_mandatory"
+  type: COUNTER
+  display_name: "Device Lock device reset for mandatory provisioning"
+  description: "The counter of device reset events due to unsuccessful MANDATORY provisioning logged in Device Lock"
+  owner_email: "bojiandu@google.com"
+  owner_email: "rajekumar@google.com"
+  owner_email: "zzhen@google.com"
+  unit: UNIT_COUNT
+}
+
+express_metric {
+  id: "device_lock.value_resets_unsuccessful_provisioning_deferred"
+  type: COUNTER
+  display_name: "Device Lock device reset for deferred provisioning"
+  description: "The counter of device reset events due to unsuccessful DEFERRED provisioning logged in Device Lock"
+  owner_email: "bojiandu@google.com"
+  owner_email: "rajekumar@google.com"
+  owner_email: "zzhen@google.com"
+  unit: UNIT_COUNT
+}
diff --git a/stats/express/catalog/speech_recognition.cfg b/stats/express/catalog/speech_recognition.cfg
new file mode 100644
index 0000000..79f5de1
--- /dev/null
+++ b/stats/express/catalog/speech_recognition.cfg
@@ -0,0 +1,17 @@
+express_metric {
+    id: "speech_recognition.value_exceed_service_connections_count"
+    display_name: "Refused session creations due to exceeding connected services"
+    description: "Counting how many sessions were dropped due to too many connected services"
+    owner_email: "hackz@google.com"
+    unit: UNIT_COUNT
+    type: COUNTER_WITH_UID
+}
+
+express_metric {
+    id: "speech_recognition.value_exceed_session_count"
+    display_name: "Refused session creations due to exceeding session limit"
+    description: "Counting how many sessions were dropped due to too many sessions"
+    owner_email: "hackz@google.com"
+    unit: UNIT_COUNT
+    type: COUNTER_WITH_UID
+}
diff --git a/stats/express/catalog/virtual_devices.cfg b/stats/express/catalog/virtual_devices.cfg
new file mode 100644
index 0000000..7d791b7
--- /dev/null
+++ b/stats/express/catalog/virtual_devices.cfg
@@ -0,0 +1,8 @@
+express_metric {
+    id: "virtual_devices.value_virtual_devices_created_count"
+    display_name: "Virtual Devices created count"
+    description: "Number of times Virtual Devices are created."
+    owner_email: "if-vdm@google.com"
+    unit: UNIT_COUNT
+    type: COUNTER
+}
diff --git a/stats/express/expresscatalogvalidator/Android.bp b/stats/express/expresscatalogvalidator/Android.bp
index 8caaf62..fe3f7a1 100644
--- a/stats/express/expresscatalogvalidator/Android.bp
+++ b/stats/express/expresscatalogvalidator/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_telemetry_infra",
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
diff --git a/stats/stats_log_api_gen/Android.bp b/stats/stats_log_api_gen/Android.bp
index a5705dc..c1791de 100644
--- a/stats/stats_log_api_gen/Android.bp
+++ b/stats/stats_log_api_gen/Android.bp
@@ -18,6 +18,7 @@
 // Build the host executable: stats-log-api-gen
 // ==========================================================
 package {
+    default_team: "trendy_team_android_telemetry_infra",
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
@@ -54,6 +55,32 @@
     proto: {
         type: "full",
     },
+
+    tidy: true,
+
+    tidy_checks: [
+        "android-*",
+        "bugprone-*",
+        "cert-*",
+        "clang-analyzer-security*",
+        "google-*",
+        "misc-*",
+        "performance-*",
+        "-bugprone-narrowing-conversions", // lots of unsigned -> int conversions
+        "-cert-err34-c",
+        "-cert-msc30-c", // warning: rand() has limited randomness; use C++11 random library
+        "-cert-msc50-cpp", // warning: rand() has limited randomness; use C++11 random library
+    ],
+
+    tidy_checks_as_errors: [
+        "android-*",
+        "bugprone-*",
+        "cert-*",
+        "clang-analyzer-security*",
+        "google-*",
+        "misc-*",
+        "performance-*",
+    ],
 }
 
 // ==========================================================
diff --git a/stats/stats_log_api_gen/Collation.cpp b/stats/stats_log_api_gen/Collation.cpp
index 32be56c..bc360e4 100644
--- a/stats/stats_log_api_gen/Collation.cpp
+++ b/stats/stats_log_api_gen/Collation.cpp
@@ -16,10 +16,13 @@
 
 #include "Collation.h"
 
+#include <google/protobuf/descriptor.h>
+#include <stdarg.h>
 #include <stdio.h>
 
 #include <map>
 
+#include "frameworks/proto_logging/stats/atom_field_options.pb.h"
 #include "frameworks/proto_logging/stats/atoms.pb.h"
 #include "frameworks/proto_logging/stats/attribution_node.pb.h"
 #include "utils.h"
@@ -30,7 +33,6 @@
 using google::protobuf::EnumDescriptor;
 using google::protobuf::FieldDescriptor;
 using google::protobuf::FileDescriptor;
-using google::protobuf::OneofDescriptor;
 using google::protobuf::SourceLocation;
 using std::make_shared;
 using std::map;
@@ -74,6 +76,7 @@
  * Print an error message for a FieldDescriptor, including the file name and
  * line number.
  */
+// NOLINTNEXTLINE(cert-dcl50-cpp)
 static void print_error(const FieldDescriptor& field, const char* format, ...) {
     const Descriptor* message = field.containing_type();
     const FileDescriptor* file = message->file();
@@ -95,9 +98,9 @@
 /**
  * Convert a protobuf type into a java type.
  */
-static java_type_t java_type(const FieldDescriptor& field) {
-    int protoType = field.type();
-    bool isRepeatedField = field.is_repeated();
+static java_type_t java_type(const FieldDescriptor& field, const bool isUintAllowed) {
+    const int protoType = field.type();
+    const bool isRepeatedField = field.is_repeated();
 
     switch (protoType) {
         case FieldDescriptor::TYPE_FLOAT:
@@ -127,9 +130,10 @@
         case FieldDescriptor::TYPE_BYTES:
             return isRepeatedField ? JAVA_TYPE_UNKNOWN_OR_INVALID : JAVA_TYPE_BYTE_ARRAY;
         case FieldDescriptor::TYPE_UINT64:
-            return isRepeatedField ? JAVA_TYPE_UNKNOWN_OR_INVALID : JAVA_TYPE_LONG;
+            return isRepeatedField || !isUintAllowed ? JAVA_TYPE_UNKNOWN_OR_INVALID
+                                                     : JAVA_TYPE_LONG;
         case FieldDescriptor::TYPE_UINT32:
-            return isRepeatedField ? JAVA_TYPE_UNKNOWN_OR_INVALID : JAVA_TYPE_INT;
+            return isRepeatedField || !isUintAllowed ? JAVA_TYPE_UNKNOWN_OR_INVALID : JAVA_TYPE_INT;
         default:
             return JAVA_TYPE_UNKNOWN_OR_INVALID;
     }
@@ -387,22 +391,27 @@
         expectedNumber++;
     }
 
+    // Check if atom is in uint type allowlist.
+    std::string atomName = atom.name();
+    bool isUintAllowed = !(find(begin(UINT_ATOM_ALLOWLIST), end(UINT_ATOM_ALLOWLIST), atomName) ==
+                           end(UINT_ATOM_ALLOWLIST));
+
     // Check that only allowed types are present. Remove any invalid ones.
     for (map<int, const FieldDescriptor*>::const_iterator it = fields.begin(); it != fields.end();
          it++) {
         const FieldDescriptor& field = *it->second;
-        bool isBinaryField = field.options().GetExtension(os::statsd::log_mode) ==
-                             os::statsd::LogMode::MODE_BYTES;
+        const bool isBinaryField = field.options().GetExtension(os::statsd::log_mode) ==
+                                   os::statsd::LogMode::MODE_BYTES;
 
-        java_type_t javaType = java_type(field);
+        const java_type_t javaType = java_type(field, isUintAllowed);
 
         if (javaType == JAVA_TYPE_UNKNOWN_OR_INVALID) {
             if (field.is_repeated()) {
-                print_error(field, "Repeated field type %d is not allowed for field: %s\n",
-                            field.type(), field.name().c_str());
+                print_error(field, "Repeated field type %s is not allowed for field: %s\n",
+                            field.type_name(), field.name().c_str());
             } else {
-                print_error(field, "Field type %d is not allowed for field: %s\n", field.type(),
-                            field.name().c_str());
+                print_error(field, "Field type %s is not allowed for field: %s\n",
+                            field.type_name(), field.name().c_str());
             }
             errorCount++;
             continue;
@@ -435,10 +444,10 @@
     // Check that if there's an attribution chain, it's at position 1.
     for (map<int, const FieldDescriptor*>::const_iterator it = fields.begin(); it != fields.end();
          it++) {
-        int number = it->first;
+        const int number = it->first;
         if (number != 1) {
             const FieldDescriptor& field = *it->second;
-            java_type_t javaType = java_type(field);
+            const java_type_t javaType = java_type(field, isUintAllowed);
             if (javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) {
                 print_error(field,
                             "AttributionChain fields must have field id 1, in message: '%s'\n",
@@ -452,9 +461,9 @@
     for (map<int, const FieldDescriptor*>::const_iterator it = fields.begin(); it != fields.end();
          it++) {
         const FieldDescriptor& field = *it->second;
-        java_type_t javaType = java_type(field);
-        bool isBinaryField = field.options().GetExtension(os::statsd::log_mode) ==
-                             os::statsd::LogMode::MODE_BYTES;
+        const java_type_t javaType = java_type(field, isUintAllowed);
+        const bool isBinaryField = field.options().GetExtension(os::statsd::log_mode) ==
+                                   os::statsd::LogMode::MODE_BYTES;
 
         AtomField atField(field.name(), javaType);
 
@@ -506,7 +515,7 @@
     for (map<int, const FieldDescriptor*>::const_iterator it = fields.begin(); it != fields.end();
          it++) {
         const FieldDescriptor& field = *it->second;
-        java_type_t javaType = java_type(field);
+        const java_type_t javaType = java_type(field, true);
         if (javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) {
             atomDecl.fields.insert(atomDecl.fields.end(), attributionDecl.fields.begin(),
                                    attributionDecl.fields.end());
@@ -590,7 +599,7 @@
     const AtomType atomType = getAtomType(atomField);
 
     const Descriptor& atom = *atomField.message_type();
-    shared_ptr<AtomDecl> atomDecl =
+    const shared_ptr<AtomDecl> atomDecl =
             make_shared<AtomDecl>(atomField.number(), atomField.name(), atom.name(), atomType);
 
     if (atomField.options().GetExtension(os::statsd::truncate_timestamp)) {
@@ -631,7 +640,7 @@
 
     atoms.decls.insert(atomDecl);
 
-    shared_ptr<AtomDecl> nonChainedAtomDecl =
+    const shared_ptr<AtomDecl> nonChainedAtomDecl =
             make_shared<AtomDecl>(atomField.number(), atomField.name(), atom.name(), atomType);
     vector<java_type_t> nonChainedSignature;
     if (get_non_chained_node(atom, *nonChainedAtomDecl, nonChainedSignature)) {
diff --git a/stats/stats_log_api_gen/Collation.h b/stats/stats_log_api_gen/Collation.h
index c1f4ee4..b5095f8 100644
--- a/stats/stats_log_api_gen/Collation.h
+++ b/stats/stats_log_api_gen/Collation.h
@@ -31,7 +31,6 @@
 
 using google::protobuf::Descriptor;
 using google::protobuf::FieldDescriptor;
-using google::protobuf::OneofDescriptor;
 using std::map;
 using std::set;
 using std::shared_ptr;
@@ -77,6 +76,31 @@
 
 const char DEFAULT_MODULE_NAME[] = "DEFAULT";
 
+const std::string UINT_ATOM_ALLOWLIST[22] = {
+        "AppDied",
+        "DevicePolicyEvent",
+        "NfcErrorOccurred",
+        "NfcHceTransactionOccurred",
+        "ScreenTimeoutExtensionReported",
+        "ThreadnetworkTelemetryDataReported",
+        "ThreadnetworkTopoEntryRepeated",
+        "SubsystemSleepState",
+        "BluetoothActivityInfo",
+        "CpuTimePerFreq",
+        "CpuTimePerUid",
+        "CpuTimePerUidFreq",
+        "WifiActivityInfo",
+        "ModemActivityInfo",
+        "SystemElapsedRealtime",
+        "SystemUptime",
+        "CpuActiveTime",
+        "CpuClusterTime",
+        "DiskSpace",
+        "OnDevicePowerMeasurement",
+        "GeneralExternalStorageAccessStats",
+        "CpuTimePerClusterFreq",
+};
+
 /**
  * The types for atom parameters.
  */
diff --git a/stats/stats_log_api_gen/java_writer.cpp b/stats/stats_log_api_gen/java_writer.cpp
index e2bae05..dae0c0e 100644
--- a/stats/stats_log_api_gen/java_writer.cpp
+++ b/stats/stats_log_api_gen/java_writer.cpp
@@ -16,6 +16,8 @@
 
 #include "java_writer.h"
 
+#include <stdio.h>
+
 #include "Collation.h"
 #include "java_writer_q.h"
 #include "utils.h"
@@ -40,27 +42,24 @@
     return 0;
 }
 
-static void write_java_annotation_constants(FILE* out, const int minApiLevel,
-                                            const int compileApiLevel) {
+static void write_java_annotation_constants(FILE* out, const int minApiLevel) {
     fprintf(out, "    // Annotation constants.\n");
 
     const map<AnnotationId, AnnotationStruct>& ANNOTATION_ID_CONSTANTS =
             get_annotation_id_constants(ANNOTATION_CONSTANT_NAME_PREFIX);
     for (const auto& [id, annotation] : ANNOTATION_ID_CONSTANTS) {
-        if (annotation.minApiLevel < API_U) {  // we don't generate annotation constants for U+
-            if (compileApiLevel <= API_R) {
-                fprintf(out, "    public static final byte %s = %hhu;\n", annotation.name.c_str(),
-                        id);
-            } else if (minApiLevel <= API_R) {  // compileApiLevel = S+
-                fprintf(out, "    public static final byte %s =\n", annotation.name.c_str());
-                fprintf(out, "            Build.VERSION.SDK_INT <= %s ?\n",
-                        get_java_build_version_code(API_R).c_str());
-                fprintf(out, "            %hhu : StatsLog.%s;\n", id, annotation.name.c_str());
-                fprintf(out, "\n");
-            } else {
-                fprintf(out, "    public static final byte %s = StatsLog.%s;\n",
-                        annotation.name.c_str(), annotation.name.c_str());
-            }
+        if (annotation.minApiLevel >= API_U) {  // we don't generate annotation constants for U+
+            continue;
+        }
+        if (minApiLevel <= API_R) {
+            fprintf(out, "    public static final byte %s =\n", annotation.name.c_str());
+            fprintf(out, "            Build.VERSION.SDK_INT <= %s ?\n",
+                    get_java_build_version_code(API_R).c_str());
+            fprintf(out, "            %hhu : StatsLog.%s;\n", id, annotation.name.c_str());
+            fprintf(out, "\n");
+        } else {
+            fprintf(out, "    public static final byte %s = StatsLog.%s;\n",
+                    annotation.name.c_str(), annotation.name.c_str());
         }
     }
 
@@ -69,7 +68,7 @@
 
 static void write_annotations(FILE* out, int argIndex,
                               const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet) {
-    FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
+    const FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
             fieldNumberToAtomDeclSet.find(argIndex);
     if (fieldNumberToAtomDeclSet.end() == fieldNumberToAtomDeclSetIt) {
         return;
@@ -226,13 +225,16 @@
     for (auto signatureInfoMapIt = signatureInfoMap.begin();
          signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) {
         const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second;
-        FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
-            fieldNumberToAtomDeclSet.find(ATOM_ID_FIELD_NUMBER);
-        if (fieldNumberToAtomDeclSetIt != fieldNumberToAtomDeclSet.end()
-            && requires_api_needed(fieldNumberToAtomDeclSetIt->second)) {
+        const FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
+                fieldNumberToAtomDeclSet.find(ATOM_ID_FIELD_NUMBER);
+        const AtomDeclSet* atomDeclSet =
+                fieldNumberToAtomDeclSetIt == fieldNumberToAtomDeclSet.end()
+                        ? nullptr
+                        : &fieldNumberToAtomDeclSetIt->second;
+        const int requiresApiLevel = get_requires_api_level(minApiLevel, atomDeclSet);
+        if (requiresApiLevel != API_LEVEL_CURRENT) {
             fprintf(out, "    @RequiresApi(%s)\n",
-                    get_java_build_version_code(
-                        get_min_api_level(fieldNumberToAtomDeclSetIt->second)).c_str());
+                    get_java_build_version_code(requiresApiLevel).c_str());
         }
         // Print method signature.
         fprintf(out, "    public static void write(int code");
@@ -248,8 +250,8 @@
             indent = "    ";
         }
 
-        int ret = write_method_body(out, signature, fieldNumberToAtomDeclSet, attributionDecl,
-                                    indent, minApiLevel);
+        const int ret = write_method_body(out, signature, fieldNumberToAtomDeclSet, attributionDecl,
+                                          indent, minApiLevel);
         if (ret != 0) {
             return ret;
         }
@@ -303,7 +305,7 @@
         fprintf(out, ") {\n");
 
         // Print method body.
-        string indent("");
+        const string indent("");
         ret = write_method_body(out, signature, fieldNumberToAtomDeclSet, attributionDecl,
                                     indent, minApiLevel);
         if (ret != 0) {
@@ -321,7 +323,7 @@
 
 int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl& attributionDecl,
                          const string& javaClass, const string& javaPackage, const int minApiLevel,
-                         const int compileApiLevel, const bool supportWorkSource) {
+                         const bool supportWorkSource) {
     // Print prelude
     fprintf(out, "// This file is autogenerated\n");
     fprintf(out, "\n");
@@ -335,7 +337,7 @@
 
     fprintf(out, "import android.util.StatsEvent;\n");
     fprintf(out, "import android.util.StatsLog;\n");
-    if (requires_api_needed(atoms.decls)) {
+    if (get_requires_api_level(minApiLevel, &atoms.decls) != API_LEVEL_CURRENT) {
         fprintf(out, "import androidx.annotation.RequiresApi;\n");
     }
 
@@ -348,7 +350,7 @@
 
     write_java_atom_codes(out, atoms);
     write_java_enum_values(out, atoms);
-    write_java_annotation_constants(out, minApiLevel, compileApiLevel);
+    write_java_annotation_constants(out, minApiLevel);
 
     int errors = 0;
 
diff --git a/stats/stats_log_api_gen/java_writer.h b/stats/stats_log_api_gen/java_writer.h
index f87be53..dea06f8 100644
--- a/stats/stats_log_api_gen/java_writer.h
+++ b/stats/stats_log_api_gen/java_writer.h
@@ -31,7 +31,7 @@
 
 int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl& attributionDecl,
                          const string& javaClass, const string& javaPackage, const int minApiLevel,
-                         const int compileApiLevel, const bool supportWorkSource);
+                         const bool supportWorkSource);
 
 }  // namespace stats_log_api_gen
 }  // namespace android
diff --git a/stats/stats_log_api_gen/java_writer_q.cpp b/stats/stats_log_api_gen/java_writer_q.cpp
index b9e7e21..05e7557 100644
--- a/stats/stats_log_api_gen/java_writer_q.cpp
+++ b/stats/stats_log_api_gen/java_writer_q.cpp
@@ -16,6 +16,9 @@
 
 #include "java_writer_q.h"
 
+#include <stdio.h>
+
+#include "Collation.h"
 #include "utils.h"
 
 namespace android {
diff --git a/stats/stats_log_api_gen/java_writer_vendor.cpp b/stats/stats_log_api_gen/java_writer_vendor.cpp
index d3c8239..11eb754 100644
--- a/stats/stats_log_api_gen/java_writer_vendor.cpp
+++ b/stats/stats_log_api_gen/java_writer_vendor.cpp
@@ -16,6 +16,16 @@
 
 #include "java_writer_vendor.h"
 
+#include <stdio.h>
+
+#include <algorithm>
+#include <map>
+#include <memory>
+#include <set>
+#include <string>
+#include <vector>
+
+#include "Collation.h"
 #include "utils.h"
 
 namespace android {
@@ -128,15 +138,12 @@
                     annotationIdConstants.at(annotation->annotationId);
             switch (annotation->type) {
                 case ANNOTATION_TYPE_INT:
-                    if (ANNOTATION_ID_TRIGGER_STATE_RESET == annotation->annotationId) {
-                        break;
-                    } else if (ANNOTATION_ID_DEFAULT_STATE == annotation->annotationId) {
-                        break;
-                    } else if (ANNOTATION_ID_RESTRICTION_CATEGORY == annotation->annotationId) {
+                    if (ANNOTATION_ID_RESTRICTION_CATEGORY == annotation->annotationId) {
                         write_vendor_annotation_int_constant(
                                 out, annotationConstant.name,
                                 get_restriction_category_str(annotation->value.intValue), indent2);
-                    } else {
+                    } else if (ANNOTATION_ID_TRIGGER_STATE_RESET != annotation->annotationId &&
+                               ANNOTATION_ID_DEFAULT_STATE != annotation->annotationId) {
                         write_vendor_annotation_int(out, annotationConstant.name,
                                                     annotation->value.intValue, indent2);
                     }
@@ -388,7 +395,7 @@
 
     // Print write methods.
     fprintf(out, "    // Write methods\n");
-    int errors = write_java_pushed_methods_vendor(out, atoms.signatureInfoMap);
+    const int errors = write_java_pushed_methods_vendor(out, atoms.signatureInfoMap);
 
     fprintf(out, "}\n");
 
diff --git a/stats/stats_log_api_gen/main.cpp b/stats/stats_log_api_gen/main.cpp
index 179f894..7533708 100644
--- a/stats/stats_log_api_gen/main.cpp
+++ b/stats/stats_log_api_gen/main.cpp
@@ -1,20 +1,18 @@
 
-#include <getopt.h>
+#include <google/protobuf/compiler/importer.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/stubs/common.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include <cstdlib>
 #include <filesystem>
-#include <map>
-#include <set>
-#include <vector>
 
 #include "Collation.h"
 #include "frameworks/proto_logging/stats/atoms.pb.h"
 #include "frameworks/proto_logging/stats/attribution_node.pb.h"
 #include "java_writer.h"
-#include "java_writer_q.h"
 #include "native_writer.h"
 #include "rust_writer.h"
 #include "utils.h"
@@ -63,9 +61,6 @@
     fprintf(stderr,
             "  --worksource         Include support for logging WorkSource "
             "objects.\n");
-    fprintf(stderr,
-            "  --compileApiLevel API_LEVEL           specify which API level generated code is "
-            "compiled against. (Java only).\n");
     fprintf(stderr, "                                        Default is \"current\".\n");
     fprintf(stderr,
             "  --bootstrap          If this logging is from a bootstrap process. "
@@ -95,7 +90,6 @@
     string vendorProto;
     bool supportWorkSource = false;
     int minApiLevel = API_LEVEL_CURRENT;
-    int compileApiLevel = API_LEVEL_CURRENT;
     bool bootstrap = false;
 
     int index = 1;
@@ -193,15 +187,6 @@
             if (0 != strcmp("current", argv[index])) {
                 minApiLevel = atoi(argv[index]);
             }
-        } else if (0 == strcmp("--compileApiLevel", argv[index])) {
-            index++;
-            if (index >= argc) {
-                print_usage();
-                return 1;
-            }
-            if (0 != strcmp("current", argv[index])) {
-                compileApiLevel = atoi(argv[index]);
-            }
         } else if (0 == strcmp("--bootstrap", argv[index])) {
             bootstrap = true;
 #ifdef WITH_VENDOR
@@ -229,40 +214,18 @@
         print_usage();
         return 1;
     }
-    if (DEFAULT_MODULE_NAME == moduleName &&
-        (minApiLevel != API_LEVEL_CURRENT || compileApiLevel != API_LEVEL_CURRENT)) {
+    if (DEFAULT_MODULE_NAME == moduleName && minApiLevel != API_LEVEL_CURRENT) {
         // Default module only supports current API level.
         fprintf(stderr, "%s cannot support older API levels\n", moduleName.c_str());
         return 1;
     }
 
-    if (compileApiLevel < API_R) {
-        // Cannot compile against pre-R.
-        fprintf(stderr, "compileApiLevel must be %d or higher.\n", API_R);
-        return 1;
-    }
-
     if (minApiLevel < API_Q) {
         // Cannot support pre-Q.
         fprintf(stderr, "minApiLevel must be %d or higher.\n", API_Q);
         return 1;
     }
 
-    if (minApiLevel == API_LEVEL_CURRENT) {
-        if (minApiLevel > compileApiLevel) {
-            // If minApiLevel is not specified, assume it is not higher than compileApiLevel.
-            minApiLevel = compileApiLevel;
-        }
-    } else {
-        if (minApiLevel > compileApiLevel) {
-            // If specified, minApiLevel should always be lower than compileApiLevel.
-            fprintf(stderr,
-                    "Invalid minApiLevel or compileApiLevel. If minApiLevel and"
-                    " compileApiLevel are specified, minApiLevel should not be higher"
-                    " than compileApiLevel.\n");
-            return 1;
-        }
-    }
     if (bootstrap) {
         if (cppFilename.empty() && headerFilename.empty()) {
             fprintf(stderr, "Bootstrap flag can only be used for cpp/header files.\n");
@@ -272,7 +235,7 @@
             fprintf(stderr, "Bootstrap flag does not support worksources");
             return 1;
         }
-        if ((minApiLevel != API_LEVEL_CURRENT) || (compileApiLevel != API_LEVEL_CURRENT)) {
+        if (minApiLevel != API_LEVEL_CURRENT) {
             fprintf(stderr, "Bootstrap flag does not support older API levels");
             return 1;
         }
@@ -330,7 +293,7 @@
             fprintf(stderr, "Must supply --headerImport if supplying a specific module\n");
             return 1;
         }
-        FILE* out = fopen(cppFilename.c_str(), "w");
+        FILE* out = fopen(cppFilename.c_str(), "we");
         if (out == nullptr) {
             fprintf(stderr, "Unable to open file for write: %s\n", cppFilename.c_str());
             return 1;
@@ -354,7 +317,7 @@
         if (moduleName != DEFAULT_MODULE_NAME && cppNamespace == DEFAULT_CPP_NAMESPACE) {
             fprintf(stderr, "Must supply --namespace if supplying a specific module\n");
         }
-        FILE* out = fopen(headerFilename.c_str(), "w");
+        FILE* out = fopen(headerFilename.c_str(), "we");
         if (out == nullptr) {
             fprintf(stderr, "Unable to open file for write: %s\n", headerFilename.c_str());
             return 1;
@@ -389,7 +352,7 @@
             return 1;
         }
 
-        FILE* out = fopen(javaFilename.c_str(), "w");
+        FILE* out = fopen(javaFilename.c_str(), "we");
         if (out == nullptr) {
             fprintf(stderr, "Unable to open file for write: %s\n", javaFilename.c_str());
             return 1;
@@ -398,7 +361,7 @@
         if (vendorProto.empty()) {
             errorCount = android::stats_log_api_gen::write_stats_log_java(
                     out, atoms, attributionDecl, javaClass, javaPackage, minApiLevel,
-                    compileApiLevel, supportWorkSource);
+                    supportWorkSource);
         } else {
 #ifdef WITH_VENDOR
             if (supportWorkSource) {
@@ -421,7 +384,7 @@
             return 1;
         }
 
-        FILE* out = fopen(rustFilename.c_str(), "w");
+        FILE* out = fopen(rustFilename.c_str(), "we");
         if (out == nullptr) {
             fprintf(stderr, "Unable to open file for write: %s\n", rustFilename.c_str());
             return 1;
@@ -440,7 +403,7 @@
             return 1;
         }
 
-        FILE* out = fopen(rustHeaderFilename.c_str(), "w");
+        FILE* out = fopen(rustHeaderFilename.c_str(), "we");
         if (out == nullptr) {
             fprintf(stderr, "Unable to open file for write: %s\n", rustHeaderFilename.c_str());
             return 1;
diff --git a/stats/stats_log_api_gen/native_writer.cpp b/stats/stats_log_api_gen/native_writer.cpp
index af55376..835b058 100644
--- a/stats/stats_log_api_gen/native_writer.cpp
+++ b/stats/stats_log_api_gen/native_writer.cpp
@@ -16,6 +16,8 @@
 
 #include "native_writer.h"
 
+#include <stdio.h>
+
 #include "Collation.h"
 #include "utils.h"
 
@@ -37,7 +39,7 @@
                               const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet,
                               const string& methodPrefix, const string& methodSuffix,
                               const int minApiLevel) {
-    FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
+    const FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
             fieldNumberToAtomDeclSet.find(argIndex);
     if (fieldNumberToAtomDeclSet.end() == fieldNumberToAtomDeclSetIt) {
         return;
@@ -222,7 +224,7 @@
         if (bootstrap) {
             fprintf(out, "    ::android::os::StatsBootstrapAtom atom;\n");
             fprintf(out, "    atom.atomId = code;\n");
-            FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
+            const FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
                     fieldNumberToAtomDeclSet.find(ATOM_ID_FIELD_NUMBER);
             if (fieldNumberToAtomDeclSet.end() != fieldNumberToAtomDeclSetIt) {
                 fprintf(stderr, "Bootstrap atoms do not support annotations\n");
@@ -273,7 +275,7 @@
                         fprintf(stderr, "Encountered unsupported type.\n");
                         return 1;
                 }
-                FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
+                const FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
                         fieldNumberToAtomDeclSet.find(argIndex);
                 if (fieldNumberToAtomDeclSet.end() != fieldNumberToAtomDeclSetIt) {
                     fprintf(stderr, "Bootstrap atoms do not support annotations\n");
@@ -335,8 +337,8 @@
             fprintf(out, "    return event.writeToSocket();\n");  // end method body.
         } else {
             fprintf(out, "    AStatsEvent* event = AStatsEvent_obtain();\n");
-            int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet,
-                                               attributionDecl, minApiLevel);
+            const int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet,
+                                                     attributionDecl, minApiLevel);
             if (ret != 0) {
                 return ret;
             }
@@ -390,8 +392,8 @@
                                       signature, attributionDecl, " {");
 
         fprintf(out, "    AStatsEvent* event = AStatsEventList_addStatsEvent(pulled_data);\n");
-        int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet,
-                                           attributionDecl, minApiLevel);
+        const int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet,
+                                                 attributionDecl, minApiLevel);
         if (ret != 0) {
             return ret;
         }
diff --git a/stats/stats_log_api_gen/native_writer_vendor.cpp b/stats/stats_log_api_gen/native_writer_vendor.cpp
index 5817629..f0fe0d3 100644
--- a/stats/stats_log_api_gen/native_writer_vendor.cpp
+++ b/stats/stats_log_api_gen/native_writer_vendor.cpp
@@ -16,11 +16,20 @@
 
 #include "native_writer_vendor.h"
 
+#include <stdio.h>
+
+#include <set>
+#include <string>
+#include <vector>
+
+#include "Collation.h"
 #include "utils.h"
 
 namespace android {
 namespace stats_log_api_gen {
 
+using std::string;
+
 static void write_native_vendor_annotation_header(FILE* out, const string& annotationName,
                                                   const char* indent) {
     fprintf(out, "%s{\n", indent);
@@ -296,7 +305,8 @@
     fprintf(out, "using std::vector;\n");
     fprintf(out, "using std::string;\n");
 
-    int ret = write_native_create_vendor_atom_methods(out, atoms.signatureInfoMap, attributionDecl);
+    const int ret =
+            write_native_create_vendor_atom_methods(out, atoms.signatureInfoMap, attributionDecl);
     if (ret != 0) {
         return ret;
     }
diff --git a/stats/stats_log_api_gen/rust_writer.cpp b/stats/stats_log_api_gen/rust_writer.cpp
index 181b1c9..b21d4a1 100644
--- a/stats/stats_log_api_gen/rust_writer.cpp
+++ b/stats/stats_log_api_gen/rust_writer.cpp
@@ -16,6 +16,12 @@
 
 #include "rust_writer.h"
 
+#include <stdio.h>
+
+#include <algorithm>
+#include <cctype>
+#include <map>
+
 #include "Collation.h"
 #include "utils.h"
 
@@ -60,7 +66,7 @@
     const int N = str.size();
     bool justSawUnderscore = false;
     for (int i = 0; i < N; i++) {
-        char c = str[i];
+        const char c = str[i];
         if (c == '_') {
             justSawUnderscore = true;
             // Don't add the underscore to our result
@@ -78,7 +84,7 @@
     string result;
     const int N = str.size();
     for (int i = 0; i < N; i++) {
-        char c = str[i];
+        const char c = str[i];
         if (isupper(c)) {
             if (i > 0) {
                 result += "_";
@@ -156,7 +162,7 @@
     fprintf(out, "\n");
 }
 
-static bool write_rust_usage(FILE* out, const string& method_name, const shared_ptr<AtomDecl> atom,
+static bool write_rust_usage(FILE* out, const string& method_name, const shared_ptr<AtomDecl>& atom,
                              const AtomDecl& attributionDecl, bool isNonChained,
                              const char* headerCrate) {
     fprintf(out, "    // Definition: ");
@@ -175,11 +181,11 @@
     build_non_chained_decl_map(atoms, &atom_code_to_non_chained_decl_map);
 
     for (const shared_ptr<AtomDecl>& atomDecl : atoms.decls) {
-        string constant = make_camel_case_name(atomDecl->name);
+        const string constant = make_camel_case_name(atomDecl->name);
         fprintf(out, "\n");
         fprintf(out, "    // %s %s\n", atomDecl->message.c_str(), atomDecl->name.c_str());
-        bool isSupported = write_rust_usage(out, "// stats_write", atomDecl, attributionDecl, false,
-                                            headerCrate);
+        const bool isSupported = write_rust_usage(out, "// stats_write", atomDecl, attributionDecl,
+                                                  false, headerCrate);
         if (!isSupported) {
             continue;
         }
@@ -390,7 +396,8 @@
         write_rust_method_signature(out, "add_astats_event", *atomDecl, attributionDecl, true,
                                     false, headerCrate);
     }
-    int ret = write_rust_method_body(out, *atomDecl, attributionDecl, minApiLevel, headerCrate);
+    const int ret =
+            write_rust_method_body(out, *atomDecl, attributionDecl, minApiLevel, headerCrate);
     if (ret != 0) {
         return ret;
     }
@@ -444,7 +451,7 @@
 static void write_rust_struct(FILE* out, const shared_ptr<AtomDecl>& atomDecl,
                               const AtomDecl& attributionDecl, const char* headerCrate) {
     // Write the struct.
-    bool lifetime = needs_lifetime(atomDecl);
+    const bool lifetime = needs_lifetime(atomDecl);
     if (lifetime) {
         fprintf(out, "    pub struct %s<'a> {\n", make_camel_case_name(atomDecl->name).c_str());
     } else {
@@ -469,7 +476,7 @@
     fprintf(out, "    }\n");
 
     // Write the impl
-    bool isPush = atomDecl->atomType == ATOM_TYPE_PUSHED;
+    const bool isPush = atomDecl->atomType == ATOM_TYPE_PUSHED;
     if (isPush) {
         if (lifetime) {
             fprintf(out, "    impl<'a> %s<'a> {\n", make_camel_case_name(atomDecl->name).c_str());
@@ -533,8 +540,8 @@
         fprintf(out, "\n");
         write_rust_atom_constant_values(out, atomDecl);
         write_rust_struct(out, atomDecl, attributionDecl, headerCrate);
-        int ret = write_rust_stats_write_method(out, atomDecl, attributionDecl, minApiLevel,
-                                                headerCrate);
+        const int ret = write_rust_stats_write_method(out, atomDecl, attributionDecl, minApiLevel,
+                                                      headerCrate);
         if (ret != 0) {
             return ret;
         }
@@ -592,7 +599,7 @@
 
     write_rust_annotation_constants(out);
 
-    int errorCount = write_rust_stats_write_atoms(
+    const int errorCount = write_rust_stats_write_atoms(
             out, atoms.decls, attributionDecl, atoms.non_chained_decls, minApiLevel, headerCrate);
 
     return errorCount;
diff --git a/stats/stats_log_api_gen/test.proto b/stats/stats_log_api_gen/test.proto
index 79cf870..889a906 100644
--- a/stats/stats_log_api_gen/test.proto
+++ b/stats/stats_log_api_gen/test.proto
@@ -39,21 +39,25 @@
     VALUE1 = 1;
 }
 
+message SubMessageWithUint {
+    optional uint32 field1 = 1;
+}
+
 message AllTypesAtom {
   repeated android.os.statsd.AttributionNode attribution_chain = 1;
   optional float float_field = 2;
   optional int64 int64_field = 3;
-  optional uint64 uint64_field = 4;
-  optional int32 int32_field = 5;
-  optional bool bool_field = 6;
-  optional string string_field = 7;
-  optional uint32 uint32_field = 8;
-  optional AnEnum enum_field = 9;
-  repeated float repeated_float_field = 10;
-  repeated int64 repeated_int64_field = 11;
-  repeated int32 repeated_int32_field = 12;
-  repeated bool repeated_bool_field = 13;
-  repeated string repeated_string_field = 14;
+  optional int32 int32_field = 4;
+  optional bool bool_field = 5;
+  optional string string_field = 6;
+  optional AnEnum enum_field = 7;
+  repeated float repeated_float_field = 8;
+  repeated int64 repeated_int64_field = 9;
+  repeated int32 repeated_int32_field = 10;
+  repeated bool repeated_bool_field = 11;
+  repeated string repeated_string_field = 12;
+  optional SubMessageWithUint sub_message_with_uint_field = 13
+          [(android.os.statsd.log_mode) = MODE_BYTES];
 }
 
 // Separated from AllTypesAtom because tests can't properly check atoms with multiple enum type
@@ -93,6 +97,8 @@
     repeated uint32 uint32_repeated_field = 18;
     repeated IntAtom bad_int_atom_repeated_field = 19;
     repeated bytes bad_bytes_repeated_field = 20;
+    optional uint32 uint32_field = 21;
+    optional uint64 uint64_field = 22;
 }
 
 message BadTypesEvent {
@@ -172,22 +178,18 @@
 
 message GoodRestrictedAtom {
     optional int64 int64_field = 1 [(android.os.statsd.field_restriction_option).app_usage = true];
-    optional uint64 uint64_field = 2
-        [(android.os.statsd.field_restriction_option).app_activity = true];
-    optional int32 int32_field_1 = 3
-        [(android.os.statsd.field_restriction_option).health_connect = true];
-    optional bool bool_field = 4
-        [(android.os.statsd.field_restriction_option).accessibility = true];
-    optional string string_field = 5
-        [(android.os.statsd.field_restriction_option).system_search = true];
-    optional AnEnum enum_field = 6
-        [(android.os.statsd.field_restriction_option).ambient_sensing = true];
-    optional uint32 uint32_field = 7
-        [(android.os.statsd.field_restriction_option).user_engagement = true];
-    optional float float_field = 8
-        [(android.os.statsd.field_restriction_option).peripheral_device_info = true];
-    optional int32 int32_field_2 = 9
-        [(android.os.statsd.field_restriction_option).demographic_classification = true];
+    optional int32 int32_field_1 = 2
+            [(android.os.statsd.field_restriction_option).health_connect = true];
+    optional bool bool_field = 3
+            [(android.os.statsd.field_restriction_option).accessibility = true];
+    optional string string_field = 4
+            [(android.os.statsd.field_restriction_option).system_search = true];
+    optional AnEnum enum_field = 5
+            [(android.os.statsd.field_restriction_option).ambient_sensing = true];
+    optional float float_field = 6
+            [(android.os.statsd.field_restriction_option).peripheral_device_info = true];
+    optional int32 int32_field_2 = 7
+            [(android.os.statsd.field_restriction_option).demographic_classification = true];
 }
 
 // Nonprimitive fields
@@ -368,6 +370,24 @@
         [(android.os.statsd.restriction_category) = RESTRICTION_FRAUD_AND_ABUSE];
 }
 
+// Allowed uint atoms.
+message AppDied {
+    optional uint32 uint32_field = 1;
+}
+
+message SystemUptime {
+    optional uint64 uint64_field = 1;
+}
+
+message GoodUintAtoms {
+    oneof pushed {
+        AppDied app_died = 1;
+    }
+    oneof pulled {
+        SystemUptime system_uptime = 2;
+    }
+}
+
 message ExtensionAtoms {
     oneof pushed {
         IntAtom int_atom_1 = 1;
diff --git a/stats/stats_log_api_gen/test_collation.cpp b/stats/stats_log_api_gen/test_collation.cpp
index 2d0b85d..e8bb667 100644
--- a/stats/stats_log_api_gen/test_collation.cpp
+++ b/stats/stats_log_api_gen/test_collation.cpp
@@ -120,6 +120,7 @@
             mBadRestrictedAtoms3 = BadRestrictedAtoms3::descriptor();
             mBadRestrictedAtoms4 = BadRestrictedAtoms4::descriptor();
             mBadRestrictedAtoms5 = BadRestrictedAtoms5::descriptor();
+            mGoodUintAtoms = GoodUintAtoms::descriptor();
         } else {
             mEvent = mFileDescriptor->FindMessageTypeByName("Event");
             mIntAtom = mFileDescriptor->FindMessageTypeByName("IntAtom");
@@ -147,6 +148,7 @@
             mBadRestrictedAtoms3 = mFileDescriptor->FindMessageTypeByName("BadRestrictedAtoms3");
             mBadRestrictedAtoms4 = mFileDescriptor->FindMessageTypeByName("BadRestrictedAtoms4");
             mBadRestrictedAtoms5 = mFileDescriptor->FindMessageTypeByName("BadRestrictedAtoms5");
+            mGoodUintAtoms = mFileDescriptor->FindMessageTypeByName("GoodUintAtoms");
         }
     }
 
@@ -176,6 +178,7 @@
     const Descriptor* mBadRestrictedAtoms3;
     const Descriptor* mBadRestrictedAtoms4;
     const Descriptor* mBadRestrictedAtoms5;
+    const Descriptor* mGoodUintAtoms;
 };
 
 INSTANTIATE_TEST_SUITE_P(ProtoProvider, CollationTest, testing::Values(true, false));
@@ -201,17 +204,16 @@
                                   JAVA_TYPE_ATTRIBUTION_CHAIN,  // AttributionChain
                                   JAVA_TYPE_FLOAT,              // float
                                   JAVA_TYPE_LONG,               // int64
-                                  JAVA_TYPE_LONG,               // uint64
                                   JAVA_TYPE_INT,                // int32
                                   JAVA_TYPE_BOOLEAN,            // bool
                                   JAVA_TYPE_STRING,             // string
-                                  JAVA_TYPE_INT,                // uint32
                                   JAVA_TYPE_INT,                // AnEnum
                                   JAVA_TYPE_FLOAT_ARRAY,        // repeated float
                                   JAVA_TYPE_LONG_ARRAY,         // repeated int64
                                   JAVA_TYPE_INT_ARRAY,          // repeated int32
                                   JAVA_TYPE_BOOLEAN_ARRAY,      // repeated bool
-                                  JAVA_TYPE_STRING_ARRAY        // repeated string
+                                  JAVA_TYPE_STRING_ARRAY,       // repeated string
+                                  JAVA_TYPE_BYTE_ARRAY          // SubMessageWithUint (mode bytes)
     );
 
     // RepeatedEnumAtom
@@ -275,7 +277,7 @@
     Atoms atoms;
     const int errorCount = collate_atoms(*mBadTypesEvent, DEFAULT_MODULE_NAME, atoms);
 
-    EXPECT_EQ(20, errorCount);
+    EXPECT_EQ(22, errorCount);
 }
 
 /**
@@ -616,19 +618,13 @@
     ASSERT_EQ(1ul, atoms.signatureInfoMap.size());
     ASSERT_EQ(0ul, atoms.pulledAtomsSignatureInfoMap.size());
 
-    EXPECT_MAP_CONTAINS_SIGNATURE(atoms.signatureInfoMap, JAVA_TYPE_LONG,
-                                                          JAVA_TYPE_LONG,
-                                                          JAVA_TYPE_INT,
-                                                          JAVA_TYPE_BOOLEAN,
-                                                          JAVA_TYPE_STRING,
-                                                          JAVA_TYPE_INT,
-                                                          JAVA_TYPE_INT,
-                                                          JAVA_TYPE_FLOAT,
-                                                          JAVA_TYPE_INT);
+    EXPECT_MAP_CONTAINS_SIGNATURE(atoms.signatureInfoMap, JAVA_TYPE_LONG, JAVA_TYPE_INT,
+                                  JAVA_TYPE_BOOLEAN, JAVA_TYPE_STRING, JAVA_TYPE_INT,
+                                  JAVA_TYPE_FLOAT, JAVA_TYPE_INT);
 
     // Validate signatureInfoMap
     FieldNumberToAtomDeclSet fieldNumberToAtomDeclSet = atoms.signatureInfoMap.begin()->second;
-    ASSERT_EQ(10ul, fieldNumberToAtomDeclSet.size());
+    ASSERT_EQ(8ul, fieldNumberToAtomDeclSet.size());
     const AtomDeclSet* atomDeclSet = &fieldNumberToAtomDeclSet[ATOM_ID_FIELD_NUMBER];
     ASSERT_EQ(2ul, atomDeclSet->size());
     AtomDeclSet::const_iterator atomDeclSetIt = atomDeclSet->begin();
@@ -638,7 +634,7 @@
     EXPECT_EQ("pushed_atom_1", atomDecl->name);
     EXPECT_EQ("GoodRestrictedAtom", atomDecl->message);
     FieldNumberToAnnotations fieldNumberToAnnotations = atomDecl->fieldNumberToAnnotations;
-    ASSERT_EQ(10ul, fieldNumberToAnnotations.size());
+    ASSERT_EQ(8ul, fieldNumberToAnnotations.size());
 
     const AnnotationSet* annotationSet = &fieldNumberToAnnotations[ATOM_ID_FIELD_NUMBER];
     ASSERT_EQ(1ul, annotationSet->size());
@@ -657,53 +653,39 @@
     annotationSet = &fieldNumberToAnnotations[2];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
-    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_APP_ACTIVITY, annotation->annotationId);
+    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_HEALTH_CONNECT, annotation->annotationId);
     EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type);
     EXPECT_TRUE(annotation->value.boolValue);
 
     annotationSet = &fieldNumberToAnnotations[3];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
-    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_HEALTH_CONNECT, annotation->annotationId);
+    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_ACCESSIBILITY, annotation->annotationId);
     EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type);
     EXPECT_TRUE(annotation->value.boolValue);
 
     annotationSet = &fieldNumberToAnnotations[4];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
-    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_ACCESSIBILITY, annotation->annotationId);
+    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_SYSTEM_SEARCH, annotation->annotationId);
     EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type);
     EXPECT_TRUE(annotation->value.boolValue);
 
     annotationSet = &fieldNumberToAnnotations[5];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
-    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_SYSTEM_SEARCH, annotation->annotationId);
+    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_AMBIENT_SENSING, annotation->annotationId);
     EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type);
     EXPECT_TRUE(annotation->value.boolValue);
 
     annotationSet = &fieldNumberToAnnotations[6];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
-    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_AMBIENT_SENSING, annotation->annotationId);
-    EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type);
-    EXPECT_TRUE(annotation->value.boolValue);
-
-    annotationSet = &fieldNumberToAnnotations[7];
-    ASSERT_EQ(1ul, annotationSet->size());
-    annotation = annotationSet->begin()->get();
-    EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_USER_ENGAGEMENT, annotation->annotationId);
-    EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type);
-    EXPECT_TRUE(annotation->value.boolValue);
-
-    annotationSet = &fieldNumberToAnnotations[8];
-    ASSERT_EQ(1ul, annotationSet->size());
-    annotation = annotationSet->begin()->get();
     EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_PERIPHERAL_DEVICE_INFO, annotation->annotationId);
     EXPECT_EQ(ANNOTATION_TYPE_BOOL, annotation->type);
     EXPECT_TRUE(annotation->value.boolValue);
 
-    annotationSet = &fieldNumberToAnnotations[9];
+    annotationSet = &fieldNumberToAnnotations[7];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
     EXPECT_EQ(ANNOTATION_ID_FIELD_RESTRICTION_DEMOGRAPHIC_CLASSIFICATION, annotation->annotationId);
@@ -716,7 +698,7 @@
     EXPECT_EQ("pushed_atom_2", atomDecl->name);
     EXPECT_EQ("GoodRestrictedAtom", atomDecl->message);
     fieldNumberToAnnotations = atomDecl->fieldNumberToAnnotations;
-    ASSERT_EQ(10ul, fieldNumberToAnnotations.size());
+    ASSERT_EQ(8ul, fieldNumberToAnnotations.size());
     annotationSet = &fieldNumberToAnnotations[ATOM_ID_FIELD_NUMBER];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
@@ -734,7 +716,7 @@
     EXPECT_EQ("pushed_atom_1", (*atomIt)->name);
     EXPECT_EQ("GoodRestrictedAtom", (*atomIt)->message);
     fieldNumberToAnnotations = (*atomIt)->fieldNumberToAnnotations;
-    ASSERT_EQ(10ul, fieldNumberToAnnotations.size());
+    ASSERT_EQ(8ul, fieldNumberToAnnotations.size());
 
     annotationSet = &fieldNumberToAnnotations[ATOM_ID_FIELD_NUMBER];
     ASSERT_EQ(1ul, annotationSet->size());
@@ -748,7 +730,7 @@
     EXPECT_EQ("pushed_atom_2", (*atomIt)->name);
     EXPECT_EQ("GoodRestrictedAtom", (*atomIt)->message);
     fieldNumberToAnnotations = (*atomIt)->fieldNumberToAnnotations;
-    ASSERT_EQ(10ul, fieldNumberToAnnotations.size());
+    ASSERT_EQ(8ul, fieldNumberToAnnotations.size());
     annotationSet = &fieldNumberToAnnotations[ATOM_ID_FIELD_NUMBER];
     ASSERT_EQ(1ul, annotationSet->size());
     annotation = annotationSet->begin()->get();
@@ -777,7 +759,7 @@
 
     // Field restriction without restriction category
     errorCount = collate_atoms(*mBadRestrictedAtoms3, DEFAULT_MODULE_NAME, atoms);
-    EXPECT_EQ(9, errorCount);
+    EXPECT_EQ(7, errorCount);
 
     // Field restriction option on top level atom field
     errorCount = collate_atoms(*mBadRestrictedAtoms4, DEFAULT_MODULE_NAME, atoms);
@@ -788,5 +770,36 @@
     EXPECT_EQ(2, errorCount);
 }
 
+TEST_P(CollationTest, CollateGoodUintAtoms) {
+    Atoms atoms;
+    int errorCount = collate_atoms(*mGoodUintAtoms, DEFAULT_MODULE_NAME, atoms);
+    EXPECT_EQ(0, errorCount);
+
+    EXPECT_EQ(2ul, atoms.signatureInfoMap.size());
+
+    // AppDied
+    EXPECT_MAP_CONTAINS_SIGNATURE(atoms.signatureInfoMap, JAVA_TYPE_INT);
+
+    // SystemUptime
+    EXPECT_MAP_CONTAINS_SIGNATURE(atoms.signatureInfoMap, JAVA_TYPE_LONG);
+
+    EXPECT_EQ(2ul, atoms.decls.size());
+
+    AtomDeclSet::const_iterator atomIt = atoms.decls.begin();
+    EXPECT_EQ(1, (*atomIt)->code);
+    EXPECT_EQ("app_died", (*atomIt)->name);
+    EXPECT_EQ("AppDied", (*atomIt)->message);
+    EXPECT_NO_ENUM_FIELD((*atomIt));
+    atomIt++;
+
+    EXPECT_EQ(2, (*atomIt)->code);
+    EXPECT_EQ("system_uptime", (*atomIt)->name);
+    EXPECT_EQ("SystemUptime", (*atomIt)->message);
+    EXPECT_NO_ENUM_FIELD((*atomIt));
+    atomIt++;
+
+    EXPECT_EQ(atoms.decls.end(), atomIt);
+}
+
 }  // namespace stats_log_api_gen
 }  // namespace android
diff --git a/stats/stats_log_api_gen/test_external.proto b/stats/stats_log_api_gen/test_external.proto
index b61d33f..a31f2c7 100644
--- a/stats/stats_log_api_gen/test_external.proto
+++ b/stats/stats_log_api_gen/test_external.proto
@@ -39,21 +39,25 @@
     VALUE1 = 1;
 }
 
+message SubMessageWithUint {
+    optional uint32 field1 = 1;
+}
+
 message AllTypesAtom {
   repeated android.os.statsd.AttributionNode attribution_chain = 1;
   optional float float_field = 2;
   optional int64 int64_field = 3;
-  optional uint64 uint64_field = 4;
-  optional int32 int32_field = 5;
-  optional bool bool_field = 6;
-  optional string string_field = 7;
-  optional uint32 uint32_field = 8;
-  optional AnEnum enum_field = 9;
-  repeated float repeated_float_field = 10;
-  repeated int64 repeated_int64_field = 11;
-  repeated int32 repeated_int32_field = 12;
-  repeated bool repeated_bool_field = 13;
-  repeated string repeated_string_field = 14;
+  optional int32 int32_field = 4;
+  optional bool bool_field = 5;
+  optional string string_field = 6;
+  optional AnEnum enum_field = 7;
+  repeated float repeated_float_field = 8;
+  repeated int64 repeated_int64_field = 9;
+  repeated int32 repeated_int32_field = 10;
+  repeated bool repeated_bool_field = 11;
+  repeated string repeated_string_field = 12;
+  optional SubMessageWithUint sub_message_with_uint_field = 13
+          [(android.os.statsd.log_mode) = MODE_BYTES];
 }
 
 // Separated from AllTypesAtom because tests can't properly check atoms with multiple enum type
@@ -93,6 +97,8 @@
     repeated uint32 uint32_repeated_field = 18;
     repeated IntAtom bad_int_atom_repeated_field = 19;
     repeated bytes bad_bytes_repeated_field = 20;
+    optional uint32 uint32_field = 21;
+    optional uint64 uint64_field = 22;
 }
 
 message BadTypesEvent {
@@ -172,22 +178,18 @@
 
 message GoodRestrictedAtom {
     optional int64 int64_field = 1 [(android.os.statsd.field_restriction_option).app_usage = true];
-    optional uint64 uint64_field = 2
-        [(android.os.statsd.field_restriction_option).app_activity = true];
-    optional int32 int32_field_1 = 3
-        [(android.os.statsd.field_restriction_option).health_connect = true];
-    optional bool bool_field = 4
-        [(android.os.statsd.field_restriction_option).accessibility = true];
-    optional string string_field = 5
-        [(android.os.statsd.field_restriction_option).system_search = true];
-    optional AnEnum enum_field = 6
-        [(android.os.statsd.field_restriction_option).ambient_sensing = true];
-    optional uint32 uint32_field = 7
-        [(android.os.statsd.field_restriction_option).user_engagement = true];
-    optional float float_field = 8
-        [(android.os.statsd.field_restriction_option).peripheral_device_info = true];
-    optional int32 int32_field_2 = 9
-        [(android.os.statsd.field_restriction_option).demographic_classification = true];
+    optional int32 int32_field_1 = 2
+            [(android.os.statsd.field_restriction_option).health_connect = true];
+    optional bool bool_field = 3
+            [(android.os.statsd.field_restriction_option).accessibility = true];
+    optional string string_field = 4
+            [(android.os.statsd.field_restriction_option).system_search = true];
+    optional AnEnum enum_field = 5
+            [(android.os.statsd.field_restriction_option).ambient_sensing = true];
+    optional float float_field = 6
+            [(android.os.statsd.field_restriction_option).peripheral_device_info = true];
+    optional int32 int32_field_2 = 7
+            [(android.os.statsd.field_restriction_option).demographic_classification = true];
 }
 
 // Nonprimitive fields
@@ -368,6 +370,24 @@
         [(android.os.statsd.restriction_category) = RESTRICTION_FRAUD_AND_ABUSE];
 }
 
+// Allowed uint atoms.
+message AppDied {
+    optional uint32 uint32_field = 1;
+}
+
+message SystemUptime {
+    optional uint64 uint64_field = 1;
+}
+
+message GoodUintAtoms {
+    oneof pushed {
+        AppDied app_died = 1;
+    }
+    oneof pulled {
+        SystemUptime system_uptime = 2;
+    }
+}
+
 message ExtensionAtoms {
     oneof pushed {
         IntAtom int_atom_1 = 1;
diff --git a/stats/stats_log_api_gen/test_java/Android.bp b/stats/stats_log_api_gen/test_java/Android.bp
index ad4ddd5..39f07ae 100644
--- a/stats/stats_log_api_gen/test_java/Android.bp
+++ b/stats/stats_log_api_gen/test_java/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_telemetry_infra",
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
diff --git a/stats/stats_log_api_gen/utils.cpp b/stats/stats_log_api_gen/utils.cpp
index ee8f73d..19a403a 100644
--- a/stats/stats_log_api_gen/utils.cpp
+++ b/stats/stats_log_api_gen/utils.cpp
@@ -16,16 +16,28 @@
 
 #include "utils.h"
 
+#include <stdio.h>
+
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "Collation.h"
+#include "frameworks/proto_logging/stats/atom_field_options.pb.h"
+
 namespace android {
 namespace stats_log_api_gen {
 
+using std::map;
+using std::string;
+using std::vector;
+
 /**
  * Inlining this method because "android-base/strings.h" is not available on
  * google3.
  */
 static vector<string> Split(const string& s, const string& delimiters) {
-    GOOGLE_CHECK_NE(delimiters.size(), 0U);
-
     vector<string> result;
 
     size_t base = 0;
@@ -91,8 +103,8 @@
     return *ANNOTATION_ID_CONSTANTS;
 }
 
-string get_java_build_version_code(int minApiLevel) {
-    switch (minApiLevel) {
+string get_java_build_version_code(int apiLevel) {
+    switch (apiLevel) {
         case API_Q:
             return "Build.VERSION_CODES.Q";
         case API_R:
@@ -252,7 +264,7 @@
 // Native
 // Writes namespaces for the cpp and header files
 void write_namespace(FILE* out, const string& cppNamespaces) {
-    vector<string> cppNamespaceVec = Split(cppNamespaces, ",");
+    const vector<string> cppNamespaceVec = Split(cppNamespaces, ",");
     for (const string& cppNamespace : cppNamespaceVec) {
         fprintf(out, "namespace %s {\n", cppNamespace.c_str());
     }
@@ -267,13 +279,13 @@
 }
 
 static void write_cpp_usage(FILE* out, const string& method_name, const string& atom_code_name,
-                            const shared_ptr<AtomDecl> atom, const AtomDecl& attributionDecl,
+                            const AtomDecl& atom, const AtomDecl& attributionDecl,
                             bool isVendorAtomLogging = false) {
     const char* delimiterStr = method_name.find('(') == string::npos ? "(" : " ";
     fprintf(out, "     * Usage: %s%s%s", method_name.c_str(), delimiterStr, atom_code_name.c_str());
 
-    for (vector<AtomField>::const_iterator field = atom->fields.begin();
-         field != atom->fields.end(); field++) {
+    for (vector<AtomField>::const_iterator field = atom.fields.begin(); field != atom.fields.end();
+         field++) {
         if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) {
             for (const auto& chainField : attributionDecl.fields) {
                 if (chainField.javaType == JAVA_TYPE_STRING) {
@@ -307,15 +319,15 @@
     // Print atom constants
     for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end();
          atomIt++) {
-        string constant = make_constant_name((*atomIt)->name);
+        const string constant = make_constant_name((*atomIt)->name);
         fprintf(out, "\n");
         fprintf(out, "    /**\n");
         fprintf(out, "     * %s %s\n", (*atomIt)->message.c_str(), (*atomIt)->name.c_str());
-        write_cpp_usage(out, methodName, constant, *atomIt, attributionDecl, isVendorAtomLogging);
+        write_cpp_usage(out, methodName, constant, **atomIt, attributionDecl, isVendorAtomLogging);
 
         auto non_chained_decl = atom_code_to_non_chained_decl_map.find((*atomIt)->code);
         if (non_chained_decl != atom_code_to_non_chained_decl_map.end()) {
-            write_cpp_usage(out, methodName + "_non_chained", constant, *non_chained_decl->second,
+            write_cpp_usage(out, methodName + "_non_chained", constant, **non_chained_decl->second,
                             attributionDecl, isVendorAtomLogging);
         }
         fprintf(out, "     */\n");
@@ -438,7 +450,7 @@
     // Print constants for the atom codes.
     for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end();
          atomIt++) {
-        string constant = make_constant_name((*atomIt)->name);
+        const string constant = make_constant_name((*atomIt)->name);
         fprintf(out, "\n");
         fprintf(out, "    /**\n");
         fprintf(out, "     * %s %s<br>\n", (*atomIt)->message.c_str(), (*atomIt)->name.c_str());
@@ -634,7 +646,7 @@
     return 0;
 }
 
-bool contains_restricted(const AtomDeclSet& atomDeclSet) {
+static bool contains_restricted(const AtomDeclSet& atomDeclSet) {
     for (const auto& decl : atomDeclSet) {
         if (decl->restricted) {
             return true;
@@ -643,22 +655,19 @@
     return false;
 }
 
-bool requires_api_needed(const AtomDeclSet& atomDeclSet) {
-    return contains_restricted(atomDeclSet);
-}
-
-int get_min_api_level(const AtomDeclSet& atomDeclSet) {
-    if (requires_api_needed(atomDeclSet)) {
-        if (contains_restricted(atomDeclSet)) {
-            return API_U;
-        }
+int get_requires_api_level(int minApiLevel, const AtomDeclSet* atomDeclSet) {
+    if (atomDeclSet != nullptr && contains_restricted(*atomDeclSet)) {
+        return API_U;
+    }
+    if (minApiLevel <= API_Q) {
+        return API_Q;  // for StatsLog.writeRaw()
     }
     return API_LEVEL_CURRENT;
 }
 
 AtomDeclSet get_annotations(int argIndex,
                             const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet) {
-    FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
+    const FieldNumberToAtomDeclSet::const_iterator fieldNumberToAtomDeclSetIt =
             fieldNumberToAtomDeclSet.find(argIndex);
     if (fieldNumberToAtomDeclSet.end() == fieldNumberToAtomDeclSetIt) {
         return AtomDeclSet();
diff --git a/stats/stats_log_api_gen/utils.h b/stats/stats_log_api_gen/utils.h
index cefd7e6..3ac08c8 100644
--- a/stats/stats_log_api_gen/utils.h
+++ b/stats/stats_log_api_gen/utils.h
@@ -60,7 +60,7 @@
 
 const map<AnnotationId, AnnotationStruct>& get_annotation_id_constants(const string& prefix);
 
-string get_java_build_version_code(int minApiLevel);
+string get_java_build_version_code(int apiLevel);
 
 string get_restriction_category_str(int annotationValue);
 
@@ -124,11 +124,7 @@
     }
 };
 
-bool contains_restricted(const AtomDeclSet& atomDeclSet);
-
-bool requires_api_needed(const AtomDeclSet& atomDeclSet);
-
-int get_min_api_level(const AtomDeclSet& atomDeclSet);
+int get_requires_api_level(int minApiLevel, const AtomDeclSet* atomDeclSet);
 
 }  // namespace stats_log_api_gen
 }  // namespace android
