chromium/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml

<!--
Copyright 2021 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file is used to generate a comprehensive list of histograms related to
segmentation platform along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
[email protected].
-->

<histogram-configuration>

<histograms>

<variants name="BooleanModel">
  <variant name="ChromeLowUserEngagement"/>
  <variant name="ChromeStartAndroid" summary="(obsolete) Not used since M-127"/>
  <variant name="ChromeStartAndroidV2"
      summary="(obsolete) Not used since M-127"/>
  <variant name="CrossDeviceUserSegment"/>
  <variant name="FrequentFeatureUser"/>
  <variant name="IntentionalUserSegment"/>
  <variant name="PowerUser"/>
  <variant name="QueryTiles"/>
  <variant name="ResumeHeavyUser"/>
  <variant name="SearchUser"/>
  <variant name="ShoppingUser"/>
  <variant name="TabletProductivityUser"/>
</variants>

<variants name="DatabaseOperation">
  <variant name="AddUmaMetric"/>
  <variant name="RemoveUrls"/>
  <variant name="RunReadOnlyQueries"/>
  <variant name="StoreUkmEntry"/>
  <variant name="UpdateUrlForUkmSource"/>
</variants>

<variants name="Index">
  <variant name="0" summary="index 0"/>
  <variant name="1" summary="index 1"/>
  <variant name="2" summary="index 2"/>
  <variant name="3" summary="index 3"/>
  <variant name="4" summary="index 4"/>
  <variant name="5" summary="index 5"/>
  <variant name="6" summary="index 6"/>
  <variant name="7" summary="index 7"/>
  <variant name="8" summary="index 8"/>
  <variant name="9" summary="index 9"/>
</variants>

<variants name="ModelExecutionStatus">
  <variant name="ExecutionError"/>
  <variant name="Success"/>
</variants>

<variants name="SegmentationKey">
  <variant name="AdaptiveToolbar"/>
  <variant name="AndroidHomeModuleRanker"/>
  <variant name="ChromeLowUserEngagement"/>
  <variant name="ChromeStartAndroid" summary="(obsolete) Not used since M-127"/>
  <variant name="ChromeStartAndroidV2"
      summary="(obsolete) Not used since M-127"/>
  <variant name="ComposePromotion"/>
  <variant name="ContextualPageActions"/>
  <variant name="CrossDeviceUser"/>
  <variant name="DatabaseApiClients"/>
  <variant name="DesktopNtpModule"/>
  <variant name="DeviceSwitcher"/>
  <variant name="DeviceTier"/>
  <variant name="DummyFeature"/>
  <variant name="EphemeralHomeModuleBackend"/>
  <variant name="FeedUserSegment"/>
  <variant name="FrequentFeatureUser"/>
  <variant name="IntentionalUser"/>
  <variant name="IosModuleRanker"/>
  <variant name="MetricsClustering"/>
  <variant name="MostVisitedTilesUser"/>
  <variant name="PasswordManagerUser"/>
  <variant name="PowerUser"/>
  <variant name="QueryTiles"/>
  <variant name="ResumeHeavyUser"/>
  <variant name="SearchUser"/>
  <variant name="ShoppingUser"/>
  <variant name="TabletProductivityUser"/>
  <variant name="TabResumptionClassifier"/>
  <variant name="URLVisitResumptionRanker"/>
  <variant name="WebAppInstallationPromo"/>
</variants>

<variants name="SegmentationModel">
  <variant name="AdaptiveToolbar"/>
  <variant name="AndroidHomeModuleRanker"/>
  <variant name="ChromeLowUserEngagement"/>
  <variant name="ChromeStartAndroid" summary="(obsolete) Not used since M-127"/>
  <variant name="ChromeStartAndroidV2"
      summary="(obsolete) Not used since M-127"/>
  <variant name="ComposePromotion"/>
  <variant name="ContextualPageActionPriceTracking"/>
  <variant name="CrossDeviceUserSegment"/>
  <variant name="DatabaseApiClients"/>
  <variant name="DesktopNtpModule"/>
  <variant name="DeviceSwitcher"/>
  <variant name="DeviceTierSegment"/>
  <variant name="Dummy"/>
  <variant name="EphemeralHomeModuleBackend"/>
  <variant name="FeedUser"/>
  <variant name="FrequentFeatureUserSegment"/>
  <variant name="IntentionalUserSegment"/>
  <variant name="IosModuleRanker"/>
  <variant name="IosModuleRankerTest"/>
  <variant name="MetricsClustering"/>
  <variant name="MostVisitedTilesUser"/>
  <variant name="NewTab"/>
  <variant name="PasswordManagerUser"/>
  <variant name="PowerUserSegment"/>
  <variant name="QueryTiles"/>
  <variant name="ResumeHeavyUserSegment"/>
  <variant name="SearchUser"/>
  <variant name="Share"/>
  <variant name="ShoppingUser"/>
  <variant name="TabletProductivityUser"/>
  <variant name="TabResumptionClassifier"/>
  <variant name="Unknown"/>
  <variant name="UrlVisitResumptionRanker"/>
  <variant name="Voice"/>
  <variant name="WebAppInstallationPromo"/>
</variants>

<variants name="SignalType">
  <variant name="HistogramEnum" summary="enum histogram"/>
  <variant name="HistogramValue" summary="value histogram"/>
  <variant name="Unknown" summary="unknown"/>
  <variant name="UserAction" summary="user action"/>
</variants>

<variants name="ValidationPhase">
  <variant name="Incoming" summary="before"/>
  <variant name="Processed" summary="after"/>
</variants>

<histogram name="SegmentationPlatform.AdaptiveToolbar.SegmentSelected.Startup"
    enum="AdaptiveToolbarButtonVariant" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the selected segment to be shown for the adaptive toolbar button.
    Recorded on chrome startup.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.AdaptiveToolbar.SegmentSelection.Computed"
    enum="AdaptiveToolbarButtonVariant" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the result of segment selection. Recorded whenever the segment
    selection is updated.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.AdaptiveToolbar.SegmentSwitched"
    enum="AdaptiveToolbarSegmentSwitch" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the segment selection switch from an old value to a new segment
    after a model evaluation completes. Recorded only if the selected segment
    switches to a new value.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.ClassificationRequest.TotalDuration.{SegmentationKey}"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total duration for Classification API call for the given
    {SegmentationKey} including the time required for feature processing and
    model execution as well.

    Starts recording every time the GetClassificationAPI is called for
    {SegmentationKey}. Records the duration when ClassificationResult is
    returned.
  </summary>
  <token key="SegmentationKey" variants="SegmentationKey"/>
</histogram>

<histogram name="SegmentationPlatform.Database.{DatabaseOperation}" units="ms"
    expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from start to end of {DatabaseOperation} call. Recorded in
    `UkmDatabaseBackend::{DatabaseOperation}`.
  </summary>
  <token key="DatabaseOperation" variants="DatabaseOperation"/>
</histogram>

<histogram
    name="SegmentationPlatform.DefaultModelDelivery.Metadata.FeatureCount.{SegmentationModel}"
    units="features" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many tensor features an updated {SegmentationModel} segmentation
    model requires in its metadata. Recorded only for embedded model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.DefaultModelDelivery.Metadata.Validation.{ValidationPhase}.{SegmentationModel}"
    enum="SegmentationPlatformValidationResult" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the result of metadata validation {ValidationPhase} the metadata has
    been merged with the existing metadata for {SegmentationModel}. Recorded
    only for embedded model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
  <token key="ValidationPhase" variants="ValidationPhase"/>
</histogram>

<histogram name="SegmentationPlatform.DefaultModelDelivery.Received"
    enum="SegmentationPlatformSegmentationModel" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records what type of model has been received.

    Recorded every time a model is updated, which can happen at any time, but
    usually happens at least once during startup. Recorded only for embedded
    model.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.DefaultModelDelivery.SaveResult.{SegmentationModel}"
    enum="BooleanSuccess" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether an updated {SegmentationModel} segmentation model was
    successfully saved. Recorded only for embedded model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.DefaultModelDelivery.SegmentIdMatches.{SegmentationModel}"
    enum="BooleanYesNo" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether an updated {SegmentationModel} segmentation model type
    matches what was stored for that type. Recorded only for embedded model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram name="SegmentationPlatform.DeviceCountByOsType.{OsType}"
    units="devices" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of active syncing devices of type {OsType} known to any profile.
    Each device is identified by one unique guid. No deduping is applied. May be
    0 when there are no signed in/syncing profiles open. Recorded once on
    browser startup iff DeviceInfo sync is enabled. Note that the threshold on
    the number of days for determining active statuses may change based on the
    config of the kSegmentationDeviceCountByOsType feature.
  </summary>
  <token key="OsType">
    <variant name="Android"/>
    <variant name="ChromeOsAsh"/>
    <variant name="ChromeOsLacros"/>
    <variant name="Fuchsia"/>
    <variant name="iOS"/>
    <variant name="Linux"/>
    <variant name="Mac"/>
    <variant name="Unknown"/>
    <variant name="Windows"/>
  </token>
</histogram>

<histogram
    name="SegmentationPlatform.FeatureProcessing.Error.{SegmentationModel}"
    enum="SegmentationPlatformFeatureProcessingError"
    expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the feature processing error of segmentation models. Recorded
    whenever an error is encountered during the feature processing stage of the
    {SegmentationModel} model. Used to distinguish between multiple types of
    processing errors.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram name="SegmentationPlatform.Init.CreationToInitializationLatency"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time taken from the platform getting created till the platform finishes
    initialization. Recorded when initialization is done.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.Init.ModelUpdatedTimeDifferenceInDays.{SegmentID}"
    units="days" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time difference in days between when a new version of the model from
    optimization guide is available and when the model is initialized in the
    client for a given {SegmentID}. Recorded at startup for each model to
    identify low values for new users.
  </summary>
  <token key="SegmentID" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.Init.ProcessCreationToServiceCreationLatency"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time taken from process creation till the time segmentation platform was
    created. Recorded once when the platform is created.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.Maintenance.CleanupSignalSuccessCount"
    units="signals" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of signals that were successfully cleaned up during a
    maintenance cycle.

    Recorded every time maintenance is performed.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.Maintenance.CompactionResult.{SignalType}"
    enum="BooleanSuccess" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether an individual {SignalType} signal was successfully
    compacted.

    Recorded for each signal we attempt to clean up for every maintenance cycle.
  </summary>
  <token key="SignalType" variants="SignalType"/>
</histogram>

<histogram name="SegmentationPlatform.Maintenance.SignalIdentifierCount"
    units="ids" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of unique signal identifiers that were found to be used
    when cleaning up and compacting signals.

    Recorded every time maintenance is performed.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.ModelAvailability.{SegmentationModel}"
    enum="SegmentationModelAvailability" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the availability of the segmentation models. Since there is no good
    way to check if a model is available, this histogram records an entry when
    model is requested and one when model is available. The difference should
    show how often a model is not returned.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup. If a
    model becomes no longer available then we'll record a value of 3 (No model
    metadata available) once before deleting the model metadata.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelDelivery.DeleteResult.{SegmentationModel}"
    enum="BooleanSuccess" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether a deleted {SegmentationModel} server segmentation model was
    successfully deleted from the local storage.

    Recorded after deleting the local data of a server model, should only happen
    if a server update removes a model that was stored locally.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelDelivery.HasMetadata.{SegmentationModel}"
    enum="BooleanYesNo" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether an updated {SegmentationModel} segmentation model has
    metadata attached.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelDelivery.Metadata.FeatureCount.{SegmentationModel}"
    units="features" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many tensor features an updated {SegmentationModel} segmentation
    model requires in its metadata. Recorded only for server model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelDelivery.Metadata.Validation.{ValidationPhase}.{SegmentationModel}"
    enum="SegmentationPlatformValidationResult" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the result of metadata validation {ValidationPhase} the metadata has
    been merged with the existing metadata for {SegmentationModel}. Recorded
    only for server model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
  <token key="ValidationPhase" variants="ValidationPhase"/>
</histogram>

<histogram name="SegmentationPlatform.ModelDelivery.Received"
    enum="SegmentationPlatformSegmentationModel" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records what type of model has been received.

    Recorded every time a model is updated, which can happen at any time, but
    usually happens at least once during startup. Recorded only for server
    model.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.ModelDelivery.SaveResult.{SegmentationModel}"
    enum="BooleanSuccess" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether an updated {SegmentationModel} segmentation model was
    successfully saved. Recorded only for server model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelDelivery.SegmentIdMatches.{SegmentationModel}"
    enum="BooleanYesNo" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether an updated {SegmentationModel} segmentation model type
    matches what was stored for that type. Recorded only for server model.

    Recorded every time the {SegmentationModel} model is updated, which can
    happen at any time, but usually happens at least once during startup.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.DefaultProvider.Status.{SegmentationModel}"
    enum="SegmentationPlatformModelExecutionStatus" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the execution status after executing the {SegmentationModel}
    segmentation model with default provider. Recorded every time a default
    provider for {SegmentationModel} is executed.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.Duration.FeatureProcessing.{SegmentationModel}"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the duration it takes to process an individual tensor feature.

    Recorded for each feature every time a {SegmentationModel} segmentation
    model is executed.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.Duration.Model.{SegmentationModel}.{ModelExecutionStatus}"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the duration for executing the {SegmentationModel} segmentation ML
    model when the tensor has already been constructed and filled in.

    Recorded every time a {SegmentationModel} segmentation model is executed
    with {ModelExecutionStatus} as the result.
  </summary>
  <token key="ModelExecutionStatus" variants="ModelExecutionStatus"/>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.Duration.Total.{SegmentationModel}.{ModelExecutionStatus}"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the duration for executing the {SegmentationModel} segmentation
    model from the time the request is received, all data has been loaded from
    the database and processed, the tensor has been filled in, and the ML model
    itself has been executed.

    Recorded every time a {SegmentationModel} segmentation model is executed
    with {ModelExecutionStatus} as the result.
  </summary>
  <token key="ModelExecutionStatus" variants="ModelExecutionStatus"/>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.Result.{Index}.{SegmentationModel}"
    units="score" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the value at index {Index} of the output tensor when executing the
    {SegmentationModel} segmentation model.

    Recorded every time a {SegmentationModel} segmentation model is successfully
    executed.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
  <token key="Index" variants="Index"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.Result.{SegmentationModel}"
    units="score" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the result when executing the {SegmentationModel} segmentation
    model.

    Recorded every time a {SegmentationModel} segmentation model is successfully
    executed.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.SaveResult.{SegmentationModel}"
    enum="BooleanSuccess" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the result from executing the {SegmentationModel}
    segmentation model was successfully saved.

    Recorded every time a {SegmentationModel} segmentation model is successfully
    executed.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.Status.{SegmentationModel}"
    enum="SegmentationPlatformModelExecutionStatus" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the execution status after executing the {SegmentationModel}
    segmentation model.

    Recorded every time a {SegmentationModel} segmentation model is executed.

    Before M100: The ExecutionError could mean either model not available or
    execution failed.

    In M100 in addition to ExecutionError,
    OptimizationGuide.ModelExecutor.ExecutionStatus will also record
    FileNotValid when model is not available.

    M101: SkippedModelNotReady was added which counts execution attempts before
    model was ready, and ExecutionError means the model failed after it was
    ready. Also other cases when execution was skipped are added to this
    histogram (&quot;Skipped*&quot;).
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.ModelExecution.ZeroValuePercent.{SegmentationModel}"
    units="%" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the percent of features in a tensor that are equal to 0 when the
    {SegmentationModel} segmentation model is executed.

    Recorded every time a {SegmentationModel} segmentation model is executed.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.SegmentInfoDatabase.ProtoDBUpdateResult.{SegmentationKey}"
    enum="BooleanSuccess" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records result of persisting SegmentInfo changes to disk. This is separate
    to the SegmentInfoDatabase's callback which runs after updating the
    in-memory cache.

    Recorded for each call to SegmentInfoDatabase::UpdateSegment, which happens
    at least once for each segmentation key on startup and every time training
    data is recorded or cleared.
  </summary>
  <token key="SegmentationKey" variants="SegmentationKey"/>
</histogram>

<histogram
    name="SegmentationPlatform.SegmentSelectionOnDemand.Duration.{SegmentationKey}.{SelectedSegment}"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the duration for running on-demand segment selection for
    {SegmentationKey} which includes feature process and model execution of all
    the models associated with {SegmentationKey}.

    Starts recording every time the on-demand segment selection method is called
    for {SegmentationKey}.

    Any: recorded when any segment was selected. None: recorded when no segment
    was selected.
  </summary>
  <token key="SegmentationKey" variants="SegmentationKey"/>
  <token key="SelectedSegment">
    <variant name="Any"/>
    <variant name="None"/>
  </token>
</histogram>

<histogram name="SegmentationPlatform.SelectionFailedReason"
    enum="SegmentationSelectionFailureReason" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the segmentation platform was unable to return a
    segment selection to any client, or a result was available. Recorded when
    failure is hit when trying to compute selection.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.SelectionFailedReason.{SegmentationKey}"
    enum="SegmentationSelectionFailureReason" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the segmentation platform was unable to return a
    segment selection for {SegmentationKey}, or if a result was available. It
    supports multi output segments and records the reason why segmentation
    platform failed or was successful to return a result both when segments are
    executed at chrome startup and from GetClassificationAPI for both on demand
    and non-ondemand cases. Recorded when failure/success is hit when trying to
    compute selection, or when reading the selected segment from prefs, or when
    result for segment is updated in prefs.
  </summary>
  <token key="SegmentationKey" variants="SegmentationKey"/>
</histogram>

<histogram
    name="SegmentationPlatform.SignalDatabase.GetSamples.DatabaseEntryCount"
    units="entries" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of segmentation signal database entries that were
    successfully retrieved from the database. Since each database entry can
    contain multiple samples, this is different from
    SegmentationPlatform.SignalDatabase.GetSamples.SampleCount.

    Recorded whenever samples are retrieved from the sample database.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.SignalDatabase.GetSamples.Result"
    enum="BooleanSuccess" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether segmentation signal samples were successfully retrieved from
    the database.

    Recorded whenever samples are retrieved from the sample database.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.SignalDatabase.GetSamples.SampleCount"
    units="samples" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of segmentation signal samples that were successfully
    retrieved from the database. Since each database entry can contain multiple
    samples, this is different from
    SegmentationPlatform.SignalDatabase.GetSamples.DatabaseEntryCount.

    Recorded whenever samples are retrieved from the sample database.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.Signals.ListeningCount.{SignalType}"
    units="signals" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records then number of {SignalType} signals the segmentation platform
    currently listens to. Recorded whenever we update the set of {SignalType}
    signals that the segmentation platform is currently listening to.
  </summary>
  <token key="SignalType" variants="SignalType"/>
</histogram>

<histogram name="SegmentationPlatform.StructuredMetrics.TooManyTensors.Count"
    units="tensors" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of input tensors that are causing structured metrics to
    fail to upload due to input size. Recorded immediately after the failure
    when an ML model is reporting structured metrics.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.SyncSessions.RecordTabCountAtSyncUpdate"
    units="tabs" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of tabs that are opened and synced at the sync update.
    Recorded every time on sync session update.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.SyncSessions.TabsCountAtStartup"
    units="tabs" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of tabs that are opened at startup. Recorded once, only
    at startup of chrome.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.SyncSessions.TimeFromStartupToFirstSyncUpdate"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time taken from chrome startup to the time first sync session update is
    received. This includes the network delay for receiving the sync session
    updates. The metric is recorded once after chrome startup if sync is enabled
    and sync session is updated for the first time.
  </summary>
</histogram>

<histogram name="SegmentationPlatform.SyncSessions.TimeFromStartupToSyncUpdate"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time taken from chrome startup to the time sync session update is
    received. This is not recorded for first sync update. This includes the
    network delay for receiving the sync session updates. The metric is recorded
    at each sync update if chrome was started after the remote session was
    updated.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.SyncSessions.TimeFromTabLoadedToSyncUpdate"
    units="ms" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    After chrome startup anytime if a tab is loaded, the time taken from tab
    load time to the time next immediate sync session update is received. This
    includes the network delay for receiving the sync session updates. The
    metric is recorded everytime a tab is loaded and a sync session update is
    recieved after it.
  </summary>
</histogram>

<histogram
    name="SegmentationPlatform.SyncSessions.{TimeInterval}TabCountAtFirstSyncUpdate"
    units="tabs" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records total number of tabs that are opened and synced till the first sync
    session update for the given {TimeInterval}. Recorded once, only if there is
    sync session update for the first time.
  </summary>
  <token key="TimeInterval">
    <variant name="Recent1Day"
        summary="Tabs that are opened and synced since the recent 1 day."/>
    <variant name="Recent1Hour"
        summary="Tabs that are opened and synced since the recent 1 hour."/>
    <variant name="Total"
        summary="Tabs that are opened and synced till the first sync update"/>
  </token>
</histogram>

<histogram
    name="SegmentationPlatform.TrainingDataCollectionEvents.{SegmentationModel}"
    enum="SegmentationPlatformTrainingDataCollectionEvent"
    expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records training data collection events for segmentation platform. Recorded
    when the training data collection flow starts, completes or encountering an
    error.
  </summary>
  <token key="SegmentationModel" variants="SegmentationModel"/>
</histogram>

<histogram name="SegmentationPlatform.{BooleanModel}.SegmentSwitched"
    enum="SegmentationBooleanSegmentSwitch" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the segment selection switch from an old value to a new segment
    after a model evaluation completes. Recorded only if the selected segment
    switches to a new value.
  </summary>
  <token key="BooleanModel" variants="BooleanModel"/>
</histogram>

<histogram
    name="SegmentationPlatform.{SegmentationKey}.PostProcessing.TopLabel.Computed"
    units="index" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the post processed result for multi-output models. The value
    recorded is the index of the top label as defined in the list of labels in
    metadata. Recorded whenever a result is computed by executing model or
    getting valid score from database.
  </summary>
  <token key="SegmentationKey" variants="SegmentationKey"/>
</histogram>

<histogram
    name="SegmentationPlatform.{SegmentationKey}.PostProcessing.TopLabel.Switched"
    units="index" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records change in the the post processed result from an old label to a new
    label after a model evaluation completes. Recorded only if the prefs for the
    segment is expired and switches to a new value. Recorded only for the top
    label in the result.
  </summary>
  <token key="SegmentationKey" variants="SegmentationKey"/>
</histogram>

<histogram
    name="SegmentationPlatform.{SegmentationKey}.SegmentSelection.Computed2"
    enum="SegmentationPlatformSegmentationModel" expires_after="2025-03-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the result of segment selection. Recorded whenever the segment
    selection is updated.
  </summary>
  <token key="SegmentationKey" variants="SegmentationKey"/>
</histogram>

</histograms>

</histogram-configuration>