Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.rubocop_todo/background_migration/missing_dictionary_file.yml4
-rw-r--r--.rubocop_todo/rspec/context_wording.yml1
-rw-r--r--.rubocop_todo/rspec/expect_in_hook.yml1
-rw-r--r--.rubocop_todo/rspec/missing_feature_category.yml1
-rw-r--r--.rubocop_todo/rspec/return_from_stub.yml1
-rw-r--r--GITALY_SERVER_VERSION2
-rw-r--r--app/assets/javascripts/header_search/components/app.vue1
-rw-r--r--app/assets/javascripts/packages_and_registries/shared/utils.js9
-rw-r--r--app/assets/javascripts/pages/projects/blob/show/index.js3
-rw-r--r--app/assets/javascripts/repository/components/fork_info.vue6
-rw-r--r--app/assets/javascripts/repository/index.js2
-rw-r--r--app/assets/javascripts/super_sidebar/super_sidebar_collapsed_state_manager.js2
-rw-r--r--app/assets/javascripts/vue_shared/components/dropdown_keyboard_navigation.vue31
-rw-r--r--app/assets/stylesheets/framework/header.scss18
-rw-r--r--app/assets/stylesheets/framework/system_messages.scss2
-rw-r--r--app/assets/stylesheets/framework/variables.scss4
-rw-r--r--app/assets/stylesheets/pages/registry.scss2
-rw-r--r--app/controllers/projects/tree_controller.rb2
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/graphql/mutations/projects/sync_fork.rb15
-rw-r--r--app/helpers/application_settings_helper.rb1
-rw-r--r--app/helpers/projects_helper.rb1
-rw-r--r--app/models/application_setting.rb3
-rw-r--r--app/validators/json_schemas/build_report_result_data.json5
-rw-r--r--app/validators/json_schemas/build_report_result_data_tests.json12
-rw-r--r--app/views/groups/new.html.haml2
-rw-r--r--app/views/layouts/_page.html.haml4
-rw-r--r--app/views/layouts/nav/_breadcrumbs.html.haml28
-rw-r--r--app/views/layouts/nav/_top_bar.html.haml10
-rw-r--r--app/views/layouts/nav/breadcrumbs/_breadcrumbs.html.haml20
-rw-r--r--app/views/layouts/terms.html.haml2
-rw-r--r--app/views/projects/new.html.haml2
-rw-r--r--app/views/shared/_auto_devops_callout.html.haml2
-rw-r--r--app/views/shared/boards/_show.html.haml2
-rw-r--r--config/initializers/action_mailer_hooks.rb3
-rw-r--r--config/metrics/counts_28d/20210216175055_merge_requests.yml1
-rw-r--r--config/metrics/counts_28d/20210216175057_projects_with_disable_overriding_approvers_per_merge_request.yml1
-rw-r--r--config/metrics/counts_28d/20210216175059_projects_without_disable_overriding_approvers_per_merge_request.yml1
-rw-r--r--config/metrics/counts_28d/20210216175101_merge_requests_users.yml1
-rw-r--r--config/metrics/counts_28d/20210216175109_suggestions.yml1
-rw-r--r--config/metrics/counts_28d/20210216175113_merge_request_action_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175117_i_source_code_code_intelligence_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175120_i_code_review_mr_diffs_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175124_i_code_review_user_single_file_diffs_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175128_i_code_review_mr_single_file_diffs_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175132_i_code_review_user_create_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175136_i_code_review_user_close_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175140_i_code_review_user_reopen_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175144_i_code_review_user_merge_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175148_i_code_review_user_create_mr_comment_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175152_i_code_review_user_edit_mr_comment_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175156_i_code_review_user_remove_mr_comment_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175159_i_code_review_user_add_suggestion_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175203_i_code_review_user_apply_suggestion_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml1
-rw-r--r--config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml1
-rw-r--r--config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml1
-rw-r--r--config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml1
-rw-r--r--config/metrics/counts_28d/20210216175413_clusters_management_project.yml1
-rw-r--r--config/metrics/counts_28d/20210216175415_clusters_disabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175417_clusters_enabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175419_clusters_platforms_gke.yml1
-rw-r--r--config/metrics/counts_28d/20210216175420_clusters_platforms_eks.yml1
-rw-r--r--config/metrics/counts_28d/20210216175422_clusters_platforms_user.yml1
-rw-r--r--config/metrics/counts_28d/20210216175424_instance_clusters_disabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175426_instance_clusters_enabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175428_group_clusters_disabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175430_group_clusters_enabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175432_project_clusters_disabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175434_project_clusters_enabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216175542_ci_builds.yml1
-rw-r--r--config/metrics/counts_28d/20210216175544_ci_external_pipelines.yml1
-rw-r--r--config/metrics/counts_28d/20210216175546_ci_internal_pipelines.yml1
-rw-r--r--config/metrics/counts_28d/20210216175548_ci_pipeline_config_auto_devops.yml1
-rw-r--r--config/metrics/counts_28d/20210216175550_ci_pipeline_config_repository.yml1
-rw-r--r--config/metrics/counts_28d/20210216175552_ci_pipeline_schedules.yml1
-rw-r--r--config/metrics/counts_28d/20210216175554_ci_pipelines.yml1
-rw-r--r--config/metrics/counts_28d/20210216175556_ci_triggers.yml1
-rw-r--r--config/metrics/counts_28d/20210216180308_personal_snippets.yml1
-rw-r--r--config/metrics/counts_28d/20210216180310_project_snippets.yml1
-rw-r--r--config/metrics/counts_28d/20210216180312_snippets.yml1
-rw-r--r--config/metrics/counts_28d/20210216180317_snippets.yml1
-rw-r--r--config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml1
-rw-r--r--config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml1
-rw-r--r--config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml1
-rw-r--r--config/metrics/counts_28d/20210216180325_action_monthly_active_users_sse_edit.yml1
-rw-r--r--config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml1
-rw-r--r--config/metrics/counts_28d/20210216180330_g_edit_by_web_ide_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216180334_g_edit_by_sfe_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216180338_g_edit_by_snippet_ide_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216180341_ide_edit_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216180424_i_search_total_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216180431_search_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml1
-rw-r--r--config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml1
-rw-r--r--config/metrics/counts_28d/20210216180524_projects_with_incidents.yml1
-rw-r--r--config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml1
-rw-r--r--config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216180731_projects_imported_from_github.yml1
-rw-r--r--config/metrics/counts_28d/20210216180745_action_monthly_active_users_design_management.yml1
-rw-r--r--config/metrics/counts_28d/20210216180747_action_monthly_active_users_wiki_repo.yml1
-rw-r--r--config/metrics/counts_28d/20210216180816_groups.yml1
-rw-r--r--config/metrics/counts_28d/20210216180818_users_created.yml1
-rw-r--r--config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml1
-rw-r--r--config/metrics/counts_28d/20210216180956_clusters.yml1
-rw-r--r--config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml1
-rw-r--r--config/metrics/counts_28d/20210216181000_operations_dashboard_default_dashboard.yml1
-rw-r--r--config/metrics/counts_28d/20210216181002_projects_with_tracing_enabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216181004_projects_with_error_tracking_enabled.yml1
-rw-r--r--config/metrics/counts_28d/20210216181006_operations_dashboard_users_with_projects_added.yml1
-rw-r--r--config/metrics/counts_28d/20210216181139_issues.yml1
-rw-r--r--config/metrics/counts_28d/20210216181141_notes.yml1
-rw-r--r--config/metrics/counts_28d/20210216181143_projects.yml1
-rw-r--r--config/metrics/counts_28d/20210216181145_todos.yml1
-rw-r--r--config/metrics/counts_28d/20210216181147_service_desk_enabled_projects.yml1
-rw-r--r--config/metrics/counts_28d/20210216181150_projects_jira_active.yml1
-rw-r--r--config/metrics/counts_28d/20210216181152_projects_jira_dvcs_cloud_active.yml1
-rw-r--r--config/metrics/counts_28d/20210216181154_projects_jira_dvcs_server_active.yml1
-rw-r--r--config/metrics/counts_28d/20210216181158_epics.yml1
-rw-r--r--config/metrics/counts_28d/20210216181200_label_lists.yml1
-rw-r--r--config/metrics/counts_28d/20210216181304_g_project_management_issue_title_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181308_g_project_management_issue_description_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181311_g_project_management_issue_assignee_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181315_g_project_management_issue_made_confidential_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181319_g_project_management_issue_made_visible_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181323_g_project_management_issue_created_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181326_g_project_management_issue_closed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181330_g_project_management_issue_reopened_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181334_g_project_management_issue_label_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181337_g_project_management_issue_milestone_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181348_g_project_management_issue_cross_referenced_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181352_g_project_management_issue_moved_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181356_g_project_management_issue_related_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181400_g_project_management_issue_unrelated_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181403_g_project_management_issue_marked_as_duplicate_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181407_g_project_management_issue_locked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181411_g_project_management_issue_unlocked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181424_g_project_management_issue_designs_added_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181427_g_project_management_issue_designs_modified_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181431_g_project_management_issue_designs_removed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181435_g_project_management_issue_due_date_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181438_g_project_management_issue_time_estimate_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181442_g_project_management_issue_time_spent_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181446_g_project_management_issue_comment_added_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181450_g_project_management_issue_comment_edited_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181453_g_project_management_issue_comment_removed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181501_g_project_management_issue_cloned_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181504_issues_edit_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181508_i_quickactions_approve_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181512_i_quickactions_assign_single_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181516_i_quickactions_assign_multiple_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181519_i_quickactions_assign_self_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181523_i_quickactions_assign_reviewer_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181527_i_quickactions_award_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181530_i_quickactions_board_move_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181541_i_quickactions_clone_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181545_i_quickactions_close_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181549_i_quickactions_confidential_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181553_i_quickactions_copy_metadata_merge_request_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181556_i_quickactions_copy_metadata_issue_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181600_i_quickactions_create_merge_request_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181604_i_quickactions_done_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181607_i_quickactions_draft_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181611_i_quickactions_due_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181615_i_quickactions_duplicate_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181622_i_quickactions_estimate_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181629_i_quickactions_label_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181633_i_quickactions_lock_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181637_i_quickactions_merge_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181641_i_quickactions_milestone_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181644_i_quickactions_move_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181659_i_quickactions_reassign_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181703_i_quickactions_reassign_reviewer_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181707_i_quickactions_rebase_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181710_i_quickactions_relabel_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181714_i_quickactions_relate_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181721_i_quickactions_remove_due_date_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181729_i_quickactions_remove_estimate_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181736_i_quickactions_remove_milestone_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181744_i_quickactions_remove_time_spent_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181747_i_quickactions_remove_zoom_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181751_i_quickactions_reopen_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181755_i_quickactions_shrug_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181758_i_quickactions_spend_subtract_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181802_i_quickactions_spend_add_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181806_i_quickactions_submit_review_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181809_i_quickactions_subscribe_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181813_i_quickactions_tableflip_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181817_i_quickactions_tag_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181821_i_quickactions_target_branch_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181824_i_quickactions_title_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181828_i_quickactions_todo_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181832_i_quickactions_unassign_specific_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181835_i_quickactions_unassign_all_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181839_i_quickactions_unassign_reviewer_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181843_i_quickactions_unlabel_specific_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181846_i_quickactions_unlabel_all_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181850_i_quickactions_unlock_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181854_i_quickactions_unsubscribe_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181901_i_quickactions_wip_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181905_i_quickactions_zoom_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216181923_successful_deployments.yml1
-rw-r--r--config/metrics/counts_28d/20210216181924_failed_deployments.yml1
-rw-r--r--config/metrics/counts_28d/20210216181935_deployments.yml1
-rw-r--r--config/metrics/counts_28d/20210216181937_failed_deployments.yml1
-rw-r--r--config/metrics/counts_28d/20210216181939_releases.yml1
-rw-r--r--config/metrics/counts_28d/20210216181941_successful_deployments.yml1
-rw-r--r--config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml1
-rw-r--r--config/metrics/counts_28d/20210216182034_deploy_keys.yml1
-rw-r--r--config/metrics/counts_28d/20210216182036_keys.yml1
-rw-r--r--config/metrics/counts_28d/20210216182038_remote_mirrors.yml1
-rw-r--r--config/metrics/counts_28d/20210216182040_action_monthly_active_users_project_repo.yml1
-rw-r--r--config/metrics/counts_28d/20210216182041_action_monthly_active_users_git_write.yml1
-rw-r--r--config/metrics/counts_28d/20210216182051_protected_branches.yml1
-rw-r--r--config/metrics/counts_28d/20210216182102_wiki_action_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216182106_design_action_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216182109_project_action_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216182129_sast_pipeline.yml1
-rw-r--r--config/metrics/counts_28d/20210216182131_secret_detection_pipeline.yml1
-rw-r--r--config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216183159_projects_with_alerts_created.yml1
-rw-r--r--config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml1
-rw-r--r--config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml1
-rw-r--r--config/metrics/counts_28d/20210216183627_omniauth_providers.yml1
-rw-r--r--config/metrics/counts_28d/20210216183638_unique_users_all_imports.yml1
-rw-r--r--config/metrics/counts_28d/20210216183640_gitlab.yml1
-rw-r--r--config/metrics/counts_28d/20210216183642_gitlab_v1.yml1
-rw-r--r--config/metrics/counts_28d/20210216183644_gitlab_project.yml1
-rw-r--r--config/metrics/counts_28d/20210216183646_gitlab.yml1
-rw-r--r--config/metrics/counts_28d/20210216183648_github.yml1
-rw-r--r--config/metrics/counts_28d/20210216183650_bitbucket.yml1
-rw-r--r--config/metrics/counts_28d/20210216183652_bitbucket_server.yml1
-rw-r--r--config/metrics/counts_28d/20210216183653_gitea.yml1
-rw-r--r--config/metrics/counts_28d/20210216183655_git.yml1
-rw-r--r--config/metrics/counts_28d/20210216183657_manifest.yml1
-rw-r--r--config/metrics/counts_28d/20210216183659_gitlab_migration.yml1
-rw-r--r--config/metrics/counts_28d/20210216183701_jira.yml1
-rw-r--r--config/metrics/counts_28d/20210216183703_fogbugz.yml1
-rw-r--r--config/metrics/counts_28d/20210216183705_phabricator.yml1
-rw-r--r--config/metrics/counts_28d/20210216183707_csv.yml1
-rw-r--r--config/metrics/counts_28d/20210216183709_group_import.yml1
-rw-r--r--config/metrics/counts_28d/20210216183711_gitlab_migration.yml1
-rw-r--r--config/metrics/counts_28d/20210216183712_total.yml1
-rw-r--r--config/metrics/counts_28d/20210216183714_gitlab_project.yml1
-rw-r--r--config/metrics/counts_28d/20210216183716_gitlab.yml1
-rw-r--r--config/metrics/counts_28d/20210216183718_github.yml1
-rw-r--r--config/metrics/counts_28d/20210216183720_bitbucket.yml1
-rw-r--r--config/metrics/counts_28d/20210216183722_bitbucket_server.yml1
-rw-r--r--config/metrics/counts_28d/20210216183724_gitea.yml1
-rw-r--r--config/metrics/counts_28d/20210216183726_git.yml1
-rw-r--r--config/metrics/counts_28d/20210216183728_manifest.yml1
-rw-r--r--config/metrics/counts_28d/20210216183730_jira.yml1
-rw-r--r--config/metrics/counts_28d/20210216183731_fogbugz.yml1
-rw-r--r--config/metrics/counts_28d/20210216183733_phabricator.yml1
-rw-r--r--config/metrics/counts_28d/20210216183735_csv.yml1
-rw-r--r--config/metrics/counts_28d/20210216183737_groups_imported.yml1
-rw-r--r--config/metrics/counts_28d/20210216183922_search_unique_visits_for_any_target_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184024_g_edit_by_sse_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184047_git_write_action_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184255_i_snippets_show_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184259_p_terraform_state_api_unique_users_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184303_o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184312_i_code_review_user_toggled_task_item_status_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184322_i_code_review_user_approve_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184326_i_code_review_user_unapprove_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184330_i_code_review_user_resolve_thread_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184334_i_code_review_user_unresolve_thread_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184338_i_code_review_edit_mr_title_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184342_i_code_review_edit_mr_desc_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184353_i_code_review_user_create_review_note_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184357_i_code_review_user_publish_review_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184401_i_code_review_user_create_multiline_mr_comment_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184405_i_code_review_user_edit_multiline_mr_comment_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184409_i_code_review_user_remove_multiline_mr_comment_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184418_i_code_review_user_assigned_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184422_i_code_review_user_marked_as_draft_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184426_i_code_review_user_unmarked_as_draft_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184430_i_code_review_user_review_requested_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184434_i_code_review_user_approval_rule_added_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184438_i_code_review_user_approval_rule_deleted_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184442_i_code_review_user_approval_rule_edited_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184446_i_code_review_user_vs_code_api_request_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184450_i_code_review_user_create_mr_from_issue_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184458_p_ci_templates_implicit_auto_devops_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184510_p_ci_templates_implicit_security_sast_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184513_p_ci_templates_implicit_security_secret_detection_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184523_p_ci_templates_auto_devops_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184530_p_ci_templates_aws_deploy_ecs_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184546_p_ci_templates_security_sast_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184551_p_ci_templates_security_secret_detection_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184555_p_ci_templates_terraform_base_latest_monthly.yml1
-rwxr-xr-xconfig/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184803_quickactions_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184941_i_ecosystem_jira_service_close_issue_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184945_i_ecosystem_jira_service_cross_reference_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184957_ecosystem_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210222041219_i_quickactions_invite_email_single_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210222041235_i_quickactions_invite_email_multiple_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210301102134_i_code_review_user_time_estimate_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210301102204_i_code_review_user_time_spent_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210301103859_i_code_review_user_mr_discussion_locked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210301103925_i_code_review_user_mr_discussion_unlocked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210301144228_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210302110520_i_code_review_user_milestone_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210302110607_i_code_review_user_labels_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210302114145_i_code_review_user_assignees_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210302114219_i_code_review_user_reviewers_changed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303150507_i_ecosystem_slack_service_issue_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303150654_i_ecosystem_slack_service_push_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303150912_i_ecosystem_slack_service_deployment_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303151609_i_ecosystem_slack_service_wiki_page_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303151831_i_ecosystem_slack_service_merge_request_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303151946_i_ecosystem_slack_service_note_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303152049_i_ecosystem_slack_service_tag_push_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303152144_i_ecosystem_slack_service_confidential_note_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303152233_i_ecosystem_slack_service_confidential_issue_notification_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303154626_i_package_rubygems_deploy_token_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210303154654_i_package_rubygems_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210409095855_users_expanding_secure_security_report_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210410012206_i_package_terraform_module_deploy_token_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210410012208_i_package_terraform_module_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210421144352_i_code_review_click_single_file_mode_setting_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210421145818_i_code_review_click_file_browser_setting_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210421145945_i_code_review_click_whitespace_setting_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422101516_i_code_review_diff_view_inline_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422101613_i_code_review_diff_view_parallel_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422101753_i_code_review_file_browser_tree_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422101852_i_code_review_file_browser_list_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422101928_i_code_review_diff_show_whitespace_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422102010_i_code_review_diff_hide_whitespace_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422102121_i_code_review_diff_single_file_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210422102202_i_code_review_diff_multiple_files_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210427105033_pipeline_authoring_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210514013545_i_code_review_user_resolve_conflict_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210514013549_i_code_review_user_load_conflict_ui_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210517074859_i_package_helm_deploy_token_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210517075259_i_package_helm_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210607113556_i_code_review_click_diff_view_setting_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210720144005_i_code_review_user_searches_diff_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210721042227_i_quickactions_severity_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210816143831_i_code_review_total_suggestions_added_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210816144453_i_code_review_total_suggestions_applied_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210902191057_i_quickactions_unapprove_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210908150458_i_code_review_user_resolve_thread_in_issue_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210910132229_user_auth_by_provider.yml1
-rw-r--r--config/metrics/counts_28d/20210916080405_promoted_issues.yml1
-rw-r--r--config/metrics/counts_28d/20210916201533_clusters_integrations_prometheus.yml1
-rw-r--r--config/metrics/counts_28d/20211015154445_p_ci_templates_kaniko_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211102141250_i_quickactions_promote_to_incident_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211102205024_p_ci_templates_security_sast_iac_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211102205223_p_ci_templates_implicit_security_sast_iac_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211102213704_p_ci_templates_jobs_sast_iac_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211102213921_p_ci_templates_implicit_jobs_sast_iac_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211104154357_i_code_review_widget_nothing_merge_click_new_file_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211109114953_i_quickactions_add_contacts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211109120251_i_quickactions_remove_contacts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211111162103_i_code_review_post_merge_delete_branch_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211111162422_i_code_review_post_merge_click_revert_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211112102446_i_code_review_post_merge_click_cherry_pick_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211112114333_i_code_review_post_merge_submit_revert_modal_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211112115144_i_code_review_post_merge_submit_cherry_pick_modal_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211122134101_p_ci_templates_implicit_security_dast_api_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211201140658_users_expanding_testing_license_compliance_report_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211201154341_users_visiting_license_compliance_full_report_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211201194407_p_ci_templates_security_dast_api_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211202094237_users_visiting_manage_license_compliance_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20211216083832_users_clicking_license_testing_visiting_external_website_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220121140644_user_jetbrains_api_request_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220202160126_ci_users_executing_deployment_job_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_dependency_scanning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_license_scanning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_dependency_scanning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_license_scanning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220308234005_p_ci_templates_jobs_sast_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220309001640_p_ci_templates_jobs_secret_detection_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220309183501_error_tracking_view_details_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220309195504_error_tracking_view_list_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220310213320_p_ci_templates_implicit_jobs_secret_detection_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220310213749_p_ci_templates_implicit_jobs_sast_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220315223227_error_tracking_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220322194931_users_gitlab_cli_api_request_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220428154012_live_preview.yml1
-rw-r--r--config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220510024223_p_ci_templates_jobs_sast_iac_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220510024223_p_ci_templates_security_sast_iac_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220615103718_incident_management_timeline_event_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220706175117_ci_users_executing_verify_job_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220707022802_users_updating_weight_estimate_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220708162311_i_code_review_merge_request_widget_test_summary_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220708163625_i_code_review_merge_request_widget_test_summary_full_report_clicked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220708164545_i_code_review_merge_request_widget_test_summary_expand_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220708165638_i_code_review_merge_request_widget_test_summary_expand_success_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220708170514_i_code_review_merge_request_widget_test_summary_expand_warning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220708173741_i_code_review_merge_request_widget_test_summary_expand_failed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220715195415_p_ci_templates_security_fortify_fod_sast_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220719133315_p_ci_templates_implicit_security_fortify_fod_sast_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220725193059_users_updating_work_item_dates_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220725210913_i_code_review_merge_request_widget_accessibility_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220725210919_i_code_review_merge_request_widget_accessibility_full_report_clicked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220725210926_i_code_review_merge_request_widget_accessibility_expand_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220725210935_i_code_review_merge_request_widget_accessibility_expand_success_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220725210942_i_code_review_merge_request_widget_accessibility_expand_warning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220725210949_i_code_review_merge_request_widget_accessibility_expand_failed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727020440_i_code_review_merge_request_widget_code_quality_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727020446_i_code_review_merge_request_widget_code_quality_full_report_clicked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727020452_i_code_review_merge_request_widget_code_quality_expand_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727020457_i_code_review_merge_request_widget_code_quality_expand_success_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727020503_i_code_review_merge_request_widget_code_quality_expand_warning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727020509_i_code_review_merge_request_widget_code_quality_expand_failed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727045317_i_code_review_merge_request_widget_terraform_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727045323_i_code_review_merge_request_widget_terraform_full_report_clicked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727045330_i_code_review_merge_request_widget_terraform_expand_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727045336_i_code_review_merge_request_widget_terraform_expand_success_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727045342_i_code_review_merge_request_widget_terraform_expand_warning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220727045349_i_code_review_merge_request_widget_terraform_expand_failed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml1
-rw-r--r--config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml1
-rw-r--r--config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml1
-rw-r--r--config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml1
-rw-r--r--config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml1
-rw-r--r--config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml1
-rw-r--r--config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220825232557_count_user_auth.yml1
-rw-r--r--config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220906065651_incident_management_timeline_event_created_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220906070355_incident_management_timeline_event_edited_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220906070634_incident_management_timeline_event_deleted_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220907032044_i_quickactions_ready_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220913225020_p_ci_templates_security_coverage_fuzzing_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220913225303_p_ci_templates_implicit_security_coverage_fuzzing_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220922042106_users_updating_work_item_iteration_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221006065524_i_quickactions_link_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221007011350_users_updating_work_item_labels_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221031070329_users_updating_work_item_milestone_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221108092725_p_ci_templates_implicit_jobs_container_scanning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221108101211_merge_request_authors_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221121115622_i_code_review_merge_request_widget_security_reports_view_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_expand_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_full_report_clicked_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221121115624_i_code_review_merge_request_widget_security_reports_expand_success_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_failed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_warning_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20221213182900_i_code_review_create_mr_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230105222225_g_project_management_issue_design_comments_removed_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230120094644_g_runner_fleet_read_jobs_statistics_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230123233604_i_ci_secrets_management_id_tokens_build_created_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230129134935_i_container_registry_push_tag_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230129135520_i_container_registry_delete_tag_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230129135748_i_container_registry_push_repository_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230129140646_i_container_registry_delete_repository_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230129140954_i_container_registry_create_repository_user_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230130074932_p_ci_templates_terraform_module_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230130075614_p_ci_templates_terraform_module_base_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230215180530_p_ci_templates_security_api_discovery_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230217215050_ci_internal_pipelines.yml1
-rw-r--r--config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_with_failures.yml1
-rw-r--r--config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_without_failures.yml1
-rw-r--r--config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_with_failures.yml1
-rw-r--r--config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_without_failures.yml1
-rw-r--r--config/metrics/counts_28d/20230306134018_github_import_project_cancelled_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20230306134609_github_import_project_partially_completed_monthly.yml1
-rw-r--r--config/metrics/license/20210201124932_recorded_at.yml1
-rw-r--r--config/metrics/license/20210201124933_uuid.yml1
-rw-r--r--config/metrics/license/20210204124827_hostname.yml1
-rw-r--r--config/metrics/license/20210204124829_active_user_count.yml1
-rw-r--r--config/metrics/license/20210204124928_version.yml1
-rw-r--r--config/metrics/license/20210204124936_pages_version.yml1
-rw-r--r--config/metrics/license/20210204124938_recording_ce_finished_at.yml1
-rw-r--r--config/metrics/license/20210216175601_version.yml1
-rw-r--r--config/metrics/license/20210216175602_installation_type.yml1
-rw-r--r--config/metrics/license/20230314161014_gitlab_dedicated.yml1
-rw-r--r--config/metrics/settings/20210201124935_database_adapter.yml1
-rw-r--r--config/metrics/settings/20210204124856_instance_auto_devops_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124902_gitlab_shared_runners_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124904_gravatar_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124906_ldap_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124908_mattermost_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124910_omniauth_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124916_reply_by_email_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124918_signup_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124920_web_ide_clientside_preview_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124922_grafana_link_enabled.yml1
-rw-r--r--config/metrics/settings/20210204124934_pages_enabled.yml1
-rw-r--r--config/metrics/settings/20210216174829_smtp_server.yml1
-rw-r--r--config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml1
-rw-r--r--config/metrics/settings/20210216175604_edition.yml1
-rw-r--r--config/metrics/settings/20210216175606_ldap_encrypted_secrets_enabled.yml1
-rw-r--r--config/metrics/settings/20210216175609_version.yml1
-rw-r--r--config/metrics/settings/20210216180314_gitpod_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180836_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180838_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180840_direct_upload.yml1
-rw-r--r--config/metrics/settings/20210216180841_background_upload.yml1
-rw-r--r--config/metrics/settings/20210216180843_provider.yml1
-rw-r--r--config/metrics/settings/20210216180845_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180847_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180849_direct_upload.yml1
-rw-r--r--config/metrics/settings/20210216180851_background_upload.yml1
-rw-r--r--config/metrics/settings/20210216180852_provider.yml1
-rw-r--r--config/metrics/settings/20210216180854_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180856_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180858_direct_upload.yml1
-rw-r--r--config/metrics/settings/20210216180900_background_upload.yml1
-rw-r--r--config/metrics/settings/20210216180902_provider.yml1
-rw-r--r--config/metrics/settings/20210216180903_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180905_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180907_direct_upload.yml1
-rw-r--r--config/metrics/settings/20210216180909_background_upload.yml1
-rw-r--r--config/metrics/settings/20210216180911_provider.yml1
-rw-r--r--config/metrics/settings/20210216180913_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180915_enabled.yml1
-rw-r--r--config/metrics/settings/20210216180916_direct_upload.yml1
-rw-r--r--config/metrics/settings/20210216180918_background_upload.yml1
-rw-r--r--config/metrics/settings/20210216180920_provider.yml1
-rw-r--r--config/metrics/settings/20210216183241_filesystems.yml1
-rw-r--r--config/metrics/settings/20210225045628_operating_system.yml1
-rw-r--r--config/metrics/settings/20210321224827_gitaly_apdex.yml1
-rw-r--r--config/metrics/settings/20210702140138_collected_data_categories.yml1
-rw-r--r--config/metrics/settings/20210915152326_service_ping_features_enabled.yml1
-rw-r--r--config/metrics/settings/20211201012652_flavor.yml1
-rw-r--r--config/metrics/settings/20221015152126_deactivate_dormant_users_enabled.yml1
-rw-r--r--config/metrics/settings/20221015161233_deactivate_dormant_users_period.yml1
-rw-r--r--config/metrics/settings/20230125220526_incoming_email_encrypted_secrets_enabled.yml1
-rw-r--r--config/metrics/settings/20230125221700_service_desk_email_encrypted_secrets_enabled.yml1
-rw-r--r--config/metrics/settings/20230203164341_index_inconsistencies_metric.yml1
-rw-r--r--db/migrate/20230323021618_add_silent_mode_enabled_to_application_settings.rb7
-rw-r--r--db/schema_migrations/202303230216181
-rw-r--r--db/structure.sql1
-rw-r--r--doc/.vale/gitlab/spelling-exceptions.txt2
-rw-r--r--doc/administration/auth/ldap/ldap_synchronization.md2
-rw-r--r--doc/administration/silent_mode/index.md64
-rw-r--r--doc/api/settings.md13
-rw-r--r--lib/gitlab/database/schema_validation/database.rb38
-rw-r--r--lib/gitlab/database/schema_validation/schema_objects/table.rb25
-rw-r--r--lib/gitlab/database/schema_validation/structure_sql.rb16
-rw-r--r--lib/gitlab/database/schema_validation/validators/base_validator.rb2
-rw-r--r--lib/gitlab/database/schema_validation/validators/extra_tables.rb21
-rw-r--r--lib/gitlab/database/schema_validation/validators/missing_tables.rb21
-rw-r--r--lib/gitlab/email/hook/silent_mode_interceptor.rb27
-rw-r--r--qa/qa/page/component/breadcrumbs.rb2
-rw-r--r--qa/qa/page/component/snippet.rb2
-rw-r--r--qa/qa/page/project/pipeline/show.rb2
-rw-r--r--qa/qa/page/project/sub_menus/common.rb2
-rw-r--r--spec/features/search/user_uses_header_search_field_spec.rb2
-rw-r--r--spec/fixtures/structure.sql69
-rw-r--r--spec/frontend/access_tokens/index_spec.js2
-rw-r--r--spec/frontend/admin/abuse_reports/components/abuse_report_actions_spec.js4
-rw-r--r--spec/frontend/alerts_settings/components/alerts_settings_form_spec.js2
-rw-r--r--spec/frontend/alerts_settings/components/alerts_settings_wrapper_spec.js2
-rw-r--r--spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js4
-rw-r--r--spec/frontend/artifacts_settings/components/keep_latest_artifact_checkbox_spec.js4
-rw-r--r--spec/frontend/authentication/webauthn/components/registration_spec.js2
-rw-r--r--spec/frontend/batch_comments/components/review_bar_spec.js4
-rw-r--r--spec/frontend/blob/components/blob_edit_header_spec.js2
-rw-r--r--spec/frontend/blob/file_template_selector_spec.js2
-rw-r--r--spec/frontend/boards/board_card_inner_spec.js4
-rw-r--r--spec/frontend/boards/components/board_card_spec.js6
-rw-r--r--spec/frontend/boards/components/board_column_spec.js2
-rw-r--r--spec/frontend/boards/components/board_content_sidebar_spec.js2
-rw-r--r--spec/frontend/boards/components/board_filtered_search_spec.js2
-rw-r--r--spec/frontend/boards/components/board_form_spec.js2
-rw-r--r--spec/frontend/boards/components/board_list_header_spec.js4
-rw-r--r--spec/frontend/boards/components/boards_selector_spec.js6
-rw-r--r--spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js2
-rw-r--r--spec/frontend/boards/stores/actions_spec.js2
-rw-r--r--spec/frontend/branches/components/delete_branch_modal_spec.js2
-rw-r--r--spec/frontend/captcha/captcha_modal_spec.js6
-rw-r--r--spec/frontend/captcha/init_recaptcha_script_spec.js2
-rw-r--r--spec/frontend/ci/ci_variable_list/components/ci_environments_dropdown_spec.js2
-rw-r--r--spec/frontend/ci/ci_variable_list/components/ci_variable_shared_spec.js2
-rw-r--r--spec/frontend/clusters/agents/components/create_token_modal_spec.js2
-rw-r--r--spec/frontend/clusters_list/components/install_agent_modal_spec.js2
-rw-r--r--spec/frontend/comment_templates/components/list_item_spec.js2
-rw-r--r--spec/frontend/commit/commit_box_pipeline_mini_graph_spec.js2
-rw-r--r--spec/frontend/commit/components/commit_box_pipeline_status_spec.js2
-rw-r--r--spec/frontend/content_editor/components/bubble_menus/code_block_bubble_menu_spec.js6
-rw-r--r--spec/frontend/content_editor/components/bubble_menus/link_bubble_menu_spec.js8
-rw-r--r--spec/frontend/content_editor/components/bubble_menus/media_bubble_menu_spec.js8
-rw-r--r--spec/frontend/content_editor/components/content_editor_alert_spec.js2
-rw-r--r--spec/frontend/content_editor/components/toolbar_more_dropdown_spec.js2
-rw-r--r--spec/frontend/content_editor/components/wrappers/code_block_spec.js4
-rw-r--r--spec/frontend/content_editor/components/wrappers/details_spec.js2
-rw-r--r--spec/frontend/content_editor/components/wrappers/footnote_definition_spec.js2
-rw-r--r--spec/frontend/content_editor/components/wrappers/reference_label_spec.js2
-rw-r--r--spec/frontend/content_editor/components/wrappers/reference_spec.js2
-rw-r--r--spec/frontend/content_editor/components/wrappers/table_cell_base_spec.js6
-rw-r--r--spec/frontend/content_editor/components/wrappers/table_cell_body_spec.js2
-rw-r--r--spec/frontend/content_editor/components/wrappers/table_cell_header_spec.js2
-rw-r--r--spec/frontend/content_editor/components/wrappers/table_of_contents_spec.js2
-rw-r--r--spec/frontend/content_editor/markdown_snapshot_spec.js6
-rw-r--r--spec/frontend/content_editor/services/content_editor_spec.js4
-rw-r--r--spec/frontend/content_editor/services/create_content_editor_spec.js2
-rw-r--r--spec/frontend/content_editor/services/gl_api_markdown_deserializer_spec.js2
-rw-r--r--spec/frontend/content_editor/services/track_input_rules_and_shortcuts_spec.js4
-rw-r--r--spec/frontend/custom_metrics/components/custom_metrics_form_fields_spec.js2
-rw-r--r--spec/frontend/design_management/components/design_notes/design_discussion_spec.js2
-rw-r--r--spec/frontend/design_management/components/design_notes/design_note_spec.js2
-rw-r--r--spec/frontend/design_management/components/design_notes/design_reply_form_spec.js2
-rw-r--r--spec/frontend/design_management/components/design_scaler_spec.js2
-rw-r--r--spec/frontend/design_management/components/design_todo_button_spec.js4
-rw-r--r--spec/frontend/design_management/pages/design/index_spec.js2
-rw-r--r--spec/frontend/design_management/pages/index_spec.js2
-rw-r--r--spec/frontend/diffs/components/app_spec.js2
-rw-r--r--spec/frontend/diffs/components/diff_file_spec.js4
-rw-r--r--spec/frontend/drawio/drawio_editor_spec.js8
-rw-r--r--spec/frontend/editor/components/source_editor_toolbar_button_spec.js4
-rw-r--r--spec/frontend/emoji/awards_app/store/actions_spec.js4
-rw-r--r--spec/frontend/environments/environment_details/page_spec.js4
-rw-r--r--spec/frontend/environments/environment_folder_spec.js2
-rw-r--r--spec/frontend/environments/environment_stop_spec.js2
-rw-r--r--spec/frontend/environments/environments_app_spec.js2
-rw-r--r--spec/frontend/environments/stop_stale_environments_modal_spec.js4
-rw-r--r--spec/frontend/feature_flags/components/configure_feature_flags_modal_spec.js8
-rw-r--r--spec/frontend/feature_flags/components/feature_flags_spec.js4
-rw-r--r--spec/frontend/frequent_items/components/frequent_items_list_spec.js2
-rw-r--r--spec/frontend/groups/components/groups_spec.js2
-rw-r--r--spec/frontend/helpers/init_simple_app_helper_spec.js6
-rw-r--r--spec/frontend/ide/components/activity_bar_spec.js4
-rw-r--r--spec/frontend/ide/components/commit_sidebar/form_spec.js2
-rw-r--r--spec/frontend/ide/components/commit_sidebar/list_spec.js2
-rw-r--r--spec/frontend/ide/components/ide_review_spec.js2
-rw-r--r--spec/frontend/ide/components/ide_spec.js2
-rw-r--r--spec/frontend/ide/components/repo_editor_spec.js14
-rw-r--r--spec/frontend/ide/components/shared/commit_message_field_spec.js2
-rw-r--r--spec/frontend/import_entities/import_groups/components/import_actions_cell_spec.js4
-rw-r--r--spec/frontend/import_entities/import_groups/components/import_table_spec.js2
-rw-r--r--spec/frontend/import_entities/import_groups/graphql/client_factory_spec.js2
-rw-r--r--spec/frontend/incidents/components/incidents_list_spec.js2
-rw-r--r--spec/frontend/integrations/edit/components/integration_form_spec.js2
-rw-r--r--spec/frontend/integrations/edit/components/jira_issues_fields_spec.js5
-rw-r--r--spec/frontend/invite_members/components/invite_members_modal_spec.js2
-rw-r--r--spec/frontend/issuable/popover/components/mr_popover_spec.js4
-rw-r--r--spec/frontend/issuable/related_issues/components/add_issuable_form_spec.js2
-rw-r--r--spec/frontend/issues/list/components/issues_list_app_spec.js4
-rw-r--r--spec/frontend/issues/show/components/app_spec.js2
-rw-r--r--spec/frontend/issues/show/components/description_spec.js2
-rw-r--r--spec/frontend/issues/show/components/header_actions_spec.js2
-rw-r--r--spec/frontend/issues/show/components/incidents/incident_tabs_spec.js2
-rw-r--r--spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js2
-rw-r--r--spec/frontend/issues/show/components/locked_warning_spec.js4
-rw-r--r--spec/frontend/read_more_spec.js2
-rw-r--r--spec/frontend/releases/components/app_index_spec.js4
-rw-r--r--spec/frontend/releases/components/tag_field_new_spec.js10
-rw-r--r--spec/frontend/repository/components/delete_blob_modal_spec.js8
-rw-r--r--spec/frontend/repository/components/fork_info_spec.js22
-rw-r--r--spec/frontend/repository/components/last_commit_spec.js2
-rw-r--r--spec/frontend/repository/components/new_directory_modal_spec.js2
-rw-r--r--spec/frontend/repository/components/preview/index_spec.js2
-rw-r--r--spec/frontend/repository/components/table/row_spec.js2
-rw-r--r--spec/frontend/repository/components/tree_content_spec.js2
-rw-r--r--spec/frontend/repository/mock_data.js1
-rw-r--r--spec/frontend/scripts/frontend/po_to_json_spec.js6
-rw-r--r--spec/frontend/search/sidebar/components/checkbox_filter_spec.js2
-rw-r--r--spec/frontend/search/topbar/components/searchable_dropdown_spec.js2
-rw-r--r--spec/frontend/security_configuration/components/app_spec.js2
-rw-r--r--spec/frontend/security_configuration/components/training_provider_list_spec.js2
-rw-r--r--spec/frontend/sentry/sentry_browser_wrapper_spec.js2
-rw-r--r--spec/frontend/sidebar/components/date/sidebar_date_widget_spec.js4
-rw-r--r--spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view_spec.js4
-rw-r--r--spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_header_spec.js4
-rw-r--r--spec/frontend/sidebar/components/labels/labels_select_widget/labels_select_root_spec.js2
-rw-r--r--spec/frontend/sidebar/components/move/issuable_move_dropdown_spec.js4
-rw-r--r--spec/frontend/sidebar/components/move/move_issues_button_spec.js2
-rw-r--r--spec/frontend/sidebar/components/severity/sidebar_severity_widget_spec.js2
-rw-r--r--spec/frontend/sidebar/components/time_tracking/time_tracker_spec.js2
-rw-r--r--spec/frontend/sidebar/components/toggle/toggle_sidebar_spec.js2
-rw-r--r--spec/frontend/snippets/components/edit_spec.js2
-rw-r--r--spec/frontend/snippets/components/snippet_header_spec.js2
-rw-r--r--spec/frontend/super_sidebar/components/user_bar_spec.js2
-rw-r--r--spec/frontend/surveys/merge_request_performance/app_spec.js28
-rw-r--r--spec/frontend/terraform/components/states_table_actions_spec.js2
-rw-r--r--spec/frontend/test_setup.js2
-rw-r--r--spec/frontend/toggles/index_spec.js2
-rw-r--r--spec/frontend/user_lists/components/edit_user_list_spec.js2
-rw-r--r--spec/frontend/user_lists/components/user_lists_spec.js2
-rw-r--r--spec/frontend/user_popovers_spec.js8
-rw-r--r--spec/frontend/vue_shared/components/dropdown_keyboard_navigation_spec.js19
-rw-r--r--spec/helpers/projects_helper_spec.rb2
-rw-r--r--spec/lib/gitlab/database/schema_validation/database_spec.rb137
-rw-r--r--spec/lib/gitlab/database/schema_validation/schema_objects/table_spec.rb17
-rw-r--r--spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb100
-rw-r--r--spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb2
-rw-r--r--spec/lib/gitlab/database/schema_validation/validators/extra_tables_spec.rb7
-rw-r--r--spec/lib/gitlab/database/schema_validation/validators/missing_tables_spec.rb9
-rw-r--r--spec/lib/gitlab/email/hook/silent_mode_interceptor_spec.rb74
-rw-r--r--spec/lib/gitlab/error_tracking_spec.rb43
-rw-r--r--spec/models/application_setting_spec.rb3
-rw-r--r--spec/models/ci/build_report_result_spec.rb13
-rw-r--r--spec/requests/api/graphql/mutations/projects/sync_fork_spec.rb14
-rw-r--r--spec/requests/api/settings_spec.rb5
-rw-r--r--spec/support/rspec_order_todo.yml1
-rw-r--r--spec/support/shared_examples/lib/gitlab/database/table_validators_shared_examples.rb84
732 files changed, 1036 insertions, 999 deletions
diff --git a/.rubocop_todo/background_migration/missing_dictionary_file.yml b/.rubocop_todo/background_migration/missing_dictionary_file.yml
deleted file mode 100644
index c065a1ac3aa..00000000000
--- a/.rubocop_todo/background_migration/missing_dictionary_file.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-# Grace period will be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/395354
-BackgroundMigration/MissingDictionaryFile:
- Details: grace period
diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml
index 650e2c2df4c..63b24a04c56 100644
--- a/.rubocop_todo/rspec/context_wording.yml
+++ b/.rubocop_todo/rspec/context_wording.yml
@@ -1848,7 +1848,6 @@ RSpec/ContextWording:
- 'spec/lib/gitlab/encoding_helper_spec.rb'
- 'spec/lib/gitlab/error_tracking/context_payload_generator_spec.rb'
- 'spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb'
- - 'spec/lib/gitlab/error_tracking_spec.rb'
- 'spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb'
- 'spec/lib/gitlab/external_authorization/access_spec.rb'
- 'spec/lib/gitlab/favicon_spec.rb'
diff --git a/.rubocop_todo/rspec/expect_in_hook.yml b/.rubocop_todo/rspec/expect_in_hook.yml
index 7a3aea07707..d3dc36a7475 100644
--- a/.rubocop_todo/rspec/expect_in_hook.yml
+++ b/.rubocop_todo/rspec/expect_in_hook.yml
@@ -223,7 +223,6 @@ RSpec/ExpectInHook:
- 'spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb'
- 'spec/lib/gitlab/diff/highlight_cache_spec.rb'
- 'spec/lib/gitlab/email/service_desk_receiver_spec.rb'
- - 'spec/lib/gitlab/error_tracking_spec.rb'
- 'spec/lib/gitlab/faraday/error_callback_spec.rb'
- 'spec/lib/gitlab/git/repository_spec.rb'
- 'spec/lib/gitlab/git_access_snippet_spec.rb'
diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml
index 6a520617cf3..5790af0ac12 100644
--- a/.rubocop_todo/rspec/missing_feature_category.yml
+++ b/.rubocop_todo/rspec/missing_feature_category.yml
@@ -3809,7 +3809,6 @@ RSpec/MissingFeatureCategory:
- 'spec/lib/gitlab/error_tracking/processor/sanitizer_processor_spec.rb'
- 'spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb'
- 'spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb'
- - 'spec/lib/gitlab/error_tracking_spec.rb'
- 'spec/lib/gitlab/etag_caching/middleware_spec.rb'
- 'spec/lib/gitlab/etag_caching/router/graphql_spec.rb'
- 'spec/lib/gitlab/etag_caching/router/rails_spec.rb'
diff --git a/.rubocop_todo/rspec/return_from_stub.yml b/.rubocop_todo/rspec/return_from_stub.yml
index 17c72133549..2b39bcbcd07 100644
--- a/.rubocop_todo/rspec/return_from_stub.yml
+++ b/.rubocop_todo/rspec/return_from_stub.yml
@@ -146,7 +146,6 @@ RSpec/ReturnFromStub:
- 'spec/lib/gitlab/diff/file_spec.rb'
- 'spec/lib/gitlab/email/message/build_ios_app_guide_spec.rb'
- 'spec/lib/gitlab/email/message/in_product_marketing/helper_spec.rb'
- - 'spec/lib/gitlab/error_tracking_spec.rb'
- 'spec/lib/gitlab/exclusive_lease_helpers/sleeping_lock_spec.rb'
- 'spec/lib/gitlab/exclusive_lease_helpers_spec.rb'
- 'spec/lib/gitlab/external_authorization_spec.rb'
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index 3bca8981b9c..3d5723f0c07 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-0cea93e3c9f6648076ed36ee9218e003c6402c19
+08d6ba069ecf285bab9fe3162884ffe3c5b243d0
diff --git a/app/assets/javascripts/header_search/components/app.vue b/app/assets/javascripts/header_search/components/app.vue
index 306183ebcca..aa349186014 100644
--- a/app/assets/javascripts/header_search/components/app.vue
+++ b/app/assets/javascripts/header_search/components/app.vue
@@ -286,6 +286,7 @@ export default {
:max="searchOptions.length - 1"
:min="$options.FIRST_DROPDOWN_INDEX"
:default-index="defaultIndex"
+ :enable-cycle="true"
/>
<header-search-default-items
v-if="showDefaultItems"
diff --git a/app/assets/javascripts/packages_and_registries/shared/utils.js b/app/assets/javascripts/packages_and_registries/shared/utils.js
index 76623377d90..adffab277cc 100644
--- a/app/assets/javascripts/packages_and_registries/shared/utils.js
+++ b/app/assets/javascripts/packages_and_registries/shared/utils.js
@@ -55,15 +55,6 @@ export const renderBreadcrumb = (router, apolloProvider, RegistryBreadcrumb) =>
RegistryBreadcrumb,
},
render(createElement) {
- // FIXME(@tnir): this is a workaround until the MR gets merged:
- // https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48115
- const parentEl = breadCrumbEl.parentElement.parentElement;
- if (parentEl) {
- parentEl.classList.remove('breadcrumbs-container');
- parentEl.classList.add('gl-display-flex');
- parentEl.classList.add('w-100');
- }
- // End of FIXME(@tnir)
return createElement('registry-breadcrumb', {
class: breadCrumbEl.className,
props: {
diff --git a/app/assets/javascripts/pages/projects/blob/show/index.js b/app/assets/javascripts/pages/projects/blob/show/index.js
index 2f8c2a8e86f..6d5460da2e5 100644
--- a/app/assets/javascripts/pages/projects/blob/show/index.js
+++ b/app/assets/javascripts/pages/projects/blob/show/index.js
@@ -17,6 +17,7 @@ import createStore from '~/code_navigation/store';
import { generateRefDestinationPath } from '~/repository/utils/ref_switcher_utils';
import RefSelector from '~/ref/components/ref_selector.vue';
import { joinPaths, visitUrl } from '~/lib/utils/url_utility';
+import { parseBoolean } from '~/lib/utils/common_utils';
Vue.use(Vuex);
Vue.use(VueApollo);
@@ -100,6 +101,7 @@ const initForkInfo = () => {
sourceName,
sourcePath,
sourceDefaultBranch,
+ canSyncBranch,
aheadComparePath,
behindComparePath,
canUserCreateMrInFork,
@@ -110,6 +112,7 @@ const initForkInfo = () => {
render(h) {
return h(ForkInfo, {
props: {
+ canSyncBranch: parseBoolean(canSyncBranch),
projectPath,
selectedBranch,
sourceName,
diff --git a/app/assets/javascripts/repository/components/fork_info.vue b/app/assets/javascripts/repository/components/fork_info.vue
index a7795c8da0a..07a29bd3b96 100644
--- a/app/assets/javascripts/repository/components/fork_info.vue
+++ b/app/assets/javascripts/repository/components/fork_info.vue
@@ -94,6 +94,11 @@ export default {
required: false,
default: '',
},
+ canSyncBranch: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
aheadComparePath: {
type: String,
required: false,
@@ -187,6 +192,7 @@ export default {
hasUpdateButton() {
return (
this.glFeatures.synchronizeFork &&
+ this.canSyncBranch &&
((this.sourceName && this.forkDetails && this.behind) || this.isUnknownDivergence)
);
},
diff --git a/app/assets/javascripts/repository/index.js b/app/assets/javascripts/repository/index.js
index b1217881bc3..b5568393313 100644
--- a/app/assets/javascripts/repository/index.js
+++ b/app/assets/javascripts/repository/index.js
@@ -75,6 +75,7 @@ export default function setupVueRepositoryList() {
sourcePath,
sourceDefaultBranch,
createMrPath,
+ canSyncBranch,
aheadComparePath,
behindComparePath,
canUserCreateMrInFork,
@@ -85,6 +86,7 @@ export default function setupVueRepositoryList() {
render(h) {
return h(ForkInfo, {
props: {
+ canSyncBranch: parseBoolean(canSyncBranch),
projectPath,
selectedBranch,
sourceName,
diff --git a/app/assets/javascripts/super_sidebar/super_sidebar_collapsed_state_manager.js b/app/assets/javascripts/super_sidebar/super_sidebar_collapsed_state_manager.js
index 3d798d278bf..ba5495ba014 100644
--- a/app/assets/javascripts/super_sidebar/super_sidebar_collapsed_state_manager.js
+++ b/app/assets/javascripts/super_sidebar/super_sidebar_collapsed_state_manager.js
@@ -32,7 +32,7 @@ const hide = (sidebar, toggle, isUserAction) => {
setTimeout(() => {
sidebar.classList.add(SIDEBAR_VISIBILITY_CLASS);
if (isUserAction) {
- toggle.focus();
+ toggle?.focus();
}
}, SIDEBAR_TRANSITION_DURATION);
};
diff --git a/app/assets/javascripts/vue_shared/components/dropdown_keyboard_navigation.vue b/app/assets/javascripts/vue_shared/components/dropdown_keyboard_navigation.vue
index 1da84df022f..b920af593df 100644
--- a/app/assets/javascripts/vue_shared/components/dropdown_keyboard_navigation.vue
+++ b/app/assets/javascripts/vue_shared/components/dropdown_keyboard_navigation.vue
@@ -27,6 +27,12 @@ export default {
type: Number,
required: true,
},
+ /* enable possibility to cycle around */
+ enableCycle: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
},
watch: {
max() {
@@ -64,15 +70,34 @@ export default {
return;
}
- const nextIndex = Math.max(this.min, Math.min(this.index + val, this.max));
+ let nextIndex = Math.max(this.min, Math.min(this.index + val, this.max));
- // Return if the index didn't change
if (nextIndex === this.index) {
- return;
+ // Return if the index didn't change and cycle is not enabled
+ if (!this.enableCycle) {
+ return;
+ }
+ // Update nextIndex if the cycle is enabled
+ nextIndex = this.cycle(nextIndex, val);
}
this.$emit('change', nextIndex);
},
+ cycle(nextIndex, val) {
+ if (val === 1 && nextIndex === this.max) {
+ // if we are moving down +1 and we reached bottom (max)
+ // return top most index (min)
+ return this.min;
+ }
+
+ if (val === -1 && nextIndex === this.min) {
+ // if we are moving up -1 and we reached top (min)
+ // return bottom most index (max)
+ return this.max;
+ }
+
+ return nextIndex;
+ },
},
render() {
return this.$scopedSlots.default?.();
diff --git a/app/assets/stylesheets/framework/header.scss b/app/assets/stylesheets/framework/header.scss
index 4eb5a686d43..0d18835ac0f 100644
--- a/app/assets/stylesheets/framework/header.scss
+++ b/app/assets/stylesheets/framework/header.scss
@@ -312,22 +312,12 @@ $search-input-field-x-min-width: 200px;
margin-top: $dropdown-vertical-offset;
}
-.breadcrumbs {
- display: flex;
- min-height: $breadcrumb-min-height;
- color: $gl-text-color;
-}
-
-.breadcrumbs-container {
- display: flex;
- width: 100%;
- padding-top: $gl-padding / 2;
- padding-bottom: $gl-padding / 2;
- align-items: center;
+.top-bar-container {
+ min-height: $top-bar-height;
border-bottom: 1px solid $border-color;
}
-.breadcrumbs-links {
+.breadcrumbs {
flex: 1;
min-width: 0;
align-self: center;
@@ -549,7 +539,7 @@ $search-input-field-x-min-width: 200px;
@include media-breakpoint-down(sm) {
@include gl-display-block;
- + .breadcrumbs-links {
+ + .breadcrumbs {
@include gl-pl-4;
@include gl-border-l-1;
@include gl-border-l-solid;
diff --git a/app/assets/stylesheets/framework/system_messages.scss b/app/assets/stylesheets/framework/system_messages.scss
index 06532d6e1f5..db59a482c64 100644
--- a/app/assets/stylesheets/framework/system_messages.scss
+++ b/app/assets/stylesheets/framework/system_messages.scss
@@ -68,7 +68,7 @@
.boards-list,
.board-swimlanes {
- height: calc(100vh - (#{$header-height} + #{$breadcrumb-min-height} + #{$performance-bar-height} + #{$system-footer-height} + #{$gl-padding-32}));
+ height: calc(100vh - (#{$header-height} + #{$top-bar-height} + #{$performance-bar-height} + #{$system-footer-height} + #{$gl-padding-32}));
}
}
diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss
index a4d9bcccb38..d9e36735f2c 100644
--- a/app/assets/stylesheets/framework/variables.scss
+++ b/app/assets/stylesheets/framework/variables.scss
@@ -484,7 +484,7 @@ $mr-review-bar-height: calc(2rem + 13px);
$flash-height: 52px;
$flash-container-top: 48px;
$context-header-height: 60px;
-$breadcrumb-min-height: 48px;
+$top-bar-height: 48px;
$home-panel-title-row-height: 64px;
$home-panel-avatar-mobile-size: 24px;
$issuable-title-max-width: 350px;
@@ -694,7 +694,7 @@ $issue-boards-filter-height: 68px;
The following heights are used in environment_logs.scss and are used for calculation of the log viewer height.
*/
$environment-logs-breadcrumbs-height: 63px;
-$environment-logs-breadcrumbs-height-md: $breadcrumb-min-height;
+$environment-logs-breadcrumbs-height-md: $top-bar-height;
$environment-logs-difference-xs-up: calc(#{$header-height} + #{$environment-logs-breadcrumbs-height});
$environment-logs-difference-md-up: calc(#{$header-height} + #{$environment-logs-breadcrumbs-height-md});
diff --git a/app/assets/stylesheets/pages/registry.scss b/app/assets/stylesheets/pages/registry.scss
index 31c6dbd2970..36b86771295 100644
--- a/app/assets/stylesheets/pages/registry.scss
+++ b/app/assets/stylesheets/pages/registry.scss
@@ -2,7 +2,7 @@
// until this gitlab-ui issue is resolved: https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1079
//
// See app/assets/javascripts/registry/explorer/components/registry_breadcrumb.vue when this is changed.
-.breadcrumbs-container .gl-breadcrumbs {
+.breadcrumbs .gl-breadcrumbs {
padding: 0;
box-shadow: none;
}
diff --git a/app/controllers/projects/tree_controller.rb b/app/controllers/projects/tree_controller.rb
index c8e98e6aa1c..0631c02355e 100644
--- a/app/controllers/projects/tree_controller.rb
+++ b/app/controllers/projects/tree_controller.rb
@@ -18,7 +18,7 @@ class Projects::TreeController < Projects::ApplicationController
before_action do
push_frontend_feature_flag(:highlight_js, @project)
- push_frontend_feature_flag(:synchronize_fork, @project)
+ push_frontend_feature_flag(:synchronize_fork, @project.fork_source)
push_licensed_feature(:file_locks) if @project.licensed_feature_available?(:file_locks)
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 04b51a2cba1..a6bc754d09e 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -38,7 +38,7 @@ class ProjectsController < Projects::ApplicationController
before_action do
push_frontend_feature_flag(:highlight_js, @project)
- push_frontend_feature_flag(:synchronize_fork, @project)
+ push_frontend_feature_flag(:synchronize_fork, @project&.fork_source)
push_licensed_feature(:file_locks) if @project.present? && @project.licensed_feature_available?(:file_locks)
push_licensed_feature(:security_orchestration_policies) if @project.present? && @project.licensed_feature_available?(:security_orchestration_policies)
push_force_frontend_feature_flag(:work_items, @project&.work_items_feature_flag_enabled?)
diff --git a/app/graphql/mutations/projects/sync_fork.rb b/app/graphql/mutations/projects/sync_fork.rb
index 121c16df87b..05332457e8c 100644
--- a/app/graphql/mutations/projects/sync_fork.rb
+++ b/app/graphql/mutations/projects/sync_fork.rb
@@ -7,8 +7,6 @@ module Mutations
include FindsProject
- authorize :push_code
-
argument :project_path, GraphQL::Types::ID,
required: true,
description: 'Full path of the project to initialize.'
@@ -22,9 +20,10 @@ module Mutations
description: 'Updated fork details.'
def resolve(project_path:, target_branch:)
- project = authorized_find!(project_path)
+ project = authorized_find!(project_path, target_branch)
- return respond(nil, ['Feature flag is disabled']) unless Feature.enabled?(:synchronize_fork, project)
+ return respond(nil, ['Feature flag is disabled']) unless Feature.enabled?(:synchronize_fork,
+ project.fork_source)
details_resolver = Resolvers::Projects::ForkDetailsResolver.new(object: project, context: context, field: nil)
details = details_resolver.resolve(ref: target_branch)
@@ -56,6 +55,14 @@ module Mutations
def respond(details, errors)
{ details: details, errors: errors }
end
+
+ def authorized_find!(project_path, target_branch)
+ project = find_object(project_path)
+
+ return project if ::Gitlab::UserAccess.new(current_user, container: project).can_update_branch?(target_branch)
+
+ raise_resource_not_available_error!
+ end
end
end
end
diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb
index fd684ee5ecb..42c9481828c 100644
--- a/app/helpers/application_settings_helper.rb
+++ b/app/helpers/application_settings_helper.rb
@@ -356,6 +356,7 @@ module ApplicationSettingsHelper
:shared_runners_text,
:sign_in_text,
:signup_enabled,
+ :silent_mode_enabled,
:sourcegraph_enabled,
:sourcegraph_url,
:sourcegraph_public_only,
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 21a736bf68a..567cca7cab1 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -137,6 +137,7 @@ module ProjectsHelper
source_name: source_project.full_name,
source_path: project_path(source_project),
source_default_branch: source_default_branch,
+ can_sync_branch: ::Gitlab::UserAccess.new(current_user, container: project).can_update_branch?(ref).to_s,
ahead_compare_path: project_compare_path(
project, from: source_default_branch, to: ref, from_project_id: source_project.id
),
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index 9aab1d96083..c11cd0191df 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -439,6 +439,9 @@ class ApplicationSetting < MainClusterwide::ApplicationRecord
allow_nil: false,
inclusion: { in: [true, false], message: N_('must be a boolean value') }
+ validates :silent_mode_enabled,
+ inclusion: { in: [true, false], message: N_('must be a boolean value') }
+
Gitlab::SSHPublicKey.supported_types.each do |type|
validates :"#{type}_key_restriction", presence: true, key_restriction: { type: type }
end
diff --git a/app/validators/json_schemas/build_report_result_data.json b/app/validators/json_schemas/build_report_result_data.json
index d109389a046..d9ef7633acd 100644
--- a/app/validators/json_schemas/build_report_result_data.json
+++ b/app/validators/json_schemas/build_report_result_data.json
@@ -8,10 +8,7 @@
"format": "float"
},
"tests": {
- "type": "object",
- "items": {
- "$ref": "./build_report_result_data_tests.json"
- }
+ "$ref": "./build_report_result_data_tests.json"
}
},
"additionalProperties": false
diff --git a/app/validators/json_schemas/build_report_result_data_tests.json b/app/validators/json_schemas/build_report_result_data_tests.json
index 3b6a2688313..456b651dd6c 100644
--- a/app/validators/json_schemas/build_report_result_data_tests.json
+++ b/app/validators/json_schemas/build_report_result_data_tests.json
@@ -7,7 +7,7 @@
"type": "string"
},
"duration": {
- "type": "string"
+ "type": "number"
},
"failed": {
"type": "integer"
@@ -20,6 +20,16 @@
},
"success": {
"type": "integer"
+ },
+ "suite_error": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
}
},
"additionalProperties": false
diff --git a/app/views/groups/new.html.haml b/app/views/groups/new.html.haml
index 0677a91f385..4c3ea0f292e 100644
--- a/app/views/groups/new.html.haml
+++ b/app/views/groups/new.html.haml
@@ -1,4 +1,4 @@
-- @hide_breadcrumbs = true
+- @hide_top_bar = true
- @hide_top_links = true
- page_title _('New Group')
- header_title _("Groups"), dashboard_groups_path
diff --git a/app/views/layouts/_page.html.haml b/app/views/layouts/_page.html.haml
index 7e7f8a6a871..1a647249eb7 100644
--- a/app/views/layouts/_page.html.haml
+++ b/app/views/layouts/_page.html.haml
@@ -35,8 +35,8 @@
= dispensable_render_if_exists "shared/new_user_signups_cap_reached_alert"
= yield :page_level_alert
= yield :group_invite_members_banner
- - unless @hide_breadcrumbs
- = render "layouts/nav/breadcrumbs"
+ - unless @hide_top_bar
+ = render "layouts/nav/top_bar"
%div{ class: "#{container_class unless @no_container} #{@content_class}" }
%main.content{ id: "content-body", **page_itemtype }
= render "layouts/flash", extra_flash_class: 'limit-container-width'
diff --git a/app/views/layouts/nav/_breadcrumbs.html.haml b/app/views/layouts/nav/_breadcrumbs.html.haml
deleted file mode 100644
index 60c5cb1af68..00000000000
--- a/app/views/layouts/nav/_breadcrumbs.html.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-- container = @no_breadcrumb_container ? 'container-fluid' : container_class
-- hide_top_links = @hide_top_links || false
-- unless @skip_current_level_breadcrumb
- - push_to_schema_breadcrumb(@breadcrumb_title, breadcrumb_title_link)
-
-.gl-relative
- .breadcrumbs{ class: [container, @content_class] }
- .breadcrumbs-container
- - if show_super_sidebar?
- = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'js-super-sidebar-toggle super-sidebar-toggle gl-ml-n3 gl-mr-2', title: _('Expand sidebar'), aria: { controls: 'super-sidebar', expanded: 'false', label: _('Navigation sidebar') }, data: {toggle: 'tooltip', placement: 'right' } })
- - elsif defined?(@left_sidebar)
- = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'toggle-mobile-nav gl-ml-n3 gl-mr-2', data: { qa_selector: 'toggle_mobile_nav_button' }, aria: { label: _('Open sidebar') } })
- %nav.breadcrumbs-links{ 'aria-label': _('Breadcrumbs'), data: { testid: 'breadcrumb-links', qa_selector: 'breadcrumb_links_content' } }
- %ul.list-unstyled.breadcrumbs-list.js-breadcrumbs-list
- - unless hide_top_links
- = header_title
- - if @breadcrumbs_extra_links
- - @breadcrumbs_extra_links.each do |extra|
- = breadcrumb_list_item link_to(extra[:text], extra[:link])
- = render "layouts/nav/breadcrumbs/collapsed_inline_list", location: :after
- - unless @skip_current_level_breadcrumb
- %li{ data: { testid: 'breadcrumb-current-link', qa_selector: 'breadcrumb_current_link' } }
- = link_to @breadcrumb_title, breadcrumb_title_link
- -# haml-lint:disable InlineJavaScript
- %script{ type: 'application/ld+json' }
- :plain
- #{schema_breadcrumb_json}
- = yield :header_content
diff --git a/app/views/layouts/nav/_top_bar.html.haml b/app/views/layouts/nav/_top_bar.html.haml
new file mode 100644
index 00000000000..e7a6566a7ff
--- /dev/null
+++ b/app/views/layouts/nav/_top_bar.html.haml
@@ -0,0 +1,10 @@
+- container = @no_top_bar_container ? 'container-fluid' : container_class
+
+.gl-relative
+ %div{ class: [container, @content_class] }
+ .top-bar-container.gl-display-flex.gl-align-items-center
+ - if show_super_sidebar?
+ = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'js-super-sidebar-toggle super-sidebar-toggle gl-ml-n3 gl-mr-2', title: _('Expand sidebar'), aria: { controls: 'super-sidebar', expanded: 'false', label: _('Navigation sidebar') }, data: {toggle: 'tooltip', placement: 'right' } })
+ - elsif defined?(@left_sidebar)
+ = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'toggle-mobile-nav gl-ml-n3 gl-mr-2', data: { qa_selector: 'toggle_mobile_nav_button' }, aria: { label: _('Open sidebar') } })
+ = render "layouts/nav/breadcrumbs/breadcrumbs"
diff --git a/app/views/layouts/nav/breadcrumbs/_breadcrumbs.html.haml b/app/views/layouts/nav/breadcrumbs/_breadcrumbs.html.haml
new file mode 100644
index 00000000000..b5f067cf42f
--- /dev/null
+++ b/app/views/layouts/nav/breadcrumbs/_breadcrumbs.html.haml
@@ -0,0 +1,20 @@
+- hide_top_links = @hide_top_links || false
+- unless @skip_current_level_breadcrumb
+ - push_to_schema_breadcrumb(@breadcrumb_title, breadcrumb_title_link)
+
+%nav.breadcrumbs{ 'aria-label': _('Breadcrumbs'), data: { testid: 'breadcrumb-links', qa_selector: 'breadcrumb_links_content' } }
+ %ul.list-unstyled.breadcrumbs-list.js-breadcrumbs-list
+ - unless hide_top_links
+ = header_title
+ - if @breadcrumbs_extra_links
+ - @breadcrumbs_extra_links.each do |extra|
+ = breadcrumb_list_item link_to(extra[:text], extra[:link])
+ = render "layouts/nav/breadcrumbs/collapsed_inline_list", location: :after
+ - unless @skip_current_level_breadcrumb
+ %li{ data: { testid: 'breadcrumb-current-link', qa_selector: 'breadcrumb_current_link' } }
+ = link_to @breadcrumb_title, breadcrumb_title_link
+ -# haml-lint:disable InlineJavaScript
+ %script{ type: 'application/ld+json' }
+ :plain
+ #{schema_breadcrumb_json}
+= yield :header_content
diff --git a/app/views/layouts/terms.html.haml b/app/views/layouts/terms.html.haml
index 032be73f70c..71c622d7a62 100644
--- a/app/views/layouts/terms.html.haml
+++ b/app/views/layouts/terms.html.haml
@@ -1,6 +1,6 @@
!!! 5
- add_page_specific_style 'page_bundles/terms'
-- @hide_breadcrumbs = true
+- @hide_top_bar = true
- body_classes = [user_application_theme]
%html{ lang: I18n.locale, class: page_class }
= render "layouts/head"
diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml
index 004b9b824d9..e64ed2c7b8f 100644
--- a/app/views/projects/new.html.haml
+++ b/app/views/projects/new.html.haml
@@ -1,4 +1,4 @@
-- @hide_breadcrumbs = true
+- @hide_top_bar = true
- @hide_top_links = true
- page_title _('New Project')
- header_title _("Projects"), dashboard_projects_path
diff --git a/app/views/shared/_auto_devops_callout.html.haml b/app/views/shared/_auto_devops_callout.html.haml
index 93f919f01d9..c468b3a2001 100644
--- a/app/views/shared/_auto_devops_callout.html.haml
+++ b/app/views/shared/_auto_devops_callout.html.haml
@@ -1,4 +1,4 @@
-- container = @no_breadcrumb_container ? 'container-fluid' : container_class
+- container = @no_top_bar_container ? 'container-fluid' : container_class
%div{ class: [container, @content_class, 'gl-pt-5!'] }
= render Pajamas::BannerComponent.new(button_text: s_('AutoDevOps|Enable in settings'),
diff --git a/app/views/shared/boards/_show.html.haml b/app/views/shared/boards/_show.html.haml
index c3835386d5a..e5aa4c58da1 100644
--- a/app/views/shared/boards/_show.html.haml
+++ b/app/views/shared/boards/_show.html.haml
@@ -1,5 +1,5 @@
- board = local_assigns.fetch(:board, nil)
-- @no_breadcrumb_container = true
+- @no_top_bar_container = true
- @no_container = true
- @content_wrapper_class = "#{@content_wrapper_class} gl-relative gl-pb-0"
- @content_class = "issue-boards-content js-focus-mode-board"
diff --git a/config/initializers/action_mailer_hooks.rb b/config/initializers/action_mailer_hooks.rb
index 46d5e387d9d..c6e6c717b7a 100644
--- a/config/initializers/action_mailer_hooks.rb
+++ b/config/initializers/action_mailer_hooks.rb
@@ -8,7 +8,8 @@ end
ActionMailer::Base.register_interceptors(
::Gitlab::Email::Hook::AdditionalHeadersInterceptor,
::Gitlab::Email::Hook::EmailTemplateInterceptor,
- ::Gitlab::Email::Hook::DeliveryMetricsObserver
+ ::Gitlab::Email::Hook::DeliveryMetricsObserver,
+ ::Gitlab::Email::Hook::SilentModeInterceptor
)
ActionMailer::Base.register_observer(::Gitlab::Email::Hook::DeliveryMetricsObserver)
diff --git a/config/metrics/counts_28d/20210216175055_merge_requests.yml b/config/metrics/counts_28d/20210216175055_merge_requests.yml
index a66896951f7..c71c83d7064 100644
--- a/config/metrics/counts_28d/20210216175055_merge_requests.yml
+++ b/config/metrics/counts_28d/20210216175055_merge_requests.yml
@@ -5,7 +5,6 @@ description: Count distinct authors of merge requests
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: removed
milestone_removed: '14.10'
diff --git a/config/metrics/counts_28d/20210216175057_projects_with_disable_overriding_approvers_per_merge_request.yml b/config/metrics/counts_28d/20210216175057_projects_with_disable_overriding_approvers_per_merge_request.yml
index 5db58dd93ae..f908bab1fc2 100644
--- a/config/metrics/counts_28d/20210216175057_projects_with_disable_overriding_approvers_per_merge_request.yml
+++ b/config/metrics/counts_28d/20210216175057_projects_with_disable_overriding_approvers_per_merge_request.yml
@@ -6,7 +6,6 @@ description: Count of the number of projects with setting to disable overriding
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175059_projects_without_disable_overriding_approvers_per_merge_request.yml b/config/metrics/counts_28d/20210216175059_projects_without_disable_overriding_approvers_per_merge_request.yml
index 32a68c1de56..8577300a357 100644
--- a/config/metrics/counts_28d/20210216175059_projects_without_disable_overriding_approvers_per_merge_request.yml
+++ b/config/metrics/counts_28d/20210216175059_projects_without_disable_overriding_approvers_per_merge_request.yml
@@ -6,7 +6,6 @@ description: Count of the number of projects without setting to disable overridi
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175101_merge_requests_users.yml b/config/metrics/counts_28d/20210216175101_merge_requests_users.yml
index 08dc431f26d..6f55fa74cfc 100644
--- a/config/metrics/counts_28d/20210216175101_merge_requests_users.yml
+++ b/config/metrics/counts_28d/20210216175101_merge_requests_users.yml
@@ -5,7 +5,6 @@ description: Distinct count of users performing merge request actions like close
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175109_suggestions.yml b/config/metrics/counts_28d/20210216175109_suggestions.yml
index 7f4e0569e25..d7e649ad7f8 100644
--- a/config/metrics/counts_28d/20210216175109_suggestions.yml
+++ b/config/metrics/counts_28d/20210216175109_suggestions.yml
@@ -6,7 +6,6 @@ description: Count of unique users per month who create suggestions in merge req
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175113_merge_request_action_monthly.yml b/config/metrics/counts_28d/20210216175113_merge_request_action_monthly.yml
index 5a6150b21af..7ee99925c98 100644
--- a/config/metrics/counts_28d/20210216175113_merge_request_action_monthly.yml
+++ b/config/metrics/counts_28d/20210216175113_merge_request_action_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users who perform an action on a merge request
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175117_i_source_code_code_intelligence_monthly.yml b/config/metrics/counts_28d/20210216175117_i_source_code_code_intelligence_monthly.yml
index 1329aff088d..a1abd09c9a2 100644
--- a/config/metrics/counts_28d/20210216175117_i_source_code_code_intelligence_monthly.yml
+++ b/config/metrics/counts_28d/20210216175117_i_source_code_code_intelligence_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users who use code intelligence
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175120_i_code_review_mr_diffs_monthly.yml b/config/metrics/counts_28d/20210216175120_i_code_review_mr_diffs_monthly.yml
index 8d88ab365bd..5b7b8ae9ef2 100644
--- a/config/metrics/counts_28d/20210216175120_i_code_review_mr_diffs_monthly.yml
+++ b/config/metrics/counts_28d/20210216175120_i_code_review_mr_diffs_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique merge requests per month with diffs viewed
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175124_i_code_review_user_single_file_diffs_monthly.yml b/config/metrics/counts_28d/20210216175124_i_code_review_user_single_file_diffs_monthly.yml
index 263a59891b4..ed073e9d152 100644
--- a/config/metrics/counts_28d/20210216175124_i_code_review_user_single_file_diffs_monthly.yml
+++ b/config/metrics/counts_28d/20210216175124_i_code_review_user_single_file_diffs_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month with diffs viewed file by file
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175128_i_code_review_mr_single_file_diffs_monthly.yml b/config/metrics/counts_28d/20210216175128_i_code_review_mr_single_file_diffs_monthly.yml
index 8370eb21f36..46599f6913c 100644
--- a/config/metrics/counts_28d/20210216175128_i_code_review_mr_single_file_diffs_monthly.yml
+++ b/config/metrics/counts_28d/20210216175128_i_code_review_mr_single_file_diffs_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique merge requests per month with diffs viewed file by
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175132_i_code_review_user_create_mr_monthly.yml b/config/metrics/counts_28d/20210216175132_i_code_review_user_create_mr_monthly.yml
index d4411c5e153..fbcacf73dfc 100644
--- a/config/metrics/counts_28d/20210216175132_i_code_review_user_create_mr_monthly.yml
+++ b/config/metrics/counts_28d/20210216175132_i_code_review_user_create_mr_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who created a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175136_i_code_review_user_close_mr_monthly.yml b/config/metrics/counts_28d/20210216175136_i_code_review_user_close_mr_monthly.yml
index c8f2386e908..171b4fcd522 100644
--- a/config/metrics/counts_28d/20210216175136_i_code_review_user_close_mr_monthly.yml
+++ b/config/metrics/counts_28d/20210216175136_i_code_review_user_close_mr_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who closed a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175140_i_code_review_user_reopen_mr_monthly.yml b/config/metrics/counts_28d/20210216175140_i_code_review_user_reopen_mr_monthly.yml
index 2f3c61f4f3c..4ce189e56d3 100644
--- a/config/metrics/counts_28d/20210216175140_i_code_review_user_reopen_mr_monthly.yml
+++ b/config/metrics/counts_28d/20210216175140_i_code_review_user_reopen_mr_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who reopened a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175144_i_code_review_user_merge_mr_monthly.yml b/config/metrics/counts_28d/20210216175144_i_code_review_user_merge_mr_monthly.yml
index de20c8fdc7a..a786737461f 100644
--- a/config/metrics/counts_28d/20210216175144_i_code_review_user_merge_mr_monthly.yml
+++ b/config/metrics/counts_28d/20210216175144_i_code_review_user_merge_mr_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who merged a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175148_i_code_review_user_create_mr_comment_monthly.yml b/config/metrics/counts_28d/20210216175148_i_code_review_user_create_mr_comment_monthly.yml
index 761683fe34f..8da0bf334ca 100644
--- a/config/metrics/counts_28d/20210216175148_i_code_review_user_create_mr_comment_monthly.yml
+++ b/config/metrics/counts_28d/20210216175148_i_code_review_user_create_mr_comment_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who commented on a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175152_i_code_review_user_edit_mr_comment_monthly.yml b/config/metrics/counts_28d/20210216175152_i_code_review_user_edit_mr_comment_monthly.yml
index 16351810c6f..9f035b35c0f 100644
--- a/config/metrics/counts_28d/20210216175152_i_code_review_user_edit_mr_comment_monthly.yml
+++ b/config/metrics/counts_28d/20210216175152_i_code_review_user_edit_mr_comment_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who edited a comment on a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175156_i_code_review_user_remove_mr_comment_monthly.yml b/config/metrics/counts_28d/20210216175156_i_code_review_user_remove_mr_comment_monthly.yml
index c15d962b0de..877d2caf905 100644
--- a/config/metrics/counts_28d/20210216175156_i_code_review_user_remove_mr_comment_monthly.yml
+++ b/config/metrics/counts_28d/20210216175156_i_code_review_user_remove_mr_comment_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who removed a comment on a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175159_i_code_review_user_add_suggestion_monthly.yml b/config/metrics/counts_28d/20210216175159_i_code_review_user_add_suggestion_monthly.yml
index d28e463dc1b..cc8846920e3 100644
--- a/config/metrics/counts_28d/20210216175159_i_code_review_user_add_suggestion_monthly.yml
+++ b/config/metrics/counts_28d/20210216175159_i_code_review_user_add_suggestion_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who added a suggestion
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175203_i_code_review_user_apply_suggestion_monthly.yml b/config/metrics/counts_28d/20210216175203_i_code_review_user_apply_suggestion_monthly.yml
index 6ed0515fec5..ea288e7213a 100644
--- a/config/metrics/counts_28d/20210216175203_i_code_review_user_apply_suggestion_monthly.yml
+++ b/config/metrics/counts_28d/20210216175203_i_code_review_user_apply_suggestion_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who applied a suggestion
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml b/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml
index 71304cdcc77..98a18d054a5 100644
--- a/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml
+++ b/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml
@@ -5,7 +5,6 @@ description: Count user ids from GitLab Managed clusters with Cert Manager enabl
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml b/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml
index c772e7ba6cb..1e33c81d2c2 100644
--- a/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml
+++ b/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml
@@ -5,7 +5,6 @@ description: Count user ids from GitLab Managed clusters with Helm enabled
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml b/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml
index 0a36f99563f..a6e6e92d5bd 100644
--- a/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml
+++ b/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml
@@ -5,7 +5,6 @@ description: Count user ids from GitLab Managed clusters with Ingress enabled
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml b/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml
index e01b941912f..77a4e5c2d07 100644
--- a/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml
+++ b/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml
@@ -5,7 +5,6 @@ description: Count user ids from GitLab Managed clusters with Knative enabled
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175413_clusters_management_project.yml b/config/metrics/counts_28d/20210216175413_clusters_management_project.yml
index 708c1e64326..4902ca400bf 100644
--- a/config/metrics/counts_28d/20210216175413_clusters_management_project.yml
+++ b/config/metrics/counts_28d/20210216175413_clusters_management_project.yml
@@ -7,7 +7,6 @@ description: Number of Kubernetes clusters with clusters management project bein
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175415_clusters_disabled.yml b/config/metrics/counts_28d/20210216175415_clusters_disabled.yml
index b91eed1c015..ffc64495a14 100644
--- a/config/metrics/counts_28d/20210216175415_clusters_disabled.yml
+++ b/config/metrics/counts_28d/20210216175415_clusters_disabled.yml
@@ -5,7 +5,6 @@ description: Number of user ids from GitLab Managed disabled clusters
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175417_clusters_enabled.yml b/config/metrics/counts_28d/20210216175417_clusters_enabled.yml
index 2c56b369b49..5c0d5dd9ae5 100644
--- a/config/metrics/counts_28d/20210216175417_clusters_enabled.yml
+++ b/config/metrics/counts_28d/20210216175417_clusters_enabled.yml
@@ -5,7 +5,6 @@ description: Number of distict user ids from GitLab Managed clusters currently e
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175419_clusters_platforms_gke.yml b/config/metrics/counts_28d/20210216175419_clusters_platforms_gke.yml
index 3b7c869c851..f6ce65bd31f 100644
--- a/config/metrics/counts_28d/20210216175419_clusters_platforms_gke.yml
+++ b/config/metrics/counts_28d/20210216175419_clusters_platforms_gke.yml
@@ -5,7 +5,6 @@ description: Number of user ids from GitLab Managed clusters provisioned with Gi
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175420_clusters_platforms_eks.yml b/config/metrics/counts_28d/20210216175420_clusters_platforms_eks.yml
index b48556ca885..c3d6e83ae34 100644
--- a/config/metrics/counts_28d/20210216175420_clusters_platforms_eks.yml
+++ b/config/metrics/counts_28d/20210216175420_clusters_platforms_eks.yml
@@ -5,7 +5,6 @@ description: Number of user ids from GitLab Managed clusters provisioned with Gi
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175422_clusters_platforms_user.yml b/config/metrics/counts_28d/20210216175422_clusters_platforms_user.yml
index f9e5657144c..57d0fc54df4 100644
--- a/config/metrics/counts_28d/20210216175422_clusters_platforms_user.yml
+++ b/config/metrics/counts_28d/20210216175422_clusters_platforms_user.yml
@@ -5,7 +5,6 @@ description: Number of user ids from GitLab Managed clusters that are user provi
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175424_instance_clusters_disabled.yml b/config/metrics/counts_28d/20210216175424_instance_clusters_disabled.yml
index 399046a2d6d..d57a1e629e4 100644
--- a/config/metrics/counts_28d/20210216175424_instance_clusters_disabled.yml
+++ b/config/metrics/counts_28d/20210216175424_instance_clusters_disabled.yml
@@ -5,7 +5,6 @@ description: Number of users from GitLab Managed disabled clusters attached to t
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175426_instance_clusters_enabled.yml b/config/metrics/counts_28d/20210216175426_instance_clusters_enabled.yml
index 059e26a137b..ae9ab5f3b19 100644
--- a/config/metrics/counts_28d/20210216175426_instance_clusters_enabled.yml
+++ b/config/metrics/counts_28d/20210216175426_instance_clusters_enabled.yml
@@ -5,7 +5,6 @@ description: Number of user ids from GitLab Managed enabled clusters attached to
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175428_group_clusters_disabled.yml b/config/metrics/counts_28d/20210216175428_group_clusters_disabled.yml
index dbc86047521..271359080eb 100644
--- a/config/metrics/counts_28d/20210216175428_group_clusters_disabled.yml
+++ b/config/metrics/counts_28d/20210216175428_group_clusters_disabled.yml
@@ -5,7 +5,6 @@ description: Number of user ids GitLab Managed disabled clusters attached to gro
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175430_group_clusters_enabled.yml b/config/metrics/counts_28d/20210216175430_group_clusters_enabled.yml
index e1ff7306af0..958e91f3c8d 100644
--- a/config/metrics/counts_28d/20210216175430_group_clusters_enabled.yml
+++ b/config/metrics/counts_28d/20210216175430_group_clusters_enabled.yml
@@ -5,7 +5,6 @@ description: Count disctinct user ids from GitLab Managed enabled clusters attac
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175432_project_clusters_disabled.yml b/config/metrics/counts_28d/20210216175432_project_clusters_disabled.yml
index edf02be00dd..d5c9ae6c36b 100644
--- a/config/metrics/counts_28d/20210216175432_project_clusters_disabled.yml
+++ b/config/metrics/counts_28d/20210216175432_project_clusters_disabled.yml
@@ -5,7 +5,6 @@ description: Number of user ids from GitLab Managed disabled clusters attached t
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175434_project_clusters_enabled.yml b/config/metrics/counts_28d/20210216175434_project_clusters_enabled.yml
index 2b601bf2760..4c49cb7a9e8 100644
--- a/config/metrics/counts_28d/20210216175434_project_clusters_enabled.yml
+++ b/config/metrics/counts_28d/20210216175434_project_clusters_enabled.yml
@@ -5,7 +5,6 @@ description: Number of user ids from GitLab Managed enabled clusters attached to
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175542_ci_builds.yml b/config/metrics/counts_28d/20210216175542_ci_builds.yml
index 31c41332fed..3d2777aebea 100644
--- a/config/metrics/counts_28d/20210216175542_ci_builds.yml
+++ b/config/metrics/counts_28d/20210216175542_ci_builds.yml
@@ -5,7 +5,6 @@ description: Distinct users triggering jobs in a month
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175544_ci_external_pipelines.yml b/config/metrics/counts_28d/20210216175544_ci_external_pipelines.yml
index 506abce6ce5..7a66d3dc1c9 100644
--- a/config/metrics/counts_28d/20210216175544_ci_external_pipelines.yml
+++ b/config/metrics/counts_28d/20210216175544_ci_external_pipelines.yml
@@ -5,7 +5,6 @@ description: Distinct users triggering pipelines in external repositories in a m
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175546_ci_internal_pipelines.yml b/config/metrics/counts_28d/20210216175546_ci_internal_pipelines.yml
index 7ae086fbdcb..d91b965765d 100644
--- a/config/metrics/counts_28d/20210216175546_ci_internal_pipelines.yml
+++ b/config/metrics/counts_28d/20210216175546_ci_internal_pipelines.yml
@@ -5,7 +5,6 @@ description: Distinct users triggering pipelines in internal repositories in a m
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175548_ci_pipeline_config_auto_devops.yml b/config/metrics/counts_28d/20210216175548_ci_pipeline_config_auto_devops.yml
index 6bda7c714d7..06f94fe09b2 100644
--- a/config/metrics/counts_28d/20210216175548_ci_pipeline_config_auto_devops.yml
+++ b/config/metrics/counts_28d/20210216175548_ci_pipeline_config_auto_devops.yml
@@ -5,7 +5,6 @@ description: Distinct users that ran an auto DevOps pipeline without a .gitlab-c
product_section: ops
product_stage: configure
product_group: configure
-product_category: auto_devops
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175550_ci_pipeline_config_repository.yml b/config/metrics/counts_28d/20210216175550_ci_pipeline_config_repository.yml
index 5253731dcc8..341cc40bba4 100644
--- a/config/metrics/counts_28d/20210216175550_ci_pipeline_config_repository.yml
+++ b/config/metrics/counts_28d/20210216175550_ci_pipeline_config_repository.yml
@@ -5,7 +5,6 @@ description: Monthly count of unique users creating pipelines from CI files in t
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175552_ci_pipeline_schedules.yml b/config/metrics/counts_28d/20210216175552_ci_pipeline_schedules.yml
index ac55cb82f8f..ed88363f2e4 100644
--- a/config/metrics/counts_28d/20210216175552_ci_pipeline_schedules.yml
+++ b/config/metrics/counts_28d/20210216175552_ci_pipeline_schedules.yml
@@ -5,7 +5,6 @@ description: Distinct users creating pipeline schedules in a month
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175554_ci_pipelines.yml b/config/metrics/counts_28d/20210216175554_ci_pipelines.yml
index da338611257..4cbd7791013 100644
--- a/config/metrics/counts_28d/20210216175554_ci_pipelines.yml
+++ b/config/metrics/counts_28d/20210216175554_ci_pipelines.yml
@@ -5,7 +5,6 @@ description: Distinct users triggering pipelines in a month
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216175556_ci_triggers.yml b/config/metrics/counts_28d/20210216175556_ci_triggers.yml
index a7c21eba666..81419262a36 100644
--- a/config/metrics/counts_28d/20210216175556_ci_triggers.yml
+++ b/config/metrics/counts_28d/20210216175556_ci_triggers.yml
@@ -5,7 +5,6 @@ description: Distinct users creating pipeline triggers in a month
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180308_personal_snippets.yml b/config/metrics/counts_28d/20210216180308_personal_snippets.yml
index 3b036d022c7..99893caa053 100644
--- a/config/metrics/counts_28d/20210216180308_personal_snippets.yml
+++ b/config/metrics/counts_28d/20210216180308_personal_snippets.yml
@@ -5,7 +5,6 @@ description: Monthly count of personal Snippets
product_section: dev
product_stage: create
product_group: editor
-product_category: snippets
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180310_project_snippets.yml b/config/metrics/counts_28d/20210216180310_project_snippets.yml
index 8dc9caee45b..a91e66d97ad 100644
--- a/config/metrics/counts_28d/20210216180310_project_snippets.yml
+++ b/config/metrics/counts_28d/20210216180310_project_snippets.yml
@@ -5,7 +5,6 @@ description: Monthly count of project Snippets
product_section: dev
product_stage: create
product_group: editor
-product_category: snippets
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180312_snippets.yml b/config/metrics/counts_28d/20210216180312_snippets.yml
index 616368ec513..3f8acf0857f 100644
--- a/config/metrics/counts_28d/20210216180312_snippets.yml
+++ b/config/metrics/counts_28d/20210216180312_snippets.yml
@@ -5,7 +5,6 @@ description: Monthly count of All Snippets
product_section: dev
product_stage: create
product_group: editor
-product_category: snippets
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180317_snippets.yml b/config/metrics/counts_28d/20210216180317_snippets.yml
index 21c1196f241..0b3cc1b3915 100644
--- a/config/metrics/counts_28d/20210216180317_snippets.yml
+++ b/config/metrics/counts_28d/20210216180317_snippets.yml
@@ -6,7 +6,6 @@ description: Count of distinct author_id from snippets for last 28 days
product_section: dev
product_stage: create
product_group: editor
-product_category: snippets
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml b/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml
index 9d56815712f..e5757e6c0d0 100644
--- a/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml
+++ b/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml
@@ -5,7 +5,6 @@ description: Number of users editing using web IDE
product_section: dev
product_stage: create
product_group: editor
-product_category: web_ide
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111351
diff --git a/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml b/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml
index 592b02c84bc..0716b6f397f 100644
--- a/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml
+++ b/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml
@@ -5,7 +5,6 @@ description: Number of users using single file editor
product_section: dev
product_stage: create
product_group: editor
-product_category: web_ide
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113551
diff --git a/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml b/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml
index 012f9db8c80..8167e44c015 100644
--- a/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml
+++ b/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml
@@ -5,7 +5,6 @@ description: Number of users using the snippet editor
product_section: dev
product_stage: create
product_group: editor
-product_category: snippets
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113551
diff --git a/config/metrics/counts_28d/20210216180325_action_monthly_active_users_sse_edit.yml b/config/metrics/counts_28d/20210216180325_action_monthly_active_users_sse_edit.yml
index 79f1db5e730..9b263d39521 100644
--- a/config/metrics/counts_28d/20210216180325_action_monthly_active_users_sse_edit.yml
+++ b/config/metrics/counts_28d/20210216180325_action_monthly_active_users_sse_edit.yml
@@ -5,7 +5,6 @@ description: Number of users using the static site editor
product_section: dev
product_stage: create
product_group: editor
-product_category: static_site_editor
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml b/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml
index 49da20e316e..33bb1b12c50 100644
--- a/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml
+++ b/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml
@@ -5,7 +5,6 @@ description: Number of unique users per month who edited a file from any web edi
product_section: dev
product_stage: create
product_group: editor
-product_category: web_ide
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180330_g_edit_by_web_ide_monthly.yml b/config/metrics/counts_28d/20210216180330_g_edit_by_web_ide_monthly.yml
index afd69a800cc..bd147983063 100644
--- a/config/metrics/counts_28d/20210216180330_g_edit_by_web_ide_monthly.yml
+++ b/config/metrics/counts_28d/20210216180330_g_edit_by_web_ide_monthly.yml
@@ -5,7 +5,6 @@ description: Number of users editing a file from the Web IDE
product_section: dev
product_stage: create
product_group: editor
-product_category: web_ide
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180334_g_edit_by_sfe_monthly.yml b/config/metrics/counts_28d/20210216180334_g_edit_by_sfe_monthly.yml
index 1eda8cb2467..fa5b71b3ca3 100644
--- a/config/metrics/counts_28d/20210216180334_g_edit_by_sfe_monthly.yml
+++ b/config/metrics/counts_28d/20210216180334_g_edit_by_sfe_monthly.yml
@@ -5,7 +5,6 @@ description: Number of users editing a file from the single file editor
product_section: dev
product_stage: create
product_group: editor
-product_category: web_ide
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180338_g_edit_by_snippet_ide_monthly.yml b/config/metrics/counts_28d/20210216180338_g_edit_by_snippet_ide_monthly.yml
index 5e3ee643e07..f1faa6a45b8 100644
--- a/config/metrics/counts_28d/20210216180338_g_edit_by_snippet_ide_monthly.yml
+++ b/config/metrics/counts_28d/20210216180338_g_edit_by_snippet_ide_monthly.yml
@@ -5,7 +5,6 @@ description: Count of monthly edits to a snippet
product_section: dev
product_stage: create
product_group: editor
-product_category: snippets
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180341_ide_edit_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216180341_ide_edit_total_unique_counts_monthly.yml
index 1745055d11e..163821c571b 100644
--- a/config/metrics/counts_28d/20210216180341_ide_edit_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216180341_ide_edit_total_unique_counts_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who edited a file from the Web IDE
product_section: dev
product_stage: create
product_group: editor
-product_category: web_ide
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180424_i_search_total_monthly.yml b/config/metrics/counts_28d/20210216180424_i_search_total_monthly.yml
index 0d4a62696b7..3e92ec05e21 100644
--- a/config/metrics/counts_28d/20210216180424_i_search_total_monthly.yml
+++ b/config/metrics/counts_28d/20210216180424_i_search_total_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to perform Basic or Advanced searches by mo
product_section: enablement
product_stage: enablement
product_group: global_search
-product_category: global_search
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180431_search_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216180431_search_total_unique_counts_monthly.yml
index a62b15af694..854c4407ce5 100644
--- a/config/metrics/counts_28d/20210216180431_search_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216180431_search_total_unique_counts_monthly.yml
@@ -8,7 +8,6 @@ description: Total unique users for i_search_total, i_search_advanced, i_search_
product_section: enablement
product_stage: enablement
product_group: global_search
-product_category: global_search
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml b/config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml
index 3b61fb65911..f846944a18f 100644
--- a/config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml
+++ b/config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month to take an action on an alert
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: incident_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml b/config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml
index b5afcfa7ae6..4a020dd0742 100644
--- a/config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml
+++ b/config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month to take an action on an incident
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: incident_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180524_projects_with_incidents.yml b/config/metrics/counts_28d/20210216180524_projects_with_incidents.yml
index 405a43b3766..6cfec1068bf 100644
--- a/config/metrics/counts_28d/20210216180524_projects_with_incidents.yml
+++ b/config/metrics/counts_28d/20210216180524_projects_with_incidents.yml
@@ -5,7 +5,6 @@ description: Count of unique projects with an incident created in the last month
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: incident_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml b/config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml
index e0aa35fea62..ee7f226f63b 100644
--- a/config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml
+++ b/config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml
@@ -6,7 +6,6 @@ description: Count of unique projects with an incident from an alert created in
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: incident_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml b/config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml
index e8791ee4ea6..ad0cbac593e 100644
--- a/config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml
+++ b/config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml
@@ -6,7 +6,6 @@ description: Count of unique users per month to create an incident corresponding
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: incident_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180731_projects_imported_from_github.yml b/config/metrics/counts_28d/20210216180731_projects_imported_from_github.yml
index 6c2f8f75861..dd3fa6565a9 100644
--- a/config/metrics/counts_28d/20210216180731_projects_imported_from_github.yml
+++ b/config/metrics/counts_28d/20210216180731_projects_imported_from_github.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from GitHub
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180745_action_monthly_active_users_design_management.yml b/config/metrics/counts_28d/20210216180745_action_monthly_active_users_design_management.yml
index ca47e918461..63d43242477 100644
--- a/config/metrics/counts_28d/20210216180745_action_monthly_active_users_design_management.yml
+++ b/config/metrics/counts_28d/20210216180745_action_monthly_active_users_design_management.yml
@@ -5,7 +5,6 @@ description: Monthly active users for design management
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: design_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180747_action_monthly_active_users_wiki_repo.yml b/config/metrics/counts_28d/20210216180747_action_monthly_active_users_wiki_repo.yml
index 06407d7a18a..a7125a7f648 100644
--- a/config/metrics/counts_28d/20210216180747_action_monthly_active_users_wiki_repo.yml
+++ b/config/metrics/counts_28d/20210216180747_action_monthly_active_users_wiki_repo.yml
@@ -5,7 +5,6 @@ description: Unique monthly active users of the Wiki
product_section: dev
product_stage: create
product_group: editor
-product_category: wiki
value_type: number
status: removed
milestone_removed: "15.10"
diff --git a/config/metrics/counts_28d/20210216180816_groups.yml b/config/metrics/counts_28d/20210216180816_groups.yml
index 806b78be7b6..f0d1bdc5382 100644
--- a/config/metrics/counts_28d/20210216180816_groups.yml
+++ b/config/metrics/counts_28d/20210216180816_groups.yml
@@ -5,7 +5,6 @@ description: Number of users who are group members for last 28 days
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: subgroups
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180818_users_created.yml b/config/metrics/counts_28d/20210216180818_users_created.yml
index b4646b3e012..a99129a6a10 100644
--- a/config/metrics/counts_28d/20210216180818_users_created.yml
+++ b/config/metrics/counts_28d/20210216180818_users_created.yml
@@ -5,7 +5,6 @@ description: Number of users created in the month
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: users
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml b/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml
index bfbad28ff80..9faf6cf6a84 100644
--- a/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml
+++ b/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml
@@ -5,7 +5,6 @@ description: Projects with Prometheus alerting enabled
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: removed
milestone_removed: '14.0'
diff --git a/config/metrics/counts_28d/20210216180956_clusters.yml b/config/metrics/counts_28d/20210216180956_clusters.yml
index f5100e8a67e..33b35d0ad1c 100644
--- a/config/metrics/counts_28d/20210216180956_clusters.yml
+++ b/config/metrics/counts_28d/20210216180956_clusters.yml
@@ -5,7 +5,6 @@ description: Count users creating clusters in last 28 days.
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml b/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml
index ce391200627..69939472df6 100644
--- a/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml
+++ b/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml
@@ -5,7 +5,6 @@ description: Users creating clusters with Prometheus enabled in last 28 days.
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181000_operations_dashboard_default_dashboard.yml b/config/metrics/counts_28d/20210216181000_operations_dashboard_default_dashboard.yml
index 47321b7b6c9..56cb1df8724 100644
--- a/config/metrics/counts_28d/20210216181000_operations_dashboard_default_dashboard.yml
+++ b/config/metrics/counts_28d/20210216181000_operations_dashboard_default_dashboard.yml
@@ -5,7 +5,6 @@ description: Active users with enabled operations dashboard
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181002_projects_with_tracing_enabled.yml b/config/metrics/counts_28d/20210216181002_projects_with_tracing_enabled.yml
index d0e433af157..ed10a481988 100644
--- a/config/metrics/counts_28d/20210216181002_projects_with_tracing_enabled.yml
+++ b/config/metrics/counts_28d/20210216181002_projects_with_tracing_enabled.yml
@@ -5,7 +5,6 @@ description: Projects with tracing enabled
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: tracing
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181004_projects_with_error_tracking_enabled.yml b/config/metrics/counts_28d/20210216181004_projects_with_error_tracking_enabled.yml
index 0f6696d1666..76ff3d7a834 100644
--- a/config/metrics/counts_28d/20210216181004_projects_with_error_tracking_enabled.yml
+++ b/config/metrics/counts_28d/20210216181004_projects_with_error_tracking_enabled.yml
@@ -5,7 +5,6 @@ description: Count of users creating projects with error tracking enabled.
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181006_operations_dashboard_users_with_projects_added.yml b/config/metrics/counts_28d/20210216181006_operations_dashboard_users_with_projects_added.yml
index 037da98e5fa..a4770212223 100644
--- a/config/metrics/counts_28d/20210216181006_operations_dashboard_users_with_projects_added.yml
+++ b/config/metrics/counts_28d/20210216181006_operations_dashboard_users_with_projects_added.yml
@@ -5,7 +5,6 @@ description: Active users with projects on operations dashboard
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181139_issues.yml b/config/metrics/counts_28d/20210216181139_issues.yml
index 13b38a681b1..ffb7a16e611 100644
--- a/config/metrics/counts_28d/20210216181139_issues.yml
+++ b/config/metrics/counts_28d/20210216181139_issues.yml
@@ -5,7 +5,6 @@ description: Count of users creating Issues in last 28 days.
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181141_notes.yml b/config/metrics/counts_28d/20210216181141_notes.yml
index 3bb61debcc0..553c49bfcf7 100644
--- a/config/metrics/counts_28d/20210216181141_notes.yml
+++ b/config/metrics/counts_28d/20210216181141_notes.yml
@@ -5,7 +5,6 @@ description: Count of MAU commenting on an issuable
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181143_projects.yml b/config/metrics/counts_28d/20210216181143_projects.yml
index 4d9de3799ad..fbd2f683914 100644
--- a/config/metrics/counts_28d/20210216181143_projects.yml
+++ b/config/metrics/counts_28d/20210216181143_projects.yml
@@ -5,7 +5,6 @@ description: Count of MAU creating projects
product_section: dev
product_stage: plan
product_group: project_management
-product_category: projects
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181145_todos.yml b/config/metrics/counts_28d/20210216181145_todos.yml
index 9cffb8c2b35..cff427c9476 100644
--- a/config/metrics/counts_28d/20210216181145_todos.yml
+++ b/config/metrics/counts_28d/20210216181145_todos.yml
@@ -5,7 +5,6 @@ description: Count of MAU creating todos
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181147_service_desk_enabled_projects.yml b/config/metrics/counts_28d/20210216181147_service_desk_enabled_projects.yml
index a2a3d0e297f..85372300fdb 100644
--- a/config/metrics/counts_28d/20210216181147_service_desk_enabled_projects.yml
+++ b/config/metrics/counts_28d/20210216181147_service_desk_enabled_projects.yml
@@ -5,7 +5,6 @@ description: Count creator ids from projects with service desk enabled
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: service_desk
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181150_projects_jira_active.yml b/config/metrics/counts_28d/20210216181150_projects_jira_active.yml
index 6f687b89560..c0cbc111c6a 100644
--- a/config/metrics/counts_28d/20210216181150_projects_jira_active.yml
+++ b/config/metrics/counts_28d/20210216181150_projects_jira_active.yml
@@ -5,7 +5,6 @@ description: Distinct count of creator_id from projects with an active Jira inte
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181152_projects_jira_dvcs_cloud_active.yml b/config/metrics/counts_28d/20210216181152_projects_jira_dvcs_cloud_active.yml
index ba6994ac23a..fdbcab9749d 100644
--- a/config/metrics/counts_28d/20210216181152_projects_jira_dvcs_cloud_active.yml
+++ b/config/metrics/counts_28d/20210216181152_projects_jira_dvcs_cloud_active.yml
@@ -6,7 +6,6 @@ description: Distinct count of creator_id from projects with an active Jira Clou
product_section: dev
product_stage: manage
product_group: integration
-product_category: integrations
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181154_projects_jira_dvcs_server_active.yml b/config/metrics/counts_28d/20210216181154_projects_jira_dvcs_server_active.yml
index 3d327b17de0..0efd1ec9f52 100644
--- a/config/metrics/counts_28d/20210216181154_projects_jira_dvcs_server_active.yml
+++ b/config/metrics/counts_28d/20210216181154_projects_jira_dvcs_server_active.yml
@@ -6,7 +6,6 @@ description: Distinct count of creator_id from projects with an active Jira Serv
product_section: dev
product_stage: manage
product_group: integration
-product_category: integrations
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181158_epics.yml b/config/metrics/counts_28d/20210216181158_epics.yml
index 0c913b31f6d..d3f6b0805f5 100644
--- a/config/metrics/counts_28d/20210216181158_epics.yml
+++ b/config/metrics/counts_28d/20210216181158_epics.yml
@@ -5,7 +5,6 @@ description: Count distinct author ids from epics
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: epics
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181200_label_lists.yml b/config/metrics/counts_28d/20210216181200_label_lists.yml
index a35840cf395..c1d13515d21 100644
--- a/config/metrics/counts_28d/20210216181200_label_lists.yml
+++ b/config/metrics/counts_28d/20210216181200_label_lists.yml
@@ -5,7 +5,6 @@ description: Count of MAU creating label lists on Boards
product_section: dev
product_stage: plan
product_group: project_management
-product_category: boards
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181304_g_project_management_issue_title_changed_monthly.yml b/config/metrics/counts_28d/20210216181304_g_project_management_issue_title_changed_monthly.yml
index b61909074df..ae28eb8e057 100644
--- a/config/metrics/counts_28d/20210216181304_g_project_management_issue_title_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181304_g_project_management_issue_title_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU editing an issue title
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181308_g_project_management_issue_description_changed_monthly.yml b/config/metrics/counts_28d/20210216181308_g_project_management_issue_description_changed_monthly.yml
index 7aa9aec3e83..e00b7c18176 100644
--- a/config/metrics/counts_28d/20210216181308_g_project_management_issue_description_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181308_g_project_management_issue_description_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU editing an issue description
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181311_g_project_management_issue_assignee_changed_monthly.yml b/config/metrics/counts_28d/20210216181311_g_project_management_issue_assignee_changed_monthly.yml
index a7ac8e5ff84..a548cf8ede7 100644
--- a/config/metrics/counts_28d/20210216181311_g_project_management_issue_assignee_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181311_g_project_management_issue_assignee_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU changing issue assignees
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181315_g_project_management_issue_made_confidential_monthly.yml b/config/metrics/counts_28d/20210216181315_g_project_management_issue_made_confidential_monthly.yml
index 10ce645e3c1..0ff91cc6f9e 100644
--- a/config/metrics/counts_28d/20210216181315_g_project_management_issue_made_confidential_monthly.yml
+++ b/config/metrics/counts_28d/20210216181315_g_project_management_issue_made_confidential_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU making an issue confidential
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181319_g_project_management_issue_made_visible_monthly.yml b/config/metrics/counts_28d/20210216181319_g_project_management_issue_made_visible_monthly.yml
index 5264a1b5d7f..764acfd1720 100644
--- a/config/metrics/counts_28d/20210216181319_g_project_management_issue_made_visible_monthly.yml
+++ b/config/metrics/counts_28d/20210216181319_g_project_management_issue_made_visible_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU making an issue not confidential
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181323_g_project_management_issue_created_monthly.yml b/config/metrics/counts_28d/20210216181323_g_project_management_issue_created_monthly.yml
index 9d8424e05f8..0389fe6a513 100644
--- a/config/metrics/counts_28d/20210216181323_g_project_management_issue_created_monthly.yml
+++ b/config/metrics/counts_28d/20210216181323_g_project_management_issue_created_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU creating new issues
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181326_g_project_management_issue_closed_monthly.yml b/config/metrics/counts_28d/20210216181326_g_project_management_issue_closed_monthly.yml
index 4c8177c17b3..962c8d85417 100644
--- a/config/metrics/counts_28d/20210216181326_g_project_management_issue_closed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181326_g_project_management_issue_closed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU closing an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181330_g_project_management_issue_reopened_monthly.yml b/config/metrics/counts_28d/20210216181330_g_project_management_issue_reopened_monthly.yml
index 4c09b7ee20c..6e1690afaba 100644
--- a/config/metrics/counts_28d/20210216181330_g_project_management_issue_reopened_monthly.yml
+++ b/config/metrics/counts_28d/20210216181330_g_project_management_issue_reopened_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU re-opening a closed issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181334_g_project_management_issue_label_changed_monthly.yml b/config/metrics/counts_28d/20210216181334_g_project_management_issue_label_changed_monthly.yml
index 3d50e6cd9b7..cbf3795eb4e 100644
--- a/config/metrics/counts_28d/20210216181334_g_project_management_issue_label_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181334_g_project_management_issue_label_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU changing an issue's label
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181337_g_project_management_issue_milestone_changed_monthly.yml b/config/metrics/counts_28d/20210216181337_g_project_management_issue_milestone_changed_monthly.yml
index af66e66109a..a653df04b24 100644
--- a/config/metrics/counts_28d/20210216181337_g_project_management_issue_milestone_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181337_g_project_management_issue_milestone_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU changing an issue's milestone
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181348_g_project_management_issue_cross_referenced_monthly.yml b/config/metrics/counts_28d/20210216181348_g_project_management_issue_cross_referenced_monthly.yml
index b1c9d8b9fde..c476a738721 100644
--- a/config/metrics/counts_28d/20210216181348_g_project_management_issue_cross_referenced_monthly.yml
+++ b/config/metrics/counts_28d/20210216181348_g_project_management_issue_cross_referenced_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU referencing an issue from somewhere else
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181352_g_project_management_issue_moved_monthly.yml b/config/metrics/counts_28d/20210216181352_g_project_management_issue_moved_monthly.yml
index 4b12bba4a5d..d7d432060d3 100644
--- a/config/metrics/counts_28d/20210216181352_g_project_management_issue_moved_monthly.yml
+++ b/config/metrics/counts_28d/20210216181352_g_project_management_issue_moved_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU moving an issue to another project
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181356_g_project_management_issue_related_monthly.yml b/config/metrics/counts_28d/20210216181356_g_project_management_issue_related_monthly.yml
index 0bd107cdaed..62d58bb6da1 100644
--- a/config/metrics/counts_28d/20210216181356_g_project_management_issue_related_monthly.yml
+++ b/config/metrics/counts_28d/20210216181356_g_project_management_issue_related_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU relating an issue to another issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181400_g_project_management_issue_unrelated_monthly.yml b/config/metrics/counts_28d/20210216181400_g_project_management_issue_unrelated_monthly.yml
index fe0942b44b5..39b482d859b 100644
--- a/config/metrics/counts_28d/20210216181400_g_project_management_issue_unrelated_monthly.yml
+++ b/config/metrics/counts_28d/20210216181400_g_project_management_issue_unrelated_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU unrelating an issue to another issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181403_g_project_management_issue_marked_as_duplicate_monthly.yml b/config/metrics/counts_28d/20210216181403_g_project_management_issue_marked_as_duplicate_monthly.yml
index 882eb5d1ac2..8d6bb063089 100644
--- a/config/metrics/counts_28d/20210216181403_g_project_management_issue_marked_as_duplicate_monthly.yml
+++ b/config/metrics/counts_28d/20210216181403_g_project_management_issue_marked_as_duplicate_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU marking an issue as a duplicate
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181407_g_project_management_issue_locked_monthly.yml b/config/metrics/counts_28d/20210216181407_g_project_management_issue_locked_monthly.yml
index b8eb3dcf218..290aa31ee18 100644
--- a/config/metrics/counts_28d/20210216181407_g_project_management_issue_locked_monthly.yml
+++ b/config/metrics/counts_28d/20210216181407_g_project_management_issue_locked_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU locking an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181411_g_project_management_issue_unlocked_monthly.yml b/config/metrics/counts_28d/20210216181411_g_project_management_issue_unlocked_monthly.yml
index 7260222961c..0f990ee8dcd 100644
--- a/config/metrics/counts_28d/20210216181411_g_project_management_issue_unlocked_monthly.yml
+++ b/config/metrics/counts_28d/20210216181411_g_project_management_issue_unlocked_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU unlocking an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181424_g_project_management_issue_designs_added_monthly.yml b/config/metrics/counts_28d/20210216181424_g_project_management_issue_designs_added_monthly.yml
index 6022e93b0a5..d7958ab29fe 100644
--- a/config/metrics/counts_28d/20210216181424_g_project_management_issue_designs_added_monthly.yml
+++ b/config/metrics/counts_28d/20210216181424_g_project_management_issue_designs_added_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU adding a design to an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181427_g_project_management_issue_designs_modified_monthly.yml b/config/metrics/counts_28d/20210216181427_g_project_management_issue_designs_modified_monthly.yml
index 95543c6093d..953dbd9f7f0 100644
--- a/config/metrics/counts_28d/20210216181427_g_project_management_issue_designs_modified_monthly.yml
+++ b/config/metrics/counts_28d/20210216181427_g_project_management_issue_designs_modified_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU modifying a design on an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181431_g_project_management_issue_designs_removed_monthly.yml b/config/metrics/counts_28d/20210216181431_g_project_management_issue_designs_removed_monthly.yml
index 85341debfb7..565f819fedb 100644
--- a/config/metrics/counts_28d/20210216181431_g_project_management_issue_designs_removed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181431_g_project_management_issue_designs_removed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU removing a design from an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181435_g_project_management_issue_due_date_changed_monthly.yml b/config/metrics/counts_28d/20210216181435_g_project_management_issue_due_date_changed_monthly.yml
index 60c293fd04d..cfdecbf45e2 100644
--- a/config/metrics/counts_28d/20210216181435_g_project_management_issue_due_date_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181435_g_project_management_issue_due_date_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU changing an issue due date
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181438_g_project_management_issue_time_estimate_changed_monthly.yml b/config/metrics/counts_28d/20210216181438_g_project_management_issue_time_estimate_changed_monthly.yml
index db15f121047..0e4892865e1 100644
--- a/config/metrics/counts_28d/20210216181438_g_project_management_issue_time_estimate_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181438_g_project_management_issue_time_estimate_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU changing an issue time estimate
product_section: dev
product_stage: plan
product_group: project_management
-product_category: time_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181442_g_project_management_issue_time_spent_changed_monthly.yml b/config/metrics/counts_28d/20210216181442_g_project_management_issue_time_spent_changed_monthly.yml
index 50dcf6156b1..c49dc9a076c 100644
--- a/config/metrics/counts_28d/20210216181442_g_project_management_issue_time_spent_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181442_g_project_management_issue_time_spent_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU recording time spent on an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: time_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181446_g_project_management_issue_comment_added_monthly.yml b/config/metrics/counts_28d/20210216181446_g_project_management_issue_comment_added_monthly.yml
index 38532866753..3062544003d 100644
--- a/config/metrics/counts_28d/20210216181446_g_project_management_issue_comment_added_monthly.yml
+++ b/config/metrics/counts_28d/20210216181446_g_project_management_issue_comment_added_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU commenting on an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181450_g_project_management_issue_comment_edited_monthly.yml b/config/metrics/counts_28d/20210216181450_g_project_management_issue_comment_edited_monthly.yml
index 944b706bdc5..cdf12de3a38 100644
--- a/config/metrics/counts_28d/20210216181450_g_project_management_issue_comment_edited_monthly.yml
+++ b/config/metrics/counts_28d/20210216181450_g_project_management_issue_comment_edited_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU editing a comment on an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181453_g_project_management_issue_comment_removed_monthly.yml b/config/metrics/counts_28d/20210216181453_g_project_management_issue_comment_removed_monthly.yml
index 201d9d5f169..4327a7e60d7 100644
--- a/config/metrics/counts_28d/20210216181453_g_project_management_issue_comment_removed_monthly.yml
+++ b/config/metrics/counts_28d/20210216181453_g_project_management_issue_comment_removed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU deleting a comment from an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181501_g_project_management_issue_cloned_monthly.yml b/config/metrics/counts_28d/20210216181501_g_project_management_issue_cloned_monthly.yml
index 6aa874e0703..de4fc157b43 100644
--- a/config/metrics/counts_28d/20210216181501_g_project_management_issue_cloned_monthly.yml
+++ b/config/metrics/counts_28d/20210216181501_g_project_management_issue_cloned_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU cloning an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181504_issues_edit_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216181504_issues_edit_total_unique_counts_monthly.yml
index bd654f16cd5..a9bc74e96e6 100644
--- a/config/metrics/counts_28d/20210216181504_issues_edit_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216181504_issues_edit_total_unique_counts_monthly.yml
@@ -5,7 +5,6 @@ description: Aggregate count of MAU taking an action related to an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181508_i_quickactions_approve_monthly.yml b/config/metrics/counts_28d/20210216181508_i_quickactions_approve_monthly.yml
index 3d6bb37de79..a27d6351c94 100644
--- a/config/metrics/counts_28d/20210216181508_i_quickactions_approve_monthly.yml
+++ b/config/metrics/counts_28d/20210216181508_i_quickactions_approve_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/approve` quick action
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181512_i_quickactions_assign_single_monthly.yml b/config/metrics/counts_28d/20210216181512_i_quickactions_assign_single_monthly.yml
index c905cdcfb04..04836723d40 100644
--- a/config/metrics/counts_28d/20210216181512_i_quickactions_assign_single_monthly.yml
+++ b/config/metrics/counts_28d/20210216181512_i_quickactions_assign_single_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/assign @user1` quick action to assign a si
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181516_i_quickactions_assign_multiple_monthly.yml b/config/metrics/counts_28d/20210216181516_i_quickactions_assign_multiple_monthly.yml
index 3c2cad5831e..9a48aebf77f 100644
--- a/config/metrics/counts_28d/20210216181516_i_quickactions_assign_multiple_monthly.yml
+++ b/config/metrics/counts_28d/20210216181516_i_quickactions_assign_multiple_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/assign @user1 @user2` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181519_i_quickactions_assign_self_monthly.yml b/config/metrics/counts_28d/20210216181519_i_quickactions_assign_self_monthly.yml
index 89d0de2550f..7ed3a66af89 100644
--- a/config/metrics/counts_28d/20210216181519_i_quickactions_assign_self_monthly.yml
+++ b/config/metrics/counts_28d/20210216181519_i_quickactions_assign_self_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/assign me` quick action to assign self to
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181523_i_quickactions_assign_reviewer_monthly.yml b/config/metrics/counts_28d/20210216181523_i_quickactions_assign_reviewer_monthly.yml
index ef2778050b0..49e5f98fefb 100644
--- a/config/metrics/counts_28d/20210216181523_i_quickactions_assign_reviewer_monthly.yml
+++ b/config/metrics/counts_28d/20210216181523_i_quickactions_assign_reviewer_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/assign_reviewer` or `request_reviewer` qui
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181527_i_quickactions_award_monthly.yml b/config/metrics/counts_28d/20210216181527_i_quickactions_award_monthly.yml
index ac3ca60d777..0d522959439 100644
--- a/config/metrics/counts_28d/20210216181527_i_quickactions_award_monthly.yml
+++ b/config/metrics/counts_28d/20210216181527_i_quickactions_award_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/award` quick action to set an award emoji
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181530_i_quickactions_board_move_monthly.yml b/config/metrics/counts_28d/20210216181530_i_quickactions_board_move_monthly.yml
index 4f35a7dcd33..a28aa9018e4 100644
--- a/config/metrics/counts_28d/20210216181530_i_quickactions_board_move_monthly.yml
+++ b/config/metrics/counts_28d/20210216181530_i_quickactions_board_move_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/board_move` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181541_i_quickactions_clone_monthly.yml b/config/metrics/counts_28d/20210216181541_i_quickactions_clone_monthly.yml
index 235d6505438..90d0389c8b1 100644
--- a/config/metrics/counts_28d/20210216181541_i_quickactions_clone_monthly.yml
+++ b/config/metrics/counts_28d/20210216181541_i_quickactions_clone_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/clone` quick action to clone an issue.
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181545_i_quickactions_close_monthly.yml b/config/metrics/counts_28d/20210216181545_i_quickactions_close_monthly.yml
index d2ae2e53f38..abd86021fb8 100644
--- a/config/metrics/counts_28d/20210216181545_i_quickactions_close_monthly.yml
+++ b/config/metrics/counts_28d/20210216181545_i_quickactions_close_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/close` quick action to close an issuable
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181549_i_quickactions_confidential_monthly.yml b/config/metrics/counts_28d/20210216181549_i_quickactions_confidential_monthly.yml
index 9dca99be928..fa7bac6904b 100644
--- a/config/metrics/counts_28d/20210216181549_i_quickactions_confidential_monthly.yml
+++ b/config/metrics/counts_28d/20210216181549_i_quickactions_confidential_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/confidential` quick action to set an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181553_i_quickactions_copy_metadata_merge_request_monthly.yml b/config/metrics/counts_28d/20210216181553_i_quickactions_copy_metadata_merge_request_monthly.yml
index 1b8e52b127e..c313f5e5108 100644
--- a/config/metrics/counts_28d/20210216181553_i_quickactions_copy_metadata_merge_request_monthly.yml
+++ b/config/metrics/counts_28d/20210216181553_i_quickactions_copy_metadata_merge_request_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/copy_metadata` quick action on a Merge Req
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181556_i_quickactions_copy_metadata_issue_monthly.yml b/config/metrics/counts_28d/20210216181556_i_quickactions_copy_metadata_issue_monthly.yml
index 68d3b37035c..3baafede3c4 100644
--- a/config/metrics/counts_28d/20210216181556_i_quickactions_copy_metadata_issue_monthly.yml
+++ b/config/metrics/counts_28d/20210216181556_i_quickactions_copy_metadata_issue_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/copy_metadata` quick action on an issue
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181600_i_quickactions_create_merge_request_monthly.yml b/config/metrics/counts_28d/20210216181600_i_quickactions_create_merge_request_monthly.yml
index ddcec1d9a86..993489a08c8 100644
--- a/config/metrics/counts_28d/20210216181600_i_quickactions_create_merge_request_monthly.yml
+++ b/config/metrics/counts_28d/20210216181600_i_quickactions_create_merge_request_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/create_merge_request` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181604_i_quickactions_done_monthly.yml b/config/metrics/counts_28d/20210216181604_i_quickactions_done_monthly.yml
index 725e369519d..d4b162a10a7 100644
--- a/config/metrics/counts_28d/20210216181604_i_quickactions_done_monthly.yml
+++ b/config/metrics/counts_28d/20210216181604_i_quickactions_done_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/done` quick action to mark a todo as done
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181607_i_quickactions_draft_monthly.yml b/config/metrics/counts_28d/20210216181607_i_quickactions_draft_monthly.yml
index 77a22a982d4..f0a957575b1 100644
--- a/config/metrics/counts_28d/20210216181607_i_quickactions_draft_monthly.yml
+++ b/config/metrics/counts_28d/20210216181607_i_quickactions_draft_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/draft` quick action on a Merge Request
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181611_i_quickactions_due_monthly.yml b/config/metrics/counts_28d/20210216181611_i_quickactions_due_monthly.yml
index aea158347d2..a50bd036ddb 100644
--- a/config/metrics/counts_28d/20210216181611_i_quickactions_due_monthly.yml
+++ b/config/metrics/counts_28d/20210216181611_i_quickactions_due_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/due` quick action to change the due date o
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181615_i_quickactions_duplicate_monthly.yml b/config/metrics/counts_28d/20210216181615_i_quickactions_duplicate_monthly.yml
index e79a1b5e869..e1a53fb0864 100644
--- a/config/metrics/counts_28d/20210216181615_i_quickactions_duplicate_monthly.yml
+++ b/config/metrics/counts_28d/20210216181615_i_quickactions_duplicate_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/duplicate` quick action to mark an issue a
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181622_i_quickactions_estimate_monthly.yml b/config/metrics/counts_28d/20210216181622_i_quickactions_estimate_monthly.yml
index e59d264fe1d..3de48247b40 100644
--- a/config/metrics/counts_28d/20210216181622_i_quickactions_estimate_monthly.yml
+++ b/config/metrics/counts_28d/20210216181622_i_quickactions_estimate_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/estimate` quick action to set a time estim
product_section: dev
product_stage: plan
product_group: project_management
-product_category: time_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181629_i_quickactions_label_monthly.yml b/config/metrics/counts_28d/20210216181629_i_quickactions_label_monthly.yml
index 5b34fee13fd..3c80afe9a4a 100644
--- a/config/metrics/counts_28d/20210216181629_i_quickactions_label_monthly.yml
+++ b/config/metrics/counts_28d/20210216181629_i_quickactions_label_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/label` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181633_i_quickactions_lock_monthly.yml b/config/metrics/counts_28d/20210216181633_i_quickactions_lock_monthly.yml
index 6c1d4bb8520..a0029941580 100644
--- a/config/metrics/counts_28d/20210216181633_i_quickactions_lock_monthly.yml
+++ b/config/metrics/counts_28d/20210216181633_i_quickactions_lock_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/lock` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181637_i_quickactions_merge_monthly.yml b/config/metrics/counts_28d/20210216181637_i_quickactions_merge_monthly.yml
index 524a75f84d4..f138833b198 100644
--- a/config/metrics/counts_28d/20210216181637_i_quickactions_merge_monthly.yml
+++ b/config/metrics/counts_28d/20210216181637_i_quickactions_merge_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/merge` quick action
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181641_i_quickactions_milestone_monthly.yml b/config/metrics/counts_28d/20210216181641_i_quickactions_milestone_monthly.yml
index 7e373fe2e13..fb8a1cc1168 100644
--- a/config/metrics/counts_28d/20210216181641_i_quickactions_milestone_monthly.yml
+++ b/config/metrics/counts_28d/20210216181641_i_quickactions_milestone_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/milestone` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181644_i_quickactions_move_monthly.yml b/config/metrics/counts_28d/20210216181644_i_quickactions_move_monthly.yml
index 88765db809e..f5d1a74e032 100644
--- a/config/metrics/counts_28d/20210216181644_i_quickactions_move_monthly.yml
+++ b/config/metrics/counts_28d/20210216181644_i_quickactions_move_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/move` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181659_i_quickactions_reassign_monthly.yml b/config/metrics/counts_28d/20210216181659_i_quickactions_reassign_monthly.yml
index 44d3d677dee..0b1c9d29c40 100644
--- a/config/metrics/counts_28d/20210216181659_i_quickactions_reassign_monthly.yml
+++ b/config/metrics/counts_28d/20210216181659_i_quickactions_reassign_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/reassign @user1` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181703_i_quickactions_reassign_reviewer_monthly.yml b/config/metrics/counts_28d/20210216181703_i_quickactions_reassign_reviewer_monthly.yml
index 061bcbbb6c0..0f931631431 100644
--- a/config/metrics/counts_28d/20210216181703_i_quickactions_reassign_reviewer_monthly.yml
+++ b/config/metrics/counts_28d/20210216181703_i_quickactions_reassign_reviewer_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/reassign_reviewer` quick action
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181707_i_quickactions_rebase_monthly.yml b/config/metrics/counts_28d/20210216181707_i_quickactions_rebase_monthly.yml
index ae3b9ae13c2..938af8fed5e 100644
--- a/config/metrics/counts_28d/20210216181707_i_quickactions_rebase_monthly.yml
+++ b/config/metrics/counts_28d/20210216181707_i_quickactions_rebase_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/rebase` quick action on a Merge Request
product_section: dev
product_stage: source_code
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181710_i_quickactions_relabel_monthly.yml b/config/metrics/counts_28d/20210216181710_i_quickactions_relabel_monthly.yml
index 4e3f6f53694..63722b97746 100644
--- a/config/metrics/counts_28d/20210216181710_i_quickactions_relabel_monthly.yml
+++ b/config/metrics/counts_28d/20210216181710_i_quickactions_relabel_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/relabel` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181714_i_quickactions_relate_monthly.yml b/config/metrics/counts_28d/20210216181714_i_quickactions_relate_monthly.yml
index 88b3d2c6c6d..763f8e2a7ed 100644
--- a/config/metrics/counts_28d/20210216181714_i_quickactions_relate_monthly.yml
+++ b/config/metrics/counts_28d/20210216181714_i_quickactions_relate_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/relate` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181721_i_quickactions_remove_due_date_monthly.yml b/config/metrics/counts_28d/20210216181721_i_quickactions_remove_due_date_monthly.yml
index ec0f16a09c2..73f14879e36 100644
--- a/config/metrics/counts_28d/20210216181721_i_quickactions_remove_due_date_monthly.yml
+++ b/config/metrics/counts_28d/20210216181721_i_quickactions_remove_due_date_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/remove_due_date` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181729_i_quickactions_remove_estimate_monthly.yml b/config/metrics/counts_28d/20210216181729_i_quickactions_remove_estimate_monthly.yml
index 831f9a93982..f58931e1523 100644
--- a/config/metrics/counts_28d/20210216181729_i_quickactions_remove_estimate_monthly.yml
+++ b/config/metrics/counts_28d/20210216181729_i_quickactions_remove_estimate_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/remove_estimate` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: time_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181736_i_quickactions_remove_milestone_monthly.yml b/config/metrics/counts_28d/20210216181736_i_quickactions_remove_milestone_monthly.yml
index aacd8916937..1e5453a643d 100644
--- a/config/metrics/counts_28d/20210216181736_i_quickactions_remove_milestone_monthly.yml
+++ b/config/metrics/counts_28d/20210216181736_i_quickactions_remove_milestone_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/remove_milestone` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181744_i_quickactions_remove_time_spent_monthly.yml b/config/metrics/counts_28d/20210216181744_i_quickactions_remove_time_spent_monthly.yml
index 13adfd63500..b70537d3065 100644
--- a/config/metrics/counts_28d/20210216181744_i_quickactions_remove_time_spent_monthly.yml
+++ b/config/metrics/counts_28d/20210216181744_i_quickactions_remove_time_spent_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/remove_time_spent` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181747_i_quickactions_remove_zoom_monthly.yml b/config/metrics/counts_28d/20210216181747_i_quickactions_remove_zoom_monthly.yml
index 4e0e679e4d8..b183df0c618 100644
--- a/config/metrics/counts_28d/20210216181747_i_quickactions_remove_zoom_monthly.yml
+++ b/config/metrics/counts_28d/20210216181747_i_quickactions_remove_zoom_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/remove_zoom` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181751_i_quickactions_reopen_monthly.yml b/config/metrics/counts_28d/20210216181751_i_quickactions_reopen_monthly.yml
index 8341b7f0179..a7c0758618a 100644
--- a/config/metrics/counts_28d/20210216181751_i_quickactions_reopen_monthly.yml
+++ b/config/metrics/counts_28d/20210216181751_i_quickactions_reopen_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/reopen` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181755_i_quickactions_shrug_monthly.yml b/config/metrics/counts_28d/20210216181755_i_quickactions_shrug_monthly.yml
index c711dff2df0..1d608f2fda3 100644
--- a/config/metrics/counts_28d/20210216181755_i_quickactions_shrug_monthly.yml
+++ b/config/metrics/counts_28d/20210216181755_i_quickactions_shrug_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/shrug` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181758_i_quickactions_spend_subtract_monthly.yml b/config/metrics/counts_28d/20210216181758_i_quickactions_spend_subtract_monthly.yml
index 7de55598d47..b431f76fce5 100644
--- a/config/metrics/counts_28d/20210216181758_i_quickactions_spend_subtract_monthly.yml
+++ b/config/metrics/counts_28d/20210216181758_i_quickactions_spend_subtract_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/spend` quick action to subtract time spent
product_section: dev
product_stage: plan
product_group: project_management
-product_category: time_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181802_i_quickactions_spend_add_monthly.yml b/config/metrics/counts_28d/20210216181802_i_quickactions_spend_add_monthly.yml
index 99f7aa98719..e0f66641c21 100644
--- a/config/metrics/counts_28d/20210216181802_i_quickactions_spend_add_monthly.yml
+++ b/config/metrics/counts_28d/20210216181802_i_quickactions_spend_add_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/spend` quick action to add time spent
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181806_i_quickactions_submit_review_monthly.yml b/config/metrics/counts_28d/20210216181806_i_quickactions_submit_review_monthly.yml
index 1e3fefbcfae..c63915124e9 100644
--- a/config/metrics/counts_28d/20210216181806_i_quickactions_submit_review_monthly.yml
+++ b/config/metrics/counts_28d/20210216181806_i_quickactions_submit_review_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/submit_review` quick action on Merge Reque
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181809_i_quickactions_subscribe_monthly.yml b/config/metrics/counts_28d/20210216181809_i_quickactions_subscribe_monthly.yml
index 9eca7c87963..e0f1f69cf29 100644
--- a/config/metrics/counts_28d/20210216181809_i_quickactions_subscribe_monthly.yml
+++ b/config/metrics/counts_28d/20210216181809_i_quickactions_subscribe_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/subscribe` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181813_i_quickactions_tableflip_monthly.yml b/config/metrics/counts_28d/20210216181813_i_quickactions_tableflip_monthly.yml
index 5280ed2fcbf..a833675082f 100644
--- a/config/metrics/counts_28d/20210216181813_i_quickactions_tableflip_monthly.yml
+++ b/config/metrics/counts_28d/20210216181813_i_quickactions_tableflip_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/tableflip` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181817_i_quickactions_tag_monthly.yml b/config/metrics/counts_28d/20210216181817_i_quickactions_tag_monthly.yml
index 15c89bcec88..0bca2bcb539 100644
--- a/config/metrics/counts_28d/20210216181817_i_quickactions_tag_monthly.yml
+++ b/config/metrics/counts_28d/20210216181817_i_quickactions_tag_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/tag` quick action
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181821_i_quickactions_target_branch_monthly.yml b/config/metrics/counts_28d/20210216181821_i_quickactions_target_branch_monthly.yml
index 21cb0a54942..b71a8507df7 100644
--- a/config/metrics/counts_28d/20210216181821_i_quickactions_target_branch_monthly.yml
+++ b/config/metrics/counts_28d/20210216181821_i_quickactions_target_branch_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/target_branch` quick action on Merge Reque
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181824_i_quickactions_title_monthly.yml b/config/metrics/counts_28d/20210216181824_i_quickactions_title_monthly.yml
index 82168bfe6ca..913dbb249dd 100644
--- a/config/metrics/counts_28d/20210216181824_i_quickactions_title_monthly.yml
+++ b/config/metrics/counts_28d/20210216181824_i_quickactions_title_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/title` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181828_i_quickactions_todo_monthly.yml b/config/metrics/counts_28d/20210216181828_i_quickactions_todo_monthly.yml
index 78a05e1003c..106303b165c 100644
--- a/config/metrics/counts_28d/20210216181828_i_quickactions_todo_monthly.yml
+++ b/config/metrics/counts_28d/20210216181828_i_quickactions_todo_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/todo` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181832_i_quickactions_unassign_specific_monthly.yml b/config/metrics/counts_28d/20210216181832_i_quickactions_unassign_specific_monthly.yml
index df49d1b427c..529f8250bf3 100644
--- a/config/metrics/counts_28d/20210216181832_i_quickactions_unassign_specific_monthly.yml
+++ b/config/metrics/counts_28d/20210216181832_i_quickactions_unassign_specific_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/unassign @user1` quick action on Merge Req
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181835_i_quickactions_unassign_all_monthly.yml b/config/metrics/counts_28d/20210216181835_i_quickactions_unassign_all_monthly.yml
index 426ab3bf763..e2a5bfd1f8e 100644
--- a/config/metrics/counts_28d/20210216181835_i_quickactions_unassign_all_monthly.yml
+++ b/config/metrics/counts_28d/20210216181835_i_quickactions_unassign_all_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/unassign` quick action on Merge Requests
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181839_i_quickactions_unassign_reviewer_monthly.yml b/config/metrics/counts_28d/20210216181839_i_quickactions_unassign_reviewer_monthly.yml
index 5cb2e620dc1..e70f32d865f 100644
--- a/config/metrics/counts_28d/20210216181839_i_quickactions_unassign_reviewer_monthly.yml
+++ b/config/metrics/counts_28d/20210216181839_i_quickactions_unassign_reviewer_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/unassign_reviewer` or `/remove_reviewer` q
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181843_i_quickactions_unlabel_specific_monthly.yml b/config/metrics/counts_28d/20210216181843_i_quickactions_unlabel_specific_monthly.yml
index 00aa10d9578..92ad608b17f 100644
--- a/config/metrics/counts_28d/20210216181843_i_quickactions_unlabel_specific_monthly.yml
+++ b/config/metrics/counts_28d/20210216181843_i_quickactions_unlabel_specific_monthly.yml
@@ -6,7 +6,6 @@ description: Count of MAU using the `/unlabel` or `/remove_label` quick action t
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181846_i_quickactions_unlabel_all_monthly.yml b/config/metrics/counts_28d/20210216181846_i_quickactions_unlabel_all_monthly.yml
index 97e40c5a1b1..0b77381cfb9 100644
--- a/config/metrics/counts_28d/20210216181846_i_quickactions_unlabel_all_monthly.yml
+++ b/config/metrics/counts_28d/20210216181846_i_quickactions_unlabel_all_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/unlabel` quick action to remove all labels
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181850_i_quickactions_unlock_monthly.yml b/config/metrics/counts_28d/20210216181850_i_quickactions_unlock_monthly.yml
index 29c61e97726..f3a113c94e1 100644
--- a/config/metrics/counts_28d/20210216181850_i_quickactions_unlock_monthly.yml
+++ b/config/metrics/counts_28d/20210216181850_i_quickactions_unlock_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/unlock` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181854_i_quickactions_unsubscribe_monthly.yml b/config/metrics/counts_28d/20210216181854_i_quickactions_unsubscribe_monthly.yml
index 879a60fc8e7..f04053ccbe6 100644
--- a/config/metrics/counts_28d/20210216181854_i_quickactions_unsubscribe_monthly.yml
+++ b/config/metrics/counts_28d/20210216181854_i_quickactions_unsubscribe_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/unsubscribe` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181901_i_quickactions_wip_monthly.yml b/config/metrics/counts_28d/20210216181901_i_quickactions_wip_monthly.yml
index fcdc2e28030..3154dd769e5 100644
--- a/config/metrics/counts_28d/20210216181901_i_quickactions_wip_monthly.yml
+++ b/config/metrics/counts_28d/20210216181901_i_quickactions_wip_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/wip` quick action on Merge Requests
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181905_i_quickactions_zoom_monthly.yml b/config/metrics/counts_28d/20210216181905_i_quickactions_zoom_monthly.yml
index 5c346f40ebc..989754dd94c 100644
--- a/config/metrics/counts_28d/20210216181905_i_quickactions_zoom_monthly.yml
+++ b/config/metrics/counts_28d/20210216181905_i_quickactions_zoom_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/zoom` quick action on Issues
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181923_successful_deployments.yml b/config/metrics/counts_28d/20210216181923_successful_deployments.yml
index 27881c0975a..eb8b6df44e3 100644
--- a/config/metrics/counts_28d/20210216181923_successful_deployments.yml
+++ b/config/metrics/counts_28d/20210216181923_successful_deployments.yml
@@ -5,7 +5,6 @@ description: Total successful deployments
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181924_failed_deployments.yml b/config/metrics/counts_28d/20210216181924_failed_deployments.yml
index 1cd1a8a032a..a6e27b6e8e0 100644
--- a/config/metrics/counts_28d/20210216181924_failed_deployments.yml
+++ b/config/metrics/counts_28d/20210216181924_failed_deployments.yml
@@ -5,7 +5,6 @@ description: Total failed deployments
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181935_deployments.yml b/config/metrics/counts_28d/20210216181935_deployments.yml
index 5e7ee9b1d50..a375dd5f7c9 100644
--- a/config/metrics/counts_28d/20210216181935_deployments.yml
+++ b/config/metrics/counts_28d/20210216181935_deployments.yml
@@ -5,7 +5,6 @@ description: Unique users triggering deployments
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181937_failed_deployments.yml b/config/metrics/counts_28d/20210216181937_failed_deployments.yml
index adf373cde20..8099e8b4029 100644
--- a/config/metrics/counts_28d/20210216181937_failed_deployments.yml
+++ b/config/metrics/counts_28d/20210216181937_failed_deployments.yml
@@ -5,7 +5,6 @@ description: Disinct users who initiated a failed deployment.
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181939_releases.yml b/config/metrics/counts_28d/20210216181939_releases.yml
index c2530b288b9..d1f7ba91094 100644
--- a/config/metrics/counts_28d/20210216181939_releases.yml
+++ b/config/metrics/counts_28d/20210216181939_releases.yml
@@ -5,7 +5,6 @@ description: Unique users creating release tags
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181941_successful_deployments.yml b/config/metrics/counts_28d/20210216181941_successful_deployments.yml
index a2282df3e4f..98b65907aa6 100644
--- a/config/metrics/counts_28d/20210216181941_successful_deployments.yml
+++ b/config/metrics/counts_28d/20210216181941_successful_deployments.yml
@@ -5,7 +5,6 @@ description: Disinct users who initiated a successful deployment.
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml b/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml
index 9752c924a90..2509db0052d 100644
--- a/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml
+++ b/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml
@@ -5,7 +5,6 @@ description: Total GitLab Managed clusters with Runner enabled
product_section: ops
product_stage: verify
product_group: runner
-product_category: runner
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182034_deploy_keys.yml b/config/metrics/counts_28d/20210216182034_deploy_keys.yml
index 22e30fd46cd..e59714e3587 100644
--- a/config/metrics/counts_28d/20210216182034_deploy_keys.yml
+++ b/config/metrics/counts_28d/20210216182034_deploy_keys.yml
@@ -5,7 +5,6 @@ description: Count of users creating deploy keys in last 28 days.
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182036_keys.yml b/config/metrics/counts_28d/20210216182036_keys.yml
index 32debdcde5c..6125702b7f9 100644
--- a/config/metrics/counts_28d/20210216182036_keys.yml
+++ b/config/metrics/counts_28d/20210216182036_keys.yml
@@ -5,7 +5,6 @@ description: Count of users creating regular keys in last 28 days.
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182038_remote_mirrors.yml b/config/metrics/counts_28d/20210216182038_remote_mirrors.yml
index 49a8bd129c4..7a44bba7f38 100644
--- a/config/metrics/counts_28d/20210216182038_remote_mirrors.yml
+++ b/config/metrics/counts_28d/20210216182038_remote_mirrors.yml
@@ -6,7 +6,6 @@ description: Count of users creating projects with remote mirrors. Includes both
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182040_action_monthly_active_users_project_repo.yml b/config/metrics/counts_28d/20210216182040_action_monthly_active_users_project_repo.yml
index 4744976f4d1..308b55d9a90 100644
--- a/config/metrics/counts_28d/20210216182040_action_monthly_active_users_project_repo.yml
+++ b/config/metrics/counts_28d/20210216182040_action_monthly_active_users_project_repo.yml
@@ -5,7 +5,6 @@ description: Count of monthly active users who have performed any Git operation
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182041_action_monthly_active_users_git_write.yml b/config/metrics/counts_28d/20210216182041_action_monthly_active_users_git_write.yml
index 153596352e7..aed69340dfa 100644
--- a/config/metrics/counts_28d/20210216182041_action_monthly_active_users_git_write.yml
+++ b/config/metrics/counts_28d/20210216182041_action_monthly_active_users_git_write.yml
@@ -5,7 +5,6 @@ description: Aggregated value for wiki, design, and project repo Git write actio
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182051_protected_branches.yml b/config/metrics/counts_28d/20210216182051_protected_branches.yml
index 30a3fdec69a..8f6589b5c37 100644
--- a/config/metrics/counts_28d/20210216182051_protected_branches.yml
+++ b/config/metrics/counts_28d/20210216182051_protected_branches.yml
@@ -6,7 +6,6 @@ description: Count of users creating projects with repositories making use of at
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182102_wiki_action_monthly.yml b/config/metrics/counts_28d/20210216182102_wiki_action_monthly.yml
index 09aa1254bf7..fc821f8c83f 100644
--- a/config/metrics/counts_28d/20210216182102_wiki_action_monthly.yml
+++ b/config/metrics/counts_28d/20210216182102_wiki_action_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique actions done on a wiki (create, edit, delete)
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182106_design_action_monthly.yml b/config/metrics/counts_28d/20210216182106_design_action_monthly.yml
index 41157cef2fe..db0f7728aa3 100644
--- a/config/metrics/counts_28d/20210216182106_design_action_monthly.yml
+++ b/config/metrics/counts_28d/20210216182106_design_action_monthly.yml
@@ -5,7 +5,6 @@ description: Count of total design actions (upload, delete, comment, reply)
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182109_project_action_monthly.yml b/config/metrics/counts_28d/20210216182109_project_action_monthly.yml
index d6fc28af969..3d873b1c955 100644
--- a/config/metrics/counts_28d/20210216182109_project_action_monthly.yml
+++ b/config/metrics/counts_28d/20210216182109_project_action_monthly.yml
@@ -6,7 +6,6 @@ description: Count of unique actions done on projects and related resources (cre
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182129_sast_pipeline.yml b/config/metrics/counts_28d/20210216182129_sast_pipeline.yml
index 53f1d30f870..0babd0a456c 100644
--- a/config/metrics/counts_28d/20210216182129_sast_pipeline.yml
+++ b/config/metrics/counts_28d/20210216182129_sast_pipeline.yml
@@ -5,7 +5,6 @@ description: Counts of Pipelines that have at least 1 SAST job
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: static_application_security_testing
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182131_secret_detection_pipeline.yml b/config/metrics/counts_28d/20210216182131_secret_detection_pipeline.yml
index fee63f8d9fd..580ec1bd31e 100644
--- a/config/metrics/counts_28d/20210216182131_secret_detection_pipeline.yml
+++ b/config/metrics/counts_28d/20210216182131_secret_detection_pipeline.yml
@@ -5,7 +5,6 @@ description: Counts of Pipelines that have at least 1 Secret Detection job
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: secret_detection
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml b/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml
index 2bcd22eb7fc..7609b0d3bd7 100644
--- a/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml
+++ b/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml
@@ -6,7 +6,6 @@ description: Internal Tracking to count number of unit tests parsed for planning
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: code_testing
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183159_projects_with_alerts_created.yml b/config/metrics/counts_28d/20210216183159_projects_with_alerts_created.yml
index 37c12a1e9be..7557ba58c58 100644
--- a/config/metrics/counts_28d/20210216183159_projects_with_alerts_created.yml
+++ b/config/metrics/counts_28d/20210216183159_projects_with_alerts_created.yml
@@ -5,7 +5,6 @@ description: Monthly count of unique projects with HTTP alerting enabled
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml b/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml
index d617f3dcebd..9602d8c8553 100644
--- a/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml
+++ b/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml
@@ -5,7 +5,6 @@ description: This was test metric used for purpose of assuring correct implement
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: number
status: removed
milestone_removed: '13.11'
diff --git a/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml b/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml
index b5c1114ddbb..e5a5db2f0ec 100644
--- a/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml
+++ b/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml
@@ -5,7 +5,6 @@ description: This was test metric used for purpose of assuring correct implement
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: number
status: removed
milestone_removed: '13.11'
diff --git a/config/metrics/counts_28d/20210216183627_omniauth_providers.yml b/config/metrics/counts_28d/20210216183627_omniauth_providers.yml
index ab7e89ce449..e7764661dad 100644
--- a/config/metrics/counts_28d/20210216183627_omniauth_providers.yml
+++ b/config/metrics/counts_28d/20210216183627_omniauth_providers.yml
@@ -5,7 +5,6 @@ description: List of unique OmniAuth providers
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: system_access
value_type: object
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183638_unique_users_all_imports.yml b/config/metrics/counts_28d/20210216183638_unique_users_all_imports.yml
index 4e6bb25cb13..4ea6f65de58 100644
--- a/config/metrics/counts_28d/20210216183638_unique_users_all_imports.yml
+++ b/config/metrics/counts_28d/20210216183638_unique_users_all_imports.yml
@@ -5,7 +5,6 @@ description: Number of unique users performing imports
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183640_gitlab.yml b/config/metrics/counts_28d/20210216183640_gitlab.yml
index 2c29feff047..491e71844fd 100644
--- a/config/metrics/counts_28d/20210216183640_gitlab.yml
+++ b/config/metrics/counts_28d/20210216183640_gitlab.yml
@@ -5,7 +5,6 @@ description: REMOVED - Count of projects imported using bulk imports
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183642_gitlab_v1.yml b/config/metrics/counts_28d/20210216183642_gitlab_v1.yml
index 6deb3c937b2..b84882770ab 100644
--- a/config/metrics/counts_28d/20210216183642_gitlab_v1.yml
+++ b/config/metrics/counts_28d/20210216183642_gitlab_v1.yml
@@ -5,7 +5,6 @@ description: Count of bulk imports - GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183644_gitlab_project.yml b/config/metrics/counts_28d/20210216183644_gitlab_project.yml
index 0b776822fcc..c10a3571086 100644
--- a/config/metrics/counts_28d/20210216183644_gitlab_project.yml
+++ b/config/metrics/counts_28d/20210216183644_gitlab_project.yml
@@ -5,7 +5,6 @@ description: Count of projects imported using Project Import/Export
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183646_gitlab.yml b/config/metrics/counts_28d/20210216183646_gitlab.yml
index 73b7ae42466..5d21bc1c525 100644
--- a/config/metrics/counts_28d/20210216183646_gitlab.yml
+++ b/config/metrics/counts_28d/20210216183646_gitlab.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from GitLab using Project Export/Import
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183648_github.yml b/config/metrics/counts_28d/20210216183648_github.yml
index 159f0440bb8..9bb40312f62 100644
--- a/config/metrics/counts_28d/20210216183648_github.yml
+++ b/config/metrics/counts_28d/20210216183648_github.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from GitHub
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183650_bitbucket.yml b/config/metrics/counts_28d/20210216183650_bitbucket.yml
index 3ad9a26367e..7267b96f003 100644
--- a/config/metrics/counts_28d/20210216183650_bitbucket.yml
+++ b/config/metrics/counts_28d/20210216183650_bitbucket.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Bitbucket
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183652_bitbucket_server.yml b/config/metrics/counts_28d/20210216183652_bitbucket_server.yml
index 87c88931a7c..324b918a726 100644
--- a/config/metrics/counts_28d/20210216183652_bitbucket_server.yml
+++ b/config/metrics/counts_28d/20210216183652_bitbucket_server.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Bitbucket Server
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183653_gitea.yml b/config/metrics/counts_28d/20210216183653_gitea.yml
index f23380e1726..0757b6228cd 100644
--- a/config/metrics/counts_28d/20210216183653_gitea.yml
+++ b/config/metrics/counts_28d/20210216183653_gitea.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Gitea
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183655_git.yml b/config/metrics/counts_28d/20210216183655_git.yml
index e886cf6132b..77378e98233 100644
--- a/config/metrics/counts_28d/20210216183655_git.yml
+++ b/config/metrics/counts_28d/20210216183655_git.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Git
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183657_manifest.yml b/config/metrics/counts_28d/20210216183657_manifest.yml
index 316755c772f..fac22f07503 100644
--- a/config/metrics/counts_28d/20210216183657_manifest.yml
+++ b/config/metrics/counts_28d/20210216183657_manifest.yml
@@ -5,7 +5,6 @@ description: Count of projects imported using Manifest file
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183659_gitlab_migration.yml b/config/metrics/counts_28d/20210216183659_gitlab_migration.yml
index 413ccf6d2c0..ed3e8d8d6c0 100644
--- a/config/metrics/counts_28d/20210216183659_gitlab_migration.yml
+++ b/config/metrics/counts_28d/20210216183659_gitlab_migration.yml
@@ -5,7 +5,6 @@ description: Count of projects imported using GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183701_jira.yml b/config/metrics/counts_28d/20210216183701_jira.yml
index dc7c6c925f2..5ea1a771531 100644
--- a/config/metrics/counts_28d/20210216183701_jira.yml
+++ b/config/metrics/counts_28d/20210216183701_jira.yml
@@ -5,7 +5,6 @@ description: Count of imports from Jira
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183703_fogbugz.yml b/config/metrics/counts_28d/20210216183703_fogbugz.yml
index 44acc1f7fdb..9b66555c478 100644
--- a/config/metrics/counts_28d/20210216183703_fogbugz.yml
+++ b/config/metrics/counts_28d/20210216183703_fogbugz.yml
@@ -5,7 +5,6 @@ description: Count of imports from Fogbugz
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183705_phabricator.yml b/config/metrics/counts_28d/20210216183705_phabricator.yml
index 69ea2a20a69..df8c79d12e3 100644
--- a/config/metrics/counts_28d/20210216183705_phabricator.yml
+++ b/config/metrics/counts_28d/20210216183705_phabricator.yml
@@ -5,7 +5,6 @@ description: Count of imports from Phabricator
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183707_csv.yml b/config/metrics/counts_28d/20210216183707_csv.yml
index 5fd80dfd9a3..b1754f37f71 100644
--- a/config/metrics/counts_28d/20210216183707_csv.yml
+++ b/config/metrics/counts_28d/20210216183707_csv.yml
@@ -5,7 +5,6 @@ description: Count of (issue) imports from CSV file
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183709_group_import.yml b/config/metrics/counts_28d/20210216183709_group_import.yml
index 03ad489c40c..b1a35e1e6be 100644
--- a/config/metrics/counts_28d/20210216183709_group_import.yml
+++ b/config/metrics/counts_28d/20210216183709_group_import.yml
@@ -5,7 +5,6 @@ description: Number of group import states
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183711_gitlab_migration.yml b/config/metrics/counts_28d/20210216183711_gitlab_migration.yml
index 8e44c933e6e..293c5502077 100644
--- a/config/metrics/counts_28d/20210216183711_gitlab_migration.yml
+++ b/config/metrics/counts_28d/20210216183711_gitlab_migration.yml
@@ -5,7 +5,6 @@ description: Count of groups imported using GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183712_total.yml b/config/metrics/counts_28d/20210216183712_total.yml
index 0c97b73c81a..c9b916cf2bd 100644
--- a/config/metrics/counts_28d/20210216183712_total.yml
+++ b/config/metrics/counts_28d/20210216183712_total.yml
@@ -5,7 +5,6 @@ description: Count of all imported projects
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183714_gitlab_project.yml b/config/metrics/counts_28d/20210216183714_gitlab_project.yml
index 9257e00455c..3b9642da6ac 100644
--- a/config/metrics/counts_28d/20210216183714_gitlab_project.yml
+++ b/config/metrics/counts_28d/20210216183714_gitlab_project.yml
@@ -5,7 +5,6 @@ description: Count of projects imported using Project Import/Export
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183716_gitlab.yml b/config/metrics/counts_28d/20210216183716_gitlab.yml
index 0b9b9163ef1..0ac957a8b4b 100644
--- a/config/metrics/counts_28d/20210216183716_gitlab.yml
+++ b/config/metrics/counts_28d/20210216183716_gitlab.yml
@@ -5,7 +5,6 @@ description: Count of projects imported using Project Import/Export
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183718_github.yml b/config/metrics/counts_28d/20210216183718_github.yml
index b25a9b9266f..ad199ad3e30 100644
--- a/config/metrics/counts_28d/20210216183718_github.yml
+++ b/config/metrics/counts_28d/20210216183718_github.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from GitHub
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183720_bitbucket.yml b/config/metrics/counts_28d/20210216183720_bitbucket.yml
index 7ae5c83bc6c..04de804a4ac 100644
--- a/config/metrics/counts_28d/20210216183720_bitbucket.yml
+++ b/config/metrics/counts_28d/20210216183720_bitbucket.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Bitbucket
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183722_bitbucket_server.yml b/config/metrics/counts_28d/20210216183722_bitbucket_server.yml
index dee0bcf6600..96aa85bd03d 100644
--- a/config/metrics/counts_28d/20210216183722_bitbucket_server.yml
+++ b/config/metrics/counts_28d/20210216183722_bitbucket_server.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Bitbucket Server
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183724_gitea.yml b/config/metrics/counts_28d/20210216183724_gitea.yml
index cdb61b51634..ef967c52699 100644
--- a/config/metrics/counts_28d/20210216183724_gitea.yml
+++ b/config/metrics/counts_28d/20210216183724_gitea.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Gitea
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183726_git.yml b/config/metrics/counts_28d/20210216183726_git.yml
index 91e6a29d6fe..779485a9e3c 100644
--- a/config/metrics/counts_28d/20210216183726_git.yml
+++ b/config/metrics/counts_28d/20210216183726_git.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Git
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183728_manifest.yml b/config/metrics/counts_28d/20210216183728_manifest.yml
index 470aee68e76..822ea1f9bfa 100644
--- a/config/metrics/counts_28d/20210216183728_manifest.yml
+++ b/config/metrics/counts_28d/20210216183728_manifest.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Git using file Manifest
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183730_jira.yml b/config/metrics/counts_28d/20210216183730_jira.yml
index 04d2f7f19ad..2d54f765858 100644
--- a/config/metrics/counts_28d/20210216183730_jira.yml
+++ b/config/metrics/counts_28d/20210216183730_jira.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Jira
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183731_fogbugz.yml b/config/metrics/counts_28d/20210216183731_fogbugz.yml
index a11a386f014..83c8e3771c0 100644
--- a/config/metrics/counts_28d/20210216183731_fogbugz.yml
+++ b/config/metrics/counts_28d/20210216183731_fogbugz.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Fogbugz
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183733_phabricator.yml b/config/metrics/counts_28d/20210216183733_phabricator.yml
index 4237650388a..8108a98f4fd 100644
--- a/config/metrics/counts_28d/20210216183733_phabricator.yml
+++ b/config/metrics/counts_28d/20210216183733_phabricator.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from Phabricator
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183735_csv.yml b/config/metrics/counts_28d/20210216183735_csv.yml
index 4bceff8d3f6..a309a3d1f2d 100644
--- a/config/metrics/counts_28d/20210216183735_csv.yml
+++ b/config/metrics/counts_28d/20210216183735_csv.yml
@@ -5,7 +5,6 @@ description: Count of projects imported from CSV file
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183737_groups_imported.yml b/config/metrics/counts_28d/20210216183737_groups_imported.yml
index 643b5010c09..79e39cb214e 100644
--- a/config/metrics/counts_28d/20210216183737_groups_imported.yml
+++ b/config/metrics/counts_28d/20210216183737_groups_imported.yml
@@ -5,7 +5,6 @@ description: Count of imported groups
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216183922_search_unique_visits_for_any_target_monthly.yml b/config/metrics/counts_28d/20210216183922_search_unique_visits_for_any_target_monthly.yml
index bd3b35ae0e9..9ecfd9625d6 100644
--- a/config/metrics/counts_28d/20210216183922_search_unique_visits_for_any_target_monthly.yml
+++ b/config/metrics/counts_28d/20210216183922_search_unique_visits_for_any_target_monthly.yml
@@ -8,7 +8,6 @@ description: Total unique users for i_search_total, i_search_advanced, i_search_
product_section: enablement
product_stage: enablement
product_group: global_search
-product_category: global_search
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184024_g_edit_by_sse_monthly.yml b/config/metrics/counts_28d/20210216184024_g_edit_by_sse_monthly.yml
index 4225932b14b..15b1ac828f7 100644
--- a/config/metrics/counts_28d/20210216184024_g_edit_by_sse_monthly.yml
+++ b/config/metrics/counts_28d/20210216184024_g_edit_by_sse_monthly.yml
@@ -5,7 +5,6 @@ description: Number of user editing files using the Static Site Editor
product_section: dev
product_stage: create
product_group: editor
-product_category: static_site_editor
value_type: number
status: removed
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184047_git_write_action_monthly.yml b/config/metrics/counts_28d/20210216184047_git_write_action_monthly.yml
index d3dcfa28f58..fe89ff7ee4e 100644
--- a/config/metrics/counts_28d/20210216184047_git_write_action_monthly.yml
+++ b/config/metrics/counts_28d/20210216184047_git_write_action_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique Git write actions
product_section: dev
product_stage: create
product_group: source_code
-product_category: source_code_management
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184255_i_snippets_show_monthly.yml b/config/metrics/counts_28d/20210216184255_i_snippets_show_monthly.yml
index ffa7e442f40..abd475b4ba5 100644
--- a/config/metrics/counts_28d/20210216184255_i_snippets_show_monthly.yml
+++ b/config/metrics/counts_28d/20210216184255_i_snippets_show_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly number of users viewing snippets
product_section: dev
product_stage: create
product_group: editor
-product_category: snippets
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184259_p_terraform_state_api_unique_users_monthly.yml b/config/metrics/counts_28d/20210216184259_p_terraform_state_api_unique_users_monthly.yml
index 382c98ccbe2..7d222acb68f 100644
--- a/config/metrics/counts_28d/20210216184259_p_terraform_state_api_unique_users_monthly.yml
+++ b/config/metrics/counts_28d/20210216184259_p_terraform_state_api_unique_users_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly active users of GitLab Managed Terraform states
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184303_o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly.yml b/config/metrics/counts_28d/20210216184303_o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly.yml
index bbdead7be2e..d01b08ea827 100644
--- a/config/metrics/counts_28d/20210216184303_o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly.yml
+++ b/config/metrics/counts_28d/20210216184303_o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly.yml
@@ -6,7 +6,6 @@ description: Monthly unique user count doing commits which contains the CI confi
product_section: ops
product_stage: verify
product_group: pipeline_authoring
-product_category: pipeline_authoring
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184312_i_code_review_user_toggled_task_item_status_monthly.yml b/config/metrics/counts_28d/20210216184312_i_code_review_user_toggled_task_item_status_monthly.yml
index f3b794bcc95..850a1b3113c 100644
--- a/config/metrics/counts_28d/20210216184312_i_code_review_user_toggled_task_item_status_monthly.yml
+++ b/config/metrics/counts_28d/20210216184312_i_code_review_user_toggled_task_item_status_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_toggled_task_item_st
description: Count of unique users per month who toggled a task item in a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184322_i_code_review_user_approve_mr_monthly.yml b/config/metrics/counts_28d/20210216184322_i_code_review_user_approve_mr_monthly.yml
index 7968c4cbba5..10075e0b60a 100644
--- a/config/metrics/counts_28d/20210216184322_i_code_review_user_approve_mr_monthly.yml
+++ b/config/metrics/counts_28d/20210216184322_i_code_review_user_approve_mr_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_approve_mr_monthly
description: Count of unique users per month who approve a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184326_i_code_review_user_unapprove_mr_monthly.yml b/config/metrics/counts_28d/20210216184326_i_code_review_user_unapprove_mr_monthly.yml
index 60a38d6fa8e..3d377fb013b 100644
--- a/config/metrics/counts_28d/20210216184326_i_code_review_user_unapprove_mr_monthly.yml
+++ b/config/metrics/counts_28d/20210216184326_i_code_review_user_unapprove_mr_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_unapprove_mr_monthly
description: Count of unique users per month who unapprove a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184330_i_code_review_user_resolve_thread_monthly.yml b/config/metrics/counts_28d/20210216184330_i_code_review_user_resolve_thread_monthly.yml
index e58f002071a..61bb424a1fc 100644
--- a/config/metrics/counts_28d/20210216184330_i_code_review_user_resolve_thread_monthly.yml
+++ b/config/metrics/counts_28d/20210216184330_i_code_review_user_resolve_thread_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_resolve_thread_month
description: Count of unique users per month who resolve a thread in a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184334_i_code_review_user_unresolve_thread_monthly.yml b/config/metrics/counts_28d/20210216184334_i_code_review_user_unresolve_thread_monthly.yml
index d19a8a9d711..4b518261894 100644
--- a/config/metrics/counts_28d/20210216184334_i_code_review_user_unresolve_thread_monthly.yml
+++ b/config/metrics/counts_28d/20210216184334_i_code_review_user_unresolve_thread_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_unresolve_thread_mon
description: Count of unique users per month who unresolve a thread in a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184338_i_code_review_edit_mr_title_monthly.yml b/config/metrics/counts_28d/20210216184338_i_code_review_edit_mr_title_monthly.yml
index 526a0da2dd8..bdbef148d43 100644
--- a/config/metrics/counts_28d/20210216184338_i_code_review_edit_mr_title_monthly.yml
+++ b/config/metrics/counts_28d/20210216184338_i_code_review_edit_mr_title_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_edit_mr_title_monthly
description: Count of unique users per month who edit the title of a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184342_i_code_review_edit_mr_desc_monthly.yml b/config/metrics/counts_28d/20210216184342_i_code_review_edit_mr_desc_monthly.yml
index 1df6ec58528..eafa238227e 100644
--- a/config/metrics/counts_28d/20210216184342_i_code_review_edit_mr_desc_monthly.yml
+++ b/config/metrics/counts_28d/20210216184342_i_code_review_edit_mr_desc_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_edit_mr_desc_monthly
description: Count of unique users per month who edit the description of a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184353_i_code_review_user_create_review_note_monthly.yml b/config/metrics/counts_28d/20210216184353_i_code_review_user_create_review_note_monthly.yml
index 144b0c4cd6a..c94e2898539 100644
--- a/config/metrics/counts_28d/20210216184353_i_code_review_user_create_review_note_monthly.yml
+++ b/config/metrics/counts_28d/20210216184353_i_code_review_user_create_review_note_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who create a note as part of a merg
request review
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184357_i_code_review_user_publish_review_monthly.yml b/config/metrics/counts_28d/20210216184357_i_code_review_user_publish_review_monthly.yml
index 33e9f1a2e66..e644c4a3423 100644
--- a/config/metrics/counts_28d/20210216184357_i_code_review_user_publish_review_monthly.yml
+++ b/config/metrics/counts_28d/20210216184357_i_code_review_user_publish_review_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who publish their review as part of
merge request review
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184401_i_code_review_user_create_multiline_mr_comment_monthly.yml b/config/metrics/counts_28d/20210216184401_i_code_review_user_create_multiline_mr_comment_monthly.yml
index 0d487ff783e..7a2945e1782 100644
--- a/config/metrics/counts_28d/20210216184401_i_code_review_user_create_multiline_mr_comment_monthly.yml
+++ b/config/metrics/counts_28d/20210216184401_i_code_review_user_create_multiline_mr_comment_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who create a multiline comment in a
request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184405_i_code_review_user_edit_multiline_mr_comment_monthly.yml b/config/metrics/counts_28d/20210216184405_i_code_review_user_edit_multiline_mr_comment_monthly.yml
index b430d20b4c5..5ae14b9b9fd 100644
--- a/config/metrics/counts_28d/20210216184405_i_code_review_user_edit_multiline_mr_comment_monthly.yml
+++ b/config/metrics/counts_28d/20210216184405_i_code_review_user_edit_multiline_mr_comment_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per week who edit a multiline comment in a me
request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184409_i_code_review_user_remove_multiline_mr_comment_monthly.yml b/config/metrics/counts_28d/20210216184409_i_code_review_user_remove_multiline_mr_comment_monthly.yml
index eaf0244a307..1c4010820b3 100644
--- a/config/metrics/counts_28d/20210216184409_i_code_review_user_remove_multiline_mr_comment_monthly.yml
+++ b/config/metrics/counts_28d/20210216184409_i_code_review_user_remove_multiline_mr_comment_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who remove a multiline comment in a
request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184418_i_code_review_user_assigned_monthly.yml b/config/metrics/counts_28d/20210216184418_i_code_review_user_assigned_monthly.yml
index b53f211203c..763afebb517 100644
--- a/config/metrics/counts_28d/20210216184418_i_code_review_user_assigned_monthly.yml
+++ b/config/metrics/counts_28d/20210216184418_i_code_review_user_assigned_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_assigned_monthly
description: Count of unique users per month who are assigned to a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184422_i_code_review_user_marked_as_draft_monthly.yml b/config/metrics/counts_28d/20210216184422_i_code_review_user_marked_as_draft_monthly.yml
index df3b27dae2e..c9a64b8fde8 100644
--- a/config/metrics/counts_28d/20210216184422_i_code_review_user_marked_as_draft_monthly.yml
+++ b/config/metrics/counts_28d/20210216184422_i_code_review_user_marked_as_draft_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_marked_as_draft_mont
description: Count of unique users per month who mark a merge request as a draft
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184426_i_code_review_user_unmarked_as_draft_monthly.yml b/config/metrics/counts_28d/20210216184426_i_code_review_user_unmarked_as_draft_monthly.yml
index 8257411194d..339066b471b 100644
--- a/config/metrics/counts_28d/20210216184426_i_code_review_user_unmarked_as_draft_monthly.yml
+++ b/config/metrics/counts_28d/20210216184426_i_code_review_user_unmarked_as_draft_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_unmarked_as_draft_mo
description: Count of unique users per month who unmark a merge request as a draft
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184430_i_code_review_user_review_requested_monthly.yml b/config/metrics/counts_28d/20210216184430_i_code_review_user_review_requested_monthly.yml
index e3c41d33dfc..0a01e27c5c1 100644
--- a/config/metrics/counts_28d/20210216184430_i_code_review_user_review_requested_monthly.yml
+++ b/config/metrics/counts_28d/20210216184430_i_code_review_user_review_requested_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_review_requested_mon
description: Count of unique users per month who request a review of a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184434_i_code_review_user_approval_rule_added_monthly.yml b/config/metrics/counts_28d/20210216184434_i_code_review_user_approval_rule_added_monthly.yml
index 475623aaa65..e183ef2c90e 100644
--- a/config/metrics/counts_28d/20210216184434_i_code_review_user_approval_rule_added_monthly.yml
+++ b/config/metrics/counts_28d/20210216184434_i_code_review_user_approval_rule_added_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_approval_rule_added_
description: Count of unique users per month who add an approval rule to a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184438_i_code_review_user_approval_rule_deleted_monthly.yml b/config/metrics/counts_28d/20210216184438_i_code_review_user_approval_rule_deleted_monthly.yml
index 23795ffbead..74bd2954a1d 100644
--- a/config/metrics/counts_28d/20210216184438_i_code_review_user_approval_rule_deleted_monthly.yml
+++ b/config/metrics/counts_28d/20210216184438_i_code_review_user_approval_rule_deleted_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who delete an approval rule to a me
request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184442_i_code_review_user_approval_rule_edited_monthly.yml b/config/metrics/counts_28d/20210216184442_i_code_review_user_approval_rule_edited_monthly.yml
index aa60572f00a..cbd08be25b4 100644
--- a/config/metrics/counts_28d/20210216184442_i_code_review_user_approval_rule_edited_monthly.yml
+++ b/config/metrics/counts_28d/20210216184442_i_code_review_user_approval_rule_edited_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who delete an approval rule to a me
request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184446_i_code_review_user_vs_code_api_request_monthly.yml b/config/metrics/counts_28d/20210216184446_i_code_review_user_vs_code_api_request_monthly.yml
index 3a94b3062e0..7003ddc400e 100644
--- a/config/metrics/counts_28d/20210216184446_i_code_review_user_vs_code_api_request_monthly.yml
+++ b/config/metrics/counts_28d/20210216184446_i_code_review_user_vs_code_api_request_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_vs_code_api_request_
description: Count of unique users per month who use GitLab Workflow for VS Code
product_stage: create
product_group: code_review
-product_category: editor_extension
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184450_i_code_review_user_create_mr_from_issue_monthly.yml b/config/metrics/counts_28d/20210216184450_i_code_review_user_create_mr_from_issue_monthly.yml
index a4133bbef1f..38776d15467 100644
--- a/config/metrics/counts_28d/20210216184450_i_code_review_user_create_mr_from_issue_monthly.yml
+++ b/config/metrics/counts_28d/20210216184450_i_code_review_user_create_mr_from_issue_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.i_code_review_user_create_mr_from_issue
description: Count of unique users per month who create a merge request from an issue
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
index ac6500672c2..9f1c46764f3 100644
--- a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
@@ -4,7 +4,6 @@ key_path: redis_hll_counters.code_review.code_review_total_unique_counts_monthly
description: Count of unique users per month who interact with a merge request
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: removed
diff --git a/config/metrics/counts_28d/20210216184458_p_ci_templates_implicit_auto_devops_monthly.yml b/config/metrics/counts_28d/20210216184458_p_ci_templates_implicit_auto_devops_monthly.yml
index c219ea4dbfd..19d4de90bdb 100644
--- a/config/metrics/counts_28d/20210216184458_p_ci_templates_implicit_auto_devops_monthly.yml
+++ b/config/metrics/counts_28d/20210216184458_p_ci_templates_implicit_auto_devops_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with implicit Auto DevOps runs
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml b/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml
index 0143fa01995..0f713615c12 100644
--- a/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml
+++ b/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with implicit Auto Build runs
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: removed
milestone_removed: '14.6'
diff --git a/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml b/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml
index ee1c9ff1694..db546cbb42f 100644
--- a/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml
+++ b/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with implicit Auto Deploy runs
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: removed
milestone_removed: '14.6'
diff --git a/config/metrics/counts_28d/20210216184510_p_ci_templates_implicit_security_sast_monthly.yml b/config/metrics/counts_28d/20210216184510_p_ci_templates_implicit_security_sast_monthly.yml
index a26887fef7d..3fa025e908b 100644
--- a/config/metrics/counts_28d/20210216184510_p_ci_templates_implicit_security_sast_monthly.yml
+++ b/config/metrics/counts_28d/20210216184510_p_ci_templates_implicit_security_sast_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with implicit SAST runs
product_section: ops
product_stage: verify
product_group: "static_analysis"
-product_category: SAST
value_type: number
status: active
milestone: "<13.9"
diff --git a/config/metrics/counts_28d/20210216184513_p_ci_templates_implicit_security_secret_detection_monthly.yml b/config/metrics/counts_28d/20210216184513_p_ci_templates_implicit_security_secret_detection_monthly.yml
index 9e97dbe0bf2..1d01849bbd2 100644
--- a/config/metrics/counts_28d/20210216184513_p_ci_templates_implicit_security_secret_detection_monthly.yml
+++ b/config/metrics/counts_28d/20210216184513_p_ci_templates_implicit_security_secret_detection_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with implicit Secret Detection runs
product_section: ops
product_stage: verify
product_group: "static_analysis"
-product_category: secret_detection
value_type: number
status: active
milestone: "<13.9"
diff --git a/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml b/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml
index 6fd6f8eb080..c546fba8629 100644
--- a/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml
+++ b/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml
@@ -5,7 +5,6 @@ description: Number of projects using 5 min production app CI template in last 7
product_section: seg
product_stage: deploy
product_group: 5-min-app
-product_category: five_minute_production_app
value_type: number
status: removed
milestone_removed: '14.6'
diff --git a/config/metrics/counts_28d/20210216184523_p_ci_templates_auto_devops_monthly.yml b/config/metrics/counts_28d/20210216184523_p_ci_templates_auto_devops_monthly.yml
index ac40f896b35..723776de6f8 100644
--- a/config/metrics/counts_28d/20210216184523_p_ci_templates_auto_devops_monthly.yml
+++ b/config/metrics/counts_28d/20210216184523_p_ci_templates_auto_devops_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines using the Auto DevOps template
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml b/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml
index 6da5d7822d2..12c46bcc065 100644
--- a/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml
+++ b/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml
@@ -6,7 +6,6 @@ description: Count of projects using `AWS/CF-Provision-and-Deploy-EC2.gitlab-ci.
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: removed
milestone_removed: '14.6'
diff --git a/config/metrics/counts_28d/20210216184530_p_ci_templates_aws_deploy_ecs_monthly.yml b/config/metrics/counts_28d/20210216184530_p_ci_templates_aws_deploy_ecs_monthly.yml
index 0ad5b9a9a5c..a787e944c81 100644
--- a/config/metrics/counts_28d/20210216184530_p_ci_templates_aws_deploy_ecs_monthly.yml
+++ b/config/metrics/counts_28d/20210216184530_p_ci_templates_aws_deploy_ecs_monthly.yml
@@ -6,7 +6,6 @@ description: Count of projects using `AWS/Deploy-ECS.gitlab-ci.yml` template in
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml b/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml
index a5e5b1239d4..05b81b18592 100644
--- a/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml
+++ b/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines using the Auto Build template
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: removed
milestone_removed: '14.6'
diff --git a/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml b/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml
index affc895a9ed..ccf0acd5af5 100644
--- a/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml
+++ b/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines using the stable Auto Deploy template
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: removed
milestone_removed: '14.6'
diff --git a/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml b/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml
index d1f300d4ab5..0e49b4668cc 100644
--- a/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml
+++ b/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines using the latest Auto Deploy template
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: removed
milestone_removed: '14.6'
diff --git a/config/metrics/counts_28d/20210216184546_p_ci_templates_security_sast_monthly.yml b/config/metrics/counts_28d/20210216184546_p_ci_templates_security_sast_monthly.yml
index 2d8d1f10866..080c18ae42b 100644
--- a/config/metrics/counts_28d/20210216184546_p_ci_templates_security_sast_monthly.yml
+++ b/config/metrics/counts_28d/20210216184546_p_ci_templates_security_sast_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with SAST runs
product_section: ops
product_stage: verify
product_group: "static_analysis"
-product_category: SAST
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184551_p_ci_templates_security_secret_detection_monthly.yml b/config/metrics/counts_28d/20210216184551_p_ci_templates_security_secret_detection_monthly.yml
index b8114ecb647..89e27aba436 100644
--- a/config/metrics/counts_28d/20210216184551_p_ci_templates_security_secret_detection_monthly.yml
+++ b/config/metrics/counts_28d/20210216184551_p_ci_templates_security_secret_detection_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with Secret Detection runs
product_section: ops
product_stage: verify
product_group: "static_analysis"
-product_category: secret_detection
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184555_p_ci_templates_terraform_base_latest_monthly.yml b/config/metrics/counts_28d/20210216184555_p_ci_templates_terraform_base_latest_monthly.yml
index 9774fc3a35e..1eb8b515254 100644
--- a/config/metrics/counts_28d/20210216184555_p_ci_templates_terraform_base_latest_monthly.yml
+++ b/config/metrics/counts_28d/20210216184555_p_ci_templates_terraform_base_latest_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines that include the terraform base template from Gi
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
index ff4231231aa..cb112a9e078 100755
--- a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
@@ -5,7 +5,6 @@ description: Total count of pipelines runs
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: removed
milestone_removed: '14.3'
diff --git a/config/metrics/counts_28d/20210216184803_quickactions_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184803_quickactions_total_unique_counts_monthly.yml
index fdd30477ed3..08e948b459e 100644
--- a/config/metrics/counts_28d/20210216184803_quickactions_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184803_quickactions_total_unique_counts_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using one or more quick actions
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184941_i_ecosystem_jira_service_close_issue_monthly.yml b/config/metrics/counts_28d/20210216184941_i_ecosystem_jira_service_close_issue_monthly.yml
index d1b7a63db8e..5a4a030ec8b 100644
--- a/config/metrics/counts_28d/20210216184941_i_ecosystem_jira_service_close_issue_monthly.yml
+++ b/config/metrics/counts_28d/20210216184941_i_ecosystem_jira_service_close_issue_monthly.yml
@@ -5,7 +5,6 @@ description: Number of users closing Jira issues by month
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184945_i_ecosystem_jira_service_cross_reference_monthly.yml b/config/metrics/counts_28d/20210216184945_i_ecosystem_jira_service_cross_reference_monthly.yml
index cea761bd778..7b29944abcb 100644
--- a/config/metrics/counts_28d/20210216184945_i_ecosystem_jira_service_cross_reference_monthly.yml
+++ b/config/metrics/counts_28d/20210216184945_i_ecosystem_jira_service_cross_reference_monthly.yml
@@ -5,7 +5,6 @@ description: Number of users that cross-referenced Jira issues by month
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210216184957_ecosystem_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184957_ecosystem_total_unique_counts_monthly.yml
index 93be16fa2f4..1f84f98c8a0 100644
--- a/config/metrics/counts_28d/20210216184957_ecosystem_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184957_ecosystem_total_unique_counts_monthly.yml
@@ -5,7 +5,6 @@ description: Number of users for Jira and Slack by month
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20210222041219_i_quickactions_invite_email_single_monthly.yml b/config/metrics/counts_28d/20210222041219_i_quickactions_invite_email_single_monthly.yml
index ae717f7cc1e..4339600f952 100644
--- a/config/metrics/counts_28d/20210222041219_i_quickactions_invite_email_single_monthly.yml
+++ b/config/metrics/counts_28d/20210222041219_i_quickactions_invite_email_single_monthly.yml
@@ -5,7 +5,6 @@ description: Unique users using the /invite_email quick action to add a single e
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: issue_tracking
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210222041235_i_quickactions_invite_email_multiple_monthly.yml b/config/metrics/counts_28d/20210222041235_i_quickactions_invite_email_multiple_monthly.yml
index ce22e3ad675..e26f47b3fee 100644
--- a/config/metrics/counts_28d/20210222041235_i_quickactions_invite_email_multiple_monthly.yml
+++ b/config/metrics/counts_28d/20210222041235_i_quickactions_invite_email_multiple_monthly.yml
@@ -5,7 +5,6 @@ description: Unique users using the /invite_email quick action to add a multiple
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: issue_tracking
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210301102134_i_code_review_user_time_estimate_changed_monthly.yml b/config/metrics/counts_28d/20210301102134_i_code_review_user_time_estimate_changed_monthly.yml
index c8d329a777b..b9cde9eb3fc 100644
--- a/config/metrics/counts_28d/20210301102134_i_code_review_user_time_estimate_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210301102134_i_code_review_user_time_estimate_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who changed time estimate of a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210301102204_i_code_review_user_time_spent_changed_monthly.yml b/config/metrics/counts_28d/20210301102204_i_code_review_user_time_spent_changed_monthly.yml
index aee5fb45c10..7bf47d2123b 100644
--- a/config/metrics/counts_28d/20210301102204_i_code_review_user_time_spent_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210301102204_i_code_review_user_time_spent_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who changed time spent on a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210301103859_i_code_review_user_mr_discussion_locked_monthly.yml b/config/metrics/counts_28d/20210301103859_i_code_review_user_mr_discussion_locked_monthly.yml
index 9cc58cc7963..a9b237dbdf9 100644
--- a/config/metrics/counts_28d/20210301103859_i_code_review_user_mr_discussion_locked_monthly.yml
+++ b/config/metrics/counts_28d/20210301103859_i_code_review_user_mr_discussion_locked_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who locked a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210301103925_i_code_review_user_mr_discussion_unlocked_monthly.yml b/config/metrics/counts_28d/20210301103925_i_code_review_user_mr_discussion_unlocked_monthly.yml
index 9474d1c8253..e67a57aa18a 100644
--- a/config/metrics/counts_28d/20210301103925_i_code_review_user_mr_discussion_unlocked_monthly.yml
+++ b/config/metrics/counts_28d/20210301103925_i_code_review_user_mr_discussion_unlocked_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who unlocked a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210301144228_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly.yml b/config/metrics/counts_28d/20210301144228_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly.yml
index 25f6292cae0..f0efe925e5e 100644
--- a/config/metrics/counts_28d/20210301144228_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly.yml
+++ b/config/metrics/counts_28d/20210301144228_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly unique user count having merge requests which contains the
product_section: ops
product_stage: verify
product_group: pipeline_authoring
-product_category: pipeline_authoring
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210302110520_i_code_review_user_milestone_changed_monthly.yml b/config/metrics/counts_28d/20210302110520_i_code_review_user_milestone_changed_monthly.yml
index 2e23791ef95..2a846c2394b 100644
--- a/config/metrics/counts_28d/20210302110520_i_code_review_user_milestone_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210302110520_i_code_review_user_milestone_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who changed milestone of a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210302110607_i_code_review_user_labels_changed_monthly.yml b/config/metrics/counts_28d/20210302110607_i_code_review_user_labels_changed_monthly.yml
index d93dd8e64a8..79d847ff7e7 100644
--- a/config/metrics/counts_28d/20210302110607_i_code_review_user_labels_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210302110607_i_code_review_user_labels_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who changed labels of a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210302114145_i_code_review_user_assignees_changed_monthly.yml b/config/metrics/counts_28d/20210302114145_i_code_review_user_assignees_changed_monthly.yml
index e42d744b718..93a02122904 100644
--- a/config/metrics/counts_28d/20210302114145_i_code_review_user_assignees_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210302114145_i_code_review_user_assignees_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who changed assignees of a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210302114219_i_code_review_user_reviewers_changed_monthly.yml b/config/metrics/counts_28d/20210302114219_i_code_review_user_reviewers_changed_monthly.yml
index 9bbee5ed9b6..fea49890def 100644
--- a/config/metrics/counts_28d/20210302114219_i_code_review_user_reviewers_changed_monthly.yml
+++ b/config/metrics/counts_28d/20210302114219_i_code_review_user_reviewers_changed_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users per month who changed reviewers of a MR
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303150507_i_ecosystem_slack_service_issue_notification_monthly.yml b/config/metrics/counts_28d/20210303150507_i_ecosystem_slack_service_issue_notification_monthly.yml
index 01e2b9d0059..0e57e05f2a5 100644
--- a/config/metrics/counts_28d/20210303150507_i_ecosystem_slack_service_issue_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303150507_i_ecosystem_slack_service_issue_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by performing an
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303150654_i_ecosystem_slack_service_push_notification_monthly.yml b/config/metrics/counts_28d/20210303150654_i_ecosystem_slack_service_push_notification_monthly.yml
index d028a10c1a3..ae96872256b 100644
--- a/config/metrics/counts_28d/20210303150654_i_ecosystem_slack_service_push_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303150654_i_ecosystem_slack_service_push_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by performing a
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303150912_i_ecosystem_slack_service_deployment_notification_monthly.yml b/config/metrics/counts_28d/20210303150912_i_ecosystem_slack_service_deployment_notification_monthly.yml
index 2b8f4166e6b..84016afca21 100644
--- a/config/metrics/counts_28d/20210303150912_i_ecosystem_slack_service_deployment_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303150912_i_ecosystem_slack_service_deployment_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by performing a
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303151609_i_ecosystem_slack_service_wiki_page_notification_monthly.yml b/config/metrics/counts_28d/20210303151609_i_ecosystem_slack_service_wiki_page_notification_monthly.yml
index 7b5515f99a5..954e35e7085 100644
--- a/config/metrics/counts_28d/20210303151609_i_ecosystem_slack_service_wiki_page_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303151609_i_ecosystem_slack_service_wiki_page_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by performing an
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303151831_i_ecosystem_slack_service_merge_request_notification_monthly.yml b/config/metrics/counts_28d/20210303151831_i_ecosystem_slack_service_merge_request_notification_monthly.yml
index 7229d9b0803..1402709d252 100644
--- a/config/metrics/counts_28d/20210303151831_i_ecosystem_slack_service_merge_request_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303151831_i_ecosystem_slack_service_merge_request_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by performing an
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303151946_i_ecosystem_slack_service_note_notification_monthly.yml b/config/metrics/counts_28d/20210303151946_i_ecosystem_slack_service_note_notification_monthly.yml
index bd2269d1680..d663cb5abde 100644
--- a/config/metrics/counts_28d/20210303151946_i_ecosystem_slack_service_note_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303151946_i_ecosystem_slack_service_note_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by creating a no
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303152049_i_ecosystem_slack_service_tag_push_notification_monthly.yml b/config/metrics/counts_28d/20210303152049_i_ecosystem_slack_service_tag_push_notification_monthly.yml
index 73fa05ac498..55ce46cd3be 100644
--- a/config/metrics/counts_28d/20210303152049_i_ecosystem_slack_service_tag_push_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303152049_i_ecosystem_slack_service_tag_push_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by performing a
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303152144_i_ecosystem_slack_service_confidential_note_notification_monthly.yml b/config/metrics/counts_28d/20210303152144_i_ecosystem_slack_service_confidential_note_notification_monthly.yml
index 5cb154ad6e4..9d7b5c34ae7 100644
--- a/config/metrics/counts_28d/20210303152144_i_ecosystem_slack_service_confidential_note_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303152144_i_ecosystem_slack_service_confidential_note_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by creating a co
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303152233_i_ecosystem_slack_service_confidential_issue_notification_monthly.yml b/config/metrics/counts_28d/20210303152233_i_ecosystem_slack_service_confidential_issue_notification_monthly.yml
index bcd3147e9ea..fc809736fcf 100644
--- a/config/metrics/counts_28d/20210303152233_i_ecosystem_slack_service_confidential_issue_notification_monthly.yml
+++ b/config/metrics/counts_28d/20210303152233_i_ecosystem_slack_service_confidential_issue_notification_monthly.yml
@@ -5,7 +5,6 @@ description: Calculated unique users to trigger a Slack message by performing an
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: number
status: active
milestone: "13.10"
diff --git a/config/metrics/counts_28d/20210303154626_i_package_rubygems_deploy_token_monthly.yml b/config/metrics/counts_28d/20210303154626_i_package_rubygems_deploy_token_monthly.yml
index 6ca11514b09..9c30f6b619e 100644
--- a/config/metrics/counts_28d/20210303154626_i_package_rubygems_deploy_token_monthly.yml
+++ b/config/metrics/counts_28d/20210303154626_i_package_rubygems_deploy_token_monthly.yml
@@ -5,7 +5,6 @@ description: Distinct count events for RubyGems packages published using a Deplo
product_section: ops
product_stage: package
product_group: package
-product_category: package_registry
value_type: number
status: active
milestone: '13.10'
diff --git a/config/metrics/counts_28d/20210303154654_i_package_rubygems_user_monthly.yml b/config/metrics/counts_28d/20210303154654_i_package_rubygems_user_monthly.yml
index 2d5eda05a7f..88bfd28577a 100644
--- a/config/metrics/counts_28d/20210303154654_i_package_rubygems_user_monthly.yml
+++ b/config/metrics/counts_28d/20210303154654_i_package_rubygems_user_monthly.yml
@@ -5,7 +5,6 @@ description: Distinct user count of RubyGems packages published in recent 28 day
product_section: ops
product_stage: package
product_group: package
-product_category: package_registry
value_type: number
status: active
milestone: '13.10'
diff --git a/config/metrics/counts_28d/20210409095855_users_expanding_secure_security_report_monthly.yml b/config/metrics/counts_28d/20210409095855_users_expanding_secure_security_report_monthly.yml
index dfaff8de054..c7f0363f558 100644
--- a/config/metrics/counts_28d/20210409095855_users_expanding_secure_security_report_monthly.yml
+++ b/config/metrics/counts_28d/20210409095855_users_expanding_secure_security_report_monthly.yml
@@ -5,7 +5,6 @@ description: Count of expanding the security report widget
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: '13.11'
diff --git a/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml b/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml
index 498569c95aa..a27a860039d 100644
--- a/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml
+++ b/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml
@@ -5,7 +5,6 @@ description: Count of expanding the code quality widget
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: code_quality
value_type: number
status: active
milestone: '13.11'
diff --git a/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml b/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml
index d800cd2f3e9..0096809d89e 100644
--- a/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml
+++ b/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml
@@ -5,7 +5,6 @@ description: Count of expanding the accessibility report widget
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: accessibility_testing
value_type: number
status: active
milestone: '13.11'
diff --git a/config/metrics/counts_28d/20210410012206_i_package_terraform_module_deploy_token_monthly.yml b/config/metrics/counts_28d/20210410012206_i_package_terraform_module_deploy_token_monthly.yml
index 64daea732c5..94a6f18b331 100644
--- a/config/metrics/counts_28d/20210410012206_i_package_terraform_module_deploy_token_monthly.yml
+++ b/config/metrics/counts_28d/20210410012206_i_package_terraform_module_deploy_token_monthly.yml
@@ -5,7 +5,6 @@ description: Number of distinct users authorized via deploy token creating Terra
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
milestone: '13.11'
diff --git a/config/metrics/counts_28d/20210410012208_i_package_terraform_module_user_monthly.yml b/config/metrics/counts_28d/20210410012208_i_package_terraform_module_user_monthly.yml
index 070a0669d54..b8ad472f171 100644
--- a/config/metrics/counts_28d/20210410012208_i_package_terraform_module_user_monthly.yml
+++ b/config/metrics/counts_28d/20210410012208_i_package_terraform_module_user_monthly.yml
@@ -5,7 +5,6 @@ description: Number of distinct users creating Terraform Module packages in rece
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
milestone: '13.11'
diff --git a/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml b/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml
index cdbd4b97ab9..76572f03b8f 100644
--- a/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml
+++ b/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml
@@ -5,7 +5,6 @@ description: Unique users that expand the test summary merge request widget by m
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: testing
value_type: number
status: removed
milestone: "13.11"
diff --git a/config/metrics/counts_28d/20210421144352_i_code_review_click_single_file_mode_setting_monthly.yml b/config/metrics/counts_28d/20210421144352_i_code_review_click_single_file_mode_setting_monthly.yml
index 5557480f8fb..2ea622f3cdc 100644
--- a/config/metrics/counts_28d/20210421144352_i_code_review_click_single_file_mode_setting_monthly.yml
+++ b/config/metrics/counts_28d/20210421144352_i_code_review_click_single_file_mode_setting_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users clicking single file mode setting
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210421145818_i_code_review_click_file_browser_setting_monthly.yml b/config/metrics/counts_28d/20210421145818_i_code_review_click_file_browser_setting_monthly.yml
index e8e988a4523..b8897c1ebd1 100644
--- a/config/metrics/counts_28d/20210421145818_i_code_review_click_file_browser_setting_monthly.yml
+++ b/config/metrics/counts_28d/20210421145818_i_code_review_click_file_browser_setting_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users clicking merge request file browser setting
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210421145945_i_code_review_click_whitespace_setting_monthly.yml b/config/metrics/counts_28d/20210421145945_i_code_review_click_whitespace_setting_monthly.yml
index 483923397b5..0f22954faaa 100644
--- a/config/metrics/counts_28d/20210421145945_i_code_review_click_whitespace_setting_monthly.yml
+++ b/config/metrics/counts_28d/20210421145945_i_code_review_click_whitespace_setting_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users clicking merge request whitespae setting
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422101516_i_code_review_diff_view_inline_monthly.yml b/config/metrics/counts_28d/20210422101516_i_code_review_diff_view_inline_monthly.yml
index bc628468e30..3b6ec8b69e4 100644
--- a/config/metrics/counts_28d/20210422101516_i_code_review_diff_view_inline_monthly.yml
+++ b/config/metrics/counts_28d/20210422101516_i_code_review_diff_view_inline_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with merge request view type as inline
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422101613_i_code_review_diff_view_parallel_monthly.yml b/config/metrics/counts_28d/20210422101613_i_code_review_diff_view_parallel_monthly.yml
index f1c431574f9..82de9d8ed4d 100644
--- a/config/metrics/counts_28d/20210422101613_i_code_review_diff_view_parallel_monthly.yml
+++ b/config/metrics/counts_28d/20210422101613_i_code_review_diff_view_parallel_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with merge request view type as parallel
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422101753_i_code_review_file_browser_tree_view_monthly.yml b/config/metrics/counts_28d/20210422101753_i_code_review_file_browser_tree_view_monthly.yml
index 75f0169692a..b4007b2da78 100644
--- a/config/metrics/counts_28d/20210422101753_i_code_review_file_browser_tree_view_monthly.yml
+++ b/config/metrics/counts_28d/20210422101753_i_code_review_file_browser_tree_view_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with merge request file tree setting
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422101852_i_code_review_file_browser_list_view_monthly.yml b/config/metrics/counts_28d/20210422101852_i_code_review_file_browser_list_view_monthly.yml
index ccd333ba13a..13bd280e7b9 100644
--- a/config/metrics/counts_28d/20210422101852_i_code_review_file_browser_list_view_monthly.yml
+++ b/config/metrics/counts_28d/20210422101852_i_code_review_file_browser_list_view_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with merge request file list setting
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422101928_i_code_review_diff_show_whitespace_monthly.yml b/config/metrics/counts_28d/20210422101928_i_code_review_diff_show_whitespace_monthly.yml
index 23dae4618b1..b87901678ef 100644
--- a/config/metrics/counts_28d/20210422101928_i_code_review_diff_show_whitespace_monthly.yml
+++ b/config/metrics/counts_28d/20210422101928_i_code_review_diff_show_whitespace_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with show whitespace enabled
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422102010_i_code_review_diff_hide_whitespace_monthly.yml b/config/metrics/counts_28d/20210422102010_i_code_review_diff_hide_whitespace_monthly.yml
index 4a639d02565..b883ce9e41c 100644
--- a/config/metrics/counts_28d/20210422102010_i_code_review_diff_hide_whitespace_monthly.yml
+++ b/config/metrics/counts_28d/20210422102010_i_code_review_diff_hide_whitespace_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with show whitespace disabled
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422102121_i_code_review_diff_single_file_monthly.yml b/config/metrics/counts_28d/20210422102121_i_code_review_diff_single_file_monthly.yml
index 8ae647ab1de..f5149c088e9 100644
--- a/config/metrics/counts_28d/20210422102121_i_code_review_diff_single_file_monthly.yml
+++ b/config/metrics/counts_28d/20210422102121_i_code_review_diff_single_file_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with single file mode enabled
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210422102202_i_code_review_diff_multiple_files_monthly.yml b/config/metrics/counts_28d/20210422102202_i_code_review_diff_multiple_files_monthly.yml
index f4aa1da6498..c51107d4177 100644
--- a/config/metrics/counts_28d/20210422102202_i_code_review_diff_multiple_files_monthly.yml
+++ b/config/metrics/counts_28d/20210422102202_i_code_review_diff_multiple_files_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users with single mode disabled
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210427105033_pipeline_authoring_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210427105033_pipeline_authoring_total_unique_counts_monthly.yml
index 698928834ed..be9f6bdb94c 100644
--- a/config/metrics/counts_28d/20210427105033_pipeline_authoring_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210427105033_pipeline_authoring_total_unique_counts_monthly.yml
@@ -5,7 +5,6 @@ description: Unique users doing commits or push MRs which contains CI cifig file
product_section: ops
product_stage: verify
product_group: pipeline_authoring
-product_category: pipeline_authoring
value_type: number
status: active
milestone: "13.12"
diff --git a/config/metrics/counts_28d/20210514013545_i_code_review_user_resolve_conflict_monthly.yml b/config/metrics/counts_28d/20210514013545_i_code_review_user_resolve_conflict_monthly.yml
index f08a7bfd4d6..6cee7067b48 100644
--- a/config/metrics/counts_28d/20210514013545_i_code_review_user_resolve_conflict_monthly.yml
+++ b/config/metrics/counts_28d/20210514013545_i_code_review_user_resolve_conflict_monthly.yml
@@ -5,7 +5,6 @@ name: resolve_conflict
description: Count of unique users per week who attempt to resolve a conflict through the ui
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210514013549_i_code_review_user_load_conflict_ui_monthly.yml b/config/metrics/counts_28d/20210514013549_i_code_review_user_load_conflict_ui_monthly.yml
index b8dc238e59f..b25a9344eda 100644
--- a/config/metrics/counts_28d/20210514013549_i_code_review_user_load_conflict_ui_monthly.yml
+++ b/config/metrics/counts_28d/20210514013549_i_code_review_user_load_conflict_ui_monthly.yml
@@ -5,7 +5,6 @@ name: load_conflict_ui
description: Count of unique users per week who load the conflict resolution page
product_stage: create
product_group: code_review
-product_category: code_review
product_section: 'TBD'
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210517074859_i_package_helm_deploy_token_monthly.yml b/config/metrics/counts_28d/20210517074859_i_package_helm_deploy_token_monthly.yml
index c0fd95f4be2..e6e7e2fbc1f 100644
--- a/config/metrics/counts_28d/20210517074859_i_package_helm_deploy_token_monthly.yml
+++ b/config/metrics/counts_28d/20210517074859_i_package_helm_deploy_token_monthly.yml
@@ -5,7 +5,6 @@ description: Distinct Helm pakages deployed in recent 28 days
product_section: ops
product_stage: package
product_group: package
-product_category: package_registry
value_type: number
status: active
milestone: "14.0"
diff --git a/config/metrics/counts_28d/20210517075259_i_package_helm_user_monthly.yml b/config/metrics/counts_28d/20210517075259_i_package_helm_user_monthly.yml
index 0e32bf86f68..c71312d7cc4 100644
--- a/config/metrics/counts_28d/20210517075259_i_package_helm_user_monthly.yml
+++ b/config/metrics/counts_28d/20210517075259_i_package_helm_user_monthly.yml
@@ -5,7 +5,6 @@ description: Distinct user count events for Helm packages in recent 28 days
product_section: ops
product_stage: package
product_group: package
-product_category: package_registry
value_type: number
status: active
milestone: "14.0"
diff --git a/config/metrics/counts_28d/20210607113556_i_code_review_click_diff_view_setting_monthly.yml b/config/metrics/counts_28d/20210607113556_i_code_review_click_diff_view_setting_monthly.yml
index 28425f5f1cd..254734374e3 100644
--- a/config/metrics/counts_28d/20210607113556_i_code_review_click_diff_view_setting_monthly.yml
+++ b/config/metrics/counts_28d/20210607113556_i_code_review_click_diff_view_setting_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users clicking diff view setting
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '13.12'
diff --git a/config/metrics/counts_28d/20210720144005_i_code_review_user_searches_diff_monthly.yml b/config/metrics/counts_28d/20210720144005_i_code_review_user_searches_diff_monthly.yml
index 106ab05f6d5..c16a1885e4f 100644
--- a/config/metrics/counts_28d/20210720144005_i_code_review_user_searches_diff_monthly.yml
+++ b/config/metrics/counts_28d/20210720144005_i_code_review_user_searches_diff_monthly.yml
@@ -4,7 +4,6 @@ description: Count of users who search merge request diffs
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '14.2'
diff --git a/config/metrics/counts_28d/20210721042227_i_quickactions_severity_monthly.yml b/config/metrics/counts_28d/20210721042227_i_quickactions_severity_monthly.yml
index eedece821d0..b5a83d81c0a 100644
--- a/config/metrics/counts_28d/20210721042227_i_quickactions_severity_monthly.yml
+++ b/config/metrics/counts_28d/20210721042227_i_quickactions_severity_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/severity` quick action
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: incident_management
value_type: number
status: active
milestone: "14.2"
diff --git a/config/metrics/counts_28d/20210816143831_i_code_review_total_suggestions_added_monthly.yml b/config/metrics/counts_28d/20210816143831_i_code_review_total_suggestions_added_monthly.yml
index 19bd4f54e5c..31609397e5e 100644
--- a/config/metrics/counts_28d/20210816143831_i_code_review_total_suggestions_added_monthly.yml
+++ b/config/metrics/counts_28d/20210816143831_i_code_review_total_suggestions_added_monthly.yml
@@ -5,7 +5,6 @@ description: Total number of monthly suggestions
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "14.3"
diff --git a/config/metrics/counts_28d/20210816144453_i_code_review_total_suggestions_applied_monthly.yml b/config/metrics/counts_28d/20210816144453_i_code_review_total_suggestions_applied_monthly.yml
index 97550aee80e..9ad967fd5f6 100644
--- a/config/metrics/counts_28d/20210816144453_i_code_review_total_suggestions_applied_monthly.yml
+++ b/config/metrics/counts_28d/20210816144453_i_code_review_total_suggestions_applied_monthly.yml
@@ -5,7 +5,6 @@ description: Total number of monthly suggestions applied
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "14.3"
diff --git a/config/metrics/counts_28d/20210902191057_i_quickactions_unapprove_monthly.yml b/config/metrics/counts_28d/20210902191057_i_quickactions_unapprove_monthly.yml
index 8611f03604e..ff9c86828ed 100644
--- a/config/metrics/counts_28d/20210902191057_i_quickactions_unapprove_monthly.yml
+++ b/config/metrics/counts_28d/20210902191057_i_quickactions_unapprove_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/unapprove` quick action
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "14.3"
diff --git a/config/metrics/counts_28d/20210908150458_i_code_review_user_resolve_thread_in_issue_monthly.yml b/config/metrics/counts_28d/20210908150458_i_code_review_user_resolve_thread_in_issue_monthly.yml
index 5c2327fd50b..370c12cdc43 100644
--- a/config/metrics/counts_28d/20210908150458_i_code_review_user_resolve_thread_in_issue_monthly.yml
+++ b/config/metrics/counts_28d/20210908150458_i_code_review_user_resolve_thread_in_issue_monthly.yml
@@ -5,7 +5,6 @@ description: The number of users who resolve a thread in a new issue through the
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "14.3"
diff --git a/config/metrics/counts_28d/20210910132229_user_auth_by_provider.yml b/config/metrics/counts_28d/20210910132229_user_auth_by_provider.yml
index 7aad160f01d..14914a140d4 100644
--- a/config/metrics/counts_28d/20210910132229_user_auth_by_provider.yml
+++ b/config/metrics/counts_28d/20210910132229_user_auth_by_provider.yml
@@ -5,7 +5,6 @@ description: Number of unique user logins using two factor authentication for av
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: system_access
value_type: object
status: active
milestone: "14.3"
diff --git a/config/metrics/counts_28d/20210916080405_promoted_issues.yml b/config/metrics/counts_28d/20210916080405_promoted_issues.yml
index 5c1ad6446f0..444fa936b3d 100644
--- a/config/metrics/counts_28d/20210916080405_promoted_issues.yml
+++ b/config/metrics/counts_28d/20210916080405_promoted_issues.yml
@@ -5,7 +5,6 @@ description: Count of issues promoted to epics
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: number
status: removed
milestone: "14.3"
diff --git a/config/metrics/counts_28d/20210916201533_clusters_integrations_prometheus.yml b/config/metrics/counts_28d/20210916201533_clusters_integrations_prometheus.yml
index 1d3b7907c13..2b46ab92910 100644
--- a/config/metrics/counts_28d/20210916201533_clusters_integrations_prometheus.yml
+++ b/config/metrics/counts_28d/20210916201533_clusters_integrations_prometheus.yml
@@ -5,7 +5,6 @@ description: Users creating clusters with Prometheus integration enabled in last
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: metrics
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20211015154445_p_ci_templates_kaniko_monthly.yml b/config/metrics/counts_28d/20211015154445_p_ci_templates_kaniko_monthly.yml
index eb03acc2476..fb9f7b97bdc 100644
--- a/config/metrics/counts_28d/20211015154445_p_ci_templates_kaniko_monthly.yml
+++ b/config/metrics/counts_28d/20211015154445_p_ci_templates_kaniko_monthly.yml
@@ -4,7 +4,6 @@ description: ''
product_section: ops
product_stage: verify
product_group: pipeline_authoring
-product_category: pipeline_authoring
value_type: number
status: active
milestone: '14.3'
diff --git a/config/metrics/counts_28d/20211102141250_i_quickactions_promote_to_incident_monthly.yml b/config/metrics/counts_28d/20211102141250_i_quickactions_promote_to_incident_monthly.yml
index e50780d378f..51e3dbcc9eb 100644
--- a/config/metrics/counts_28d/20211102141250_i_quickactions_promote_to_incident_monthly.yml
+++ b/config/metrics/counts_28d/20211102141250_i_quickactions_promote_to_incident_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/promote_to_incident` quick action
product_section: ops
product_stage: monitor
product_group: monitor
-product_category: incident_management
value_type: number
status: active
milestone: "14.5"
diff --git a/config/metrics/counts_28d/20211102205024_p_ci_templates_security_sast_iac_latest_monthly.yml b/config/metrics/counts_28d/20211102205024_p_ci_templates_security_sast_iac_latest_monthly.yml
index 5f171c62bab..65f1eecc7e6 100644
--- a/config/metrics/counts_28d/20211102205024_p_ci_templates_security_sast_iac_latest_monthly.yml
+++ b/config/metrics/counts_28d/20211102205024_p_ci_templates_security_sast_iac_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines using the latest SAST IaC template
product_section: sec
product_stage: secure
product_group: "static_analysis"
-product_category: SAST
value_type: number
status: active
milestone: "14.5"
diff --git a/config/metrics/counts_28d/20211102205223_p_ci_templates_implicit_security_sast_iac_latest_monthly.yml b/config/metrics/counts_28d/20211102205223_p_ci_templates_implicit_security_sast_iac_latest_monthly.yml
index 781dbbe7b60..68db0a93e47 100644
--- a/config/metrics/counts_28d/20211102205223_p_ci_templates_implicit_security_sast_iac_latest_monthly.yml
+++ b/config/metrics/counts_28d/20211102205223_p_ci_templates_implicit_security_sast_iac_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines with implicit runs using the latest SAST IaC tem
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: SAST
value_type: number
status: removed
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211102213704_p_ci_templates_jobs_sast_iac_latest_monthly.yml b/config/metrics/counts_28d/20211102213704_p_ci_templates_jobs_sast_iac_latest_monthly.yml
index 90f8eae91fe..33d7a214bf2 100644
--- a/config/metrics/counts_28d/20211102213704_p_ci_templates_jobs_sast_iac_latest_monthly.yml
+++ b/config/metrics/counts_28d/20211102213704_p_ci_templates_jobs_sast_iac_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines using the latest SAST IaC template
product_section: sec
product_stage: secure
product_group: "static_analysis"
-product_category: SAST
value_type: number
status: active
milestone: "14.5"
diff --git a/config/metrics/counts_28d/20211102213921_p_ci_templates_implicit_jobs_sast_iac_latest_monthly.yml b/config/metrics/counts_28d/20211102213921_p_ci_templates_implicit_jobs_sast_iac_latest_monthly.yml
index c676750d92d..a003d211cb5 100644
--- a/config/metrics/counts_28d/20211102213921_p_ci_templates_implicit_jobs_sast_iac_latest_monthly.yml
+++ b/config/metrics/counts_28d/20211102213921_p_ci_templates_implicit_jobs_sast_iac_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines with implicit runs using the latest SAST IaC tem
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: SAST
value_type: number
status: removed
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211104154357_i_code_review_widget_nothing_merge_click_new_file_monthly.yml b/config/metrics/counts_28d/20211104154357_i_code_review_widget_nothing_merge_click_new_file_monthly.yml
index d20b78cab9b..fca5481e70a 100644
--- a/config/metrics/counts_28d/20211104154357_i_code_review_widget_nothing_merge_click_new_file_monthly.yml
+++ b/config/metrics/counts_28d/20211104154357_i_code_review_widget_nothing_merge_click_new_file_monthly.yml
@@ -4,7 +4,6 @@ description: Count of users who click the create file button in the nothing to m
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211109114953_i_quickactions_add_contacts_monthly.yml b/config/metrics/counts_28d/20211109114953_i_quickactions_add_contacts_monthly.yml
index f00f7cfafb9..64c8c78f3fb 100644
--- a/config/metrics/counts_28d/20211109114953_i_quickactions_add_contacts_monthly.yml
+++ b/config/metrics/counts_28d/20211109114953_i_quickactions_add_contacts_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/add_contacts` quick action
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: service_desk
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211109120251_i_quickactions_remove_contacts_monthly.yml b/config/metrics/counts_28d/20211109120251_i_quickactions_remove_contacts_monthly.yml
index cdf2b6abf39..aae449dc7ff 100644
--- a/config/metrics/counts_28d/20211109120251_i_quickactions_remove_contacts_monthly.yml
+++ b/config/metrics/counts_28d/20211109120251_i_quickactions_remove_contacts_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/remove_contacts` quick action
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: service_desk
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211111162103_i_code_review_post_merge_delete_branch_monthly.yml b/config/metrics/counts_28d/20211111162103_i_code_review_post_merge_delete_branch_monthly.yml
index c944a82a373..9310459c466 100644
--- a/config/metrics/counts_28d/20211111162103_i_code_review_post_merge_delete_branch_monthly.yml
+++ b/config/metrics/counts_28d/20211111162103_i_code_review_post_merge_delete_branch_monthly.yml
@@ -4,7 +4,6 @@ description: Count of users who click the delete source branch button after merg
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211111162422_i_code_review_post_merge_click_revert_monthly.yml b/config/metrics/counts_28d/20211111162422_i_code_review_post_merge_click_revert_monthly.yml
index b01a6fe58f5..baca691621f 100644
--- a/config/metrics/counts_28d/20211111162422_i_code_review_post_merge_click_revert_monthly.yml
+++ b/config/metrics/counts_28d/20211111162422_i_code_review_post_merge_click_revert_monthly.yml
@@ -4,7 +4,6 @@ description: Count of users who click the revert button in the merge requet widg
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211112102446_i_code_review_post_merge_click_cherry_pick_monthly.yml b/config/metrics/counts_28d/20211112102446_i_code_review_post_merge_click_cherry_pick_monthly.yml
index 40f5cac914c..e6cd861ec27 100644
--- a/config/metrics/counts_28d/20211112102446_i_code_review_post_merge_click_cherry_pick_monthly.yml
+++ b/config/metrics/counts_28d/20211112102446_i_code_review_post_merge_click_cherry_pick_monthly.yml
@@ -4,7 +4,6 @@ description: Count of users who click the cherry pick button in the merge requet
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211112114333_i_code_review_post_merge_submit_revert_modal_monthly.yml b/config/metrics/counts_28d/20211112114333_i_code_review_post_merge_submit_revert_modal_monthly.yml
index 592f51e2e99..74f14aacdd8 100644
--- a/config/metrics/counts_28d/20211112114333_i_code_review_post_merge_submit_revert_modal_monthly.yml
+++ b/config/metrics/counts_28d/20211112114333_i_code_review_post_merge_submit_revert_modal_monthly.yml
@@ -4,7 +4,6 @@ description: Count of users who submit the post merge revert modal
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211112115144_i_code_review_post_merge_submit_cherry_pick_modal_monthly.yml b/config/metrics/counts_28d/20211112115144_i_code_review_post_merge_submit_cherry_pick_modal_monthly.yml
index 15d1bc80bb2..00e5281d224 100644
--- a/config/metrics/counts_28d/20211112115144_i_code_review_post_merge_submit_cherry_pick_modal_monthly.yml
+++ b/config/metrics/counts_28d/20211112115144_i_code_review_post_merge_submit_cherry_pick_modal_monthly.yml
@@ -4,7 +4,6 @@ description: Count of users who submit the post merge revert modal
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: '14.5'
diff --git a/config/metrics/counts_28d/20211122134101_p_ci_templates_implicit_security_dast_api_latest_monthly.yml b/config/metrics/counts_28d/20211122134101_p_ci_templates_implicit_security_dast_api_latest_monthly.yml
index ec67d0a713f..0cba55aa82e 100644
--- a/config/metrics/counts_28d/20211122134101_p_ci_templates_implicit_security_dast_api_latest_monthly.yml
+++ b/config/metrics/counts_28d/20211122134101_p_ci_templates_implicit_security_dast_api_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for DAST API latest CI template
product_section: sec
product_stage: secure
product_group: dynamic_analysis
-product_category: dynamic_application_security_testing
value_type: number
status: removed
milestone: '14.6'
diff --git a/config/metrics/counts_28d/20211201140658_users_expanding_testing_license_compliance_report_monthly.yml b/config/metrics/counts_28d/20211201140658_users_expanding_testing_license_compliance_report_monthly.yml
index c353641bd6f..9ae9fde73dd 100644
--- a/config/metrics/counts_28d/20211201140658_users_expanding_testing_license_compliance_report_monthly.yml
+++ b/config/metrics/counts_28d/20211201140658_users_expanding_testing_license_compliance_report_monthly.yml
@@ -5,7 +5,6 @@ description: Count of expanding the license compliance widget
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: '14.6'
diff --git a/config/metrics/counts_28d/20211201154341_users_visiting_license_compliance_full_report_monthly.yml b/config/metrics/counts_28d/20211201154341_users_visiting_license_compliance_full_report_monthly.yml
index 1f84c9f1788..ca82066ca10 100644
--- a/config/metrics/counts_28d/20211201154341_users_visiting_license_compliance_full_report_monthly.yml
+++ b/config/metrics/counts_28d/20211201154341_users_visiting_license_compliance_full_report_monthly.yml
@@ -5,7 +5,6 @@ description: Count of visiting the license compliance full report
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: '14.6'
diff --git a/config/metrics/counts_28d/20211201194407_p_ci_templates_security_dast_api_latest_monthly.yml b/config/metrics/counts_28d/20211201194407_p_ci_templates_security_dast_api_latest_monthly.yml
index cfcffe5caca..ee6037ab014 100644
--- a/config/metrics/counts_28d/20211201194407_p_ci_templates_security_dast_api_latest_monthly.yml
+++ b/config/metrics/counts_28d/20211201194407_p_ci_templates_security_dast_api_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for DAST API latest CI template
product_section: sec
product_stage: secure
product_group: dynamic_analysis
-product_category: dynamic_application_security_testing
value_type: number
status: active
milestone: "14.6"
diff --git a/config/metrics/counts_28d/20211202094237_users_visiting_manage_license_compliance_monthly.yml b/config/metrics/counts_28d/20211202094237_users_visiting_manage_license_compliance_monthly.yml
index a8fcd038e84..632379771ab 100644
--- a/config/metrics/counts_28d/20211202094237_users_visiting_manage_license_compliance_monthly.yml
+++ b/config/metrics/counts_28d/20211202094237_users_visiting_manage_license_compliance_monthly.yml
@@ -5,7 +5,6 @@ description: Count of visiting the manage license compliance page
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: '14.6'
diff --git a/config/metrics/counts_28d/20211216083832_users_clicking_license_testing_visiting_external_website_monthly.yml b/config/metrics/counts_28d/20211216083832_users_clicking_license_testing_visiting_external_website_monthly.yml
index cd9132bbcfc..f98ded492df 100644
--- a/config/metrics/counts_28d/20211216083832_users_clicking_license_testing_visiting_external_website_monthly.yml
+++ b/config/metrics/counts_28d/20211216083832_users_clicking_license_testing_visiting_external_website_monthly.yml
@@ -5,7 +5,6 @@ description: Count of users clicking licence to visit external information websi
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: '14.7'
diff --git a/config/metrics/counts_28d/20220121140644_user_jetbrains_api_request_monthly.yml b/config/metrics/counts_28d/20220121140644_user_jetbrains_api_request_monthly.yml
index 2ca245c3c68..879818d59db 100644
--- a/config/metrics/counts_28d/20220121140644_user_jetbrains_api_request_monthly.yml
+++ b/config/metrics/counts_28d/20220121140644_user_jetbrains_api_request_monthly.yml
@@ -4,7 +4,6 @@ description: Count of unique users per month who use GitLab plugin for JetBrains
product_section: dev
product_stage: create
product_group: code_review
-product_category: editor_extension
value_type: number
status: active
milestone: "14.8"
diff --git a/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml b/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml
index 7be45e79f51..dd534423ae5 100644
--- a/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml
+++ b/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/attention` quick action
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/
diff --git a/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml b/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml
index 2b002bc3790..45053ac7ad9 100644
--- a/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml
+++ b/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/remove_attention` quick action
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/
diff --git a/config/metrics/counts_28d/20220202160126_ci_users_executing_deployment_job_monthly.yml b/config/metrics/counts_28d/20220202160126_ci_users_executing_deployment_job_monthly.yml
index ddc6907ee19..b88adb8bc0b 100644
--- a/config/metrics/counts_28d/20220202160126_ci_users_executing_deployment_job_monthly.yml
+++ b/config/metrics/counts_28d/20220202160126_ci_users_executing_deployment_job_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts of times users have executed deployment jobs
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
milestone: "14.8"
diff --git a/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_dependency_scanning_monthly.yml b/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_dependency_scanning_monthly.yml
index 8f913307356..82f11d6dcd1 100644
--- a/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_dependency_scanning_monthly.yml
+++ b/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_dependency_scanning_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for implicit use of Dependency Scanning CI template
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: '14.8'
diff --git a/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_license_scanning_monthly.yml b/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_license_scanning_monthly.yml
index 2b776b28c5d..b1663d3fdce 100644
--- a/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_license_scanning_monthly.yml
+++ b/config/metrics/counts_28d/20220210134101_p_ci_templates_implicit_jobs_license_scanning_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for implicit use of License Scanning CI template (Jo
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: license_compliance
value_type: number
status: active
milestone: '14.8'
diff --git a/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_dependency_scanning_monthly.yml b/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_dependency_scanning_monthly.yml
index 6d166725a67..c1981ac4780 100644
--- a/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_dependency_scanning_monthly.yml
+++ b/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_dependency_scanning_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for Dependency Scanning CI template (Jobs folder)
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: '14.8'
diff --git a/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_license_scanning_monthly.yml b/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_license_scanning_monthly.yml
index db215d242e0..e20d4f08c05 100644
--- a/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_license_scanning_monthly.yml
+++ b/config/metrics/counts_28d/20220210134101_p_ci_templates_jobs_license_scanning_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for License Scanning CI template (Jobs folder)
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: license_compliance
value_type: number
status: active
milestone: '14.8'
diff --git a/config/metrics/counts_28d/20220308234005_p_ci_templates_jobs_sast_latest_monthly.yml b/config/metrics/counts_28d/20220308234005_p_ci_templates_jobs_sast_latest_monthly.yml
index 219147def08..de4160c1d4e 100644
--- a/config/metrics/counts_28d/20220308234005_p_ci_templates_jobs_sast_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220308234005_p_ci_templates_jobs_sast_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Weekly counts for SAST CI Latest template (Jobs folder)
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: static_application_security_testing
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220309001640_p_ci_templates_jobs_secret_detection_latest_monthly.yml b/config/metrics/counts_28d/20220309001640_p_ci_templates_jobs_secret_detection_latest_monthly.yml
index c0d4ba01f03..3e51bb0e4aa 100644
--- a/config/metrics/counts_28d/20220309001640_p_ci_templates_jobs_secret_detection_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220309001640_p_ci_templates_jobs_secret_detection_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Weekly counts for Secret Detection CI Latest template (Security fol
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: static_application_security_testing
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220309183501_error_tracking_view_details_monthly.yml b/config/metrics/counts_28d/20220309183501_error_tracking_view_details_monthly.yml
index 3a25e0a5a4b..7f2f96839d4 100644
--- a/config/metrics/counts_28d/20220309183501_error_tracking_view_details_monthly.yml
+++ b/config/metrics/counts_28d/20220309183501_error_tracking_view_details_monthly.yml
@@ -4,7 +4,6 @@ description: Unique users viewing the error details page
product_section: ops
product_stage: monitor
product_group: respond
-product_category: error_tracking
value_type: number
status: active
milestone: "14.9"
diff --git a/config/metrics/counts_28d/20220309195504_error_tracking_view_list_monthly.yml b/config/metrics/counts_28d/20220309195504_error_tracking_view_list_monthly.yml
index c94cca65514..5eb32ad63d0 100644
--- a/config/metrics/counts_28d/20220309195504_error_tracking_view_list_monthly.yml
+++ b/config/metrics/counts_28d/20220309195504_error_tracking_view_list_monthly.yml
@@ -4,7 +4,6 @@ description: Unique users viewing the list of errors in the project
product_section: ops
product_stage: monitor
product_group: respond
-product_category: error_tracking
value_type: number
status: active
milestone: "14.9"
diff --git a/config/metrics/counts_28d/20220310213320_p_ci_templates_implicit_jobs_secret_detection_latest_monthly.yml b/config/metrics/counts_28d/20220310213320_p_ci_templates_implicit_jobs_secret_detection_latest_monthly.yml
index 64f0bc79682..a29bcda2c6c 100644
--- a/config/metrics/counts_28d/20220310213320_p_ci_templates_implicit_jobs_secret_detection_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220310213320_p_ci_templates_implicit_jobs_secret_detection_latest_monthly.yml
@@ -5,7 +5,6 @@ description: Weekly counts for implicit use of Secret Detection CI Latest templa
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: static_application_security_testing
value_type: number
status: removed
milestone: '15.0'
diff --git a/config/metrics/counts_28d/20220310213749_p_ci_templates_implicit_jobs_sast_latest_monthly.yml b/config/metrics/counts_28d/20220310213749_p_ci_templates_implicit_jobs_sast_latest_monthly.yml
index e77e4044894..bd823775451 100644
--- a/config/metrics/counts_28d/20220310213749_p_ci_templates_implicit_jobs_sast_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220310213749_p_ci_templates_implicit_jobs_sast_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Weekly counts for implicit use of SAST CI Latest template (Jobs fol
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: static_application_security_testing
value_type: number
status: removed
milestone: '15.0'
diff --git a/config/metrics/counts_28d/20220315223227_error_tracking_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20220315223227_error_tracking_total_unique_counts_monthly.yml
index 646260aa65e..ec083e28bee 100644
--- a/config/metrics/counts_28d/20220315223227_error_tracking_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20220315223227_error_tracking_total_unique_counts_monthly.yml
@@ -4,7 +4,6 @@ description: Total unique users accessing error tracking routes
product_section: ops
product_stage: monitor
product_group: respond
-product_category: error_tracking
value_type: number
status: active
milestone: "14.9"
diff --git a/config/metrics/counts_28d/20220322194931_users_gitlab_cli_api_request_monthly.yml b/config/metrics/counts_28d/20220322194931_users_gitlab_cli_api_request_monthly.yml
index 1496e9dd5e5..e2a58bd67e5 100644
--- a/config/metrics/counts_28d/20220322194931_users_gitlab_cli_api_request_monthly.yml
+++ b/config/metrics/counts_28d/20220322194931_users_gitlab_cli_api_request_monthly.yml
@@ -4,7 +4,6 @@ description: Count of unique users per month who use the GitLab CLI
product_section: dev
product_stage: create
product_group: code_review
-product_category: editor_extension
value_type: number
status: active
milestone: "14.10"
diff --git a/config/metrics/counts_28d/20220428154012_live_preview.yml b/config/metrics/counts_28d/20220428154012_live_preview.yml
index 23bfd9334bc..aa06bbcaaea 100644
--- a/config/metrics/counts_28d/20220428154012_live_preview.yml
+++ b/config/metrics/counts_28d/20220428154012_live_preview.yml
@@ -5,7 +5,6 @@ description: Count of monthly unique users that successfully connect to Live Pre
product_section: dev
product_stage: create
product_group: editor
-product_category: web_ide
value_type: number
status: active
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85420
diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml
index 87ee4ff392b..937c4039c27 100644
--- a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml
+++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly notes on ipynb commit diffs
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml
index 8a5a50572d8..8f6435909ab 100644
--- a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml
+++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly notes on ipynb diffs
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml
index 907c1459293..3d52754312e 100644
--- a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml
+++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly notes on ipynb MR diffs
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml
index e33149db20f..38face8ecd6 100644
--- a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml
+++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly unique users with notes on ipynb commit diffs
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml
index b6f8e09039e..a04ec7b91b2 100644
--- a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml
+++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly unique users with notes on ipynb diffs
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml
index 732124e34f0..133601115e0 100644
--- a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml
+++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly unique users with notes on ipynb MR diffs
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220510024223_p_ci_templates_jobs_sast_iac_monthly.yml b/config/metrics/counts_28d/20220510024223_p_ci_templates_jobs_sast_iac_monthly.yml
index ddde77a1755..60d5c9ac054 100644
--- a/config/metrics/counts_28d/20220510024223_p_ci_templates_jobs_sast_iac_monthly.yml
+++ b/config/metrics/counts_28d/20220510024223_p_ci_templates_jobs_sast_iac_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines using the stable SAST IaC template
product_section: sec
product_stage: secure
product_group: "static_analysis"
-product_category: SAST
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220510024223_p_ci_templates_security_sast_iac_monthly.yml b/config/metrics/counts_28d/20220510024223_p_ci_templates_security_sast_iac_monthly.yml
index 7b817928c59..894da4185b0 100644
--- a/config/metrics/counts_28d/20220510024223_p_ci_templates_security_sast_iac_monthly.yml
+++ b/config/metrics/counts_28d/20220510024223_p_ci_templates_security_sast_iac_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines using the stable SAST IaC template
product_section: sec
product_stage: secure
product_group: "static_analysis"
-product_category: SAST
value_type: number
status: active
milestone: "15.0"
diff --git a/config/metrics/counts_28d/20220615103718_incident_management_timeline_event_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20220615103718_incident_management_timeline_event_total_unique_counts_monthly.yml
index d379cf39983..e007180b831 100644
--- a/config/metrics/counts_28d/20220615103718_incident_management_timeline_event_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20220615103718_incident_management_timeline_event_total_unique_counts_monthly.yml
@@ -5,7 +5,6 @@ description: Counts unique users for timeline events create, edit and delete eve
product_section: ops
product_stage: monitor
product_group: respond
-product_category: incident_management
value_type: number
status: active
milestone: "15.1"
diff --git a/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml b/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml
index 389b9d3ace5..0e144b0c486 100644
--- a/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml
+++ b/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml
@@ -3,7 +3,6 @@ key_path: redis_hll_counters.code_review.i_code_review_submit_review_approve_mon
description: Count of unique users per month who submit a review and approve
product_stage: create
product_group: code_review
-product_category: code_review
product_section: dev
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml b/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml
index 1891191bdcd..cd37fa4c5ec 100644
--- a/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml
+++ b/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml
@@ -3,7 +3,6 @@ key_path: redis_hll_counters.code_review.i_code_review_submit_review_comment_mon
description: Count of unique users per month who submit a review with a comment
product_stage: create
product_group: code_review
-product_category: code_review
product_section: dev
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20220706175117_ci_users_executing_verify_job_monthly.yml b/config/metrics/counts_28d/20220706175117_ci_users_executing_verify_job_monthly.yml
index 7abc7b63c84..78427581b47 100644
--- a/config/metrics/counts_28d/20220706175117_ci_users_executing_verify_job_monthly.yml
+++ b/config/metrics/counts_28d/20220706175117_ci_users_executing_verify_job_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts of times users have executed verify jobs
product_section: ops
product_stage: release
product_group: release
-product_category: continuous_delivery
value_type: number
status: active
milestone: "15.2"
diff --git a/config/metrics/counts_28d/20220707022802_users_updating_weight_estimate_monthly.yml b/config/metrics/counts_28d/20220707022802_users_updating_weight_estimate_monthly.yml
index 88fc09b6cc2..ce8f461d5a2 100644
--- a/config/metrics/counts_28d/20220707022802_users_updating_weight_estimate_monthly.yml
+++ b/config/metrics/counts_28d/20220707022802_users_updating_weight_estimate_monthly.yml
@@ -2,7 +2,6 @@
key_path: redis_hll_counters.work_items.users_updating_weight_estimate_monthly
name: users_updating_weight_estimate_monthly
description: Unique users updating a work item's weight estimate
-product_category: team_planning
product_section: dev
product_stage: plan
product_group: project_management
diff --git a/config/metrics/counts_28d/20220708162311_i_code_review_merge_request_widget_test_summary_view_monthly.yml b/config/metrics/counts_28d/20220708162311_i_code_review_merge_request_widget_test_summary_view_monthly.yml
index 07ba085063a..ede7a8fc89b 100644
--- a/config/metrics/counts_28d/20220708162311_i_code_review_merge_request_widget_test_summary_view_monthly.yml
+++ b/config/metrics/counts_28d/20220708162311_i_code_review_merge_request_widget_test_summary_view_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who were able to see the Test S
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.2"
diff --git a/config/metrics/counts_28d/20220708163625_i_code_review_merge_request_widget_test_summary_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20220708163625_i_code_review_merge_request_widget_test_summary_full_report_clicked_monthly.yml
index 1b27e018e5e..cb4c04c11aa 100644
--- a/config/metrics/counts_28d/20220708163625_i_code_review_merge_request_widget_test_summary_full_report_clicked_monthly.yml
+++ b/config/metrics/counts_28d/20220708163625_i_code_review_merge_request_widget_test_summary_full_report_clicked_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who clicked the Full Report but
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.2"
diff --git a/config/metrics/counts_28d/20220708164545_i_code_review_merge_request_widget_test_summary_expand_monthly.yml b/config/metrics/counts_28d/20220708164545_i_code_review_merge_request_widget_test_summary_expand_monthly.yml
index 40134414c5b..422729f9667 100644
--- a/config/metrics/counts_28d/20220708164545_i_code_review_merge_request_widget_test_summary_expand_monthly.yml
+++ b/config/metrics/counts_28d/20220708164545_i_code_review_merge_request_widget_test_summary_expand_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Test Summary w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.2"
diff --git a/config/metrics/counts_28d/20220708165638_i_code_review_merge_request_widget_test_summary_expand_success_monthly.yml b/config/metrics/counts_28d/20220708165638_i_code_review_merge_request_widget_test_summary_expand_success_monthly.yml
index a6c08e49a5b..137b2e84600 100644
--- a/config/metrics/counts_28d/20220708165638_i_code_review_merge_request_widget_test_summary_expand_success_monthly.yml
+++ b/config/metrics/counts_28d/20220708165638_i_code_review_merge_request_widget_test_summary_expand_success_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Test Summary w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.2"
diff --git a/config/metrics/counts_28d/20220708170514_i_code_review_merge_request_widget_test_summary_expand_warning_monthly.yml b/config/metrics/counts_28d/20220708170514_i_code_review_merge_request_widget_test_summary_expand_warning_monthly.yml
index 7636ffae159..1ebee37078b 100644
--- a/config/metrics/counts_28d/20220708170514_i_code_review_merge_request_widget_test_summary_expand_warning_monthly.yml
+++ b/config/metrics/counts_28d/20220708170514_i_code_review_merge_request_widget_test_summary_expand_warning_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Test Summary w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.2"
diff --git a/config/metrics/counts_28d/20220708173741_i_code_review_merge_request_widget_test_summary_expand_failed_monthly.yml b/config/metrics/counts_28d/20220708173741_i_code_review_merge_request_widget_test_summary_expand_failed_monthly.yml
index 7b84436ad57..3f90b18daf7 100644
--- a/config/metrics/counts_28d/20220708173741_i_code_review_merge_request_widget_test_summary_expand_failed_monthly.yml
+++ b/config/metrics/counts_28d/20220708173741_i_code_review_merge_request_widget_test_summary_expand_failed_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Test Summary w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.2"
diff --git a/config/metrics/counts_28d/20220715195415_p_ci_templates_security_fortify_fod_sast_monthly.yml b/config/metrics/counts_28d/20220715195415_p_ci_templates_security_fortify_fod_sast_monthly.yml
index 27c387dc423..f1d5a3e795c 100644
--- a/config/metrics/counts_28d/20220715195415_p_ci_templates_security_fortify_fod_sast_monthly.yml
+++ b/config/metrics/counts_28d/20220715195415_p_ci_templates_security_fortify_fod_sast_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines using the Fortify FoD SAST template
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: SAST
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220719133315_p_ci_templates_implicit_security_fortify_fod_sast_monthly.yml b/config/metrics/counts_28d/20220719133315_p_ci_templates_implicit_security_fortify_fod_sast_monthly.yml
index 574c9f41128..4a8d58800d3 100644
--- a/config/metrics/counts_28d/20220719133315_p_ci_templates_implicit_security_fortify_fod_sast_monthly.yml
+++ b/config/metrics/counts_28d/20220719133315_p_ci_templates_implicit_security_fortify_fod_sast_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines with implicit runs using the Fortify FoD SAST te
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: SAST
value_type: number
status: removed
milestone: '15.3'
diff --git a/config/metrics/counts_28d/20220725193059_users_updating_work_item_dates_monthly.yml b/config/metrics/counts_28d/20220725193059_users_updating_work_item_dates_monthly.yml
index 8e214153e9d..41a9f40eb63 100644
--- a/config/metrics/counts_28d/20220725193059_users_updating_work_item_dates_monthly.yml
+++ b/config/metrics/counts_28d/20220725193059_users_updating_work_item_dates_monthly.yml
@@ -1,7 +1,6 @@
---
key_path: redis_hll_counters.work_items.users_updating_work_item_dates_monthly
description: Unique users updating a work item's date
-product_category: team_planning
product_section: dev
product_stage: plan
product_group: project_management
diff --git a/config/metrics/counts_28d/20220725210913_i_code_review_merge_request_widget_accessibility_view_monthly.yml b/config/metrics/counts_28d/20220725210913_i_code_review_merge_request_widget_accessibility_view_monthly.yml
index aa17e1ccf55..62280cf5379 100644
--- a/config/metrics/counts_28d/20220725210913_i_code_review_merge_request_widget_accessibility_view_monthly.yml
+++ b/config/metrics/counts_28d/20220725210913_i_code_review_merge_request_widget_accessibility_view_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who were able to see the Access
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220725210919_i_code_review_merge_request_widget_accessibility_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20220725210919_i_code_review_merge_request_widget_accessibility_full_report_clicked_monthly.yml
index ad86cccdf72..b69c7fb833d 100644
--- a/config/metrics/counts_28d/20220725210919_i_code_review_merge_request_widget_accessibility_full_report_clicked_monthly.yml
+++ b/config/metrics/counts_28d/20220725210919_i_code_review_merge_request_widget_accessibility_full_report_clicked_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who clicked the Full Report but
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220725210926_i_code_review_merge_request_widget_accessibility_expand_monthly.yml b/config/metrics/counts_28d/20220725210926_i_code_review_merge_request_widget_accessibility_expand_monthly.yml
index 2e1ca0c8e70..bbc44c48dc5 100644
--- a/config/metrics/counts_28d/20220725210926_i_code_review_merge_request_widget_accessibility_expand_monthly.yml
+++ b/config/metrics/counts_28d/20220725210926_i_code_review_merge_request_widget_accessibility_expand_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Accessibility
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220725210935_i_code_review_merge_request_widget_accessibility_expand_success_monthly.yml b/config/metrics/counts_28d/20220725210935_i_code_review_merge_request_widget_accessibility_expand_success_monthly.yml
index 79505bad72e..c75fb74c534 100644
--- a/config/metrics/counts_28d/20220725210935_i_code_review_merge_request_widget_accessibility_expand_success_monthly.yml
+++ b/config/metrics/counts_28d/20220725210935_i_code_review_merge_request_widget_accessibility_expand_success_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Accessibility
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220725210942_i_code_review_merge_request_widget_accessibility_expand_warning_monthly.yml b/config/metrics/counts_28d/20220725210942_i_code_review_merge_request_widget_accessibility_expand_warning_monthly.yml
index 78009cb34c3..e2ef4df5ee1 100644
--- a/config/metrics/counts_28d/20220725210942_i_code_review_merge_request_widget_accessibility_expand_warning_monthly.yml
+++ b/config/metrics/counts_28d/20220725210942_i_code_review_merge_request_widget_accessibility_expand_warning_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Accessibility
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220725210949_i_code_review_merge_request_widget_accessibility_expand_failed_monthly.yml b/config/metrics/counts_28d/20220725210949_i_code_review_merge_request_widget_accessibility_expand_failed_monthly.yml
index e4ba9b8f53b..d32607b0b09 100644
--- a/config/metrics/counts_28d/20220725210949_i_code_review_merge_request_widget_accessibility_expand_failed_monthly.yml
+++ b/config/metrics/counts_28d/20220725210949_i_code_review_merge_request_widget_accessibility_expand_failed_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Accessibility
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727020440_i_code_review_merge_request_widget_code_quality_view_monthly.yml b/config/metrics/counts_28d/20220727020440_i_code_review_merge_request_widget_code_quality_view_monthly.yml
index a73f6a919ea..c807c6c1778 100644
--- a/config/metrics/counts_28d/20220727020440_i_code_review_merge_request_widget_code_quality_view_monthly.yml
+++ b/config/metrics/counts_28d/20220727020440_i_code_review_merge_request_widget_code_quality_view_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who were able to see the Code Q
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727020446_i_code_review_merge_request_widget_code_quality_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20220727020446_i_code_review_merge_request_widget_code_quality_full_report_clicked_monthly.yml
index 3fbd759deab..1aa25b27a64 100644
--- a/config/metrics/counts_28d/20220727020446_i_code_review_merge_request_widget_code_quality_full_report_clicked_monthly.yml
+++ b/config/metrics/counts_28d/20220727020446_i_code_review_merge_request_widget_code_quality_full_report_clicked_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who clicked the Full Report but
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727020452_i_code_review_merge_request_widget_code_quality_expand_monthly.yml b/config/metrics/counts_28d/20220727020452_i_code_review_merge_request_widget_code_quality_expand_monthly.yml
index 3b4686c28cc..b3e3e2f5009 100644
--- a/config/metrics/counts_28d/20220727020452_i_code_review_merge_request_widget_code_quality_expand_monthly.yml
+++ b/config/metrics/counts_28d/20220727020452_i_code_review_merge_request_widget_code_quality_expand_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Code Quality w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727020457_i_code_review_merge_request_widget_code_quality_expand_success_monthly.yml b/config/metrics/counts_28d/20220727020457_i_code_review_merge_request_widget_code_quality_expand_success_monthly.yml
index e36a74550d4..7c493c4300d 100644
--- a/config/metrics/counts_28d/20220727020457_i_code_review_merge_request_widget_code_quality_expand_success_monthly.yml
+++ b/config/metrics/counts_28d/20220727020457_i_code_review_merge_request_widget_code_quality_expand_success_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Code Quality w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727020503_i_code_review_merge_request_widget_code_quality_expand_warning_monthly.yml b/config/metrics/counts_28d/20220727020503_i_code_review_merge_request_widget_code_quality_expand_warning_monthly.yml
index 181c06ec06f..58b211aa5d2 100644
--- a/config/metrics/counts_28d/20220727020503_i_code_review_merge_request_widget_code_quality_expand_warning_monthly.yml
+++ b/config/metrics/counts_28d/20220727020503_i_code_review_merge_request_widget_code_quality_expand_warning_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Code Quality w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727020509_i_code_review_merge_request_widget_code_quality_expand_failed_monthly.yml b/config/metrics/counts_28d/20220727020509_i_code_review_merge_request_widget_code_quality_expand_failed_monthly.yml
index 5e4e6221142..1856bdcba9a 100644
--- a/config/metrics/counts_28d/20220727020509_i_code_review_merge_request_widget_code_quality_expand_failed_monthly.yml
+++ b/config/metrics/counts_28d/20220727020509_i_code_review_merge_request_widget_code_quality_expand_failed_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Code Quality w
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727045317_i_code_review_merge_request_widget_terraform_view_monthly.yml b/config/metrics/counts_28d/20220727045317_i_code_review_merge_request_widget_terraform_view_monthly.yml
index c18e947f722..23ee2e35ef3 100644
--- a/config/metrics/counts_28d/20220727045317_i_code_review_merge_request_widget_terraform_view_monthly.yml
+++ b/config/metrics/counts_28d/20220727045317_i_code_review_merge_request_widget_terraform_view_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who were able to see the Terraf
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727045323_i_code_review_merge_request_widget_terraform_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20220727045323_i_code_review_merge_request_widget_terraform_full_report_clicked_monthly.yml
index 1791ba6d4cf..9f80b3b97f6 100644
--- a/config/metrics/counts_28d/20220727045323_i_code_review_merge_request_widget_terraform_full_report_clicked_monthly.yml
+++ b/config/metrics/counts_28d/20220727045323_i_code_review_merge_request_widget_terraform_full_report_clicked_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who clicked the Full Report but
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727045330_i_code_review_merge_request_widget_terraform_expand_monthly.yml b/config/metrics/counts_28d/20220727045330_i_code_review_merge_request_widget_terraform_expand_monthly.yml
index 67f73ee4122..52c18d623dd 100644
--- a/config/metrics/counts_28d/20220727045330_i_code_review_merge_request_widget_terraform_expand_monthly.yml
+++ b/config/metrics/counts_28d/20220727045330_i_code_review_merge_request_widget_terraform_expand_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Terraform widg
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727045336_i_code_review_merge_request_widget_terraform_expand_success_monthly.yml b/config/metrics/counts_28d/20220727045336_i_code_review_merge_request_widget_terraform_expand_success_monthly.yml
index a374ed99263..a938d95c7c0 100644
--- a/config/metrics/counts_28d/20220727045336_i_code_review_merge_request_widget_terraform_expand_success_monthly.yml
+++ b/config/metrics/counts_28d/20220727045336_i_code_review_merge_request_widget_terraform_expand_success_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Terraform widg
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727045342_i_code_review_merge_request_widget_terraform_expand_warning_monthly.yml b/config/metrics/counts_28d/20220727045342_i_code_review_merge_request_widget_terraform_expand_warning_monthly.yml
index 909211e2a35..9fff51a7f3b 100644
--- a/config/metrics/counts_28d/20220727045342_i_code_review_merge_request_widget_terraform_expand_warning_monthly.yml
+++ b/config/metrics/counts_28d/20220727045342_i_code_review_merge_request_widget_terraform_expand_warning_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Terraform widg
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220727045349_i_code_review_merge_request_widget_terraform_expand_failed_monthly.yml b/config/metrics/counts_28d/20220727045349_i_code_review_merge_request_widget_terraform_expand_failed_monthly.yml
index a1d247d405f..2d974d06d43 100644
--- a/config/metrics/counts_28d/20220727045349_i_code_review_merge_request_widget_terraform_expand_failed_monthly.yml
+++ b/config/metrics/counts_28d/20220727045349_i_code_review_merge_request_widget_terraform_expand_failed_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Terraform widg
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml b/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml
index 8fc01895a1d..1051dd92307 100644
--- a/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml
+++ b/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml
@@ -4,7 +4,6 @@ description: MAU of the Agent for Kubernetes CI/CD Tunnel
product_section: ops
product_stage: configure
product_group: configure
-product_category: kubernetes_management
value_type: number
status: active
milestone: "15.3"
diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml
index 3b19ef26a6a..88caf147407 100644
--- a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml
+++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml
@@ -5,7 +5,6 @@ description: Count of group entities with failed status in GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml
index 72af0e3e18b..c0cedfc3147 100644
--- a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml
+++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml
@@ -5,7 +5,6 @@ description: Count of group entities with finished status in GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml
index 079fc328d73..4f2107e22ed 100644
--- a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml
+++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml
@@ -5,7 +5,6 @@ description: Count of group entities with timeout status in GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml b/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml
index a9ead88577d..b7772816df1 100644
--- a/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml
+++ b/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml
@@ -5,7 +5,6 @@ description: Count of project entities with timeout status in GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml b/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml
index 74c45c05641..2c2f80250ff 100644
--- a/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml
+++ b/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml
@@ -5,7 +5,6 @@ description: Count of project entities with failed status in GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml b/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml
index 228d6851020..557b502acfc 100644
--- a/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml
+++ b/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml
@@ -5,7 +5,6 @@ description: Count of project entities with finished status in GitLab Migration
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
index cd124735153..3ac7f48069a 100644
--- a/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
+++ b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
@@ -4,7 +4,6 @@ description: "MAU of junit test reports uploaded by customers per pipeline"
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: testing
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220825232557_count_user_auth.yml b/config/metrics/counts_28d/20220825232557_count_user_auth.yml
index dbcd665d616..f704340e439 100644
--- a/config/metrics/counts_28d/20220825232557_count_user_auth.yml
+++ b/config/metrics/counts_28d/20220825232557_count_user_auth.yml
@@ -4,7 +4,6 @@ description: Number of unique user logins
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: system_access
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml b/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml
index 60567037303..f793b02ac94 100644
--- a/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml
+++ b/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who were able to see the Licens
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml
index 3b4c0012495..cbb4bb98bba 100644
--- a/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml
+++ b/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who clicked the Full Report but
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml b/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml
index 7b0ec9d0518..a6480b5a72f 100644
--- a/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml
+++ b/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the License Compli
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml b/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml
index c6b7689c844..cf6faec1463 100644
--- a/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml
+++ b/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the License Compli
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml b/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml
index 5e164b5c3bf..3f8f844948d 100644
--- a/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml
+++ b/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the License Compli
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml b/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml
index 69af6c70299..75046f9f927 100644
--- a/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml
+++ b/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the License Compli
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml b/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml
index 3eac5ca1c01..908f5137d7d 100644
--- a/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml
+++ b/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly count of unique users visiting environments pages
product_section: ops
product_stage: release
product_group: release
-product_category: environment_management
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220906065651_incident_management_timeline_event_created_monthly.yml b/config/metrics/counts_28d/20220906065651_incident_management_timeline_event_created_monthly.yml
index 86b11489af0..da2e3095db9 100644
--- a/config/metrics/counts_28d/20220906065651_incident_management_timeline_event_created_monthly.yml
+++ b/config/metrics/counts_28d/20220906065651_incident_management_timeline_event_created_monthly.yml
@@ -4,7 +4,6 @@ description: Count of unique users created timeline events
product_section: ops
product_stage: monitor
product_group: respond
-product_category: incident_management
value_type: number
status: active
milestone: "15.5"
diff --git a/config/metrics/counts_28d/20220906070355_incident_management_timeline_event_edited_monthly.yml b/config/metrics/counts_28d/20220906070355_incident_management_timeline_event_edited_monthly.yml
index 31815426918..171204036f9 100644
--- a/config/metrics/counts_28d/20220906070355_incident_management_timeline_event_edited_monthly.yml
+++ b/config/metrics/counts_28d/20220906070355_incident_management_timeline_event_edited_monthly.yml
@@ -4,7 +4,6 @@ description: Count of unique users edited timeline events
product_section: ops
product_stage: monitor
product_group: respond
-product_category: incident_management
value_type: number
status: active
milestone: "15.5"
diff --git a/config/metrics/counts_28d/20220906070634_incident_management_timeline_event_deleted_monthly.yml b/config/metrics/counts_28d/20220906070634_incident_management_timeline_event_deleted_monthly.yml
index dbc3ac61071..729c998f83e 100644
--- a/config/metrics/counts_28d/20220906070634_incident_management_timeline_event_deleted_monthly.yml
+++ b/config/metrics/counts_28d/20220906070634_incident_management_timeline_event_deleted_monthly.yml
@@ -4,7 +4,6 @@ description: Count of unique users deleted timeline events
product_section: ops
product_stage: monitor
product_group: respond
-product_category: incident_management
value_type: number
status: active
milestone: "15.5"
diff --git a/config/metrics/counts_28d/20220907032044_i_quickactions_ready_monthly.yml b/config/metrics/counts_28d/20220907032044_i_quickactions_ready_monthly.yml
index 943a1ba235c..05683fbce5f 100644
--- a/config/metrics/counts_28d/20220907032044_i_quickactions_ready_monthly.yml
+++ b/config/metrics/counts_28d/20220907032044_i_quickactions_ready_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/ready` quick action
product_section: dev
product_stage: plan
product_group: project_management
-product_category: issue_tracking
value_type: number
data_source: redis_hll
status: active
diff --git a/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml b/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml
index f3f9499e9d9..f738e97749a 100644
--- a/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml
+++ b/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml
@@ -5,7 +5,6 @@ description: Count of MAU using the `/timeline` quick action
product_section: ops
product_stage: monitor
product_group: respond
-product_category: incident_management
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml b/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml
index 47068af05e2..bdcf97602db 100644
--- a/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml
+++ b/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with implicit SAST runs using the stable SAST Ia
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: SAST
value_type: number
status: removed
milestone: '15.4'
diff --git a/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml b/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml
index 0bcdad370ce..1f579aade8b 100644
--- a/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml
+++ b/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml
@@ -5,7 +5,6 @@ description: Count of pipelines with implicit SAST jobs using the stable SAST Ia
product_section: sec
product_stage: secure
product_group: static_analysis
-product_category: SAST
value_type: number
status: removed
milestone: '15.4'
diff --git a/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml
index 9cbfee008c3..ae659173c27 100644
--- a/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for Dependency Scanning CI Latest template (Jobs fol
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: dependency_scanning
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml
index fbf263cd6bc..c5728388138 100644
--- a/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for Container Scanning CI Latest template (Security
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: container_scanning
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml
index b78e5bc65fa..21d64a706de 100644
--- a/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for License Scanning CI Latest template (Jobs folder
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: license_scanning
value_type: number
status: active
milestone: "15.4"
diff --git a/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml
index 8e51d7e163a..230870b2fc5 100644
--- a/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly counts for implicit Dependency Scanning CI Latest template
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: dependency_scanning
value_type: number
status: removed
milestone: '15.4'
diff --git a/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml
index 8ad48955bea..5c5afa10f50 100644
--- a/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly counts for implicit License Scanning CI Latest template (Jo
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: license_scanning
value_type: number
status: removed
milestone: '15.4'
diff --git a/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml
index 3d5db04c7b8..4b69fe42a39 100644
--- a/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml
@@ -5,7 +5,6 @@ description: Monthly counts for implicit Container Scanning CI Latest template (
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: container_scanning
value_type: number
status: removed
milestone: '15.4'
diff --git a/config/metrics/counts_28d/20220913225020_p_ci_templates_security_coverage_fuzzing_latest_monthly.yml b/config/metrics/counts_28d/20220913225020_p_ci_templates_security_coverage_fuzzing_latest_monthly.yml
index c4fad8d7545..fe933e4c677 100644
--- a/config/metrics/counts_28d/20220913225020_p_ci_templates_security_coverage_fuzzing_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220913225020_p_ci_templates_security_coverage_fuzzing_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for Coverage Fuzzing latest CI template
product_section: sec
product_stage: secure
product_group: dynamic_analysis
-product_category: dynamic_application_security_testing
value_type: number
status: active
milestone: "15.5"
diff --git a/config/metrics/counts_28d/20220913225303_p_ci_templates_implicit_security_coverage_fuzzing_latest_monthly.yml b/config/metrics/counts_28d/20220913225303_p_ci_templates_implicit_security_coverage_fuzzing_latest_monthly.yml
index a66558a3537..5bd5653b1e3 100644
--- a/config/metrics/counts_28d/20220913225303_p_ci_templates_implicit_security_coverage_fuzzing_latest_monthly.yml
+++ b/config/metrics/counts_28d/20220913225303_p_ci_templates_implicit_security_coverage_fuzzing_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for implicit Coverage Fuzzing latest CI template
product_section: sec
product_stage: secure
product_group: dynamic_analysis
-product_category: dynamic_application_security_testing
value_type: number
status: removed
milestone: '15.5'
diff --git a/config/metrics/counts_28d/20220922042106_users_updating_work_item_iteration_monthly.yml b/config/metrics/counts_28d/20220922042106_users_updating_work_item_iteration_monthly.yml
index 4c19e4e3261..8ab0b5b4065 100644
--- a/config/metrics/counts_28d/20220922042106_users_updating_work_item_iteration_monthly.yml
+++ b/config/metrics/counts_28d/20220922042106_users_updating_work_item_iteration_monthly.yml
@@ -4,7 +4,6 @@ description: Unique users updating a work item's iteration
product_section: team planning
product_stage: dev
product_group: plan
-product_category: project_management
value_type: number
status: active
milestone: "15.5"
diff --git a/config/metrics/counts_28d/20221006065524_i_quickactions_link_monthly.yml b/config/metrics/counts_28d/20221006065524_i_quickactions_link_monthly.yml
index 52b75a90a03..ab17a29c2e6 100644
--- a/config/metrics/counts_28d/20221006065524_i_quickactions_link_monthly.yml
+++ b/config/metrics/counts_28d/20221006065524_i_quickactions_link_monthly.yml
@@ -4,7 +4,6 @@ description: Count of MAU using the `/link` quick action
product_section: ops
product_stage: monitor
product_group: respond
-product_category: incident_management
value_type: number
status: active
milestone: "15.5"
diff --git a/config/metrics/counts_28d/20221007011350_users_updating_work_item_labels_monthly.yml b/config/metrics/counts_28d/20221007011350_users_updating_work_item_labels_monthly.yml
index 5ebb56ea936..67156594fb7 100644
--- a/config/metrics/counts_28d/20221007011350_users_updating_work_item_labels_monthly.yml
+++ b/config/metrics/counts_28d/20221007011350_users_updating_work_item_labels_monthly.yml
@@ -1,7 +1,6 @@
---
key_path: redis_hll_counters.work_items.users_updating_work_item_labels_monthly
description: Unique users updating a work item's labels
-product_category: team_planning
product_section: dev
product_stage: plan
product_group: project_management
diff --git a/config/metrics/counts_28d/20221031070329_users_updating_work_item_milestone_monthly.yml b/config/metrics/counts_28d/20221031070329_users_updating_work_item_milestone_monthly.yml
index 02edb32765e..af4ef68c9ea 100644
--- a/config/metrics/counts_28d/20221031070329_users_updating_work_item_milestone_monthly.yml
+++ b/config/metrics/counts_28d/20221031070329_users_updating_work_item_milestone_monthly.yml
@@ -4,7 +4,6 @@ description: Unique users updating a work item's milestone
product_section: dev
product_stage: plan
product_group: project_management
-product_category: team_planning
value_type: number
status: active
milestone: "15.6"
diff --git a/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml b/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml
index a3d47aa4c49..65d0d439a90 100644
--- a/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml
+++ b/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml
@@ -4,7 +4,6 @@ description: "MAU of coverage test reports uploaded by customers per pipeline"
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: testing
value_type: number
status: active
milestone: "15.6"
diff --git a/config/metrics/counts_28d/20221108092725_p_ci_templates_implicit_jobs_container_scanning_monthly.yml b/config/metrics/counts_28d/20221108092725_p_ci_templates_implicit_jobs_container_scanning_monthly.yml
index 62ce68dd4e6..88b514194b9 100644
--- a/config/metrics/counts_28d/20221108092725_p_ci_templates_implicit_jobs_container_scanning_monthly.yml
+++ b/config/metrics/counts_28d/20221108092725_p_ci_templates_implicit_jobs_container_scanning_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for implicit use of Container Scanning CI template (
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: container_scanning
value_type: number
status: active
milestone: '15.6'
diff --git a/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_latest_monthly.yml b/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_latest_monthly.yml
index df169b9eb48..e86498a3f85 100644
--- a/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_latest_monthly.yml
+++ b/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_latest_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for Container Scanning CI Latest template (Jobs fold
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: container_scanning
value_type: number
status: active
milestone: '15.6'
diff --git a/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_monthly.yml b/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_monthly.yml
index 2abbb3f9b16..eabe049ea57 100644
--- a/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_monthly.yml
+++ b/config/metrics/counts_28d/20221108092725_p_ci_templates_jobs_container_scanning_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for Container Scanning CI template (Jobs folder)
product_section: sec
product_stage: secure
product_group: composition_analysis
-product_category: container_scanning
value_type: number
status: active
milestone: '15.6'
diff --git a/config/metrics/counts_28d/20221108101211_merge_request_authors_monthly.yml b/config/metrics/counts_28d/20221108101211_merge_request_authors_monthly.yml
index 4e9d58bddad..fe61039878c 100644
--- a/config/metrics/counts_28d/20221108101211_merge_request_authors_monthly.yml
+++ b/config/metrics/counts_28d/20221108101211_merge_request_authors_monthly.yml
@@ -4,7 +4,6 @@ description: Number of unique merge request authors
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: removed
milestone: "15.6"
diff --git a/config/metrics/counts_28d/20221121115622_i_code_review_merge_request_widget_security_reports_view_monthly.yml b/config/metrics/counts_28d/20221121115622_i_code_review_merge_request_widget_security_reports_view_monthly.yml
index 078da4a2768..40bf6f71a3d 100644
--- a/config/metrics/counts_28d/20221121115622_i_code_review_merge_request_widget_security_reports_view_monthly.yml
+++ b/config/metrics/counts_28d/20221121115622_i_code_review_merge_request_widget_security_reports_view_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who were able to see the Securi
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.7"
diff --git a/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_expand_monthly.yml b/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_expand_monthly.yml
index 2b520e995d2..3760f8d8f3d 100644
--- a/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_expand_monthly.yml
+++ b/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_expand_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Security Repor
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.7"
diff --git a/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_full_report_clicked_monthly.yml
index e18744673e4..d5ca0517079 100644
--- a/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_full_report_clicked_monthly.yml
+++ b/config/metrics/counts_28d/20221121115623_i_code_review_merge_request_widget_security_reports_full_report_clicked_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who clicked the Full Report but
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.7"
diff --git a/config/metrics/counts_28d/20221121115624_i_code_review_merge_request_widget_security_reports_expand_success_monthly.yml b/config/metrics/counts_28d/20221121115624_i_code_review_merge_request_widget_security_reports_expand_success_monthly.yml
index e604a3df3e6..b93b54535bf 100644
--- a/config/metrics/counts_28d/20221121115624_i_code_review_merge_request_widget_security_reports_expand_success_monthly.yml
+++ b/config/metrics/counts_28d/20221121115624_i_code_review_merge_request_widget_security_reports_expand_success_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Security Repor
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.7"
diff --git a/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_failed_monthly.yml b/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_failed_monthly.yml
index f33f78961a9..6a86e5f21b6 100644
--- a/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_failed_monthly.yml
+++ b/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_failed_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Security Repor
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.7"
diff --git a/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_warning_monthly.yml b/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_warning_monthly.yml
index 28763d81c88..20d69b68312 100644
--- a/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_warning_monthly.yml
+++ b/config/metrics/counts_28d/20221121115625_i_code_review_merge_request_widget_security_reports_expand_warning_monthly.yml
@@ -4,7 +4,6 @@ description: The count of unique users (monthly) who expanded the Security Repor
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.7"
diff --git a/config/metrics/counts_28d/20221213182900_i_code_review_create_mr_monthly.yml b/config/metrics/counts_28d/20221213182900_i_code_review_create_mr_monthly.yml
index e081e74b967..252559b3b20 100644
--- a/config/metrics/counts_28d/20221213182900_i_code_review_create_mr_monthly.yml
+++ b/config/metrics/counts_28d/20221213182900_i_code_review_create_mr_monthly.yml
@@ -4,7 +4,6 @@ description: Count of unique merge requests created per month
product_section: dev
product_stage: create
product_group: code_review
-product_category: code_review
value_type: number
status: active
milestone: "15.7"
diff --git a/config/metrics/counts_28d/20230105222225_g_project_management_issue_design_comments_removed_monthly.yml b/config/metrics/counts_28d/20230105222225_g_project_management_issue_design_comments_removed_monthly.yml
index 9c02ed98a82..dc62055774b 100644
--- a/config/metrics/counts_28d/20230105222225_g_project_management_issue_design_comments_removed_monthly.yml
+++ b/config/metrics/counts_28d/20230105222225_g_project_management_issue_design_comments_removed_monthly.yml
@@ -4,7 +4,6 @@ description: Count of unique users per month who removed a comment on a design
product_section: dev
product_stage: plan
product_group: product_planning
-product_category: design_management
value_type: number
status: active
milestone: "15.9"
diff --git a/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml b/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml
index 97a74e44f65..6cfede35f93 100644
--- a/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml
+++ b/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml
@@ -5,7 +5,6 @@ description: Count of monthly active users for pipeline insights features
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: testing
value_type: number
status: active
milestone: "15.9"
diff --git a/config/metrics/counts_28d/20230120094644_g_runner_fleet_read_jobs_statistics_monthly.yml b/config/metrics/counts_28d/20230120094644_g_runner_fleet_read_jobs_statistics_monthly.yml
index a99bcf9fdf4..d3e28450d1a 100644
--- a/config/metrics/counts_28d/20230120094644_g_runner_fleet_read_jobs_statistics_monthly.yml
+++ b/config/metrics/counts_28d/20230120094644_g_runner_fleet_read_jobs_statistics_monthly.yml
@@ -5,7 +5,6 @@ description: Count of unique users (monthly) who read runner job statistics
product_section: ops
product_stage: verify
product_group: runner
-product_category: runner_fleet
value_type: number
status: active
milestone: "15.9"
diff --git a/config/metrics/counts_28d/20230123233604_i_ci_secrets_management_id_tokens_build_created_monthly.yml b/config/metrics/counts_28d/20230123233604_i_ci_secrets_management_id_tokens_build_created_monthly.yml
index ff1677e4857..bf7754b6c80 100644
--- a/config/metrics/counts_28d/20230123233604_i_ci_secrets_management_id_tokens_build_created_monthly.yml
+++ b/config/metrics/counts_28d/20230123233604_i_ci_secrets_management_id_tokens_build_created_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly count of unique users who created a pipeline with id_tokens
product_section: ops
product_stage: verify
product_group: pipeline_authoring
-product_category: secrets_management
value_type: number
status: active
milestone: "15.9"
diff --git a/config/metrics/counts_28d/20230129134935_i_container_registry_push_tag_user_monthly.yml b/config/metrics/counts_28d/20230129134935_i_container_registry_push_tag_user_monthly.yml
index 2c2bcc689a0..09dbf32cbe4 100644
--- a/config/metrics/counts_28d/20230129134935_i_container_registry_push_tag_user_monthly.yml
+++ b/config/metrics/counts_28d/20230129134935_i_container_registry_push_tag_user_monthly.yml
@@ -4,7 +4,6 @@ description: A monthly count of users that have pushed a tag to the registry
product_section: ops
product_stage: package
product_group: package
-product_category: container_registry
value_type: number
status: active
milestone: '15.9'
diff --git a/config/metrics/counts_28d/20230129135520_i_container_registry_delete_tag_user_monthly.yml b/config/metrics/counts_28d/20230129135520_i_container_registry_delete_tag_user_monthly.yml
index 177fc92f3f0..d78c6c8c4b7 100644
--- a/config/metrics/counts_28d/20230129135520_i_container_registry_delete_tag_user_monthly.yml
+++ b/config/metrics/counts_28d/20230129135520_i_container_registry_delete_tag_user_monthly.yml
@@ -4,7 +4,6 @@ description: A monthly count of users that have deleted a tag from the registry
product_section: ops
product_stage: package
product_group: package
-product_category: container_registry
value_type: number
status: active
milestone: '15.9'
diff --git a/config/metrics/counts_28d/20230129135748_i_container_registry_push_repository_user_monthly.yml b/config/metrics/counts_28d/20230129135748_i_container_registry_push_repository_user_monthly.yml
index 6aa8a0fc5cb..d252b406d42 100644
--- a/config/metrics/counts_28d/20230129135748_i_container_registry_push_repository_user_monthly.yml
+++ b/config/metrics/counts_28d/20230129135748_i_container_registry_push_repository_user_monthly.yml
@@ -4,7 +4,6 @@ description: A monthly count of users that have pushed a repository to the regis
product_section: ops
product_stage: package
product_group: package
-product_category: container_registry
value_type: number
status: active
milestone: '15.9'
diff --git a/config/metrics/counts_28d/20230129140646_i_container_registry_delete_repository_user_monthly.yml b/config/metrics/counts_28d/20230129140646_i_container_registry_delete_repository_user_monthly.yml
index 5dc8a351956..7ce612609c8 100644
--- a/config/metrics/counts_28d/20230129140646_i_container_registry_delete_repository_user_monthly.yml
+++ b/config/metrics/counts_28d/20230129140646_i_container_registry_delete_repository_user_monthly.yml
@@ -4,7 +4,6 @@ description: A monthly count of users that have deleted a repository from the re
product_section: ops
product_stage: package
product_group: package
-product_category: container_registry
value_type: number
status: active
milestone: '15.9'
diff --git a/config/metrics/counts_28d/20230129140954_i_container_registry_create_repository_user_monthly.yml b/config/metrics/counts_28d/20230129140954_i_container_registry_create_repository_user_monthly.yml
index a1789967986..6fc4f742570 100644
--- a/config/metrics/counts_28d/20230129140954_i_container_registry_create_repository_user_monthly.yml
+++ b/config/metrics/counts_28d/20230129140954_i_container_registry_create_repository_user_monthly.yml
@@ -4,7 +4,6 @@ description: A monthly count of users that have created a repository from the re
product_section: ops
product_stage: package
product_group: package
-product_category: container_registry
value_type: number
status: active
milestone: '15.9'
diff --git a/config/metrics/counts_28d/20230130074932_p_ci_templates_terraform_module_monthly.yml b/config/metrics/counts_28d/20230130074932_p_ci_templates_terraform_module_monthly.yml
index 2aa6bf583e0..35d4706c1ef 100644
--- a/config/metrics/counts_28d/20230130074932_p_ci_templates_terraform_module_monthly.yml
+++ b/config/metrics/counts_28d/20230130074932_p_ci_templates_terraform_module_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines using the Terraform Module template
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
milestone: "15.9"
diff --git a/config/metrics/counts_28d/20230130075614_p_ci_templates_terraform_module_base_monthly.yml b/config/metrics/counts_28d/20230130075614_p_ci_templates_terraform_module_base_monthly.yml
index bf83a73330e..9e3d705d454 100644
--- a/config/metrics/counts_28d/20230130075614_p_ci_templates_terraform_module_base_monthly.yml
+++ b/config/metrics/counts_28d/20230130075614_p_ci_templates_terraform_module_base_monthly.yml
@@ -4,7 +4,6 @@ description: Count of pipelines using the Terraform Module Base template
product_section: ops
product_stage: configure
product_group: configure
-product_category: infrastructure_as_code
value_type: number
status: active
milestone: "15.9"
diff --git a/config/metrics/counts_28d/20230215180530_p_ci_templates_security_api_discovery_monthly.yml b/config/metrics/counts_28d/20230215180530_p_ci_templates_security_api_discovery_monthly.yml
index 1fa9772ae67..13fd0f295ec 100644
--- a/config/metrics/counts_28d/20230215180530_p_ci_templates_security_api_discovery_monthly.yml
+++ b/config/metrics/counts_28d/20230215180530_p_ci_templates_security_api_discovery_monthly.yml
@@ -4,7 +4,6 @@ description: Monthly counts for API Discovery CI template
product_section: sec
product_stage: secure
product_group: dynamic_analysis
-product_category: dynamic_application_security_testing
value_type: number
status: active
milestone: "15.9"
diff --git a/config/metrics/counts_28d/20230217215050_ci_internal_pipelines.yml b/config/metrics/counts_28d/20230217215050_ci_internal_pipelines.yml
index 5d927562f42..acc9ae681f3 100644
--- a/config/metrics/counts_28d/20230217215050_ci_internal_pipelines.yml
+++ b/config/metrics/counts_28d/20230217215050_ci_internal_pipelines.yml
@@ -4,7 +4,6 @@ description: Total monthly (28D) pipelines in Gitlab repositories for all projec
product_section: ops
product_stage: verify
product_group: pipeline_execution
-product_category: continuous_integration
value_type: number
status: active
milestone: "15.10"
diff --git a/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_with_failures.yml b/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_with_failures.yml
index 4304dcd0c25..1edcf3d766e 100644
--- a/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_with_failures.yml
+++ b/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_with_failures.yml
@@ -5,7 +5,6 @@ description: Count of group entities with finished status and failures in GitLab
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_without_failures.yml b/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_without_failures.yml
index 376e9bd5baa..69f38deae6d 100644
--- a/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_without_failures.yml
+++ b/config/metrics/counts_28d/20230224095530_bulk_import_entities_group_finished_without_failures.yml
@@ -5,7 +5,6 @@ description: Count of group entities with finished status and without failures i
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_with_failures.yml b/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_with_failures.yml
index 5b0e4db64ad..4b771461d68 100644
--- a/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_with_failures.yml
+++ b/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_with_failures.yml
@@ -5,7 +5,6 @@ description: Count of project entities with finished status and failures in GitL
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_without_failures.yml b/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_without_failures.yml
index 163a7f0ccd6..80e3a2dfe7a 100644
--- a/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_without_failures.yml
+++ b/config/metrics/counts_28d/20230224095530_bulk_import_entities_project_finished_without_failures.yml
@@ -5,7 +5,6 @@ description: Count of project entities with finished status and without failures
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
time_frame: 28d
diff --git a/config/metrics/counts_28d/20230306134018_github_import_project_cancelled_monthly.yml b/config/metrics/counts_28d/20230306134018_github_import_project_cancelled_monthly.yml
index f398fa3c16f..fff0745307b 100644
--- a/config/metrics/counts_28d/20230306134018_github_import_project_cancelled_monthly.yml
+++ b/config/metrics/counts_28d/20230306134018_github_import_project_cancelled_monthly.yml
@@ -4,7 +4,6 @@ description: The number of github projects that were cancelled monthly
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
milestone: "15.10"
diff --git a/config/metrics/counts_28d/20230306134609_github_import_project_partially_completed_monthly.yml b/config/metrics/counts_28d/20230306134609_github_import_project_partially_completed_monthly.yml
index 10344cffe5f..824cadc6d40 100644
--- a/config/metrics/counts_28d/20230306134609_github_import_project_partially_completed_monthly.yml
+++ b/config/metrics/counts_28d/20230306134609_github_import_project_partially_completed_monthly.yml
@@ -4,7 +4,6 @@ description: The number of github projects that were partially completed monthly
product_section: dev
product_stage: manage
product_group: import
-product_category: importers
value_type: number
status: active
milestone: "15.10"
diff --git a/config/metrics/license/20210201124932_recorded_at.yml b/config/metrics/license/20210201124932_recorded_at.yml
index c9d98a96727..d37d8b0e3ea 100644
--- a/config/metrics/license/20210201124932_recorded_at.yml
+++ b/config/metrics/license/20210201124932_recorded_at.yml
@@ -5,7 +5,6 @@ description: When the Usage Ping computation was started
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: string
status: active
milestone: "8.10"
diff --git a/config/metrics/license/20210201124933_uuid.yml b/config/metrics/license/20210201124933_uuid.yml
index f864c2be37a..2b08e8667c9 100644
--- a/config/metrics/license/20210201124933_uuid.yml
+++ b/config/metrics/license/20210201124933_uuid.yml
@@ -4,7 +4,6 @@ description: GitLab instance unique identifier
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: string
status: active
milestone: "9.1"
diff --git a/config/metrics/license/20210204124827_hostname.yml b/config/metrics/license/20210204124827_hostname.yml
index f545ae0c061..891ce0c20ff 100644
--- a/config/metrics/license/20210204124827_hostname.yml
+++ b/config/metrics/license/20210204124827_hostname.yml
@@ -4,7 +4,6 @@ description: Host name of GitLab instance
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: string
status: active
milestone: "<13.9"
diff --git a/config/metrics/license/20210204124829_active_user_count.yml b/config/metrics/license/20210204124829_active_user_count.yml
index 037ac7b5a03..c0cbdfa8df3 100644
--- a/config/metrics/license/20210204124829_active_user_count.yml
+++ b/config/metrics/license/20210204124829_active_user_count.yml
@@ -4,7 +4,6 @@ description: The number of active users existing in the instance. This is named
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: number
status: active
milestone: "<13.9"
diff --git a/config/metrics/license/20210204124928_version.yml b/config/metrics/license/20210204124928_version.yml
index 77cfcc38204..8c7bfeb5903 100644
--- a/config/metrics/license/20210204124928_version.yml
+++ b/config/metrics/license/20210204124928_version.yml
@@ -5,7 +5,6 @@ description: Version of Gitaly
product_section: dev
product_stage: create
product_group: gitaly
-product_category: gitaly
value_type: string
status: active
milestone: "<13.9"
diff --git a/config/metrics/license/20210204124936_pages_version.yml b/config/metrics/license/20210204124936_pages_version.yml
index 35fdc4676fe..e98e258e37d 100644
--- a/config/metrics/license/20210204124936_pages_version.yml
+++ b/config/metrics/license/20210204124936_pages_version.yml
@@ -5,7 +5,6 @@ description: The version number of GitLab Pages
product_section: ops
product_stage: create
product_group: editor
-product_category: pages
value_type: string
status: active
milestone: "<13.9"
diff --git a/config/metrics/license/20210204124938_recording_ce_finished_at.yml b/config/metrics/license/20210204124938_recording_ce_finished_at.yml
index 54728ff8206..28a9adf9071 100644
--- a/config/metrics/license/20210204124938_recording_ce_finished_at.yml
+++ b/config/metrics/license/20210204124938_recording_ce_finished_at.yml
@@ -5,7 +5,6 @@ description: When the core features were computed
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: string
status: active
milestone: "13.0"
diff --git a/config/metrics/license/20210216175601_version.yml b/config/metrics/license/20210216175601_version.yml
index 3eb94445513..bd1c91597d0 100644
--- a/config/metrics/license/20210216175601_version.yml
+++ b/config/metrics/license/20210216175601_version.yml
@@ -5,7 +5,6 @@ description: Version of GitLab instance
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: collection
value_type: string
status: active
milestone: "<13.9"
diff --git a/config/metrics/license/20210216175602_installation_type.yml b/config/metrics/license/20210216175602_installation_type.yml
index 9c3abd0131f..70ed48b2149 100644
--- a/config/metrics/license/20210216175602_installation_type.yml
+++ b/config/metrics/license/20210216175602_installation_type.yml
@@ -5,7 +5,6 @@ description: The installation method used to install GitLab (Omnibus, Helm, etc)
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: collection
value_type: string
status: active
milestone: "11.0"
diff --git a/config/metrics/license/20230314161014_gitlab_dedicated.yml b/config/metrics/license/20230314161014_gitlab_dedicated.yml
index 0495277077f..1aff67f2561 100644
--- a/config/metrics/license/20230314161014_gitlab_dedicated.yml
+++ b/config/metrics/license/20230314161014_gitlab_dedicated.yml
@@ -4,7 +4,6 @@ description: Is the instance a Gitlab Dedicated instance
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: boolean
status: active
milestone: "15.10"
diff --git a/config/metrics/settings/20210201124935_database_adapter.yml b/config/metrics/settings/20210201124935_database_adapter.yml
index 335f8eb15ac..2cfc5567cd9 100644
--- a/config/metrics/settings/20210201124935_database_adapter.yml
+++ b/config/metrics/settings/20210201124935_database_adapter.yml
@@ -7,7 +7,6 @@ description: This metric only returns a value of PostgreSQL in supported version
product_section: enablement
product_stage: enablement
product_group: enablement_distribution
-product_category: collection
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124856_instance_auto_devops_enabled.yml b/config/metrics/settings/20210204124856_instance_auto_devops_enabled.yml
index a5406c43c4b..df53d2784d2 100644
--- a/config/metrics/settings/20210204124856_instance_auto_devops_enabled.yml
+++ b/config/metrics/settings/20210204124856_instance_auto_devops_enabled.yml
@@ -5,7 +5,6 @@ description: Whether auto DevOps is enabled
product_section: ops
product_stage: configure
product_group: configure
-product_category: auto_devops
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124902_gitlab_shared_runners_enabled.yml b/config/metrics/settings/20210204124902_gitlab_shared_runners_enabled.yml
index 8c92609ca26..fa645922f92 100644
--- a/config/metrics/settings/20210204124902_gitlab_shared_runners_enabled.yml
+++ b/config/metrics/settings/20210204124902_gitlab_shared_runners_enabled.yml
@@ -5,7 +5,6 @@ description: Whether shared runners is enabled
product_section: ops
product_stage: verify
product_group: runner
-product_category: runner
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124904_gravatar_enabled.yml b/config/metrics/settings/20210204124904_gravatar_enabled.yml
index ec7495cfbe5..932151ca37a 100644
--- a/config/metrics/settings/20210204124904_gravatar_enabled.yml
+++ b/config/metrics/settings/20210204124904_gravatar_enabled.yml
@@ -5,7 +5,6 @@ description: Whether gravatar is enabled
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: users
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124906_ldap_enabled.yml b/config/metrics/settings/20210204124906_ldap_enabled.yml
index d25cb1d2628..3a5d6335693 100644
--- a/config/metrics/settings/20210204124906_ldap_enabled.yml
+++ b/config/metrics/settings/20210204124906_ldap_enabled.yml
@@ -5,7 +5,6 @@ description: Whether LDAP is enabled
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: system_access
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124908_mattermost_enabled.yml b/config/metrics/settings/20210204124908_mattermost_enabled.yml
index fb4608c12c5..6c8b0635471 100644
--- a/config/metrics/settings/20210204124908_mattermost_enabled.yml
+++ b/config/metrics/settings/20210204124908_mattermost_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Mattermost is enabled
product_section: dev
product_stage: manage
product_group: integrations
-product_category: integrations
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124910_omniauth_enabled.yml b/config/metrics/settings/20210204124910_omniauth_enabled.yml
index 0939ce43903..810ded396ca 100644
--- a/config/metrics/settings/20210204124910_omniauth_enabled.yml
+++ b/config/metrics/settings/20210204124910_omniauth_enabled.yml
@@ -5,7 +5,6 @@ description: Whether OmniAuth is enabled
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: system_access
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124916_reply_by_email_enabled.yml b/config/metrics/settings/20210204124916_reply_by_email_enabled.yml
index b003b2d8c19..a68569d728e 100644
--- a/config/metrics/settings/20210204124916_reply_by_email_enabled.yml
+++ b/config/metrics/settings/20210204124916_reply_by_email_enabled.yml
@@ -5,7 +5,6 @@ description: Whether incoming email is setup
product_section: dev
product_stage: plan
product_group: certify
-product_category: collection
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124918_signup_enabled.yml b/config/metrics/settings/20210204124918_signup_enabled.yml
index 9371a08613d..0fc1e768de1 100644
--- a/config/metrics/settings/20210204124918_signup_enabled.yml
+++ b/config/metrics/settings/20210204124918_signup_enabled.yml
@@ -5,7 +5,6 @@ description: Whether public signup is enabled
product_section: dev
product_stage: manage
product_group: authentication_and_authorization
-product_category: system_access
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124920_web_ide_clientside_preview_enabled.yml b/config/metrics/settings/20210204124920_web_ide_clientside_preview_enabled.yml
index ba19088442f..da6055ae7cc 100644
--- a/config/metrics/settings/20210204124920_web_ide_clientside_preview_enabled.yml
+++ b/config/metrics/settings/20210204124920_web_ide_clientside_preview_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Web IDE clientside preview is enabled
product_section: dev
product_stage: create
product_group: editor
-product_category: collection
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124922_grafana_link_enabled.yml b/config/metrics/settings/20210204124922_grafana_link_enabled.yml
index 104f991e96f..c80a6c88073 100644
--- a/config/metrics/settings/20210204124922_grafana_link_enabled.yml
+++ b/config/metrics/settings/20210204124922_grafana_link_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Grafana is enabled
product_section: ops
product_stage: monitor
product_group: respond
-product_category: collection
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210204124934_pages_enabled.yml b/config/metrics/settings/20210204124934_pages_enabled.yml
index 76a1401ae2e..a3b341b2f14 100644
--- a/config/metrics/settings/20210204124934_pages_enabled.yml
+++ b/config/metrics/settings/20210204124934_pages_enabled.yml
@@ -5,7 +5,6 @@ description: Whether GitLab Pages is enabled
product_section: ops
product_stage: create
product_group: editor
-product_category: collection
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216174829_smtp_server.yml b/config/metrics/settings/20210216174829_smtp_server.yml
index 8d126e75ac0..a21165f6490 100644
--- a/config/metrics/settings/20210216174829_smtp_server.yml
+++ b/config/metrics/settings/20210216174829_smtp_server.yml
@@ -5,7 +5,6 @@ description: The value of the SMTP server that is used
product_section: growth
product_stage: growth
product_group: activation
-product_category: onboarding
value_type: number
status: active
time_frame: all
diff --git a/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml b/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
index 7653505a19f..9f136ba3cc1 100644
--- a/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
+++ b/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
@@ -5,7 +5,6 @@ description: Whether or not ModSecurity is enabled within Ingress
product_section: sec
product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
-product_category: web_firewall_category_was_removed
value_type: boolean
status: removed
milestone_removed: 14.0
diff --git a/config/metrics/settings/20210216175604_edition.yml b/config/metrics/settings/20210216175604_edition.yml
index a8d363796ed..aa397254ed0 100644
--- a/config/metrics/settings/20210216175604_edition.yml
+++ b/config/metrics/settings/20210216175604_edition.yml
@@ -5,7 +5,6 @@ description: Edition of GitLab such as EE or CE
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: collection
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216175606_ldap_encrypted_secrets_enabled.yml b/config/metrics/settings/20210216175606_ldap_encrypted_secrets_enabled.yml
index b1eee864e24..b5880566d5e 100644
--- a/config/metrics/settings/20210216175606_ldap_encrypted_secrets_enabled.yml
+++ b/config/metrics/settings/20210216175606_ldap_encrypted_secrets_enabled.yml
@@ -5,7 +5,6 @@ description: Is encrypted LDAP secrets configured?
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: global_search
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216175609_version.yml b/config/metrics/settings/20210216175609_version.yml
index 493c93d3d1a..5e77d547a80 100644
--- a/config/metrics/settings/20210216175609_version.yml
+++ b/config/metrics/settings/20210216175609_version.yml
@@ -5,7 +5,6 @@ description: The version of the PostgreSQL database.
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: collection
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180314_gitpod_enabled.yml b/config/metrics/settings/20210216180314_gitpod_enabled.yml
index fc12cc8803f..0510f56cf0a 100644
--- a/config/metrics/settings/20210216180314_gitpod_enabled.yml
+++ b/config/metrics/settings/20210216180314_gitpod_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Gitpod is enabled in the instance
product_section: dev
product_stage: create
product_group: editor
-product_category: integrations
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180836_enabled.yml b/config/metrics/settings/20210216180836_enabled.yml
index a52473734eb..c648ea6d3e7 100644
--- a/config/metrics/settings/20210216180836_enabled.yml
+++ b/config/metrics/settings/20210216180836_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for Artifacts
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180838_enabled.yml b/config/metrics/settings/20210216180838_enabled.yml
index 68a466ebf0a..7ac3b166340 100644
--- a/config/metrics/settings/20210216180838_enabled.yml
+++ b/config/metrics/settings/20210216180838_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for Artifacts
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180840_direct_upload.yml b/config/metrics/settings/20210216180840_direct_upload.yml
index 242add8c15b..b73e74478ea 100644
--- a/config/metrics/settings/20210216180840_direct_upload.yml
+++ b/config/metrics/settings/20210216180840_direct_upload.yml
@@ -5,7 +5,6 @@ description: Whether Direct Upload for Object Storage is enabled for Artifacts
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180841_background_upload.yml b/config/metrics/settings/20210216180841_background_upload.yml
index 22f7e5e078d..f29588703fc 100644
--- a/config/metrics/settings/20210216180841_background_upload.yml
+++ b/config/metrics/settings/20210216180841_background_upload.yml
@@ -5,7 +5,6 @@ description: Whether Background Upload for Object Storage is enabled for Artifac
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: broken
repair_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382900
diff --git a/config/metrics/settings/20210216180843_provider.yml b/config/metrics/settings/20210216180843_provider.yml
index bdb58fff347..ae449f4ce41 100644
--- a/config/metrics/settings/20210216180843_provider.yml
+++ b/config/metrics/settings/20210216180843_provider.yml
@@ -5,7 +5,6 @@ description: What Object Storage provider has been configured for Artifacts
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180845_enabled.yml b/config/metrics/settings/20210216180845_enabled.yml
index f712d4fd306..61df7c0a793 100644
--- a/config/metrics/settings/20210216180845_enabled.yml
+++ b/config/metrics/settings/20210216180845_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for External Diffs
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180847_enabled.yml b/config/metrics/settings/20210216180847_enabled.yml
index 128418f4bd3..d506f8bd727 100644
--- a/config/metrics/settings/20210216180847_enabled.yml
+++ b/config/metrics/settings/20210216180847_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for External Diffs
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180849_direct_upload.yml b/config/metrics/settings/20210216180849_direct_upload.yml
index e1865f244e9..d246768a52a 100644
--- a/config/metrics/settings/20210216180849_direct_upload.yml
+++ b/config/metrics/settings/20210216180849_direct_upload.yml
@@ -5,7 +5,6 @@ description: Whether Direct Upload for Object Storage is enabled for External Di
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180851_background_upload.yml b/config/metrics/settings/20210216180851_background_upload.yml
index 21536e35303..fddcce4691b 100644
--- a/config/metrics/settings/20210216180851_background_upload.yml
+++ b/config/metrics/settings/20210216180851_background_upload.yml
@@ -6,7 +6,6 @@ description: Whether Background Upload for Object Storage is enabled for Externa
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: broken
repair_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382900
diff --git a/config/metrics/settings/20210216180852_provider.yml b/config/metrics/settings/20210216180852_provider.yml
index c6d09c82480..615badfd761 100644
--- a/config/metrics/settings/20210216180852_provider.yml
+++ b/config/metrics/settings/20210216180852_provider.yml
@@ -5,7 +5,6 @@ description: What Object Storage provider has been configured for External Diffs
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180854_enabled.yml b/config/metrics/settings/20210216180854_enabled.yml
index a4fca5e347b..0da06a20e36 100644
--- a/config/metrics/settings/20210216180854_enabled.yml
+++ b/config/metrics/settings/20210216180854_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for LFS
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180856_enabled.yml b/config/metrics/settings/20210216180856_enabled.yml
index 05c390c0040..b76c51857cf 100644
--- a/config/metrics/settings/20210216180856_enabled.yml
+++ b/config/metrics/settings/20210216180856_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for LFS
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180858_direct_upload.yml b/config/metrics/settings/20210216180858_direct_upload.yml
index 8cdfd1844b8..2aec5df1117 100644
--- a/config/metrics/settings/20210216180858_direct_upload.yml
+++ b/config/metrics/settings/20210216180858_direct_upload.yml
@@ -5,7 +5,6 @@ description: Whether Direct Upload for Object Storage is enabled for LFS
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180900_background_upload.yml b/config/metrics/settings/20210216180900_background_upload.yml
index df93b11c656..fb92b12d608 100644
--- a/config/metrics/settings/20210216180900_background_upload.yml
+++ b/config/metrics/settings/20210216180900_background_upload.yml
@@ -5,7 +5,6 @@ description: Whether Background Upload for Object Storage is enabled for LFS
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: broken
repair_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382900
diff --git a/config/metrics/settings/20210216180902_provider.yml b/config/metrics/settings/20210216180902_provider.yml
index 40a39acc8fd..c9fe9bf9e2a 100644
--- a/config/metrics/settings/20210216180902_provider.yml
+++ b/config/metrics/settings/20210216180902_provider.yml
@@ -5,7 +5,6 @@ description: What Object Storage provider has been configured for LFS
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180903_enabled.yml b/config/metrics/settings/20210216180903_enabled.yml
index 3e3f1ec17dc..f4296a1d4eb 100644
--- a/config/metrics/settings/20210216180903_enabled.yml
+++ b/config/metrics/settings/20210216180903_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for Uploads
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180905_enabled.yml b/config/metrics/settings/20210216180905_enabled.yml
index 7e35d718dd3..41b35c32ab8 100644
--- a/config/metrics/settings/20210216180905_enabled.yml
+++ b/config/metrics/settings/20210216180905_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for Uploads
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180907_direct_upload.yml b/config/metrics/settings/20210216180907_direct_upload.yml
index 53f3e2a7022..f891271bdbe 100644
--- a/config/metrics/settings/20210216180907_direct_upload.yml
+++ b/config/metrics/settings/20210216180907_direct_upload.yml
@@ -5,7 +5,6 @@ description: Whether Direct Upload for Object Storage is enabled for Uploads
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180909_background_upload.yml b/config/metrics/settings/20210216180909_background_upload.yml
index 32871d5d30e..2ed457f4262 100644
--- a/config/metrics/settings/20210216180909_background_upload.yml
+++ b/config/metrics/settings/20210216180909_background_upload.yml
@@ -5,7 +5,6 @@ description: Whether Background Upload for Object Storage is enabled for Uploads
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: broken
repair_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382900
diff --git a/config/metrics/settings/20210216180911_provider.yml b/config/metrics/settings/20210216180911_provider.yml
index ba3f68dab4d..4572ab0330d 100644
--- a/config/metrics/settings/20210216180911_provider.yml
+++ b/config/metrics/settings/20210216180911_provider.yml
@@ -5,7 +5,6 @@ description: What Object Storage provider has been configured for Uploads
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180913_enabled.yml b/config/metrics/settings/20210216180913_enabled.yml
index 7c91a7cbe5b..f7ed9d04862 100644
--- a/config/metrics/settings/20210216180913_enabled.yml
+++ b/config/metrics/settings/20210216180913_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for Uploads
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180915_enabled.yml b/config/metrics/settings/20210216180915_enabled.yml
index ae465ef80b3..aaeb66f10c2 100644
--- a/config/metrics/settings/20210216180915_enabled.yml
+++ b/config/metrics/settings/20210216180915_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Object Storage is enabled for Packages
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180916_direct_upload.yml b/config/metrics/settings/20210216180916_direct_upload.yml
index 8628e5aeda9..0463c0726c7 100644
--- a/config/metrics/settings/20210216180916_direct_upload.yml
+++ b/config/metrics/settings/20210216180916_direct_upload.yml
@@ -5,7 +5,6 @@ description: Whether Direct Upload for Object Storage is enabled for Packages
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216180918_background_upload.yml b/config/metrics/settings/20210216180918_background_upload.yml
index 186e7c8b2b9..5c9afd5a281 100644
--- a/config/metrics/settings/20210216180918_background_upload.yml
+++ b/config/metrics/settings/20210216180918_background_upload.yml
@@ -5,7 +5,6 @@ description: Whether Background Upload for Object Storage is enabled for Package
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: boolean
status: broken
repair_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382900
diff --git a/config/metrics/settings/20210216180920_provider.yml b/config/metrics/settings/20210216180920_provider.yml
index 88fd70061db..38143e1f4b9 100644
--- a/config/metrics/settings/20210216180920_provider.yml
+++ b/config/metrics/settings/20210216180920_provider.yml
@@ -5,7 +5,6 @@ description: What Object Storage provider has been configured for Packages
product_section: enablement
product_stage: enablement
product_group: memory
-product_category: memory
value_type: string
status: active
time_frame: none
diff --git a/config/metrics/settings/20210216183241_filesystems.yml b/config/metrics/settings/20210216183241_filesystems.yml
index b0df7200270..6536d06779d 100644
--- a/config/metrics/settings/20210216183241_filesystems.yml
+++ b/config/metrics/settings/20210216183241_filesystems.yml
@@ -5,7 +5,6 @@ description: Filesystem data for Gitaly installations
product_section: dev
product_stage: create
product_group: gitaly
-product_category: gitaly
value_type: string
status: active
time_frame: all
diff --git a/config/metrics/settings/20210225045628_operating_system.yml b/config/metrics/settings/20210225045628_operating_system.yml
index 5eeb45ea062..e1249aee2a7 100644
--- a/config/metrics/settings/20210225045628_operating_system.yml
+++ b/config/metrics/settings/20210225045628_operating_system.yml
@@ -5,7 +5,6 @@ description: Information about the operating system running GitLab
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: collection
value_type: string
status: active
milestone: "13.10"
diff --git a/config/metrics/settings/20210321224827_gitaly_apdex.yml b/config/metrics/settings/20210321224827_gitaly_apdex.yml
index 101c94157eb..3dcb8340628 100644
--- a/config/metrics/settings/20210321224827_gitaly_apdex.yml
+++ b/config/metrics/settings/20210321224827_gitaly_apdex.yml
@@ -5,7 +5,6 @@ description: Gitaly application performance
product_section: dev
product_stage: create
product_group: gitaly
-product_category: gitaly
value_type: number
status: active
milestone: "13.11"
diff --git a/config/metrics/settings/20210702140138_collected_data_categories.yml b/config/metrics/settings/20210702140138_collected_data_categories.yml
index 006a77f8b29..e5732e3410b 100644
--- a/config/metrics/settings/20210702140138_collected_data_categories.yml
+++ b/config/metrics/settings/20210702140138_collected_data_categories.yml
@@ -5,7 +5,6 @@ description: List of collected data categories corresponding to instance setting
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: object
status: active
milestone: "14.1"
diff --git a/config/metrics/settings/20210915152326_service_ping_features_enabled.yml b/config/metrics/settings/20210915152326_service_ping_features_enabled.yml
index d7e1a7f68bf..ec7a2480990 100644
--- a/config/metrics/settings/20210915152326_service_ping_features_enabled.yml
+++ b/config/metrics/settings/20210915152326_service_ping_features_enabled.yml
@@ -5,7 +5,6 @@ description: Whether Service Ping features are enabled
product_section: analytics
product_stage: analytics
product_group: product_intelligence
-product_category: collection
value_type: boolean
status: active
milestone: "14.3"
diff --git a/config/metrics/settings/20211201012652_flavor.yml b/config/metrics/settings/20211201012652_flavor.yml
index 01c73de57c0..625afabb029 100644
--- a/config/metrics/settings/20211201012652_flavor.yml
+++ b/config/metrics/settings/20211201012652_flavor.yml
@@ -7,7 +7,6 @@ description: What PostgreSQL flavor is being used. Possible values are
product_section: enablement
product_stage: enablement
product_group: database
-product_category: database
value_type: string
status: active
milestone: "14.6"
diff --git a/config/metrics/settings/20221015152126_deactivate_dormant_users_enabled.yml b/config/metrics/settings/20221015152126_deactivate_dormant_users_enabled.yml
index 7861560c26a..4a1cacfcfb2 100644
--- a/config/metrics/settings/20221015152126_deactivate_dormant_users_enabled.yml
+++ b/config/metrics/settings/20221015152126_deactivate_dormant_users_enabled.yml
@@ -4,7 +4,6 @@ description: Whether Dormant User Deactivation is enabled
product_section: fulfillment
product_stage: fulfillment
product_group: utilization
-product_category: seat_cost_management
value_type: boolean
status: active
milestone: "15.6"
diff --git a/config/metrics/settings/20221015161233_deactivate_dormant_users_period.yml b/config/metrics/settings/20221015161233_deactivate_dormant_users_period.yml
index ac05d0ef80c..015cffd4032 100644
--- a/config/metrics/settings/20221015161233_deactivate_dormant_users_period.yml
+++ b/config/metrics/settings/20221015161233_deactivate_dormant_users_period.yml
@@ -4,7 +4,6 @@ description: The value of the dormant users period being used
product_section: fulfillment
product_stage: fulfillment
product_group: utilization
-product_category: seat_cost_management
value_type: boolean
status: active
milestone: "15.6"
diff --git a/config/metrics/settings/20230125220526_incoming_email_encrypted_secrets_enabled.yml b/config/metrics/settings/20230125220526_incoming_email_encrypted_secrets_enabled.yml
index ae73bcbafea..9c633a701c1 100644
--- a/config/metrics/settings/20230125220526_incoming_email_encrypted_secrets_enabled.yml
+++ b/config/metrics/settings/20230125220526_incoming_email_encrypted_secrets_enabled.yml
@@ -4,7 +4,6 @@ description: Are encrypted incoming email secrets configured?
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: build
value_type: boolean
status: active
milestone: "15.9"
diff --git a/config/metrics/settings/20230125221700_service_desk_email_encrypted_secrets_enabled.yml b/config/metrics/settings/20230125221700_service_desk_email_encrypted_secrets_enabled.yml
index 227bc86adfa..8b22c398861 100644
--- a/config/metrics/settings/20230125221700_service_desk_email_encrypted_secrets_enabled.yml
+++ b/config/metrics/settings/20230125221700_service_desk_email_encrypted_secrets_enabled.yml
@@ -4,7 +4,6 @@ description: Are service desk email secrets configured?
product_section: enablement
product_stage: enablement
product_group: distribution
-product_category: build
value_type: boolean
status: active
milestone: "15.9"
diff --git a/config/metrics/settings/20230203164341_index_inconsistencies_metric.yml b/config/metrics/settings/20230203164341_index_inconsistencies_metric.yml
index 5076eb9cdd8..08016b5143e 100644
--- a/config/metrics/settings/20230203164341_index_inconsistencies_metric.yml
+++ b/config/metrics/settings/20230203164341_index_inconsistencies_metric.yml
@@ -5,7 +5,6 @@ description: "List the index inconsistencies in the database"
product_section: enablement
product_stage: enablement
product_group: database
-product_category: database
value_type: object
status: active
milestone: "15.10"
diff --git a/db/migrate/20230323021618_add_silent_mode_enabled_to_application_settings.rb b/db/migrate/20230323021618_add_silent_mode_enabled_to_application_settings.rb
new file mode 100644
index 00000000000..e3592e0bd13
--- /dev/null
+++ b/db/migrate/20230323021618_add_silent_mode_enabled_to_application_settings.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddSilentModeEnabledToApplicationSettings < Gitlab::Database::Migration[2.1]
+ def change
+ add_column :application_settings, :silent_mode_enabled, :boolean, default: false, null: false, if_not_exists: true
+ end
+end
diff --git a/db/schema_migrations/20230323021618 b/db/schema_migrations/20230323021618
new file mode 100644
index 00000000000..49e2c251987
--- /dev/null
+++ b/db/schema_migrations/20230323021618
@@ -0,0 +1 @@
+4eed46d4a2ae17425076dbb60b5669317d8edb7252246dddf914411f0a267897 \ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index d5d04ff6878..6b7322ad2f5 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -11757,6 +11757,7 @@ CREATE TABLE application_settings (
encrypted_openai_api_key bytea,
encrypted_openai_api_key_iv bytea,
database_max_running_batched_background_migrations integer DEFAULT 2 NOT NULL,
+ silent_mode_enabled boolean DEFAULT false NOT NULL,
CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)),
CONSTRAINT app_settings_container_registry_pre_import_tags_rate_positive CHECK ((container_registry_pre_import_tags_rate >= (0)::numeric)),
CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)),
diff --git a/doc/.vale/gitlab/spelling-exceptions.txt b/doc/.vale/gitlab/spelling-exceptions.txt
index 506763f5d68..b24608f1a1c 100644
--- a/doc/.vale/gitlab/spelling-exceptions.txt
+++ b/doc/.vale/gitlab/spelling-exceptions.txt
@@ -393,6 +393,8 @@ Gitter
GLab
globals
globbing
+globstar
+globstars
Gmail
Godep
Golang
diff --git a/doc/administration/auth/ldap/ldap_synchronization.md b/doc/administration/auth/ldap/ldap_synchronization.md
index 243f76f770d..f32a4af9e27 100644
--- a/doc/administration/auth/ldap/ldap_synchronization.md
+++ b/doc/administration/auth/ldap/ldap_synchronization.md
@@ -15,6 +15,8 @@ You can change when synchronization occurs.
## User sync
+> Preventing LDAP username synchronization [introduced](<https://gitlab.com/gitlab-org/gitlab/-/issues/11336>) in GitLab 15.11.
+
Once per day, GitLab runs a worker to check and update GitLab
users against LDAP.
diff --git a/doc/administration/silent_mode/index.md b/doc/administration/silent_mode/index.md
new file mode 100644
index 00000000000..f07f1dde323
--- /dev/null
+++ b/doc/administration/silent_mode/index.md
@@ -0,0 +1,64 @@
+---
+stage: Systems
+group: Geo
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
+---
+
+# GitLab Silent Mode (Alpha) **(FREE SELF)**
+
+> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/9826) in GitLab 15.11. This feature is an [Experiment](../../policy/alpha-beta-support.md#experiment).
+
+Silent Mode allows you to suppress outbound communication, such as emails, from GitLab. Silent Mode is not intended to be used on environments which are in-use. Two use-cases are:
+
+- Validating Geo site promotion. You have a secondary Geo site as part of your [disaster recovery](../geo/disaster_recovery/index.md) solution. You want to regularly test promoting it to become a primary Geo site, as a best practice to ensure your disaster recovery plan actually works. But you don't want to actually perform an entire failover, since the primary site lives in a region which provides the lowest latency to your users. And you don't want to take downtime during every regular test. So, you let the primary site remain up, while you promote the secondary site. You start smoke testing the promoted site. But, the promoted site starts emailing users, the push mirrors push changes to external Git repositories, etc. This is where Silent Mode comes in. You can enable it as part of site promotion, to avoid this issue.
+- Validating GitLab backups. You set up a testing instance to test that your backups restore successfully. As part of the restore, you enable Silent Mode, for example to avoid sending invalid emails to users.
+
+## Enable Silent Mode
+
+Prerequisites:
+
+- You must have administrator access.
+
+There are two ways to enable Silent Mode:
+
+- [**API**](../../api/settings.md):
+
+ ```shell
+ curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=true"
+ ```
+
+- [**Rails console**](../operations/rails_console.md#starting-a-rails-console-session):
+
+ ```ruby
+ ::Gitlab::CurrentSettings.update!(silent_mode_enabled: true)
+ ```
+
+## Disable Silent Mode
+
+Prerequisites:
+
+- You must have administrator access.
+
+There are two ways to disable Silent Mode:
+
+- [**API**](../../api/settings.md):
+
+ ```shell
+ curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=false"
+ ```
+
+- [**Rails console**](../operations/rails_console.md#starting-a-rails-console-session):
+
+ ```ruby
+ ::Gitlab::CurrentSettings.update!(silent_mode_enabled: false)
+ ```
+
+## Behavior of GitLab features in Silent Mode
+
+### Service Desk
+
+Incoming emails still raise issues, but the users who sent the emails to [Service Desk](../../user/project/service_desk.md) are not notified of issue creation or comments on their issues.
+
+### Outbound emails
+
+Outbound emails are suppressed. It may take up to a minute to take effect after enabling Silent Mode. [Issue 405433](https://gitlab.com/gitlab-org/gitlab/-/issues/405433) proposes removing this delay.
diff --git a/doc/api/settings.md b/doc/api/settings.md
index db327b0b0e0..36d2b74cb06 100644
--- a/doc/api/settings.md
+++ b/doc/api/settings.md
@@ -107,7 +107,8 @@ Example response:
"external_pipeline_validation_service_token": null,
"external_pipeline_validation_service_url": null,
"jira_connect_application_key": null,
- "jira_connect_proxy_url": null
+ "jira_connect_proxy_url": null,
+ "silent_mode_enabled": false
}
```
@@ -120,9 +121,9 @@ the `delayed_project_deletion` and `delayed_group_deletion` attributes will not
```json
{
- "id" : 1,
- "signup_enabled" : true,
- "group_owners_can_manage_default_branch_protection" : true,
+ "id": 1,
+ "signup_enabled": true,
+ "group_owners_can_manage_default_branch_protection": true,
"file_template_project_id": 1,
"geo_node_allowed_ips": "0.0.0.0/0, ::/0",
"delayed_project_deletion": false,
@@ -231,7 +232,8 @@ Example response:
"jira_connect_application_key": "123",
"jira_connect_proxy_url": "http://gitlab.example.com",
"user_defaults_to_private_profile": true,
- "projects_api_rate_limit_unauthenticated": 400
+ "projects_api_rate_limit_unauthenticated": 400,
+ "silent_mode_enabled": false
}
```
@@ -475,6 +477,7 @@ listed in the descriptions of the relevant settings.
| `sign_in_text` | string | no | Text on the login page. |
| `signin_enabled` | string | no | (Deprecated: Use `password_authentication_enabled_for_web` instead) Flag indicating if password authentication is enabled for the web interface. |
| `signup_enabled` | boolean | no | Enable registration. Default is `true`. |
+| `silent_mode_enabled` | boolean | no | Enable [Silent mode](../administration/silent_mode/index.md). Default is `false`. |
| `slack_app_enabled` **(PREMIUM)** | boolean | no | (**If enabled, requires:** `slack_app_id`, `slack_app_secret` and `slack_app_secret`) Enable Slack app. |
| `slack_app_id` **(PREMIUM)** | string | required by: `slack_app_enabled` | The app ID of the Slack-app. |
| `slack_app_secret` **(PREMIUM)** | string | required by: `slack_app_enabled` | The app secret of the Slack-app. |
diff --git a/lib/gitlab/database/schema_validation/database.rb b/lib/gitlab/database/schema_validation/database.rb
index 07bd02e58e1..83224629e5f 100644
--- a/lib/gitlab/database/schema_validation/database.rb
+++ b/lib/gitlab/database/schema_validation/database.rb
@@ -18,6 +18,10 @@ module Gitlab
trigger_map[trigger_name]
end
+ def fetch_table_by_name(table_name)
+ table_map[table_name]
+ end
+
def index_exists?(index_name)
index_map[index_name].present?
end
@@ -26,6 +30,10 @@ module Gitlab
trigger_map[trigger_name].present?
end
+ def table_exists?(table_name)
+ fetch_table_by_name(table_name).present?
+ end
+
def indexes
index_map.values
end
@@ -34,6 +42,10 @@ module Gitlab
trigger_map.values
end
+ def tables
+ table_map.values
+ end
+
private
attr_reader :connection
@@ -56,6 +68,10 @@ module Gitlab
end
end
+ def table_map
+ @table_map ||= fetch_tables.transform_values! { |stmt| SchemaObjects::Table.new(stmt.first['table_name']) }
+ end
+
def fetch_indexes
sql = <<~SQL
SELECT indexname, indexdef
@@ -78,6 +94,28 @@ module Gitlab
connection.select_rows(sql, nil, schemas).to_h
end
+
+ def fetch_tables
+ sql = <<~SQL
+ SELECT
+ table_information.relname AS table_name,
+ col_information.attname AS column_name,
+ col_information.attnotnull AS not_null,
+ format_type(col_information.atttypid, col_information.atttypmod) AS data_type,
+ pg_get_expr(col_default_information.adbin, col_default_information.adrelid) AS column_default
+ FROM pg_attribute AS col_information
+ JOIN pg_class AS table_information ON col_information.attrelid = table_information.oid
+ JOIN pg_namespace AS schema_information ON table_information.relnamespace = schema_information.oid
+ LEFT JOIN pg_attrdef AS col_default_information ON col_information.attrelid = col_default_information.adrelid
+ AND col_information.attnum = col_default_information.adnum
+ WHERE NOT col_information.attisdropped
+ AND col_information.attnum > 0
+ AND table_information.relkind IN ('r', 'p')
+ AND schema_information.nspname IN ($1, $2)
+ SQL
+
+ connection.exec_query(sql, nil, schemas).group_by { |row| row['table_name'] }
+ end
end
end
end
diff --git a/lib/gitlab/database/schema_validation/schema_objects/table.rb b/lib/gitlab/database/schema_validation/schema_objects/table.rb
new file mode 100644
index 00000000000..6dc7ee32706
--- /dev/null
+++ b/lib/gitlab/database/schema_validation/schema_objects/table.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ module SchemaValidation
+ module SchemaObjects
+ class Table
+ def initialize(name)
+ @name = name
+ end
+
+ def table_name
+ name
+ end
+
+ def statement
+ nil
+ end
+
+ attr_reader :name
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/database/schema_validation/structure_sql.rb b/lib/gitlab/database/schema_validation/structure_sql.rb
index cb62af8d8b8..687b3b73ec8 100644
--- a/lib/gitlab/database/schema_validation/structure_sql.rb
+++ b/lib/gitlab/database/schema_validation/structure_sql.rb
@@ -19,6 +19,14 @@ module Gitlab
triggers.find { |trigger| trigger.name == trigger_name }.present?
end
+ def fetch_table_by_name(table_name)
+ tables.find { |table| table.name == table_name }
+ end
+
+ def table_exists?(table_name)
+ fetch_table_by_name(table_name).present?
+ end
+
def indexes
@indexes ||= map_with_default_schema(index_statements, SchemaObjects::Index)
end
@@ -27,6 +35,10 @@ module Gitlab
@triggers ||= map_with_default_schema(trigger_statements, SchemaObjects::Trigger)
end
+ def tables
+ @tables ||= table_statements.map { |stmt| SchemaObjects::Table.new(stmt.relation.relname) }
+ end
+
private
attr_reader :structure_file_path, :schema_name
@@ -39,6 +51,10 @@ module Gitlab
statements.filter_map { |s| s.stmt.create_trig_stmt }
end
+ def table_statements
+ statements.filter_map { |s| s.stmt.create_stmt }
+ end
+
def statements
@statements ||= parsed_structure_file.tree.stmts
end
diff --git a/lib/gitlab/database/schema_validation/validators/base_validator.rb b/lib/gitlab/database/schema_validation/validators/base_validator.rb
index d3c92871721..0593bb5f6ae 100644
--- a/lib/gitlab/database/schema_validation/validators/base_validator.rb
+++ b/lib/gitlab/database/schema_validation/validators/base_validator.rb
@@ -14,8 +14,10 @@ module Gitlab
def self.all_validators
[
+ ExtraTables,
ExtraIndexes,
ExtraTriggers,
+ MissingTables,
MissingIndexes,
MissingTriggers,
DifferentDefinitionIndexes,
diff --git a/lib/gitlab/database/schema_validation/validators/extra_tables.rb b/lib/gitlab/database/schema_validation/validators/extra_tables.rb
new file mode 100644
index 00000000000..99e98eb8f67
--- /dev/null
+++ b/lib/gitlab/database/schema_validation/validators/extra_tables.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ module SchemaValidation
+ module Validators
+ class ExtraTables < BaseValidator
+ ERROR_MESSAGE = "The table %s is present in the database, but not in the structure.sql file"
+
+ def execute
+ database.tables.filter_map do |database_table|
+ next if structure_sql.table_exists?(database_table.name)
+
+ build_inconsistency(self.class, nil, database_table)
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/database/schema_validation/validators/missing_tables.rb b/lib/gitlab/database/schema_validation/validators/missing_tables.rb
new file mode 100644
index 00000000000..f1c9383487d
--- /dev/null
+++ b/lib/gitlab/database/schema_validation/validators/missing_tables.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ module SchemaValidation
+ module Validators
+ class MissingTables < BaseValidator
+ ERROR_MESSAGE = "The table %s is missing from the database"
+
+ def execute
+ structure_sql.tables.filter_map do |structure_sql_table|
+ next if database.table_exists?(structure_sql_table.name)
+
+ build_inconsistency(self.class, structure_sql_table, nil)
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/email/hook/silent_mode_interceptor.rb b/lib/gitlab/email/hook/silent_mode_interceptor.rb
new file mode 100644
index 00000000000..56f94119472
--- /dev/null
+++ b/lib/gitlab/email/hook/silent_mode_interceptor.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Email
+ module Hook
+ class SilentModeInterceptor
+ def self.delivering_email(message)
+ if Gitlab::CurrentSettings.silent_mode_enabled?
+ message.perform_deliveries = false
+
+ Gitlab::AppJsonLogger.info(
+ message: "SilentModeInterceptor prevented sending mail",
+ mail_subject: message.subject,
+ silent_mode_enabled: true
+ )
+ else
+ Gitlab::AppJsonLogger.debug(
+ message: "SilentModeInterceptor did nothing",
+ mail_subject: message.subject,
+ silent_mode_enabled: false
+ )
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/page/component/breadcrumbs.rb b/qa/qa/page/component/breadcrumbs.rb
index 2576e376e4e..f2343da489e 100644
--- a/qa/qa/page/component/breadcrumbs.rb
+++ b/qa/qa/page/component/breadcrumbs.rb
@@ -9,7 +9,7 @@ module QA
def self.included(base)
super
- base.view 'app/views/layouts/nav/_breadcrumbs.html.haml' do
+ base.view 'app/views/layouts/nav/breadcrumbs/_breadcrumbs.html.haml' do
element :breadcrumb_links_content
end
end
diff --git a/qa/qa/page/component/snippet.rb b/qa/qa/page/component/snippet.rb
index 4e1c7f3e2bb..b1d83a6e2d0 100644
--- a/qa/qa/page/component/snippet.rb
+++ b/qa/qa/page/component/snippet.rb
@@ -84,7 +84,7 @@ module QA
element :copy_contents_button
end
- base.view 'app/views/layouts/nav/_breadcrumbs.html.haml' do
+ base.view 'app/views/layouts/nav/breadcrumbs/_breadcrumbs.html.haml' do
element :breadcrumb_links_content
element :breadcrumb_current_link
end
diff --git a/qa/qa/page/project/pipeline/show.rb b/qa/qa/page/project/pipeline/show.rb
index 25d62ac59af..2455555f06c 100644
--- a/qa/qa/page/project/pipeline/show.rb
+++ b/qa/qa/page/project/pipeline/show.rb
@@ -44,7 +44,7 @@ module QA
element :jobs_dropdown_menu
end
- view 'app/views/layouts/nav/_breadcrumbs.html.haml' do
+ view 'app/views/layouts/nav/breadcrumbs/_breadcrumbs.html.haml' do
element :breadcrumb_links_content
element :breadcrumb_current_link
end
diff --git a/qa/qa/page/project/sub_menus/common.rb b/qa/qa/page/project/sub_menus/common.rb
index 79054ec9802..e8952f9e064 100644
--- a/qa/qa/page/project/sub_menus/common.rb
+++ b/qa/qa/page/project/sub_menus/common.rb
@@ -20,7 +20,7 @@ module QA
element :sidebar_menu_link
end
- view 'app/views/layouts/nav/_breadcrumbs.html.haml' do
+ view 'app/views/layouts/nav/_top_bar.html.haml' do
element :toggle_mobile_nav_button
end
end
diff --git a/spec/features/search/user_uses_header_search_field_spec.rb b/spec/features/search/user_uses_header_search_field_spec.rb
index 127176da3fb..71d0f8d6d7f 100644
--- a/spec/features/search/user_uses_header_search_field_spec.rb
+++ b/spec/features/search/user_uses_header_search_field_spec.rb
@@ -38,7 +38,7 @@ RSpec.describe 'User uses header search field', :js, :disable_rate_limiter, feat
end
it 'renders breadcrumbs' do
- page.within('.breadcrumbs-links') do
+ page.within('.breadcrumbs') do
expect(page).to have_content('Search')
end
end
diff --git a/spec/fixtures/structure.sql b/spec/fixtures/structure.sql
index 800c33bb9b9..6312545c593 100644
--- a/spec/fixtures/structure.sql
+++ b/spec/fixtures/structure.sql
@@ -13,12 +13,81 @@ CREATE INDEX index_users_on_public_email_excluding_null_and_empty ON users USING
ALTER TABLE ONLY bulk_import_configurations
ADD CONSTRAINT fk_rails_536b96bff1 FOREIGN KEY (bulk_import_id) REFERENCES bulk_imports(id) ON DELETE CASCADE;
+CREATE TABLE test_table (
+ id bigint NOT NULL,
+ integer_column integer,
+ integer_with_default_column integer DEFAULT 1,
+ smallint_column smallint,
+ smallint_with_default_column smallint DEFAULT 0 NOT NULL,
+ numeric_column numeric NOT NULL,
+ numeric_with_default_column numeric DEFAULT 1.0 NOT NULL,
+ boolean_colum boolean,
+ boolean_with_default_colum boolean DEFAULT true NOT NULL,
+ double_precision_column double precision,
+ double_precision_with_default_column double precision DEFAULT 1.0,
+ varying_column character varying,
+ varying_with_default_column character varying DEFAULT 'DEFAULT'::character varying NOT NULL,
+ varying_with_limit_column character varying(255),
+ varying_with_limit_and_default_column character varying(255) DEFAULT 'DEFAULT'::character varying,
+ text_column text NOT NULL,
+ text_with_default_column text DEFAULT ''::text NOT NULL,
+ array_column character varying(255)[] NOT NULL,
+ array_with_default_column character varying(255)[] DEFAULT '{one,two}'::character varying[] NOT NULL,
+ jsonb_column jsonb,
+ jsonb_with_default_column jsonb DEFAULT '[]'::jsonb NOT NULL,
+ timestampz_column timestamp with time zone,
+ timestampz_with_default_column timestamp with time zone DEFAULT now(),
+ timestamp_column timestamp(6) without time zone NOT NULL,
+ timestamp_with_default_column timestamp(6) without time zone DEFAULT '2022-01-23 00:00:00+00'::timestamp without time zone NOT NULL,
+ date_column date,
+ date_with_default_column date DEFAULT '2023-04-05',
+ inet_column inet NOT NULL,
+ inet_with_default_column inet DEFAULT '0.0.0.0'::inet NOT NULL,
+ macaddr_column macaddr,
+ macaddr_with_default_column macaddr DEFAULT '00-00-00-00-00-000'::macaddr NOT NULL,
+ uuid_column uuid NOT NULL,
+ uuid_with_default_column uuid DEFAULT '00000000-0000-0000-0000-000000000000'::uuid NOT NULL,
+ bytea_column bytea,
+ bytea_with_default_column bytea DEFAULT '\xDEADBEEF'::bytea,
+ unmapped_column_type anyarray
+);
+
CREATE TABLE ci_project_mirrors (
id bigint NOT NULL,
project_id integer NOT NULL,
namespace_id integer NOT NULL
);
+CREATE TABLE wrong_table (
+ id bigint NOT NULL,
+ description character varying(255) NOT NULL
+);
+
+CREATE TABLE extra_table_columns (
+ id bigint NOT NULL,
+ name character varying(255) NOT NULL
+);
+
+CREATE TABLE missing_table (
+ id bigint NOT NULL,
+ description text NOT NULL
+);
+
+CREATE TABLE missing_table_columns (
+ id bigint NOT NULL,
+ email character varying(255) NOT NULL
+);
+
+CREATE TABLE operations_user_lists (
+ id bigint NOT NULL,
+ project_id bigint NOT NULL,
+ created_at timestamp with time zone NOT NULL,
+ updated_at timestamp with time zone NOT NULL,
+ iid integer NOT NULL,
+ name character varying(255) NOT NULL,
+ user_xids text DEFAULT ''::text NOT NULL
+);
+
CREATE TRIGGER trigger AFTER INSERT ON public.t1 FOR EACH ROW EXECUTE FUNCTION t1();
CREATE TRIGGER wrong_trigger BEFORE UPDATE ON public.t2 FOR EACH ROW EXECUTE FUNCTION my_function();
diff --git a/spec/frontend/access_tokens/index_spec.js b/spec/frontend/access_tokens/index_spec.js
index 1157e44f41a..c1158e0d124 100644
--- a/spec/frontend/access_tokens/index_spec.js
+++ b/spec/frontend/access_tokens/index_spec.js
@@ -112,7 +112,7 @@ describe('access tokens', () => {
);
});
- it('mounts component and sets `inputAttrs` prop', async () => {
+ it('mounts component and sets `inputAttrs` prop', () => {
wrapper = createWrapper(initExpiresAtField());
const component = wrapper.findComponent(ExpiresAtField);
diff --git a/spec/frontend/admin/abuse_reports/components/abuse_report_actions_spec.js b/spec/frontend/admin/abuse_reports/components/abuse_report_actions_spec.js
index b9db78a0452..e72d0c24d5e 100644
--- a/spec/frontend/admin/abuse_reports/components/abuse_report_actions_spec.js
+++ b/spec/frontend/admin/abuse_reports/components/abuse_report_actions_spec.js
@@ -136,13 +136,13 @@ describe('AbuseReportActions', () => {
await axios.waitForAll();
});
- it('updates the block button correctly', async () => {
+ it('updates the block button correctly', () => {
const button = findBlockUserButton();
expect(button.text()).toBe(blockButtonText);
expect(button.attributes('disabled')).toBe(blockButtonDisabled);
});
- it('displays the returned message', async () => {
+ it('displays the returned message', () => {
expect(createAlert).toHaveBeenCalledWith(createAlertArgs);
});
},
diff --git a/spec/frontend/alerts_settings/components/alerts_settings_form_spec.js b/spec/frontend/alerts_settings/components/alerts_settings_form_spec.js
index e0075aa71d9..b8575d8ab26 100644
--- a/spec/frontend/alerts_settings/components/alerts_settings_form_spec.js
+++ b/spec/frontend/alerts_settings/components/alerts_settings_form_spec.js
@@ -97,7 +97,7 @@ describe('AlertsSettingsForm', () => {
expect(findFormFields().at(0).isVisible()).toBe(true);
});
- it('disables the dropdown and shows help text when multi integrations are not supported', async () => {
+ it('disables the dropdown and shows help text when multi integrations are not supported', () => {
createComponent({ props: { canAddIntegration: false } });
expect(findSelect().attributes('disabled')).toBe('disabled');
expect(findMultiSupportText().exists()).toBe(true);
diff --git a/spec/frontend/alerts_settings/components/alerts_settings_wrapper_spec.js b/spec/frontend/alerts_settings/components/alerts_settings_wrapper_spec.js
index 67d8619f157..8c5df06042c 100644
--- a/spec/frontend/alerts_settings/components/alerts_settings_wrapper_spec.js
+++ b/spec/frontend/alerts_settings/components/alerts_settings_wrapper_spec.js
@@ -429,7 +429,7 @@ describe('AlertsSettingsWrapper', () => {
});
describe('Test alert', () => {
- it('makes `updateTestAlert` service call', async () => {
+ it('makes `updateTestAlert` service call', () => {
jest.spyOn(alertsUpdateService, 'updateTestAlert').mockResolvedValueOnce();
const testPayload = '{"title":"test"}';
findAlertsSettingsForm().vm.$emit('test-alert-payload', testPayload);
diff --git a/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js b/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js
index ade8a61fdce..33801fb8552 100644
--- a/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js
+++ b/spec/frontend/analytics/shared/components/projects_dropdown_filter_spec.js
@@ -206,11 +206,11 @@ describe('ProjectsDropdownFilter component', () => {
findSearchBoxByType().vm.$emit('input', 'this is a very long search string');
});
- it('renders the highlighted items', async () => {
+ it('renders the highlighted items', () => {
expect(findUnhighlightedItems().findAll('li').length).toBe(1);
});
- it('hides the unhighlighted items that do not match the string', async () => {
+ it('hides the unhighlighted items that do not match the string', () => {
expect(findUnhighlightedItems().findAll('li').length).toBe(1);
expect(findUnhighlightedItems().text()).toContain('No matching results');
});
diff --git a/spec/frontend/artifacts_settings/components/keep_latest_artifact_checkbox_spec.js b/spec/frontend/artifacts_settings/components/keep_latest_artifact_checkbox_spec.js
index 13f17b5e87d..50ac7be9ae3 100644
--- a/spec/frontend/artifacts_settings/components/keep_latest_artifact_checkbox_spec.js
+++ b/spec/frontend/artifacts_settings/components/keep_latest_artifact_checkbox_spec.js
@@ -108,11 +108,11 @@ describe('Keep latest artifact checkbox', () => {
await waitForPromises();
});
- it('sets correct setting value in checkbox with query result', async () => {
+ it('sets correct setting value in checkbox with query result', () => {
expect(wrapper.element).toMatchSnapshot();
});
- it('checkbox is enabled when application setting is enabled', async () => {
+ it('checkbox is enabled when application setting is enabled', () => {
expect(findCheckbox().attributes('disabled')).toBeUndefined();
});
});
diff --git a/spec/frontend/authentication/webauthn/components/registration_spec.js b/spec/frontend/authentication/webauthn/components/registration_spec.js
index 1221626db7d..e4ca1ac8c38 100644
--- a/spec/frontend/authentication/webauthn/components/registration_spec.js
+++ b/spec/frontend/authentication/webauthn/components/registration_spec.js
@@ -211,7 +211,7 @@ describe('Registration', () => {
});
describe(`when ${STATE_ERROR} state`, () => {
- it('shows an initial error message and a retry button', async () => {
+ it('shows an initial error message and a retry button', () => {
const myError = 'my error';
createComponent({ initialError: myError });
diff --git a/spec/frontend/batch_comments/components/review_bar_spec.js b/spec/frontend/batch_comments/components/review_bar_spec.js
index 923e86a7e64..ea4b015ea39 100644
--- a/spec/frontend/batch_comments/components/review_bar_spec.js
+++ b/spec/frontend/batch_comments/components/review_bar_spec.js
@@ -20,7 +20,7 @@ describe('Batch comments review bar component', () => {
document.body.className = '';
});
- it('adds review-bar-visible class to body when review bar is mounted', async () => {
+ it('adds review-bar-visible class to body when review bar is mounted', () => {
expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(false);
createComponent();
@@ -28,7 +28,7 @@ describe('Batch comments review bar component', () => {
expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(true);
});
- it('removes review-bar-visible class to body when review bar is destroyed', async () => {
+ it('removes review-bar-visible class to body when review bar is destroyed', () => {
createComponent();
wrapper.destroy();
diff --git a/spec/frontend/blob/components/blob_edit_header_spec.js b/spec/frontend/blob/components/blob_edit_header_spec.js
index 32a5624d032..b0ce5f40d95 100644
--- a/spec/frontend/blob/components/blob_edit_header_spec.js
+++ b/spec/frontend/blob/components/blob_edit_header_spec.js
@@ -38,7 +38,7 @@ describe('Blob Header Editing', () => {
});
describe('functionality', () => {
- it('emits input event when the blob name is changed', async () => {
+ it('emits input event when the blob name is changed', () => {
const inputComponent = findFormInput();
const newValue = 'bar.txt';
diff --git a/spec/frontend/blob/file_template_selector_spec.js b/spec/frontend/blob/file_template_selector_spec.js
index 65444e86efd..123475f8d62 100644
--- a/spec/frontend/blob/file_template_selector_spec.js
+++ b/spec/frontend/blob/file_template_selector_spec.js
@@ -53,7 +53,7 @@ describe('FileTemplateSelector', () => {
expect(subject.wrapper.classList.contains('hidden')).toBe(false);
});
- it('sets the focus on the dropdown', async () => {
+ it('sets the focus on the dropdown', () => {
subject.show();
jest.spyOn(subject.dropdown, 'focus');
jest.runAllTimers();
diff --git a/spec/frontend/boards/board_card_inner_spec.js b/spec/frontend/boards/board_card_inner_spec.js
index a612e863d46..a925f752f5e 100644
--- a/spec/frontend/boards/board_card_inner_spec.js
+++ b/spec/frontend/boards/board_card_inner_spec.js
@@ -168,7 +168,7 @@ describe('Board card component', () => {
});
describe('blocked', () => {
- it('renders blocked icon if issue is blocked', async () => {
+ it('renders blocked icon if issue is blocked', () => {
createWrapper({
props: {
item: {
@@ -487,7 +487,7 @@ describe('Board card component', () => {
});
describe('loading', () => {
- it('renders loading icon', async () => {
+ it('renders loading icon', () => {
createWrapper({
props: {
item: {
diff --git a/spec/frontend/boards/components/board_card_spec.js b/spec/frontend/boards/components/board_card_spec.js
index 91e9b6f8cfa..897219303b5 100644
--- a/spec/frontend/boards/components/board_card_spec.js
+++ b/spec/frontend/boards/components/board_card_spec.js
@@ -106,7 +106,7 @@ describe('Board card', () => {
});
});
- it('should not highlight the card by default', async () => {
+ it('should not highlight the card by default', () => {
createStore();
mountComponent();
@@ -114,7 +114,7 @@ describe('Board card', () => {
expect(wrapper.classes()).not.toContain('multi-select');
});
- it('should highlight the card with a correct style when selected', async () => {
+ it('should highlight the card with a correct style when selected', () => {
createStore({
initialState: {
activeId: mockIssue.id,
@@ -126,7 +126,7 @@ describe('Board card', () => {
expect(wrapper.classes()).not.toContain('multi-select');
});
- it('should highlight the card with a correct style when multi-selected', async () => {
+ it('should highlight the card with a correct style when multi-selected', () => {
createStore({
initialState: {
activeId: inactiveId,
diff --git a/spec/frontend/boards/components/board_column_spec.js b/spec/frontend/boards/components/board_column_spec.js
index 011665eee68..5717031be20 100644
--- a/spec/frontend/boards/components/board_column_spec.js
+++ b/spec/frontend/boards/components/board_column_spec.js
@@ -81,7 +81,7 @@ describe('Board Column Component', () => {
});
describe('on mount', () => {
- beforeEach(async () => {
+ beforeEach(() => {
initStore();
jest.spyOn(store, 'dispatch').mockImplementation();
});
diff --git a/spec/frontend/boards/components/board_content_sidebar_spec.js b/spec/frontend/boards/components/board_content_sidebar_spec.js
index 558a0a3b933..9be2696de56 100644
--- a/spec/frontend/boards/components/board_content_sidebar_spec.js
+++ b/spec/frontend/boards/components/board_content_sidebar_spec.js
@@ -162,7 +162,7 @@ describe('BoardContentSidebar', () => {
createComponent();
});
- it('calls toggleBoardItem with correct parameters', async () => {
+ it('calls toggleBoardItem with correct parameters', () => {
wrapper.findComponent(GlDrawer).vm.$emit('close');
expect(toggleBoardItem).toHaveBeenCalledTimes(1);
diff --git a/spec/frontend/boards/components/board_filtered_search_spec.js b/spec/frontend/boards/components/board_filtered_search_spec.js
index d8bc7f95f18..64111cfb01a 100644
--- a/spec/frontend/boards/components/board_filtered_search_spec.js
+++ b/spec/frontend/boards/components/board_filtered_search_spec.js
@@ -123,7 +123,7 @@ describe('BoardFilteredSearch', () => {
jest.spyOn(wrapper.vm, 'performSearch').mockImplementation();
});
- it('sets the url params to the correct results', async () => {
+ it('sets the url params to the correct results', () => {
const mockFilters = [
{ type: TOKEN_TYPE_AUTHOR, value: { data: 'root', operator: '=' } },
{ type: TOKEN_TYPE_ASSIGNEE, value: { data: 'root', operator: '=' } },
diff --git a/spec/frontend/boards/components/board_form_spec.js b/spec/frontend/boards/components/board_form_spec.js
index 62db59f8f57..f340dfab359 100644
--- a/spec/frontend/boards/components/board_form_spec.js
+++ b/spec/frontend/boards/components/board_form_spec.js
@@ -115,7 +115,7 @@ describe('BoardForm', () => {
expect(findForm().exists()).toBe(true);
});
- it('focuses an input field', async () => {
+ it('focuses an input field', () => {
expect(document.activeElement).toBe(wrapper.vm.$refs.name);
});
});
diff --git a/spec/frontend/boards/components/board_list_header_spec.js b/spec/frontend/boards/components/board_list_header_spec.js
index 466321cf1cc..0f91d2315cf 100644
--- a/spec/frontend/boards/components/board_list_header_spec.js
+++ b/spec/frontend/boards/components/board_list_header_spec.js
@@ -147,7 +147,7 @@ describe('Board List Header Component', () => {
});
describe('expanding / collapsing the column', () => {
- it('should display collapse icon when column is expanded', async () => {
+ it('should display collapse icon when column is expanded', () => {
createComponent();
const icon = findCaret();
@@ -155,7 +155,7 @@ describe('Board List Header Component', () => {
expect(icon.props('icon')).toBe('chevron-lg-down');
});
- it('should display expand icon when column is collapsed', async () => {
+ it('should display expand icon when column is collapsed', () => {
createComponent({ collapsed: true });
const icon = findCaret();
diff --git a/spec/frontend/boards/components/boards_selector_spec.js b/spec/frontend/boards/components/boards_selector_spec.js
index aa146eb4609..13c017706ef 100644
--- a/spec/frontend/boards/components/boards_selector_spec.js
+++ b/spec/frontend/boards/components/boards_selector_spec.js
@@ -250,7 +250,7 @@ describe('BoardsSelector', () => {
describe('dropdown visibility', () => {
describe('when multipleIssueBoardsAvailable is enabled', () => {
- it('show dropdown', async () => {
+ it('show dropdown', () => {
createStore();
createComponent({ provide: { multipleIssueBoardsAvailable: true } });
expect(findDropdown().exists()).toBe(true);
@@ -258,7 +258,7 @@ describe('BoardsSelector', () => {
});
describe('when multipleIssueBoardsAvailable is disabled but it hasMissingBoards', () => {
- it('show dropdown', async () => {
+ it('show dropdown', () => {
createStore();
createComponent({
provide: { multipleIssueBoardsAvailable: false, hasMissingBoards: true },
@@ -268,7 +268,7 @@ describe('BoardsSelector', () => {
});
describe("when multipleIssueBoardsAvailable is disabled and it dosn't hasMissingBoards", () => {
- it('hide dropdown', async () => {
+ it('hide dropdown', () => {
createStore();
createComponent({
provide: { multipleIssueBoardsAvailable: false, hasMissingBoards: false },
diff --git a/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js b/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js
index 296f25d96c4..b71d6b7e138 100644
--- a/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js
+++ b/spec/frontend/boards/components/sidebar/board_sidebar_title_spec.js
@@ -146,7 +146,7 @@ describe('BoardSidebarTitle', () => {
createWrapper();
});
- it('sets title, expands item and shows alert', async () => {
+ it('sets title, expands item and shows alert', () => {
expect(wrapper.vm.title).toBe(TEST_TITLE);
expect(findCollapsed().isVisible()).toBe(false);
expect(findAlert().exists()).toBe(true);
diff --git a/spec/frontend/boards/stores/actions_spec.js b/spec/frontend/boards/stores/actions_spec.js
index f430062bb73..b8d3be28ca6 100644
--- a/spec/frontend/boards/stores/actions_spec.js
+++ b/spec/frontend/boards/stores/actions_spec.js
@@ -401,7 +401,7 @@ describe('fetchMilestones', () => {
},
);
- it('sets milestonesLoading to true', async () => {
+ it('sets milestonesLoading to true', () => {
jest.spyOn(gqlClient, 'query').mockResolvedValue(queryResponse);
const store = createStore();
diff --git a/spec/frontend/branches/components/delete_branch_modal_spec.js b/spec/frontend/branches/components/delete_branch_modal_spec.js
index 404431ea5d8..7851d86466f 100644
--- a/spec/frontend/branches/components/delete_branch_modal_spec.js
+++ b/spec/frontend/branches/components/delete_branch_modal_spec.js
@@ -94,7 +94,7 @@ describe('Delete branch modal', () => {
expect(submitSpy).toHaveBeenCalled();
});
- it('calls show on the modal when a `openModal` event is received through the event hub', async () => {
+ it('calls show on the modal when a `openModal` event is received through the event hub', () => {
expect(showMock).not.toHaveBeenCalled();
emitOpenModal();
diff --git a/spec/frontend/captcha/captcha_modal_spec.js b/spec/frontend/captcha/captcha_modal_spec.js
index 6d6d8043797..4bbed8ab3bb 100644
--- a/spec/frontend/captcha/captcha_modal_spec.js
+++ b/spec/frontend/captcha/captcha_modal_spec.js
@@ -61,12 +61,12 @@ describe('Captcha Modal', () => {
describe('functionality', () => {
describe('when modal is shown', () => {
describe('when initRecaptchaScript promise resolves successfully', () => {
- beforeEach(async () => {
+ beforeEach(() => {
createComponent({ props: { needsCaptchaResponse: true } });
findGlModal().vm.$emit('shown');
});
- it('shows modal', async () => {
+ it('shows modal', () => {
expect(showSpy).toHaveBeenCalled();
});
@@ -90,7 +90,7 @@ describe('Captcha Modal', () => {
expect(wrapper.emitted('receivedCaptchaResponse')).toEqual([[captchaResponse]]);
});
- it('hides modal with null trigger', async () => {
+ it('hides modal with null trigger', () => {
// Assert that hide is called with zero args, so that we don't trigger the logic
// for hiding the modal via cancel, esc, headerclose, etc, without a captcha response
expect(hideSpy).toHaveBeenCalledWith();
diff --git a/spec/frontend/captcha/init_recaptcha_script_spec.js b/spec/frontend/captcha/init_recaptcha_script_spec.js
index 78480821d95..3e2d7ba00ee 100644
--- a/spec/frontend/captcha/init_recaptcha_script_spec.js
+++ b/spec/frontend/captcha/init_recaptcha_script_spec.js
@@ -50,7 +50,7 @@ describe('initRecaptchaScript', () => {
await expect(result).resolves.toBe(window.grecaptcha);
});
- it('sets window[RECAPTCHA_ONLOAD_CALLBACK_NAME] to undefined', async () => {
+ it('sets window[RECAPTCHA_ONLOAD_CALLBACK_NAME] to undefined', () => {
expect(getScriptOnload()).toBeUndefined();
});
});
diff --git a/spec/frontend/ci/ci_variable_list/components/ci_environments_dropdown_spec.js b/spec/frontend/ci/ci_variable_list/components/ci_environments_dropdown_spec.js
index 193f7babdb7..1937e3b34b7 100644
--- a/spec/frontend/ci/ci_variable_list/components/ci_environments_dropdown_spec.js
+++ b/spec/frontend/ci/ci_variable_list/components/ci_environments_dropdown_spec.js
@@ -140,7 +140,7 @@ describe('Ci environments dropdown', () => {
expect(wrapper.emitted('search-environment-scope')[1]).toEqual([currentEnv]);
});
- it('renders loading icon while search query is loading', async () => {
+ it('renders loading icon while search query is loading', () => {
createComponent({ enableFeatureFlag: true, props: { areEnvironmentsLoading: true } });
expect(findListbox().props('searching')).toBe(true);
diff --git a/spec/frontend/ci/ci_variable_list/components/ci_variable_shared_spec.js b/spec/frontend/ci/ci_variable_list/components/ci_variable_shared_spec.js
index c7bcace3883..06b3ec4aab8 100644
--- a/spec/frontend/ci/ci_variable_list/components/ci_variable_shared_spec.js
+++ b/spec/frontend/ci/ci_variable_list/components/ci_variable_shared_spec.js
@@ -260,7 +260,7 @@ describe('Ci Variable Shared Component', () => {
});
});
- it('initial query is called with the correct variables', async () => {
+ it('initial query is called with the correct variables', () => {
expect(mockEnvironments).toHaveBeenCalledWith({ fullPath: '/namespace/project/' });
});
diff --git a/spec/frontend/clusters/agents/components/create_token_modal_spec.js b/spec/frontend/clusters/agents/components/create_token_modal_spec.js
index ff698952c6b..42e6a70ee26 100644
--- a/spec/frontend/clusters/agents/components/create_token_modal_spec.js
+++ b/spec/frontend/clusters/agents/components/create_token_modal_spec.js
@@ -213,7 +213,7 @@ describe('CreateTokenModal', () => {
await mockCreatedResponse(createAgentTokenErrorResponse);
});
- it('displays the error message', async () => {
+ it('displays the error message', () => {
expect(findAlert().text()).toBe(
createAgentTokenErrorResponse.data.clusterAgentTokenCreate.errors[0],
);
diff --git a/spec/frontend/clusters_list/components/install_agent_modal_spec.js b/spec/frontend/clusters_list/components/install_agent_modal_spec.js
index 3156eaaecfc..f9009696c7b 100644
--- a/spec/frontend/clusters_list/components/install_agent_modal_spec.js
+++ b/spec/frontend/clusters_list/components/install_agent_modal_spec.js
@@ -256,7 +256,7 @@ describe('InstallAgentModal', () => {
return mockSelectedAgentResponse();
});
- it('displays the error message', async () => {
+ it('displays the error message', () => {
expect(findAlert().text()).toBe(
createAgentTokenErrorResponse.data.clusterAgentTokenCreate.errors[0],
);
diff --git a/spec/frontend/comment_templates/components/list_item_spec.js b/spec/frontend/comment_templates/components/list_item_spec.js
index 921ef181723..925d78da4ad 100644
--- a/spec/frontend/comment_templates/components/list_item_spec.js
+++ b/spec/frontend/comment_templates/components/list_item_spec.js
@@ -39,7 +39,7 @@ describe('Comment templates list item component', () => {
const findDropdownItems = () => wrapper.findAllComponents(GlDisclosureDropdownItem);
const findModal = () => wrapper.findComponent(GlModal);
- it('renders list item', async () => {
+ it('renders list item', () => {
wrapper = createComponent({ template: { name: 'test', content: '/assign_reviewer' } });
expect(wrapper.element).toMatchSnapshot();
diff --git a/spec/frontend/commit/commit_box_pipeline_mini_graph_spec.js b/spec/frontend/commit/commit_box_pipeline_mini_graph_spec.js
index 64623968aa0..cc251104811 100644
--- a/spec/frontend/commit/commit_box_pipeline_mini_graph_spec.js
+++ b/spec/frontend/commit/commit_box_pipeline_mini_graph_spec.js
@@ -83,7 +83,7 @@ describe('Commit box pipeline mini graph', () => {
await createComponent();
});
- it('should not display loading state after the query is resolved', async () => {
+ it('should not display loading state after the query is resolved', () => {
expect(findLoadingIcon().exists()).toBe(false);
expect(findPipelineMiniGraph().exists()).toBe(true);
});
diff --git a/spec/frontend/commit/components/commit_box_pipeline_status_spec.js b/spec/frontend/commit/components/commit_box_pipeline_status_spec.js
index 9c7a41b3506..5df35cc6dda 100644
--- a/spec/frontend/commit/components/commit_box_pipeline_status_spec.js
+++ b/spec/frontend/commit/components/commit_box_pipeline_status_spec.js
@@ -70,7 +70,7 @@ describe('Commit box pipeline status', () => {
await waitForPromises();
});
- it('should display pipeline status after the query is resolved successfully', async () => {
+ it('should display pipeline status after the query is resolved successfully', () => {
expect(findStatusIcon().exists()).toBe(true);
expect(findLoadingIcon().exists()).toBe(false);
diff --git a/spec/frontend/content_editor/components/bubble_menus/code_block_bubble_menu_spec.js b/spec/frontend/content_editor/components/bubble_menus/code_block_bubble_menu_spec.js
index 085a6d3a28d..2a6ab75227c 100644
--- a/spec/frontend/content_editor/components/bubble_menus/code_block_bubble_menu_spec.js
+++ b/spec/frontend/content_editor/components/bubble_menus/code_block_bubble_menu_spec.js
@@ -59,7 +59,7 @@ describe('content_editor/components/bubble_menus/code_block_bubble_menu', () =>
checked: x.props('isChecked'),
}));
- beforeEach(async () => {
+ beforeEach(() => {
buildEditor();
buildWrapper();
});
@@ -133,7 +133,7 @@ describe('content_editor/components/bubble_menus/code_block_bubble_menu', () =>
});
describe('preview button', () => {
- it('does not appear for a regular code block', async () => {
+ it('does not appear for a regular code block', () => {
tiptapEditor.commands.insertContent('<pre lang="javascript">var a = 2;</pre>');
expect(wrapper.findByTestId('preview-diagram').exists()).toBe(false);
@@ -269,7 +269,7 @@ describe('content_editor/components/bubble_menus/code_block_bubble_menu', () =>
await emitEditorEvent({ event: 'transaction', tiptapEditor });
});
- it('hides the custom language input form and shows dropdown items', async () => {
+ it('hides the custom language input form and shows dropdown items', () => {
expect(wrapper.findComponent(GlDropdownItem).exists()).toBe(true);
expect(wrapper.findComponent(GlSearchBoxByType).exists()).toBe(true);
expect(wrapper.findComponent(GlDropdownForm).exists()).toBe(false);
diff --git a/spec/frontend/content_editor/components/bubble_menus/link_bubble_menu_spec.js b/spec/frontend/content_editor/components/bubble_menus/link_bubble_menu_spec.js
index eb5a3b61591..05ee8b99380 100644
--- a/spec/frontend/content_editor/components/bubble_menus/link_bubble_menu_spec.js
+++ b/spec/frontend/content_editor/components/bubble_menus/link_bubble_menu_spec.js
@@ -59,7 +59,7 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
expect(wrapper.findByTestId('remove-link').exists()).toBe(exist);
};
- beforeEach(async () => {
+ beforeEach(() => {
buildEditor();
tiptapEditor
@@ -195,7 +195,7 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
await buildWrapperAndDisplayMenu();
});
- it('directly opens the edit form for a placeholder link', async () => {
+ it('directly opens the edit form for a placeholder link', () => {
expectLinkButtonsToExist(false);
expect(wrapper.findComponent(GlForm).exists()).toBe(true);
@@ -226,7 +226,7 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
linkTitleInput = wrapper.findByTestId('link-title');
});
- it('hides the link and copy/edit/remove link buttons', async () => {
+ it('hides the link and copy/edit/remove link buttons', () => {
expectLinkButtonsToExist(false);
});
@@ -254,7 +254,7 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
await wrapper.findComponent(GlForm).vm.$emit('submit', createFakeEvent());
});
- it('updates prosemirror doc with new link', async () => {
+ it('updates prosemirror doc with new link', () => {
expect(tiptapEditor.getHTML()).toBe(
'<p>Download <a target="_blank" rel="noopener noreferrer nofollow" href="https://google.com" title="Search Google">PDF File</a></p>',
);
diff --git a/spec/frontend/content_editor/components/bubble_menus/media_bubble_menu_spec.js b/spec/frontend/content_editor/components/bubble_menus/media_bubble_menu_spec.js
index c918f068c07..e02b36fb8e9 100644
--- a/spec/frontend/content_editor/components/bubble_menus/media_bubble_menu_spec.js
+++ b/spec/frontend/content_editor/components/bubble_menus/media_bubble_menu_spec.js
@@ -100,11 +100,11 @@ describe.each`
bubbleMenu = wrapper.findComponent(BubbleMenu);
});
- it('renders bubble menu component', async () => {
+ it('renders bubble menu component', () => {
expect(bubbleMenu.classes()).toEqual(['gl-shadow', 'gl-rounded-base', 'gl-bg-white']);
});
- it('shows a clickable link to the image', async () => {
+ it('shows a clickable link to the image', () => {
const link = wrapper.findComponent(GlLink);
expect(link.attributes()).toEqual(
expect.objectContaining({
@@ -202,7 +202,7 @@ describe.each`
mediaAltInput = wrapper.findByTestId('media-alt');
});
- it('hides the link and copy/edit/remove link buttons', async () => {
+ it('hides the link and copy/edit/remove link buttons', () => {
expectLinkButtonsToExist(false);
});
@@ -225,7 +225,7 @@ describe.each`
await wrapper.findComponent(GlForm).vm.$emit('submit', createFakeEvent());
});
- it(`updates prosemirror doc with new src to the ${mediaType}`, async () => {
+ it(`updates prosemirror doc with new src to the ${mediaType}`, () => {
expect(tiptapEditor.getHTML()).toBe(mediaOutputHTML);
});
diff --git a/spec/frontend/content_editor/components/content_editor_alert_spec.js b/spec/frontend/content_editor/components/content_editor_alert_spec.js
index e62e2331d25..e6873e2cf96 100644
--- a/spec/frontend/content_editor/components/content_editor_alert_spec.js
+++ b/spec/frontend/content_editor/components/content_editor_alert_spec.js
@@ -14,7 +14,7 @@ describe('content_editor/components/content_editor_alert', () => {
const findErrorAlert = () => wrapper.findComponent(GlAlert);
- const createWrapper = async () => {
+ const createWrapper = () => {
tiptapEditor = createTestEditor();
eventHub = eventHubFactory();
diff --git a/spec/frontend/content_editor/components/toolbar_more_dropdown_spec.js b/spec/frontend/content_editor/components/toolbar_more_dropdown_spec.js
index 5af4784f358..78b02744d51 100644
--- a/spec/frontend/content_editor/components/toolbar_more_dropdown_spec.js
+++ b/spec/frontend/content_editor/components/toolbar_more_dropdown_spec.js
@@ -53,7 +53,7 @@ describe('content_editor/components/toolbar_more_dropdown', () => {
let commands;
let btn;
- beforeEach(async () => {
+ beforeEach(() => {
buildWrapper();
commands = mockChainedCommands(tiptapEditor, [command, 'focus', 'run']);
diff --git a/spec/frontend/content_editor/components/wrappers/code_block_spec.js b/spec/frontend/content_editor/components/wrappers/code_block_spec.js
index 057e50cd0e2..cbeea90dcb4 100644
--- a/spec/frontend/content_editor/components/wrappers/code_block_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/code_block_spec.js
@@ -26,7 +26,7 @@ describe('content/components/wrappers/code_block', () => {
eventHub = eventHubFactory();
};
- const createWrapper = async (nodeAttrs = { language }) => {
+ const createWrapper = (nodeAttrs = { language }) => {
updateAttributesFn = jest.fn();
wrapper = mountExtended(CodeBlockWrapper, {
@@ -97,7 +97,7 @@ describe('content/components/wrappers/code_block', () => {
jest.spyOn(tiptapEditor, 'isActive').mockReturnValue(true);
});
- it('does not render a preview if showPreview: false', async () => {
+ it('does not render a preview if showPreview: false', () => {
createWrapper({ language: 'plantuml', isDiagram: true, showPreview: false });
expect(wrapper.findComponent({ ref: 'diagramContainer' }).exists()).toBe(false);
diff --git a/spec/frontend/content_editor/components/wrappers/details_spec.js b/spec/frontend/content_editor/components/wrappers/details_spec.js
index 232c1e9aede..e35b04636f7 100644
--- a/spec/frontend/content_editor/components/wrappers/details_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/details_spec.js
@@ -5,7 +5,7 @@ import DetailsWrapper from '~/content_editor/components/wrappers/details.vue';
describe('content/components/wrappers/details', () => {
let wrapper;
- const createWrapper = async () => {
+ const createWrapper = () => {
wrapper = shallowMountExtended(DetailsWrapper, {
propsData: {
node: {},
diff --git a/spec/frontend/content_editor/components/wrappers/footnote_definition_spec.js b/spec/frontend/content_editor/components/wrappers/footnote_definition_spec.js
index 91c6799478e..b5b118a2d9a 100644
--- a/spec/frontend/content_editor/components/wrappers/footnote_definition_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/footnote_definition_spec.js
@@ -4,7 +4,7 @@ import FootnoteDefinitionWrapper from '~/content_editor/components/wrappers/foot
describe('content/components/wrappers/footnote_definition', () => {
let wrapper;
- const createWrapper = async (node = {}) => {
+ const createWrapper = (node = {}) => {
wrapper = shallowMountExtended(FootnoteDefinitionWrapper, {
propsData: {
node,
diff --git a/spec/frontend/content_editor/components/wrappers/reference_label_spec.js b/spec/frontend/content_editor/components/wrappers/reference_label_spec.js
index ac3b0730223..f57caee911b 100644
--- a/spec/frontend/content_editor/components/wrappers/reference_label_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/reference_label_spec.js
@@ -5,7 +5,7 @@ import ReferenceLabelWrapper from '~/content_editor/components/wrappers/referenc
describe('content/components/wrappers/reference_label', () => {
let wrapper;
- const createWrapper = async (node = {}) => {
+ const createWrapper = (node = {}) => {
wrapper = shallowMountExtended(ReferenceLabelWrapper, {
propsData: { node },
});
diff --git a/spec/frontend/content_editor/components/wrappers/reference_spec.js b/spec/frontend/content_editor/components/wrappers/reference_spec.js
index a9d9a934af2..828b92a6b1e 100644
--- a/spec/frontend/content_editor/components/wrappers/reference_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/reference_spec.js
@@ -5,7 +5,7 @@ import ReferenceWrapper from '~/content_editor/components/wrappers/reference.vue
describe('content/components/wrappers/reference', () => {
let wrapper;
- const createWrapper = async (node = {}) => {
+ const createWrapper = (node = {}) => {
wrapper = shallowMountExtended(ReferenceWrapper, {
propsData: { node },
});
diff --git a/spec/frontend/content_editor/components/wrappers/table_cell_base_spec.js b/spec/frontend/content_editor/components/wrappers/table_cell_base_spec.js
index d8f34565705..71ffbd3f93c 100644
--- a/spec/frontend/content_editor/components/wrappers/table_cell_base_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/table_cell_base_spec.js
@@ -13,7 +13,7 @@ describe('content/components/wrappers/table_cell_base', () => {
let editor;
let node;
- const createWrapper = async (propsData = { cellType: 'td' }) => {
+ const createWrapper = (propsData = { cellType: 'td' }) => {
wrapper = shallowMountExtended(TableCellBaseWrapper, {
propsData: {
editor,
@@ -118,7 +118,7 @@ describe('content/components/wrappers/table_cell_base', () => {
},
);
- it('does not allow deleting rows and columns', async () => {
+ it('does not allow deleting rows and columns', () => {
expect(findDropdownItemWithLabelExists('Delete row')).toBe(false);
expect(findDropdownItemWithLabelExists('Delete column')).toBe(false);
});
@@ -173,7 +173,7 @@ describe('content/components/wrappers/table_cell_base', () => {
await nextTick();
});
- it('does not allow adding a row before the header', async () => {
+ it('does not allow adding a row before the header', () => {
expect(findDropdownItemWithLabelExists('Insert row before')).toBe(false);
});
diff --git a/spec/frontend/content_editor/components/wrappers/table_cell_body_spec.js b/spec/frontend/content_editor/components/wrappers/table_cell_body_spec.js
index 506f442bcc7..4c91573e0c7 100644
--- a/spec/frontend/content_editor/components/wrappers/table_cell_body_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/table_cell_body_spec.js
@@ -8,7 +8,7 @@ describe('content/components/wrappers/table_cell_body', () => {
let editor;
let node;
- const createWrapper = async () => {
+ const createWrapper = () => {
wrapper = shallowMount(TableCellBodyWrapper, {
propsData: {
editor,
diff --git a/spec/frontend/content_editor/components/wrappers/table_cell_header_spec.js b/spec/frontend/content_editor/components/wrappers/table_cell_header_spec.js
index bebe7fb4124..689a8bc32bb 100644
--- a/spec/frontend/content_editor/components/wrappers/table_cell_header_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/table_cell_header_spec.js
@@ -8,7 +8,7 @@ describe('content/components/wrappers/table_cell_header', () => {
let editor;
let node;
- const createWrapper = async () => {
+ const createWrapper = () => {
wrapper = shallowMount(TableCellHeaderWrapper, {
propsData: {
editor,
diff --git a/spec/frontend/content_editor/components/wrappers/table_of_contents_spec.js b/spec/frontend/content_editor/components/wrappers/table_of_contents_spec.js
index 4d5911dda0c..037da7678bb 100644
--- a/spec/frontend/content_editor/components/wrappers/table_of_contents_spec.js
+++ b/spec/frontend/content_editor/components/wrappers/table_of_contents_spec.js
@@ -20,7 +20,7 @@ describe('content/components/wrappers/table_of_contents', () => {
eventHub = eventHubFactory();
};
- const createWrapper = async () => {
+ const createWrapper = () => {
wrapper = mountExtended(TableOfContentsWrapper, {
propsData: {
editor: tiptapEditor,
diff --git a/spec/frontend/content_editor/markdown_snapshot_spec.js b/spec/frontend/content_editor/markdown_snapshot_spec.js
index fd64003420e..49b466fd7f5 100644
--- a/spec/frontend/content_editor/markdown_snapshot_spec.js
+++ b/spec/frontend/content_editor/markdown_snapshot_spec.js
@@ -42,7 +42,7 @@ describe('markdown example snapshots in ContentEditor', () => {
const expectedProseMirrorJsonExamples = loadExamples(prosemirrorJsonYml);
const exampleNames = Object.keys(markdownExamples);
- beforeAll(async () => {
+ beforeAll(() => {
return renderHtmlAndJsonForAllExamples(markdownExamples).then((examples) => {
actualHtmlAndJsonExamples = examples;
});
@@ -60,7 +60,7 @@ describe('markdown example snapshots in ContentEditor', () => {
if (skipRunningSnapshotWysiwygHtmlTests) {
it.todo(`${exampleNamePrefix} HTML: ${skipRunningSnapshotWysiwygHtmlTests}`);
} else {
- it(`${exampleNamePrefix} HTML`, async () => {
+ it(`${exampleNamePrefix} HTML`, () => {
const expectedHtml = expectedHtmlExamples[name].wysiwyg;
const { html: actualHtml } = actualHtmlAndJsonExamples[name];
@@ -78,7 +78,7 @@ describe('markdown example snapshots in ContentEditor', () => {
if (skipRunningSnapshotProsemirrorJsonTests) {
it.todo(`${exampleNamePrefix} ProseMirror JSON: ${skipRunningSnapshotProsemirrorJsonTests}`);
} else {
- it(`${exampleNamePrefix} ProseMirror JSON`, async () => {
+ it(`${exampleNamePrefix} ProseMirror JSON`, () => {
const expectedJson = expectedProseMirrorJsonExamples[name];
const { json: actualJson } = actualHtmlAndJsonExamples[name];
diff --git a/spec/frontend/content_editor/services/content_editor_spec.js b/spec/frontend/content_editor/services/content_editor_spec.js
index 6175cbdd3d4..5dfe9c06923 100644
--- a/spec/frontend/content_editor/services/content_editor_spec.js
+++ b/spec/frontend/content_editor/services/content_editor_spec.js
@@ -64,13 +64,13 @@ describe('content_editor/services/content_editor', () => {
});
describe('editable', () => {
- it('returns true when tiptapEditor is editable', async () => {
+ it('returns true when tiptapEditor is editable', () => {
contentEditor.setEditable(true);
expect(contentEditor.editable).toBe(true);
});
- it('returns false when tiptapEditor is readonly', async () => {
+ it('returns false when tiptapEditor is readonly', () => {
contentEditor.setEditable(false);
expect(contentEditor.editable).toBe(false);
diff --git a/spec/frontend/content_editor/services/create_content_editor_spec.js b/spec/frontend/content_editor/services/create_content_editor_spec.js
index 00cc628ca72..53cd51b8c5f 100644
--- a/spec/frontend/content_editor/services/create_content_editor_spec.js
+++ b/spec/frontend/content_editor/services/create_content_editor_spec.js
@@ -53,7 +53,7 @@ describe('content_editor/services/create_content_editor', () => {
});
});
- it('allows providing external content editor extensions', async () => {
+ it('allows providing external content editor extensions', () => {
const labelReference = 'this is a ~group::editor';
const { tiptapExtension, serializer } = createTestContentEditorExtension();
diff --git a/spec/frontend/content_editor/services/gl_api_markdown_deserializer_spec.js b/spec/frontend/content_editor/services/gl_api_markdown_deserializer_spec.js
index 8ee37282ee9..a9960918e62 100644
--- a/spec/frontend/content_editor/services/gl_api_markdown_deserializer_spec.js
+++ b/spec/frontend/content_editor/services/gl_api_markdown_deserializer_spec.js
@@ -43,7 +43,7 @@ describe('content_editor/services/gl_api_markdown_deserializer', () => {
});
});
- it('transforms HTML returned by render function to a ProseMirror document', async () => {
+ it('transforms HTML returned by render function to a ProseMirror document', () => {
const document = doc(p(bold(text)), comment(' some comment '));
expect(result.document.toJSON()).toEqual(document.toJSON());
diff --git a/spec/frontend/content_editor/services/track_input_rules_and_shortcuts_spec.js b/spec/frontend/content_editor/services/track_input_rules_and_shortcuts_spec.js
index 8c1a3831a74..1459988cf8f 100644
--- a/spec/frontend/content_editor/services/track_input_rules_and_shortcuts_spec.js
+++ b/spec/frontend/content_editor/services/track_input_rules_and_shortcuts_spec.js
@@ -43,7 +43,7 @@ describe('content_editor/services/track_input_rules_and_shortcuts', () => {
});
describe('when creating a heading using an keyboard shortcut', () => {
- it('sends a tracking event indicating that a heading was created using an input rule', async () => {
+ it('sends a tracking event indicating that a heading was created using an input rule', () => {
const shortcuts = Heading.parent.config.addKeyboardShortcuts.call(Heading);
const [firstShortcut] = Object.keys(shortcuts);
const nodeName = Heading.name;
@@ -68,7 +68,7 @@ describe('content_editor/services/track_input_rules_and_shortcuts', () => {
});
describe('when creating a heading using an input rule', () => {
- it('sends a tracking event indicating that a heading was created using an input rule', async () => {
+ it('sends a tracking event indicating that a heading was created using an input rule', () => {
const nodeName = Heading.name;
triggerNodeInputRule({ tiptapEditor: editor, inputRuleText: '## ' });
expect(trackingSpy).toHaveBeenCalledWith(undefined, INPUT_RULE_TRACKING_ACTION, {
diff --git a/spec/frontend/custom_metrics/components/custom_metrics_form_fields_spec.js b/spec/frontend/custom_metrics/components/custom_metrics_form_fields_spec.js
index 12fef9d5ddf..d3cdd0d16ef 100644
--- a/spec/frontend/custom_metrics/components/custom_metrics_form_fields_spec.js
+++ b/spec/frontend/custom_metrics/components/custom_metrics_form_fields_spec.js
@@ -173,7 +173,7 @@ describe('custom metrics form fields component', () => {
return axios.waitForAll();
});
- it('shows invalid query message', async () => {
+ it('shows invalid query message', () => {
expect(wrapper.text()).toContain(errorMessage);
});
});
diff --git a/spec/frontend/design_management/components/design_notes/design_discussion_spec.js b/spec/frontend/design_management/components/design_notes/design_discussion_spec.js
index 56bf0fa60a7..a6ab147884f 100644
--- a/spec/frontend/design_management/components/design_notes/design_discussion_spec.js
+++ b/spec/frontend/design_management/components/design_notes/design_discussion_spec.js
@@ -381,7 +381,7 @@ describe('Design discussions component', () => {
});
});
- it('should open confirmation modal when the note emits `delete-note` event', async () => {
+ it('should open confirmation modal when the note emits `delete-note` event', () => {
createComponent();
findDesignNotes().at(0).vm.$emit('delete-note', { id: '1' });
diff --git a/spec/frontend/design_management/components/design_notes/design_note_spec.js b/spec/frontend/design_management/components/design_notes/design_note_spec.js
index 82848bd1a19..6f5b282fa3b 100644
--- a/spec/frontend/design_management/components/design_notes/design_note_spec.js
+++ b/spec/frontend/design_management/components/design_notes/design_note_spec.js
@@ -189,7 +189,7 @@ describe('Design note component', () => {
});
});
- it('should emit `delete-note` event with proper payload when delete note button is clicked', async () => {
+ it('should emit `delete-note` event with proper payload when delete note button is clicked', () => {
const payload = {
...note,
userPermissions: {
diff --git a/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js b/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js
index db1cfb4f504..d82b6c5fec0 100644
--- a/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js
+++ b/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js
@@ -260,7 +260,7 @@ describe('Design reply form component', () => {
${false} | ${false} | ${UPDATE_NOTE_ERROR}
`(
'return proper error message on error in case of isDiscussion is $isDiscussion and isNewComment is $isNewComment',
- async ({ isDiscussion, isNewComment, errorMessage }) => {
+ ({ isDiscussion, isNewComment, errorMessage }) => {
createComponent({ props: { isDiscussion, isNewComment } });
expect(wrapper.vm.getErrorMessage()).toBe(errorMessage);
diff --git a/spec/frontend/design_management/components/design_scaler_spec.js b/spec/frontend/design_management/components/design_scaler_spec.js
index 62a26a8f5dd..b29448b4471 100644
--- a/spec/frontend/design_management/components/design_scaler_spec.js
+++ b/spec/frontend/design_management/components/design_scaler_spec.js
@@ -36,7 +36,7 @@ describe('Design management design scaler component', () => {
expect(wrapper.emitted('scale')[1]).toEqual([1]);
});
- it('emits @scale event when "decrement" button clicked', async () => {
+ it('emits @scale event when "decrement" button clicked', () => {
getDecreaseScaleButton().vm.$emit('click');
expect(wrapper.emitted('scale')[1]).toEqual([1.4]);
});
diff --git a/spec/frontend/design_management/components/design_todo_button_spec.js b/spec/frontend/design_management/components/design_todo_button_spec.js
index f713203c0ee..698535d8937 100644
--- a/spec/frontend/design_management/components/design_todo_button_spec.js
+++ b/spec/frontend/design_management/components/design_todo_button_spec.js
@@ -81,7 +81,7 @@ describe('Design management design todo button', () => {
await nextTick();
});
- it('calls `$apollo.mutate` with the `todoMarkDone` mutation and variables containing `id`', async () => {
+ it('calls `$apollo.mutate` with the `todoMarkDone` mutation and variables containing `id`', () => {
const todoMarkDoneMutationVariables = {
mutation: todoMarkDoneMutation,
update: expect.anything(),
@@ -127,7 +127,7 @@ describe('Design management design todo button', () => {
await nextTick();
});
- it('calls `$apollo.mutate` with the `createDesignTodoMutation` mutation and variables containing `issuable_id`, `issue_id`, & `projectPath`', async () => {
+ it('calls `$apollo.mutate` with the `createDesignTodoMutation` mutation and variables containing `issuable_id`, `issue_id`, & `projectPath`', () => {
const createDesignTodoMutationVariables = {
mutation: createDesignTodoMutation,
update: expect.anything(),
diff --git a/spec/frontend/design_management/pages/design/index_spec.js b/spec/frontend/design_management/pages/design/index_spec.js
index 6cec4036d40..fcb03ea3700 100644
--- a/spec/frontend/design_management/pages/design/index_spec.js
+++ b/spec/frontend/design_management/pages/design/index_spec.js
@@ -153,7 +153,7 @@ describe('Design management design index page', () => {
});
describe('when navigating away from component', () => {
- it('removes fullscreen layout class', async () => {
+ it('removes fullscreen layout class', () => {
jest.spyOn(utils, 'getPageLayoutElement').mockReturnValue(mockPageLayoutElement);
createComponent({ loading: true });
diff --git a/spec/frontend/design_management/pages/index_spec.js b/spec/frontend/design_management/pages/index_spec.js
index 9b6ed37f92d..23c6cb944bc 100644
--- a/spec/frontend/design_management/pages/index_spec.js
+++ b/spec/frontend/design_management/pages/index_spec.js
@@ -719,7 +719,7 @@ describe('Design management index page', () => {
expect(mockMutate).not.toHaveBeenCalled();
});
- it('removes onPaste listener after mouseleave event', async () => {
+ it('removes onPaste listener after mouseleave event', () => {
findDesignsWrapper().trigger('mouseleave');
document.dispatchEvent(event);
diff --git a/spec/frontend/diffs/components/app_spec.js b/spec/frontend/diffs/components/app_spec.js
index ab01c3e528e..f24ce8ba4ce 100644
--- a/spec/frontend/diffs/components/app_spec.js
+++ b/spec/frontend/diffs/components/app_spec.js
@@ -175,7 +175,7 @@ describe('diffs/components/app', () => {
});
describe('codequality diff', () => {
- it('does not fetch code quality data on FOSS', async () => {
+ it('does not fetch code quality data on FOSS', () => {
createComponent();
jest.spyOn(wrapper.vm, 'fetchCodequality');
wrapper.vm.fetchData(false);
diff --git a/spec/frontend/diffs/components/diff_file_spec.js b/spec/frontend/diffs/components/diff_file_spec.js
index 93698396450..79cd2508757 100644
--- a/spec/frontend/diffs/components/diff_file_spec.js
+++ b/spec/frontend/diffs/components/diff_file_spec.js
@@ -306,7 +306,7 @@ describe('DiffFile', () => {
markFileToBeRendered(store);
});
- it('should have the file content', async () => {
+ it('should have the file content', () => {
expect(wrapper.findComponent(DiffContentComponent).exists()).toBe(true);
});
@@ -316,7 +316,7 @@ describe('DiffFile', () => {
});
describe('toggle', () => {
- it('should update store state', async () => {
+ it('should update store state', () => {
jest.spyOn(wrapper.vm.$store, 'dispatch').mockImplementation(() => {});
toggleFile(wrapper);
diff --git a/spec/frontend/drawio/drawio_editor_spec.js b/spec/frontend/drawio/drawio_editor_spec.js
index 5ef26c04204..d7d75922e1e 100644
--- a/spec/frontend/drawio/drawio_editor_spec.js
+++ b/spec/frontend/drawio/drawio_editor_spec.js
@@ -108,7 +108,7 @@ describe('drawio/drawio_editor', () => {
await waitForDrawioIFrameMessage();
});
- it('sends configure action to the draw.io iframe', async () => {
+ it('sends configure action to the draw.io iframe', () => {
expectDrawioIframeMessage({
expectation: {
action: 'configure',
@@ -121,7 +121,7 @@ describe('drawio/drawio_editor', () => {
});
});
- it('does not remove the iframe after the load error timeouts run', async () => {
+ it('does not remove the iframe after the load error timeouts run', () => {
jest.runAllTimers();
expect(findDrawioIframe()).not.toBe(null);
@@ -227,7 +227,7 @@ describe('drawio/drawio_editor', () => {
postMessageToParentWindow({ event: 'init' });
});
- it('displays an error alert indicating that the image is not a diagram', async () => {
+ it('displays an error alert indicating that the image is not a diagram', () => {
expect(createAlert).toHaveBeenCalledWith({
message: errorMessage,
error: expect.any(Error),
@@ -248,7 +248,7 @@ describe('drawio/drawio_editor', () => {
postMessageToParentWindow({ event: 'init' });
});
- it('displays an error alert indicating the failure', async () => {
+ it('displays an error alert indicating the failure', () => {
expect(createAlert).toHaveBeenCalledWith({
message: 'Cannot load the diagram into the diagrams.net editor',
error: expect.any(Error),
diff --git a/spec/frontend/editor/components/source_editor_toolbar_button_spec.js b/spec/frontend/editor/components/source_editor_toolbar_button_spec.js
index a94ebdfd827..b5944a52af7 100644
--- a/spec/frontend/editor/components/source_editor_toolbar_button_spec.js
+++ b/spec/frontend/editor/components/source_editor_toolbar_button_spec.js
@@ -36,14 +36,14 @@ describe('Source Editor Toolbar button', () => {
expect(findButton().exists()).toBe(false);
});
- it('renders a default button without props', async () => {
+ it('renders a default button without props', () => {
createComponent();
const btn = findButton();
expect(btn.exists()).toBe(true);
expect(btn.props()).toMatchObject(defaultProps);
});
- it('renders a button based on the props passed', async () => {
+ it('renders a button based on the props passed', () => {
createComponent({
button: customProps,
});
diff --git a/spec/frontend/emoji/awards_app/store/actions_spec.js b/spec/frontend/emoji/awards_app/store/actions_spec.js
index 3e9b49707ed..65f2e813f19 100644
--- a/spec/frontend/emoji/awards_app/store/actions_spec.js
+++ b/spec/frontend/emoji/awards_app/store/actions_spec.js
@@ -119,7 +119,7 @@ describe('Awards app actions', () => {
mock.onPost(`${relativeRootUrl || ''}/awards`).reply(HTTP_STATUS_OK, { id: 1 });
});
- it('adds an optimistic award, removes it, and then commits ADD_NEW_AWARD', async () => {
+ it('adds an optimistic award, removes it, and then commits ADD_NEW_AWARD', () => {
testAction(actions.toggleAward, null, { path: '/awards', awards: [] }, [
makeOptimisticAddMutation(),
makeOptimisticRemoveMutation(),
@@ -156,7 +156,7 @@ describe('Awards app actions', () => {
mock.onDelete(`${relativeRootUrl || ''}/awards/1`).reply(HTTP_STATUS_OK);
});
- it('commits REMOVE_AWARD', async () => {
+ it('commits REMOVE_AWARD', () => {
testAction(
actions.toggleAward,
'thumbsup',
diff --git a/spec/frontend/environments/environment_details/page_spec.js b/spec/frontend/environments/environment_details/page_spec.js
index 0e1d7221a7d..d94faf4addb 100644
--- a/spec/frontend/environments/environment_details/page_spec.js
+++ b/spec/frontend/environments/environment_details/page_spec.js
@@ -65,7 +65,7 @@ describe('~/environments/environment_details/page.vue', () => {
wrapper = createWrapper();
await waitForPromises();
});
- it('should render a table when query is loaded', async () => {
+ it('should render a table when query is loaded', () => {
expect(wrapper.findComponent(GlLoadingIcon).exists()).not.toBe(true);
expect(wrapper.findComponent(GlTableLite).exists()).toBe(true);
});
@@ -77,7 +77,7 @@ describe('~/environments/environment_details/page.vue', () => {
await waitForPromises();
});
- it('should render empty state component', async () => {
+ it('should render empty state component', () => {
expect(wrapper.findComponent(GlTableLite).exists()).toBe(false);
expect(wrapper.findComponent(EmptyState).exists()).toBe(true);
});
diff --git a/spec/frontend/environments/environment_folder_spec.js b/spec/frontend/environments/environment_folder_spec.js
index 279ff32a13d..4716f807657 100644
--- a/spec/frontend/environments/environment_folder_spec.js
+++ b/spec/frontend/environments/environment_folder_spec.js
@@ -38,7 +38,7 @@ describe('~/environments/components/environments_folder.vue', () => {
provide: { helpPagePath: '/help', projectId: '1' },
});
- beforeEach(async () => {
+ beforeEach(() => {
environmentFolderMock = jest.fn();
[nestedEnvironment] = resolvedEnvironmentsApp.environments;
environmentFolderMock.mockReturnValue(resolvedFolder);
diff --git a/spec/frontend/environments/environment_stop_spec.js b/spec/frontend/environments/environment_stop_spec.js
index 851e24c22cc..3e27b8822e1 100644
--- a/spec/frontend/environments/environment_stop_spec.js
+++ b/spec/frontend/environments/environment_stop_spec.js
@@ -73,7 +73,7 @@ describe('Stop Component', () => {
});
});
- it('should show a loading icon if the environment is currently stopping', async () => {
+ it('should show a loading icon if the environment is currently stopping', () => {
expect(findButton().props('loading')).toBe(true);
});
});
diff --git a/spec/frontend/environments/environments_app_spec.js b/spec/frontend/environments/environments_app_spec.js
index a843f801da5..6f2ee6f06cd 100644
--- a/spec/frontend/environments/environments_app_spec.js
+++ b/spec/frontend/environments/environments_app_spec.js
@@ -422,7 +422,7 @@ describe('~/environments/components/environments_app.vue', () => {
);
});
- it('should sync search term from query params on load', async () => {
+ it('should sync search term from query params on load', () => {
expect(searchBox.element.value).toBe('prod');
});
});
diff --git a/spec/frontend/environments/stop_stale_environments_modal_spec.js b/spec/frontend/environments/stop_stale_environments_modal_spec.js
index ddf6670db12..3d28ceba318 100644
--- a/spec/frontend/environments/stop_stale_environments_modal_spec.js
+++ b/spec/frontend/environments/stop_stale_environments_modal_spec.js
@@ -40,12 +40,12 @@ describe('~/environments/components/stop_stale_environments_modal.vue', () => {
jest.resetAllMocks();
});
- it('sets the correct min and max dates', async () => {
+ it('sets the correct min and max dates', () => {
expect(before.props().minDate.toISOString()).toBe(TEN_YEARS_AGO.toISOString());
expect(before.props().maxDate.toISOString()).toBe(ONE_WEEK_AGO.toISOString());
});
- it('requests cleanup when submit is clicked', async () => {
+ it('requests cleanup when submit is clicked', () => {
mock.onPost().replyOnce(HTTP_STATUS_OK);
wrapper.findComponent(GlModal).vm.$emit('primary');
const url = STOP_STALE_ENVIRONMENTS_PATH.replace(':id', 1).replace(':version', 'v4');
diff --git a/spec/frontend/feature_flags/components/configure_feature_flags_modal_spec.js b/spec/frontend/feature_flags/components/configure_feature_flags_modal_spec.js
index b06e0340991..a12c25c6897 100644
--- a/spec/frontend/feature_flags/components/configure_feature_flags_modal_spec.js
+++ b/spec/frontend/feature_flags/components/configure_feature_flags_modal_spec.js
@@ -128,11 +128,11 @@ describe('Configure Feature Flags Modal', () => {
expect(findSecondaryAction()).toBe(null);
});
- it('should not display regenerating instance ID', async () => {
+ it('should not display regenerating instance ID', () => {
expect(findDangerGlAlert().exists()).toBe(false);
});
- it('should disable the project name input', async () => {
+ it('should disable the project name input', () => {
expect(findProjectNameInput().exists()).toBe(false);
});
});
@@ -142,7 +142,7 @@ describe('Configure Feature Flags Modal', () => {
factory({ hasRotateError: true });
});
- it('should display an error', async () => {
+ it('should display an error', () => {
expect(wrapper.findByTestId('rotate-error').exists()).toBe(true);
expect(wrapper.find('[name="warning"]').exists()).toBe(true);
});
@@ -151,7 +151,7 @@ describe('Configure Feature Flags Modal', () => {
describe('is rotating', () => {
beforeEach(factory.bind(null, { isRotating: true }));
- it('should disable the project name input', async () => {
+ it('should disable the project name input', () => {
expect(findProjectNameInput().attributes('disabled')).toBe('true');
});
});
diff --git a/spec/frontend/feature_flags/components/feature_flags_spec.js b/spec/frontend/feature_flags/components/feature_flags_spec.js
index 23e86d0eb2f..8492fe7bdde 100644
--- a/spec/frontend/feature_flags/components/feature_flags_spec.js
+++ b/spec/frontend/feature_flags/components/feature_flags_spec.js
@@ -94,7 +94,7 @@ describe('Feature flags', () => {
await limitAlert().vm.$emit('dismiss');
});
- it('hides the alert', async () => {
+ it('hides the alert', () => {
expect(limitAlert().exists()).toBe(false);
});
@@ -176,7 +176,7 @@ describe('Feature flags', () => {
emptyState = wrapper.findComponent(GlEmptyState);
});
- it('should render the empty state', async () => {
+ it('should render the empty state', () => {
expect(emptyState.exists()).toBe(true);
});
diff --git a/spec/frontend/frequent_items/components/frequent_items_list_spec.js b/spec/frontend/frequent_items/components/frequent_items_list_spec.js
index 87f8e131b77..dd6dd80af4f 100644
--- a/spec/frontend/frequent_items/components/frequent_items_list_spec.js
+++ b/spec/frontend/frequent_items/components/frequent_items_list_spec.js
@@ -48,7 +48,7 @@ describe('FrequentItemsListComponent', () => {
});
describe('fetched item messages', () => {
- it('should show default empty list message', async () => {
+ it('should show default empty list message', () => {
createComponent({
items: [],
});
diff --git a/spec/frontend/groups/components/groups_spec.js b/spec/frontend/groups/components/groups_spec.js
index 9ee785d688a..c04eaa501ba 100644
--- a/spec/frontend/groups/components/groups_spec.js
+++ b/spec/frontend/groups/components/groups_spec.js
@@ -32,7 +32,7 @@ describe('GroupsComponent', () => {
const findPaginationLinks = () => wrapper.findComponent(PaginationLinks);
- beforeEach(async () => {
+ beforeEach(() => {
Vue.component('GroupFolder', GroupFolderComponent);
Vue.component('GroupItem', GroupItemComponent);
});
diff --git a/spec/frontend/helpers/init_simple_app_helper_spec.js b/spec/frontend/helpers/init_simple_app_helper_spec.js
index 8dd3745e0ac..7938e3851d0 100644
--- a/spec/frontend/helpers/init_simple_app_helper_spec.js
+++ b/spec/frontend/helpers/init_simple_app_helper_spec.js
@@ -38,19 +38,19 @@ describe('helpers/init_simple_app_helper/initSimpleApp', () => {
resetHTMLFixture();
});
- it('mounts the component if the selector exists', async () => {
+ it('mounts the component if the selector exists', () => {
initMock('<div id="mount-here"></div>');
expect(findMock().exists()).toBe(true);
});
- it('does not mount the component if selector does not exist', async () => {
+ it('does not mount the component if selector does not exist', () => {
initMock('<div id="do-not-mount-here"></div>');
expect(didCreateApp()).toBe(false);
});
- it('passes the prop to the component if the prop exists', async () => {
+ it('passes the prop to the component if the prop exists', () => {
initMock(`<div id="mount-here" data-view-model={"someKey":"thing","count":123}></div>`);
expect(findMock().props()).toEqual({
diff --git a/spec/frontend/ide/components/activity_bar_spec.js b/spec/frontend/ide/components/activity_bar_spec.js
index 49b39ea5ddc..95582aca8fd 100644
--- a/spec/frontend/ide/components/activity_bar_spec.js
+++ b/spec/frontend/ide/components/activity_bar_spec.js
@@ -50,13 +50,13 @@ describe('IDE ActivityBar component', () => {
expect(button.classes('active')).toBe(true);
});
- it.each(MODES_WITHOUT_EDIT)('is correctly set after clicking %s mode button', async (mode) => {
+ it.each(MODES_WITHOUT_EDIT)('is correctly set after clicking %s mode button', (mode) => {
mountComponent();
testSettingActiveItem(mode);
});
- it('is correctly set after clicking edit mode button', async () => {
+ it('is correctly set after clicking edit mode button', () => {
// The default currentActivityView is leftSidebarViews.edit.name,
// so for the 'edit' mode, we pass a different currentActivityView.
mountComponent({ currentActivityView: leftSidebarViews.review.name });
diff --git a/spec/frontend/ide/components/commit_sidebar/form_spec.js b/spec/frontend/ide/components/commit_sidebar/form_spec.js
index ba30073dff2..04dd81d9fda 100644
--- a/spec/frontend/ide/components/commit_sidebar/form_spec.js
+++ b/spec/frontend/ide/components/commit_sidebar/form_spec.js
@@ -89,7 +89,7 @@ describe('IDE commit form', () => {
${'when user cannot push'} | ${['test']} | ${{ pushCode: false }} | ${goToEditView} | ${findBeginCommitButtonData} | ${true} | ${MSG_CANNOT_PUSH_CODE}
${'when user cannot push'} | ${['test']} | ${{ pushCode: false }} | ${goToCommitView} | ${findCommitButtonData} | ${true} | ${MSG_CANNOT_PUSH_CODE}
`('$desc', ({ stagedFiles, userPermissions, viewFn, buttonFn, disabled, tooltip }) => {
- beforeEach(async () => {
+ beforeEach(() => {
store.state.stagedFiles = stagedFiles;
store.state.projects.abcproject.userPermissions = userPermissions;
diff --git a/spec/frontend/ide/components/commit_sidebar/list_spec.js b/spec/frontend/ide/components/commit_sidebar/list_spec.js
index 6b9ba939a87..c0b0cb0b732 100644
--- a/spec/frontend/ide/components/commit_sidebar/list_spec.js
+++ b/spec/frontend/ide/components/commit_sidebar/list_spec.js
@@ -20,7 +20,7 @@ describe('Multi-file editor commit sidebar list', () => {
});
describe('with a list of files', () => {
- beforeEach(async () => {
+ beforeEach(() => {
const f = file('file name');
f.changed = true;
wrapper = mountComponent({ fileList: [f] });
diff --git a/spec/frontend/ide/components/ide_review_spec.js b/spec/frontend/ide/components/ide_review_spec.js
index e6fd018969f..7ae8cfac935 100644
--- a/spec/frontend/ide/components/ide_review_spec.js
+++ b/spec/frontend/ide/components/ide_review_spec.js
@@ -63,7 +63,7 @@ describe('IDE review mode', () => {
await wrapper.vm.reactivate();
});
- it('updates viewer to "mrdiff"', async () => {
+ it('updates viewer to "mrdiff"', () => {
expect(store.state.viewer).toBe('mrdiff');
});
});
diff --git a/spec/frontend/ide/components/ide_spec.js b/spec/frontend/ide/components/ide_spec.js
index ad4484587d3..f2a684ab65e 100644
--- a/spec/frontend/ide/components/ide_spec.js
+++ b/spec/frontend/ide/components/ide_spec.js
@@ -64,7 +64,7 @@ describe('WebIDE', () => {
});
});
- it('renders "New file" button in empty repo', async () => {
+ it('renders "New file" button in empty repo', () => {
expect(wrapper.find('[title="New file"]').exists()).toBe(true);
});
});
diff --git a/spec/frontend/ide/components/repo_editor_spec.js b/spec/frontend/ide/components/repo_editor_spec.js
index 9253bfc7e71..6747ec97050 100644
--- a/spec/frontend/ide/components/repo_editor_spec.js
+++ b/spec/frontend/ide/components/repo_editor_spec.js
@@ -293,7 +293,7 @@ describe('RepoEditor', () => {
});
describe('when file changes to non-markdown file', () => {
- beforeEach(async () => {
+ beforeEach(() => {
wrapper.setProps({ file: dummyFile.empty });
});
@@ -601,7 +601,7 @@ describe('RepoEditor', () => {
const f = createRemoteFile('newFile');
Vue.set(vm.$store.state.entries, f.path, f);
- jest.spyOn(service, 'getRawFileData').mockImplementation(async () => {
+ jest.spyOn(service, 'getRawFileData').mockImplementation(() => {
expect(vm.file.loading).toBe(true);
// switching from edit to diff mode usually triggers editor initialization
@@ -609,7 +609,7 @@ describe('RepoEditor', () => {
jest.runOnlyPendingTimers();
- return 'rawFileData123\n';
+ return Promise.resolve('rawFileData123\n');
});
wrapper.setProps({
@@ -630,18 +630,18 @@ describe('RepoEditor', () => {
jest
.spyOn(service, 'getRawFileData')
- .mockImplementation(async () => {
+ .mockImplementation(() => {
// opening fileB while the content of fileA is still being fetched
wrapper.setProps({
file: fileB,
});
- return aContent;
+ return Promise.resolve(aContent);
})
- .mockImplementationOnce(async () => {
+ .mockImplementationOnce(() => {
// we delay returning fileB content
// to make sure the editor doesn't initialize prematurely
jest.advanceTimersByTime(30);
- return bContent;
+ return Promise.resolve(bContent);
});
wrapper.setProps({
diff --git a/spec/frontend/ide/components/shared/commit_message_field_spec.js b/spec/frontend/ide/components/shared/commit_message_field_spec.js
index 186b1997497..ccf544b27b7 100644
--- a/spec/frontend/ide/components/shared/commit_message_field_spec.js
+++ b/spec/frontend/ide/components/shared/commit_message_field_spec.js
@@ -50,7 +50,7 @@ describe('CommitMessageField', () => {
await nextTick();
});
- it('is added on textarea focus', async () => {
+ it('is added on textarea focus', () => {
expect(wrapper.attributes('class')).toEqual(
expect.stringContaining('gl-outline-none! gl-focus-ring-border-1-gray-900!'),
);
diff --git a/spec/frontend/import_entities/import_groups/components/import_actions_cell_spec.js b/spec/frontend/import_entities/import_groups/components/import_actions_cell_spec.js
index 1a52485f779..4c13ec555c2 100644
--- a/spec/frontend/import_entities/import_groups/components/import_actions_cell_spec.js
+++ b/spec/frontend/import_entities/import_groups/components/import_actions_cell_spec.js
@@ -94,14 +94,14 @@ describe('import actions cell', () => {
);
});
- it('request migrate projects by default', async () => {
+ it('request migrate projects by default', () => {
const dropdown = wrapper.findComponent(GlDropdown);
dropdown.vm.$emit('click');
expect(wrapper.emitted('import-group')[0]).toStrictEqual([{ migrateProjects: true }]);
});
- it('request not to migrate projects via dropdown option', async () => {
+ it('request not to migrate projects via dropdown option', () => {
const dropdown = wrapper.findComponent(GlDropdown);
dropdown.findComponent(GlDropdownItem).vm.$emit('click');
diff --git a/spec/frontend/import_entities/import_groups/components/import_table_spec.js b/spec/frontend/import_entities/import_groups/components/import_table_spec.js
index 205218fdabd..b1aa94cf418 100644
--- a/spec/frontend/import_entities/import_groups/components/import_table_spec.js
+++ b/spec/frontend/import_entities/import_groups/components/import_table_spec.js
@@ -687,7 +687,7 @@ describe('import table', () => {
return waitForPromises();
});
- it('renders import all dropdown', async () => {
+ it('renders import all dropdown', () => {
expect(findImportSelectedDropdown().exists()).toBe(true);
});
diff --git a/spec/frontend/import_entities/import_groups/graphql/client_factory_spec.js b/spec/frontend/import_entities/import_groups/graphql/client_factory_spec.js
index 83566469176..540c42a2854 100644
--- a/spec/frontend/import_entities/import_groups/graphql/client_factory_spec.js
+++ b/spec/frontend/import_entities/import_groups/graphql/client_factory_spec.js
@@ -48,7 +48,7 @@ describe('Bulk import resolvers', () => {
};
let results;
- beforeEach(async () => {
+ beforeEach(() => {
axiosMockAdapter = new MockAdapter(axios);
client = createClient();
diff --git a/spec/frontend/incidents/components/incidents_list_spec.js b/spec/frontend/incidents/components/incidents_list_spec.js
index e8d222dc2e9..6e64eeaf295 100644
--- a/spec/frontend/incidents/components/incidents_list_spec.js
+++ b/spec/frontend/incidents/components/incidents_list_spec.js
@@ -212,7 +212,7 @@ describe('Incidents List', () => {
});
});
- it('contains a link to the incident details page', async () => {
+ it('contains a link to the incident details page', () => {
findTableRows().at(0).trigger('click');
expect(visitUrl).toHaveBeenCalledWith(
joinPaths(`/project/issues/incident`, mockIncidents[0].iid),
diff --git a/spec/frontend/integrations/edit/components/integration_form_spec.js b/spec/frontend/integrations/edit/components/integration_form_spec.js
index 58fb456eb53..5aa3ee35379 100644
--- a/spec/frontend/integrations/edit/components/integration_form_spec.js
+++ b/spec/frontend/integrations/edit/components/integration_form_spec.js
@@ -495,7 +495,7 @@ describe('IntegrationForm', () => {
expect(refreshCurrentPage).toHaveBeenCalledTimes(1);
});
- it('resets `isResetting`', async () => {
+ it('resets `isResetting`', () => {
expect(findFormActions().props('isResetting')).toBe(false);
});
});
diff --git a/spec/frontend/integrations/edit/components/jira_issues_fields_spec.js b/spec/frontend/integrations/edit/components/jira_issues_fields_spec.js
index 90ee69ef2dc..82f70b8ede1 100644
--- a/spec/frontend/integrations/edit/components/jira_issues_fields_spec.js
+++ b/spec/frontend/integrations/edit/components/jira_issues_fields_spec.js
@@ -37,8 +37,7 @@ describe('JiraIssuesFields', () => {
const findProjectKey = () => wrapper.findComponent(GlFormInput);
const findProjectKeyFormGroup = () => wrapper.findByTestId('project-key-form-group');
const findJiraForVulnerabilities = () => wrapper.findByTestId('jira-for-vulnerabilities');
- const setEnableCheckbox = async (isEnabled = true) =>
- findEnableCheckbox().vm.$emit('input', isEnabled);
+ const setEnableCheckbox = (isEnabled = true) => findEnableCheckbox().vm.$emit('input', isEnabled);
const assertProjectKeyState = (expectedStateValue) => {
expect(findProjectKey().attributes('state')).toBe(expectedStateValue);
@@ -178,7 +177,7 @@ describe('JiraIssuesFields', () => {
});
describe('with no project key', () => {
- it('sets Project Key `state` attribute to `undefined`', async () => {
+ it('sets Project Key `state` attribute to `undefined`', () => {
assertProjectKeyState(undefined);
});
});
diff --git a/spec/frontend/invite_members/components/invite_members_modal_spec.js b/spec/frontend/invite_members/components/invite_members_modal_spec.js
index c80a6b30fb2..4585a6616e1 100644
--- a/spec/frontend/invite_members/components/invite_members_modal_spec.js
+++ b/spec/frontend/invite_members/components/invite_members_modal_spec.js
@@ -452,7 +452,7 @@ describe('InviteMembersModal', () => {
const expectedSyntaxError = 'email contains an invalid email address';
describe('when no invites have been entered in the form and then some are entered', () => {
- beforeEach(async () => {
+ beforeEach(() => {
createInviteMembersToGroupWrapper();
});
diff --git a/spec/frontend/issuable/popover/components/mr_popover_spec.js b/spec/frontend/issuable/popover/components/mr_popover_spec.js
index d9e113eeaae..5b29ecfc0ba 100644
--- a/spec/frontend/issuable/popover/components/mr_popover_spec.js
+++ b/spec/frontend/issuable/popover/components/mr_popover_spec.js
@@ -95,7 +95,7 @@ describe('MR Popover', () => {
expect(wrapper.text()).toContain('foo/bar!1');
});
- it('shows CI Icon if there is pipeline data', async () => {
+ it('shows CI Icon if there is pipeline data', () => {
expect(wrapper.findComponent(CiIcon).exists()).toBe(true);
});
});
@@ -108,7 +108,7 @@ describe('MR Popover', () => {
return waitForPromises();
});
- it('does not show CI icon if there is no pipeline data', async () => {
+ it('does not show CI icon if there is no pipeline data', () => {
expect(wrapper.findComponent(CiIcon).exists()).toBe(false);
});
});
diff --git a/spec/frontend/issuable/related_issues/components/add_issuable_form_spec.js b/spec/frontend/issuable/related_issues/components/add_issuable_form_spec.js
index f8e47bc0a4b..f90b9117688 100644
--- a/spec/frontend/issuable/related_issues/components/add_issuable_form_spec.js
+++ b/spec/frontend/issuable/related_issues/components/add_issuable_form_spec.js
@@ -230,7 +230,7 @@ describe('AddIssuableForm', () => {
]);
});
- it('emits an event with a "is_blocked_by" link type when the "is blocked by" radio input selected', async () => {
+ it('emits an event with a "is_blocked_by" link type when the "is blocked by" radio input selected', () => {
findRadioGroup().vm.$emit('input', linkedIssueTypesMap.IS_BLOCKED_BY);
findAddIssuableForm().trigger('submit');
diff --git a/spec/frontend/issues/list/components/issues_list_app_spec.js b/spec/frontend/issues/list/components/issues_list_app_spec.js
index b28a08e2fce..15dde76f49b 100644
--- a/spec/frontend/issues/list/components/issues_list_app_spec.js
+++ b/spec/frontend/issues/list/components/issues_list_app_spec.js
@@ -201,7 +201,7 @@ describe('CE IssuesListApp component', () => {
return waitForPromises();
});
- it('renders', async () => {
+ it('renders', () => {
expect(findIssuableList().props()).toMatchObject({
namespace: defaultProvide.fullPath,
recentSearchesStorageKey: 'issues',
@@ -803,7 +803,7 @@ describe('CE IssuesListApp component', () => {
describe('when "sort" event is emitted by IssuableList', () => {
it.each(Object.keys(urlSortParams))(
'updates to the new sort when payload is `%s`',
- async (sortKey) => {
+ (sortKey) => {
// Ensure initial sort key is different so we can trigger an update when emitting a sort key
wrapper =
sortKey === CREATED_DESC
diff --git a/spec/frontend/issues/show/components/app_spec.js b/spec/frontend/issues/show/components/app_spec.js
index 554662c611d..a4ee9a62926 100644
--- a/spec/frontend/issues/show/components/app_spec.js
+++ b/spec/frontend/issues/show/components/app_spec.js
@@ -331,7 +331,7 @@ describe('Issuable output', () => {
});
describe('when title is not in view', () => {
- beforeEach(async () => {
+ beforeEach(() => {
wrapper.findComponent(GlIntersectionObserver).vm.$emit('disappear');
});
diff --git a/spec/frontend/issues/show/components/description_spec.js b/spec/frontend/issues/show/components/description_spec.js
index 56057e9819f..c6869573b2e 100644
--- a/spec/frontend/issues/show/components/description_spec.js
+++ b/spec/frontend/issues/show/components/description_spec.js
@@ -162,7 +162,7 @@ describe('Description component', () => {
expect(TaskList).toHaveBeenCalled();
});
- it('does not re-init the TaskList when canUpdate is false', async () => {
+ it('does not re-init the TaskList when canUpdate is false', () => {
createComponent({
props: {
issuableType: 'issuableType',
diff --git a/spec/frontend/issues/show/components/header_actions_spec.js b/spec/frontend/issues/show/components/header_actions_spec.js
index 58ec7387851..db3435855f6 100644
--- a/spec/frontend/issues/show/components/header_actions_spec.js
+++ b/spec/frontend/issues/show/components/header_actions_spec.js
@@ -440,7 +440,7 @@ describe('HeaderActions component', () => {
wrapper = mountComponent({ props: { isIssueAuthor: false } });
});
- it("doesn't render", async () => {
+ it("doesn't render", () => {
expect(findAbuseCategorySelector().exists()).toEqual(false);
});
diff --git a/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js b/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js
index 0f4fb02a40b..5a49b29c458 100644
--- a/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js
+++ b/spec/frontend/issues/show/components/incidents/incident_tabs_spec.js
@@ -163,7 +163,7 @@ describe('Incident Tabs component', () => {
mountComponent({ mount: mountExtended });
});
- it('shows only the summary tab by default', async () => {
+ it('shows only the summary tab by default', () => {
expect(findActiveTabs()).toHaveLength(1);
expect(findActiveTabs().at(0).text()).toBe(incidentTabsI18n.summaryTitle);
});
diff --git a/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js b/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js
index 500d0b0909e..9c4662ce38f 100644
--- a/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js
+++ b/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js
@@ -245,7 +245,7 @@ describe('Timeline events form', () => {
expect(findMinuteInput().element.value).toBe('0');
});
- it('should disable the save buttons when event content does not exist', async () => {
+ it('should disable the save buttons when event content does not exist', () => {
expect(findSubmitButton().props('disabled')).toBe(true);
expect(findSubmitAndAddButton().props('disabled')).toBe(true);
});
diff --git a/spec/frontend/issues/show/components/locked_warning_spec.js b/spec/frontend/issues/show/components/locked_warning_spec.js
index f8a8c999632..2e786b665d0 100644
--- a/spec/frontend/issues/show/components/locked_warning_spec.js
+++ b/spec/frontend/issues/show/components/locked_warning_spec.js
@@ -35,11 +35,11 @@ describe('LockedWarning component', () => {
expect(alert.props('dismissible')).toBe(false);
});
- it(`displays correct message`, async () => {
+ it(`displays correct message`, () => {
expect(alert.text()).toMatchInterpolatedText(sprintf(i18n.alertMessage, { issuableType }));
});
- it(`displays a link with correct text`, async () => {
+ it(`displays a link with correct text`, () => {
expect(link.exists()).toBe(true);
expect(link.text()).toBe(`the ${issuableType}`);
});
diff --git a/spec/frontend/read_more_spec.js b/spec/frontend/read_more_spec.js
index 9eddc50d50a..e45405088b1 100644
--- a/spec/frontend/read_more_spec.js
+++ b/spec/frontend/read_more_spec.js
@@ -42,7 +42,7 @@ describe('Read more click-to-expand functionality', () => {
nestedElement.click();
});
- it('removes the trigger element', async () => {
+ it('removes the trigger element', () => {
expect(findTrigger()).toBe(null);
});
});
diff --git a/spec/frontend/releases/components/app_index_spec.js b/spec/frontend/releases/components/app_index_spec.js
index 7a0e9fb7326..2aa36056735 100644
--- a/spec/frontend/releases/components/app_index_spec.js
+++ b/spec/frontend/releases/components/app_index_spec.js
@@ -412,7 +412,7 @@ describe('app_index.vue', () => {
await createComponent();
});
- it('shows a toast', async () => {
+ it('shows a toast', () => {
expect(toast).toHaveBeenCalledWith(
sprintf(__('Release %{release} has been successfully deleted.'), {
release,
@@ -420,7 +420,7 @@ describe('app_index.vue', () => {
);
});
- it('clears session storage', async () => {
+ it('clears session storage', () => {
expect(window.sessionStorage.getItem(key)).toBe(null);
});
});
diff --git a/spec/frontend/releases/components/tag_field_new_spec.js b/spec/frontend/releases/components/tag_field_new_spec.js
index 2508495429c..56e3af753f4 100644
--- a/spec/frontend/releases/components/tag_field_new_spec.js
+++ b/spec/frontend/releases/components/tag_field_new_spec.js
@@ -106,7 +106,7 @@ describe('releases/components/tag_field_new', () => {
});
describe('when the user selects a new tag name', () => {
- beforeEach(async () => {
+ beforeEach(() => {
findCreateNewTagOption().vm.$emit('click');
});
@@ -122,7 +122,7 @@ describe('releases/components/tag_field_new', () => {
describe('when the user selects an existing tag name', () => {
const updatedTagName = 'updated-tag-name';
- beforeEach(async () => {
+ beforeEach(() => {
findTagNameDropdown().vm.$emit('input', updatedTagName);
});
@@ -147,7 +147,7 @@ describe('releases/components/tag_field_new', () => {
describe('"Create tag" option', () => {
describe('when the search query exactly matches one of the search results', () => {
- beforeEach(async () => {
+ beforeEach(() => {
createComponent(mount, { searchQuery: TEST_TAG_NAME });
});
@@ -157,7 +157,7 @@ describe('releases/components/tag_field_new', () => {
});
describe('when the search query does not exactly match one of the search results', () => {
- beforeEach(async () => {
+ beforeEach(() => {
createComponent(mount, { searchQuery: NONEXISTENT_TAG_NAME });
});
@@ -234,7 +234,7 @@ describe('releases/components/tag_field_new', () => {
});
describe('when the user selects a git ref', () => {
- it("updates the store's createFrom property", async () => {
+ it("updates the store's createFrom property", () => {
const updatedCreateFrom = 'update-create-from';
findCreateFromDropdown().vm.$emit('input', updatedCreateFrom);
diff --git a/spec/frontend/repository/components/delete_blob_modal_spec.js b/spec/frontend/repository/components/delete_blob_modal_spec.js
index 9ca45bfb655..90f2150222c 100644
--- a/spec/frontend/repository/components/delete_blob_modal_spec.js
+++ b/spec/frontend/repository/components/delete_blob_modal_spec.js
@@ -182,13 +182,13 @@ describe('DeleteBlobModal', () => {
await fillForm({ targetText: '', commitText: '' });
});
- it('disables submit button', async () => {
+ it('disables submit button', () => {
expect(findModal().props('actionPrimary').attributes).toEqual(
expect.objectContaining({ disabled: true }),
);
});
- it('does not submit form', async () => {
+ it('does not submit form', () => {
findModal().vm.$emit('primary', { preventDefault: () => {} });
expect(submitSpy).not.toHaveBeenCalled();
});
@@ -202,13 +202,13 @@ describe('DeleteBlobModal', () => {
});
});
- it('enables submit button', async () => {
+ it('enables submit button', () => {
expect(findModal().props('actionPrimary').attributes).toEqual(
expect.objectContaining({ disabled: false }),
);
});
- it('submits form', async () => {
+ it('submits form', () => {
findModal().vm.$emit('primary', { preventDefault: () => {} });
expect(submitSpy).toHaveBeenCalled();
});
diff --git a/spec/frontend/repository/components/fork_info_spec.js b/spec/frontend/repository/components/fork_info_spec.js
index 75310ba8ca4..cbde60152e3 100644
--- a/spec/frontend/repository/components/fork_info_spec.js
+++ b/spec/frontend/repository/components/fork_info_spec.js
@@ -101,7 +101,7 @@ describe('ForkInfo component', () => {
mockResolvedForkDetailsQuery();
});
- it('displays a skeleton while loading data', async () => {
+ it('displays a skeleton while loading data', () => {
createComponent();
expect(findSkeleton().exists()).toBe(true);
});
@@ -191,11 +191,11 @@ describe('ForkInfo component', () => {
await createComponent({}, { ahead: 0, behind: 0, isSyncing: false, hasConflicts: false });
});
- it('renders up to date message when fork is up to date', async () => {
+ it('renders up to date message when fork is up to date', () => {
expect(findDivergenceMessage().text()).toBe(i18n.upToDate);
});
- it('does not render Update Fork button', async () => {
+ it('does not render Update Fork button', () => {
expect(findUpdateForkButton().exists()).toBe(false);
});
});
@@ -206,10 +206,24 @@ describe('ForkInfo component', () => {
await createComponent({}, null);
});
- it('renders limited visibility messsage when forkDetails are empty', async () => {
+ it('renders limited visibility messsage when forkDetails are empty', () => {
expect(findDivergenceMessage().text()).toBe(i18n.limitedVisibility);
});
+ it('does not render Update Fork button', () => {
+ expect(findUpdateForkButton().exists()).toBe(false);
+ });
+ });
+
+ describe('User cannot sync the branch', () => {
+ beforeEach(async () => {
+ mockResolvedForkDetailsQuery({ ahead: 0, behind: 7, isSyncing: false, hasConflicts: false });
+ await createComponent(
+ { canSyncBranch: false },
+ { ahead: 0, behind: 7, isSyncing: false, hasConflicts: false },
+ );
+ });
+
it('does not render Update Fork button', async () => {
expect(findUpdateForkButton().exists()).toBe(false);
});
diff --git a/spec/frontend/repository/components/last_commit_spec.js b/spec/frontend/repository/components/last_commit_spec.js
index 5e43462d241..c207d32d61d 100644
--- a/spec/frontend/repository/components/last_commit_spec.js
+++ b/spec/frontend/repository/components/last_commit_spec.js
@@ -101,7 +101,7 @@ const createCommitData = ({
};
};
-const createComponent = async (data = {}) => {
+const createComponent = (data = {}) => {
Vue.use(VueApollo);
const currentPath = 'path';
diff --git a/spec/frontend/repository/components/new_directory_modal_spec.js b/spec/frontend/repository/components/new_directory_modal_spec.js
index c920159375f..55a24089d48 100644
--- a/spec/frontend/repository/components/new_directory_modal_spec.js
+++ b/spec/frontend/repository/components/new_directory_modal_spec.js
@@ -124,7 +124,7 @@ describe('NewDirectoryModal', () => {
});
describe('form submission', () => {
- beforeEach(async () => {
+ beforeEach(() => {
mock = new MockAdapter(axios);
});
diff --git a/spec/frontend/repository/components/preview/index_spec.js b/spec/frontend/repository/components/preview/index_spec.js
index 8a88c5b9c61..316ddfb5731 100644
--- a/spec/frontend/repository/components/preview/index_spec.js
+++ b/spec/frontend/repository/components/preview/index_spec.js
@@ -54,7 +54,7 @@ describe('Repository file preview component', () => {
expect(handleLocationHash).toHaveBeenCalled();
});
- it('renders loading icon', async () => {
+ it('renders loading icon', () => {
expect(wrapper.findComponent(GlLoadingIcon).exists()).toBe(true);
});
});
diff --git a/spec/frontend/repository/components/table/row_spec.js b/spec/frontend/repository/components/table/row_spec.js
index 055616d6e8e..949c06affcf 100644
--- a/spec/frontend/repository/components/table/row_spec.js
+++ b/spec/frontend/repository/components/table/row_spec.js
@@ -250,7 +250,7 @@ describe('Repository table row component', () => {
afterAll(() => jest.useRealTimers());
- it('emits a `row-appear` event', async () => {
+ it('emits a `row-appear` event', () => {
const setTimeoutSpy = jest.spyOn(global, 'setTimeout');
findIntersectionObserver().vm.$emit('appear');
diff --git a/spec/frontend/repository/components/tree_content_spec.js b/spec/frontend/repository/components/tree_content_spec.js
index 9597d8a7b77..5b874656d39 100644
--- a/spec/frontend/repository/components/tree_content_spec.js
+++ b/spec/frontend/repository/components/tree_content_spec.js
@@ -99,7 +99,7 @@ describe('Repository table component', () => {
describe('FileTable showMore', () => {
describe('when is present', () => {
- beforeEach(async () => {
+ beforeEach(() => {
factory('/');
});
diff --git a/spec/frontend/repository/mock_data.js b/spec/frontend/repository/mock_data.js
index c7cc2820588..a6480b79d0f 100644
--- a/spec/frontend/repository/mock_data.js
+++ b/spec/frontend/repository/mock_data.js
@@ -123,6 +123,7 @@ export const propsForkInfo = {
selectedBranch: 'main',
sourceName: 'gitLab',
sourcePath: 'gitlab-org/gitlab',
+ canSyncBranch: true,
aheadComparePath: '/nataliia/myGitLab/-/compare/main...ref?from_project_id=1',
behindComparePath: 'gitlab-org/gitlab/-/compare/ref...main?from_project_id=2',
createMrPath: 'path/to/new/mr',
diff --git a/spec/frontend/scripts/frontend/po_to_json_spec.js b/spec/frontend/scripts/frontend/po_to_json_spec.js
index fbaad328e61..858e3c9d3c7 100644
--- a/spec/frontend/scripts/frontend/po_to_json_spec.js
+++ b/spec/frontend/scripts/frontend/po_to_json_spec.js
@@ -32,11 +32,11 @@ describe('PoToJson', () => {
});
describe('#main', () => {
- it('throws without arguments', async () => {
+ it('throws without arguments', () => {
return expect(main()).rejects.toThrow(/doesn't seem to be a folder/);
});
- it('throws if outputDir does not exist', async () => {
+ it('throws if outputDir does not exist', () => {
return expect(
main({
localeRoot: LOCALE_DIR,
@@ -45,7 +45,7 @@ describe('PoToJson', () => {
).rejects.toThrow(/doesn't seem to be a folder/);
});
- it('throws if localeRoot does not exist', async () => {
+ it('throws if localeRoot does not exist', () => {
return expect(
main({
localeRoot: 'i-do-not-exist',
diff --git a/spec/frontend/search/sidebar/components/checkbox_filter_spec.js b/spec/frontend/search/sidebar/components/checkbox_filter_spec.js
index 7af588f059f..3907e199cae 100644
--- a/spec/frontend/search/sidebar/components/checkbox_filter_spec.js
+++ b/spec/frontend/search/sidebar/components/checkbox_filter_spec.js
@@ -89,7 +89,7 @@ describe('CheckboxFilter', () => {
describe('actions', () => {
const checkedLanguageName = MOCK_LANGUAGE_AGGREGATIONS_BUCKETS[0].key;
- beforeEach(async () => {
+ beforeEach(() => {
defaultProps.filtersData = convertFiltersData(MOCK_LANGUAGE_AGGREGATIONS_BUCKETS.slice(0, 3));
CheckboxFilter.computed.selectedFilter.get = jest.fn(() => checkedLanguageName);
diff --git a/spec/frontend/search/topbar/components/searchable_dropdown_spec.js b/spec/frontend/search/topbar/components/searchable_dropdown_spec.js
index 5e5f46ff34e..f7d847674eb 100644
--- a/spec/frontend/search/topbar/components/searchable_dropdown_spec.js
+++ b/spec/frontend/search/topbar/components/searchable_dropdown_spec.js
@@ -189,7 +189,7 @@ describe('Global Search Searchable Dropdown', () => {
findGlDropdown().vm.$emit('show');
});
- it('$emits @search and @first-open on the first open', async () => {
+ it('$emits @search and @first-open on the first open', () => {
expect(wrapper.emitted('search')[0]).toStrictEqual(['']);
expect(wrapper.emitted('first-open')[0]).toStrictEqual([]);
});
diff --git a/spec/frontend/security_configuration/components/app_spec.js b/spec/frontend/security_configuration/components/app_spec.js
index ae5316eb12f..ec47cda1cb2 100644
--- a/spec/frontend/security_configuration/components/app_spec.js
+++ b/spec/frontend/security_configuration/components/app_spec.js
@@ -422,7 +422,7 @@ describe('App component', () => {
describe('Vulnerability management', () => {
const props = { securityTrainingEnabled: true };
- beforeEach(async () => {
+ beforeEach(() => {
createComponent({
...props,
});
diff --git a/spec/frontend/security_configuration/components/training_provider_list_spec.js b/spec/frontend/security_configuration/components/training_provider_list_spec.js
index 1f8f306c931..d35fc00057a 100644
--- a/spec/frontend/security_configuration/components/training_provider_list_spec.js
+++ b/spec/frontend/security_configuration/components/training_provider_list_spec.js
@@ -253,7 +253,7 @@ describe('TrainingProviderList component', () => {
expect(findLogos().at(provider).attributes('role')).toBe('presentation');
});
- it.each(providerIndexArray)('renders the svg content for provider %s', async (provider) => {
+ it.each(providerIndexArray)('renders the svg content for provider %s', (provider) => {
expect(findLogos().at(provider).html()).toContain(
TEMP_PROVIDER_LOGOS[testProviderName[provider]].svg,
);
diff --git a/spec/frontend/sentry/sentry_browser_wrapper_spec.js b/spec/frontend/sentry/sentry_browser_wrapper_spec.js
index f4d646bab78..55354eceb8d 100644
--- a/spec/frontend/sentry/sentry_browser_wrapper_spec.js
+++ b/spec/frontend/sentry/sentry_browser_wrapper_spec.js
@@ -25,7 +25,7 @@ describe('SentryBrowserWrapper', () => {
let mockCaptureMessage;
let mockWithScope;
- beforeEach(async () => {
+ beforeEach(() => {
mockCaptureException = jest.fn();
mockCaptureMessage = jest.fn();
mockWithScope = jest.fn();
diff --git a/spec/frontend/sidebar/components/date/sidebar_date_widget_spec.js b/spec/frontend/sidebar/components/date/sidebar_date_widget_spec.js
index 7ef26256894..8f82a2d1258 100644
--- a/spec/frontend/sidebar/components/date/sidebar_date_widget_spec.js
+++ b/spec/frontend/sidebar/components/date/sidebar_date_widget_spec.js
@@ -138,7 +138,7 @@ describe('Sidebar date Widget', () => {
});
});
- it('renders GlDatePicker', async () => {
+ it('renders GlDatePicker', () => {
expect(findDatePicker().exists()).toBe(true);
});
});
@@ -171,7 +171,7 @@ describe('Sidebar date Widget', () => {
},
);
- it('does not render SidebarInheritDate when canInherit is true and date is loading', async () => {
+ it('does not render SidebarInheritDate when canInherit is true and date is loading', () => {
createComponent({ canInherit: true });
expect(wrapper.findComponent(SidebarInheritDate).exists()).toBe(false);
diff --git a/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view_spec.js b/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view_spec.js
index c351a60735b..1abc708b72f 100644
--- a/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view_spec.js
+++ b/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view_spec.js
@@ -96,11 +96,11 @@ describe('DropdownContentsLabelsView', () => {
await waitForPromises();
});
- it('does not render loading icon', async () => {
+ it('does not render loading icon', () => {
expect(findLoadingIcon().exists()).toBe(false);
});
- it('renders labels list', async () => {
+ it('renders labels list', () => {
expect(findLabelsList().exists()).toBe(true);
expect(findLabels()).toHaveLength(2);
});
diff --git a/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_header_spec.js b/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_header_spec.js
index 824f91812fb..4861d2ca55e 100644
--- a/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_header_spec.js
+++ b/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_header_spec.js
@@ -45,7 +45,7 @@ describe('DropdownHeader', () => {
expect(findGoBackButton().exists()).toBe(true);
});
- it('does not render search input field', async () => {
+ it('does not render search input field', () => {
expect(findSearchInput().exists()).toBe(false);
});
});
@@ -81,7 +81,7 @@ describe('DropdownHeader', () => {
expect(findSearchInput().exists()).toBe(true);
});
- it('does not render title', async () => {
+ it('does not render title', () => {
expect(findDropdownTitle().exists()).toBe(false);
});
});
diff --git a/spec/frontend/sidebar/components/labels/labels_select_widget/labels_select_root_spec.js b/spec/frontend/sidebar/components/labels/labels_select_widget/labels_select_root_spec.js
index 3101fd90f2e..b0a080ba1ef 100644
--- a/spec/frontend/sidebar/components/labels/labels_select_widget/labels_select_root_spec.js
+++ b/spec/frontend/sidebar/components/labels/labels_select_widget/labels_select_root_spec.js
@@ -199,7 +199,7 @@ describe('LabelsSelectRoot', () => {
});
});
- it('emits `updateSelectedLabels` event on dropdown contents `setLabels` event if iid is not set', async () => {
+ it('emits `updateSelectedLabels` event on dropdown contents `setLabels` event if iid is not set', () => {
const label = { id: 'gid://gitlab/ProjectLabel/1' };
createComponent({ config: { ...mockConfig, iid: undefined } });
diff --git a/spec/frontend/sidebar/components/move/issuable_move_dropdown_spec.js b/spec/frontend/sidebar/components/move/issuable_move_dropdown_spec.js
index e247f5d27fa..7c168a0ac41 100644
--- a/spec/frontend/sidebar/components/move/issuable_move_dropdown_spec.js
+++ b/spec/frontend/sidebar/components/move/issuable_move_dropdown_spec.js
@@ -328,7 +328,7 @@ describe('IssuableMoveDropdown', () => {
expect(axios.get).toHaveBeenCalled();
});
- it('gl-dropdown component prevents dropdown body from closing on `hide` event when `projectItemClick` prop is true', async () => {
+ it('gl-dropdown component prevents dropdown body from closing on `hide` event when `projectItemClick` prop is true', () => {
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
// eslint-disable-next-line no-restricted-syntax
wrapper.setData({
@@ -341,7 +341,7 @@ describe('IssuableMoveDropdown', () => {
expect(wrapper.vm.projectItemClick).toBe(false);
});
- it('gl-dropdown component emits `dropdown-close` event on component from `hide` event', async () => {
+ it('gl-dropdown component emits `dropdown-close` event on component from `hide` event', () => {
findDropdownEl().vm.$emit('hide');
expect(wrapper.emitted('dropdown-close')).toHaveLength(1);
diff --git a/spec/frontend/sidebar/components/move/move_issues_button_spec.js b/spec/frontend/sidebar/components/move/move_issues_button_spec.js
index 662a39c829d..2c7982a4b7f 100644
--- a/spec/frontend/sidebar/components/move/move_issues_button_spec.js
+++ b/spec/frontend/sidebar/components/move/move_issues_button_spec.js
@@ -346,7 +346,7 @@ describe('MoveIssuesButton', () => {
expect(issuableEventHub.$emit).not.toHaveBeenCalled();
});
- it('emits `issuables:bulkMoveStarted` when issues are moving', async () => {
+ it('emits `issuables:bulkMoveStarted` when issues are moving', () => {
createComponent({ selectedIssuables: selectedIssuesMocks.issuesTasksAndTestCases });
emitMoveIssuablesEvent();
diff --git a/spec/frontend/sidebar/components/severity/sidebar_severity_widget_spec.js b/spec/frontend/sidebar/components/severity/sidebar_severity_widget_spec.js
index 13b3c5eef05..bee90d2b2b6 100644
--- a/spec/frontend/sidebar/components/severity/sidebar_severity_widget_spec.js
+++ b/spec/frontend/sidebar/components/severity/sidebar_severity_widget_spec.js
@@ -81,7 +81,7 @@ describe('SidebarSeverityWidget', () => {
});
describe('Update severity', () => {
- it('calls mutate with `updateIssuableSeverity`', async () => {
+ it('calls mutate with `updateIssuableSeverity`', () => {
const mutationMock = jest.fn().mockResolvedValue({
data: { issueSetSeverity: { issue: { severity } } },
});
diff --git a/spec/frontend/sidebar/components/time_tracking/time_tracker_spec.js b/spec/frontend/sidebar/components/time_tracking/time_tracker_spec.js
index 91c013596d7..e23d24f9629 100644
--- a/spec/frontend/sidebar/components/time_tracking/time_tracker_spec.js
+++ b/spec/frontend/sidebar/components/time_tracking/time_tracker_spec.js
@@ -144,7 +144,7 @@ describe('Issuable Time Tracker', () => {
});
describe('Comparison pane when limitToHours is true', () => {
- beforeEach(async () => {
+ beforeEach(() => {
wrapper = mountComponent({
props: {
limitToHours: true,
diff --git a/spec/frontend/sidebar/components/toggle/toggle_sidebar_spec.js b/spec/frontend/sidebar/components/toggle/toggle_sidebar_spec.js
index 0370d5e337d..8e34a612705 100644
--- a/spec/frontend/sidebar/components/toggle/toggle_sidebar_spec.js
+++ b/spec/frontend/sidebar/components/toggle/toggle_sidebar_spec.js
@@ -25,7 +25,7 @@ describe('ToggleSidebar', () => {
expect(findGlButton().props('icon')).toBe('chevron-double-lg-left');
});
- it('should render the "chevron-double-lg-right" icon when expanded', async () => {
+ it('should render the "chevron-double-lg-right" icon when expanded', () => {
createComponent({ props: { collapsed: false } });
expect(findGlButton().props('icon')).toBe('chevron-double-lg-right');
diff --git a/spec/frontend/snippets/components/edit_spec.js b/spec/frontend/snippets/components/edit_spec.js
index 0d0e78e9179..957cfc0bc22 100644
--- a/spec/frontend/snippets/components/edit_spec.js
+++ b/spec/frontend/snippets/components/edit_spec.js
@@ -256,7 +256,7 @@ describe('Snippet Edit app', () => {
VISIBILITY_LEVEL_PRIVATE_STRING,
VISIBILITY_LEVEL_INTERNAL_STRING,
VISIBILITY_LEVEL_PUBLIC_STRING,
- ])('marks %s visibility by default', async (visibility) => {
+ ])('marks %s visibility by default', (visibility) => {
createComponent({
props: { snippetGid: '' },
selectedLevel: visibility,
diff --git a/spec/frontend/snippets/components/snippet_header_spec.js b/spec/frontend/snippets/components/snippet_header_spec.js
index 994cf65c1f5..4bf64bfd3cd 100644
--- a/spec/frontend/snippets/components/snippet_header_spec.js
+++ b/spec/frontend/snippets/components/snippet_header_spec.js
@@ -256,7 +256,7 @@ describe('Snippet header component', () => {
});
describe('submit snippet as spam', () => {
- beforeEach(async () => {
+ beforeEach(() => {
createComponent();
});
diff --git a/spec/frontend/super_sidebar/components/user_bar_spec.js b/spec/frontend/super_sidebar/components/user_bar_spec.js
index f62104f4622..6da49b45829 100644
--- a/spec/frontend/super_sidebar/components/user_bar_spec.js
+++ b/spec/frontend/super_sidebar/components/user_bar_spec.js
@@ -138,7 +138,7 @@ describe('UserBar component', () => {
expect(tooltip.value).toBe(`Search GitLab <kbd>/</kbd>`);
});
- it('should render search modal', async () => {
+ it('should render search modal', () => {
expect(findSearchModal().exists()).toBe(true);
});
});
diff --git a/spec/frontend/surveys/merge_request_performance/app_spec.js b/spec/frontend/surveys/merge_request_performance/app_spec.js
index af91d8aeb6b..d03451c71a8 100644
--- a/spec/frontend/surveys/merge_request_performance/app_spec.js
+++ b/spec/frontend/surveys/merge_request_performance/app_spec.js
@@ -56,17 +56,17 @@ describe('MergeRequestExperienceSurveyApp', () => {
createWrapper();
});
- it('shows survey', async () => {
+ it('shows survey', () => {
expect(wrapper.html()).toContain('Overall, how satisfied are you with merge requests?');
expect(wrapper.findComponent(SatisfactionRate).exists()).toBe(true);
expect(wrapper.emitted().close).toBe(undefined);
});
- it('tracks render once', async () => {
+ it('tracks render once', () => {
expect(trackingSpy).toHaveBeenCalledWith(...createRenderTrackedArguments());
});
- it("doesn't track subsequent renders", async () => {
+ it("doesn't track subsequent renders", () => {
createWrapper();
expect(trackingSpy).toHaveBeenCalledWith(...createRenderTrackedArguments());
expect(trackingSpy).toHaveBeenCalledTimes(1);
@@ -77,15 +77,15 @@ describe('MergeRequestExperienceSurveyApp', () => {
findCloseButton().vm.$emit('click');
});
- it('triggers user callout on close', async () => {
+ it('triggers user callout on close', () => {
expect(dismiss).toHaveBeenCalledTimes(1);
});
- it('emits close event on close button click', async () => {
+ it('emits close event on close button click', () => {
expect(wrapper.emitted()).toMatchObject({ close: [[]] });
});
- it('tracks dismissal', async () => {
+ it('tracks dismissal', () => {
expect(trackingSpy).toHaveBeenCalledWith(undefined, 'survey:mr_experience', {
label: 'dismiss',
extra: {
@@ -94,7 +94,7 @@ describe('MergeRequestExperienceSurveyApp', () => {
});
});
- it('tracks subsequent renders', async () => {
+ it('tracks subsequent renders', () => {
createWrapper();
expect(trackingSpy.mock.calls).toEqual([
createRenderTrackedArguments(),
@@ -110,7 +110,7 @@ describe('MergeRequestExperienceSurveyApp', () => {
);
});
- it('dismisses user callout on survey rate', async () => {
+ it('dismisses user callout on survey rate', () => {
const rate = wrapper.findComponent(SatisfactionRate);
expect(dismiss).not.toHaveBeenCalled();
rate.vm.$emit('rate', 5);
@@ -126,7 +126,7 @@ describe('MergeRequestExperienceSurveyApp', () => {
);
});
- it('tracks survey rates', async () => {
+ it('tracks survey rates', () => {
const rate = wrapper.findComponent(SatisfactionRate);
rate.vm.$emit('rate', 5);
expect(trackingSpy).toHaveBeenCalledWith(undefined, 'survey:mr_experience', {
@@ -146,7 +146,7 @@ describe('MergeRequestExperienceSurveyApp', () => {
});
});
- it('shows legal note', async () => {
+ it('shows legal note', () => {
expect(wrapper.text()).toContain(
'By continuing, you acknowledge that responses will be used to improve GitLab and in accordance with the GitLab Privacy Policy.',
);
@@ -179,11 +179,11 @@ describe('MergeRequestExperienceSurveyApp', () => {
createWrapper({ shouldShowCallout: false });
});
- it('emits close event', async () => {
+ it('emits close event', () => {
expect(wrapper.emitted()).toMatchObject({ close: [[]] });
});
- it("doesn't track anything", async () => {
+ it("doesn't track anything", () => {
expect(trackingSpy).toHaveBeenCalledTimes(0);
});
});
@@ -195,12 +195,12 @@ describe('MergeRequestExperienceSurveyApp', () => {
document.dispatchEvent(event);
});
- it('emits close event', async () => {
+ it('emits close event', () => {
expect(wrapper.emitted()).toMatchObject({ close: [[]] });
expect(dismiss).toHaveBeenCalledTimes(1);
});
- it('tracks dismissal', async () => {
+ it('tracks dismissal', () => {
expect(trackingSpy).toHaveBeenCalledWith(undefined, 'survey:mr_experience', {
label: 'dismiss',
extra: {
diff --git a/spec/frontend/terraform/components/states_table_actions_spec.js b/spec/frontend/terraform/components/states_table_actions_spec.js
index 31a644b39b4..ed85825c13a 100644
--- a/spec/frontend/terraform/components/states_table_actions_spec.js
+++ b/spec/frontend/terraform/components/states_table_actions_spec.js
@@ -143,7 +143,7 @@ describe('StatesTableActions', () => {
return waitForPromises();
});
- it('opens the modal', async () => {
+ it('opens the modal', () => {
expect(findCopyModal().exists()).toBe(true);
expect(findCopyModal().isVisible()).toBe(true);
});
diff --git a/spec/frontend/test_setup.js b/spec/frontend/test_setup.js
index 03ce96bce5f..d3d3e5c8c72 100644
--- a/spec/frontend/test_setup.js
+++ b/spec/frontend/test_setup.js
@@ -22,5 +22,5 @@ afterEach(() =>
afterEach(async () => {
const dbs = await indexedDB.databases();
- await Promise.all(dbs.map(async (db) => indexedDB.deleteDatabase(db.name)));
+ await Promise.all(dbs.map((db) => indexedDB.deleteDatabase(db.name)));
});
diff --git a/spec/frontend/toggles/index_spec.js b/spec/frontend/toggles/index_spec.js
index 89e35991914..cccdf17a787 100644
--- a/spec/frontend/toggles/index_spec.js
+++ b/spec/frontend/toggles/index_spec.js
@@ -52,7 +52,7 @@ describe('toggles/index.js', () => {
initToggleWithOptions();
});
- it('attaches a GlToggle to the element', async () => {
+ it('attaches a GlToggle to the element', () => {
expect(toggleWrapper).not.toBe(null);
expect(toggleWrapper.querySelector(TOGGLE_LABEL_CLASS).textContent).toBe(toggleLabel);
});
diff --git a/spec/frontend/user_lists/components/edit_user_list_spec.js b/spec/frontend/user_lists/components/edit_user_list_spec.js
index 5f067d9de3c..b5eb6313bed 100644
--- a/spec/frontend/user_lists/components/edit_user_list_spec.js
+++ b/spec/frontend/user_lists/components/edit_user_list_spec.js
@@ -67,7 +67,7 @@ describe('user_lists/components/edit_user_list', () => {
expect(alert.text()).toContain(message);
});
- it('should not be dismissible', async () => {
+ it('should not be dismissible', () => {
expect(alert.props('dismissible')).toBe(false);
});
diff --git a/spec/frontend/user_lists/components/user_lists_spec.js b/spec/frontend/user_lists/components/user_lists_spec.js
index 603289ac11e..2da2eb0dd5f 100644
--- a/spec/frontend/user_lists/components/user_lists_spec.js
+++ b/spec/frontend/user_lists/components/user_lists_spec.js
@@ -82,7 +82,7 @@ describe('~/user_lists/components/user_lists.vue', () => {
emptyState = wrapper.findComponent(GlEmptyState);
});
- it('should render the empty state', async () => {
+ it('should render the empty state', () => {
expect(emptyState.exists()).toBe(true);
});
diff --git a/spec/frontend/user_popovers_spec.js b/spec/frontend/user_popovers_spec.js
index 3808cc8b0fc..7fc1bcbc936 100644
--- a/spec/frontend/user_popovers_spec.js
+++ b/spec/frontend/user_popovers_spec.js
@@ -97,7 +97,7 @@ describe('User Popovers', () => {
expect(findPopovers().length).toBe(linksWithUsers.length);
});
- it('for elements added after initial load', async () => {
+ it('for elements added after initial load', () => {
const addedLinks = [createUserLink(), createUserLink()];
addedLinks.forEach((link) => {
document.body.appendChild(link);
@@ -113,7 +113,7 @@ describe('User Popovers', () => {
});
});
- it('does not initialize the popovers for group references', async () => {
+ it('does not initialize the popovers for group references', () => {
const [groupLink] = Array.from(document.querySelectorAll('.js-user-link[data-group]'));
triggerEvent('mouseover', groupLink);
@@ -122,7 +122,7 @@ describe('User Popovers', () => {
expect(findPopovers().length).toBe(0);
});
- it('does not initialize the popovers for @all references', async () => {
+ it('does not initialize the popovers for @all references', () => {
const [projectLink] = Array.from(document.querySelectorAll('.js-user-link[data-project]'));
triggerEvent('mouseover', projectLink);
@@ -131,7 +131,7 @@ describe('User Popovers', () => {
expect(findPopovers().length).toBe(0);
});
- it('does not initialize the user popovers twice for the same element', async () => {
+ it('does not initialize the user popovers twice for the same element', () => {
const [firstUserLink] = findFixtureLinks();
triggerEvent('mouseover', firstUserLink);
jest.runOnlyPendingTimers();
diff --git a/spec/frontend/vue_shared/components/dropdown_keyboard_navigation_spec.js b/spec/frontend/vue_shared/components/dropdown_keyboard_navigation_spec.js
index ef42c17984a..b33a07b6af4 100644
--- a/spec/frontend/vue_shared/components/dropdown_keyboard_navigation_spec.js
+++ b/spec/frontend/vue_shared/components/dropdown_keyboard_navigation_spec.js
@@ -100,6 +100,25 @@ describe('DropdownKeyboardNavigation', () => {
describe.each`
keyboardAction | direction | index | max | min
+ ${helpers.arrowDown} | ${1} | ${10} | ${10} | ${0}
+ ${helpers.arrowUp} | ${-1} | ${0} | ${10} | ${0}
+ `(
+ 'moving out of bounds with cycle enabled',
+ ({ keyboardAction, direction, index, max, min }) => {
+ beforeEach(() => {
+ createComponent({ index, max, min, enableCycle: true });
+ keyboardAction();
+ });
+
+ it(`in ${direction} direction does $emit correct @change event`, () => {
+ // The first @change`call happens on created() so we test that we only have 1 call
+ expect(wrapper.emitted('change')[1]).toStrictEqual([direction === 1 ? min : max]);
+ });
+ },
+ );
+
+ describe.each`
+ keyboardAction | direction | index | max | min
${helpers.arrowDown} | ${1} | ${0} | ${10} | ${0}
${helpers.arrowUp} | ${-1} | ${10} | ${10} | ${0}
`('moving in bounds', ({ keyboardAction, direction, index, max, min }) => {
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index 9d28147bd74..7cf2de820fc 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -1364,6 +1364,7 @@ RSpec.describe ProjectsHelper, feature_category: :source_code_management do
allow(helper).to receive(:visible_fork_source).with(project).and_return(source_project)
allow(helper).to receive(:can_user_create_mr_in_fork).with(source_project).and_return(false)
+ allow(helper).to receive(:current_user).and_return(user)
ahead_path =
"/#{project.full_path}/-/compare/#{source_project.default_branch}...ref?from_project_id=#{source_project.id}"
@@ -1376,6 +1377,7 @@ RSpec.describe ProjectsHelper, feature_category: :source_code_management do
selected_branch: 'ref',
source_name: source_project.full_name,
source_path: project_path(source_project),
+ can_sync_branch: 'false',
ahead_compare_path: ahead_path,
behind_compare_path: behind_path,
source_default_branch: source_project.default_branch,
diff --git a/spec/lib/gitlab/database/schema_validation/database_spec.rb b/spec/lib/gitlab/database/schema_validation/database_spec.rb
index eadaf683a29..8fd98382625 100644
--- a/spec/lib/gitlab/database/schema_validation/database_spec.rb
+++ b/spec/lib/gitlab/database/schema_validation/database_spec.rb
@@ -2,109 +2,90 @@
require 'spec_helper'
-RSpec.describe Gitlab::Database::SchemaValidation::Database, feature_category: :database do
+RSpec.shared_examples 'database schema assertions for' do |fetch_by_name_method, exists_method, all_objects_method|
subject(:database) { described_class.new(connection) }
let(:database_model) { Gitlab::Database.database_base_models['main'] }
let(:connection) { database_model.connection }
- context 'when having indexes' do
- let(:schema_object) { Gitlab::Database::SchemaValidation::SchemaObjects::Index }
- let(:results) do
- [['index', 'CREATE UNIQUE INDEX "index" ON public.achievements USING btree (namespace_id, lower(name))']]
- end
+ before do
+ allow(connection).to receive(:select_rows).and_return(results)
+ allow(connection).to receive(:exec_query).and_return(results)
+ end
- before do
- allow(connection).to receive(:select_rows).and_return(results)
+ describe "##{fetch_by_name_method}" do
+ it 'returns nil when schema object does not exists' do
+ expect(database.public_send(fetch_by_name_method, 'invalid-object-name')).to be_nil
end
- describe '#fetch_index_by_name' do
- context 'when index does not exist' do
- it 'returns nil' do
- index = database.fetch_index_by_name('non_existing_index')
-
- expect(index).to be_nil
- end
- end
-
- it 'returns index by name' do
- index = database.fetch_index_by_name('index')
-
- expect(index.name).to eq('index')
- end
+ it 'returns the schema object by name' do
+ expect(database.public_send(fetch_by_name_method, valid_schema_object_name).name).to eq(valid_schema_object_name)
end
+ end
- describe '#index_exists?' do
- context 'when index exists' do
- it 'returns true' do
- index_exists = database.index_exists?('index')
+ describe "##{exists_method}" do
+ it 'returns true when schema object exists' do
+ expect(database.public_send(exists_method, valid_schema_object_name)).to be_truthy
+ end
- expect(index_exists).to be_truthy
- end
- end
+ it 'returns false when schema object does not exists' do
+ expect(database.public_send(exists_method, 'invalid-object')).to be_falsey
+ end
+ end
- context 'when index does not exist' do
- it 'returns false' do
- index_exists = database.index_exists?('non_existing_index')
+ describe "##{all_objects_method}" do
+ it 'returns all the schema objects' do
+ schema_objects = database.public_send(all_objects_method)
- expect(index_exists).to be_falsey
- end
- end
+ expect(schema_objects).to all(be_a(schema_object))
+ expect(schema_objects.map(&:name)).to eq([valid_schema_object_name])
end
+ end
+end
- describe '#indexes' do
- it 'returns indexes' do
- indexes = database.indexes
-
- expect(indexes).to all(be_a(schema_object))
- expect(indexes.map(&:name)).to eq(['index'])
- end
+RSpec.describe Gitlab::Database::SchemaValidation::Database, feature_category: :database do
+ context 'when having indexes' do
+ let(:schema_object) { Gitlab::Database::SchemaValidation::SchemaObjects::Index }
+ let(:valid_schema_object_name) { 'index' }
+ let(:results) do
+ [['index', 'CREATE UNIQUE INDEX "index" ON public.achievements USING btree (namespace_id, lower(name))']]
end
+
+ include_examples 'database schema assertions for', 'fetch_index_by_name', 'index_exists?', 'indexes'
end
context 'when having triggers' do
let(:schema_object) { Gitlab::Database::SchemaValidation::SchemaObjects::Trigger }
+ let(:valid_schema_object_name) { 'my_trigger' }
let(:results) do
- { 'my_trigger' => 'CREATE TRIGGER my_trigger BEFORE INSERT ON todos FOR EACH ROW EXECUTE FUNCTION trigger()' }
+ [['my_trigger', 'CREATE TRIGGER my_trigger BEFORE INSERT ON todos FOR EACH ROW EXECUTE FUNCTION trigger()']]
end
- before do
- allow(database).to receive(:fetch_triggers).and_return(results)
- end
-
- describe '#fetch_trigger_by_name' do
- context 'when trigger does not exist' do
- it 'returns nil' do
- expect(database.fetch_trigger_by_name('non_existing_trigger')).to be_nil
- end
- end
-
- it 'returns trigger by name' do
- expect(database.fetch_trigger_by_name('my_trigger').name).to eq('my_trigger')
- end
- end
+ include_examples 'database schema assertions for', 'fetch_trigger_by_name', 'trigger_exists?', 'triggers'
+ end
- describe '#trigger_exists?' do
- context 'when trigger exists' do
- it 'returns true' do
- expect(database.trigger_exists?('my_trigger')).to be_truthy
- end
- end
-
- context 'when trigger does not exist' do
- it 'returns false' do
- expect(database.trigger_exists?('non_existing_trigger')).to be_falsey
- end
- end
+ context 'when having tables' do
+ let(:schema_object) { Gitlab::Database::SchemaValidation::SchemaObjects::Table }
+ let(:valid_schema_object_name) { 'my_table' }
+ let(:results) do
+ [
+ {
+ 'table_name' => 'my_table',
+ 'column_name' => 'id',
+ 'not_null' => true,
+ 'data_type' => 'bigint',
+ 'column_default' => "nextval('audit_events_id_seq'::regclass)"
+ },
+ {
+ 'table_name' => 'my_table',
+ 'column_name' => 'details',
+ 'not_null' => false,
+ 'data_type' => 'text',
+ 'column_default' => nil
+ }
+ ]
end
- describe '#triggers' do
- it 'returns triggers' do
- triggers = database.triggers
-
- expect(triggers).to all(be_a(schema_object))
- expect(triggers.map(&:name)).to eq(['my_trigger'])
- end
- end
+ include_examples 'database schema assertions for', 'fetch_table_by_name', 'table_exists?', 'tables'
end
end
diff --git a/spec/lib/gitlab/database/schema_validation/schema_objects/table_spec.rb b/spec/lib/gitlab/database/schema_validation/schema_objects/table_spec.rb
new file mode 100644
index 00000000000..7df37763643
--- /dev/null
+++ b/spec/lib/gitlab/database/schema_validation/schema_objects/table_spec.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Database::SchemaValidation::SchemaObjects::Table, feature_category: :database do
+ subject(:table) { described_class.new(name) }
+
+ let(:name) { 'my_table' }
+
+ describe '#name' do
+ it { expect(table.name).to eq('my_table') }
+ end
+
+ describe '#table_name' do
+ it { expect(table.table_name).to eq('my_table') }
+ end
+end
diff --git a/spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb b/spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb
index cc0bd4125ef..b0c056ff5db 100644
--- a/spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb
+++ b/spec/lib/gitlab/database/schema_validation/structure_sql_spec.rb
@@ -2,81 +2,65 @@
require 'spec_helper'
-RSpec.describe Gitlab::Database::SchemaValidation::StructureSql, feature_category: :database do
- let(:structure_file_path) { Rails.root.join('spec/fixtures/structure.sql') }
- let(:schema_name) { 'public' }
-
+RSpec.shared_examples 'structure sql schema assertions for' do |object_exists_method, all_objects_method|
subject(:structure_sql) { described_class.new(structure_file_path, schema_name) }
- context 'when having indexes' do
- describe '#index_exists?' do
- subject(:index_exists) { structure_sql.index_exists?(index_name) }
+ let(:structure_file_path) { Rails.root.join('spec/fixtures/structure.sql') }
+ let(:schema_name) { 'public' }
- context 'when the index does not exist' do
- let(:index_name) { 'non-existent-index' }
+ describe "##{object_exists_method}" do
+ it 'returns true when schema object exists' do
+ expect(structure_sql.public_send(object_exists_method, valid_schema_object_name)).to be_truthy
+ end
- it 'returns false' do
- expect(index_exists).to be_falsey
- end
- end
+ it 'returns false when schema object does not exists' do
+ expect(structure_sql.public_send(object_exists_method, 'invalid-object-name')).to be_falsey
+ end
+ end
- context 'when the index exists' do
- let(:index_name) { 'index' }
+ describe "##{all_objects_method}" do
+ it 'returns all the schema objects' do
+ schema_objects = structure_sql.public_send(all_objects_method)
- it 'returns true' do
- expect(index_exists).to be_truthy
- end
- end
+ expect(schema_objects).to all(be_a(schema_object))
+ expect(schema_objects.map(&:name)).to eq(expected_objects)
end
+ end
+end
- describe '#indexes' do
- it 'returns indexes' do
- indexes = structure_sql.indexes
+RSpec.describe Gitlab::Database::SchemaValidation::StructureSql, feature_category: :database do
+ let(:structure_file_path) { Rails.root.join('spec/fixtures/structure.sql') }
+ let(:schema_name) { 'public' }
- expected_indexes = %w[
- missing_index
- wrong_index
- index
- index_namespaces_public_groups_name_id
- index_on_deploy_keys_id_and_type_and_public
- index_users_on_public_email_excluding_null_and_empty
- ]
+ subject(:structure_sql) { described_class.new(structure_file_path, schema_name) }
- expect(indexes).to all(be_a(Gitlab::Database::SchemaValidation::SchemaObjects::Index))
- expect(indexes.map(&:name)).to eq(expected_indexes)
- end
+ context 'when having indexes' do
+ let(:schema_object) { Gitlab::Database::SchemaValidation::SchemaObjects::Index }
+ let(:valid_schema_object_name) { 'index' }
+ let(:expected_objects) do
+ %w[missing_index wrong_index index index_namespaces_public_groups_name_id
+ index_on_deploy_keys_id_and_type_and_public index_users_on_public_email_excluding_null_and_empty]
end
+
+ include_examples 'structure sql schema assertions for', 'index_exists?', 'indexes'
end
context 'when having triggers' do
- describe '#trigger_exists?' do
- subject(:trigger_exists) { structure_sql.trigger_exists?(name) }
+ let(:schema_object) { Gitlab::Database::SchemaValidation::SchemaObjects::Trigger }
+ let(:valid_schema_object_name) { 'trigger' }
+ let(:expected_objects) { %w[trigger wrong_trigger missing_trigger_1 projects_loose_fk_trigger] }
- context 'when the trigger does not exist' do
- let(:name) { 'non-existent-trigger' }
-
- it 'returns false' do
- expect(trigger_exists).to be_falsey
- end
- end
-
- context 'when the trigger exists' do
- let(:name) { 'trigger' }
+ include_examples 'structure sql schema assertions for', 'trigger_exists?', 'triggers'
+ end
- it 'returns true' do
- expect(trigger_exists).to be_truthy
- end
- end
+ context 'when having tables' do
+ let(:schema_object) { Gitlab::Database::SchemaValidation::SchemaObjects::Table }
+ let(:valid_schema_object_name) { 'test_table' }
+ let(:expected_objects) do
+ %w[test_table ci_project_mirrors wrong_table extra_table_columns missing_table missing_table_columns
+ operations_user_lists]
end
- describe '#triggers' do
- it 'returns triggers' do
- triggers = structure_sql.triggers
- expected_triggers = %w[trigger wrong_trigger missing_trigger_1 projects_loose_fk_trigger]
-
- expect(triggers).to all(be_a(Gitlab::Database::SchemaValidation::SchemaObjects::Trigger))
- expect(triggers.map(&:name)).to eq(expected_triggers)
- end
- end
+ include_examples 'structure sql schema assertions for', 'table_exists?', 'tables'
end
end
diff --git a/spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb b/spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb
index 2f38c25cf68..1ee69edda62 100644
--- a/spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb
+++ b/spec/lib/gitlab/database/schema_validation/validators/base_validator_spec.rb
@@ -8,8 +8,10 @@ RSpec.describe Gitlab::Database::SchemaValidation::Validators::BaseValidator, fe
it 'returns an array of all validators' do
expect(all_validators).to eq([
+ Gitlab::Database::SchemaValidation::Validators::ExtraTables,
Gitlab::Database::SchemaValidation::Validators::ExtraIndexes,
Gitlab::Database::SchemaValidation::Validators::ExtraTriggers,
+ Gitlab::Database::SchemaValidation::Validators::MissingTables,
Gitlab::Database::SchemaValidation::Validators::MissingIndexes,
Gitlab::Database::SchemaValidation::Validators::MissingTriggers,
Gitlab::Database::SchemaValidation::Validators::DifferentDefinitionIndexes,
diff --git a/spec/lib/gitlab/database/schema_validation/validators/extra_tables_spec.rb b/spec/lib/gitlab/database/schema_validation/validators/extra_tables_spec.rb
new file mode 100644
index 00000000000..edaf79e3c93
--- /dev/null
+++ b/spec/lib/gitlab/database/schema_validation/validators/extra_tables_spec.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Database::SchemaValidation::Validators::ExtraTables, feature_category: :database do
+ include_examples 'table validators', described_class, ['extra_table']
+end
diff --git a/spec/lib/gitlab/database/schema_validation/validators/missing_tables_spec.rb b/spec/lib/gitlab/database/schema_validation/validators/missing_tables_spec.rb
new file mode 100644
index 00000000000..7c80923e860
--- /dev/null
+++ b/spec/lib/gitlab/database/schema_validation/validators/missing_tables_spec.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Database::SchemaValidation::Validators::MissingTables, feature_category: :database do
+ missing_tables = %w[ci_project_mirrors missing_table operations_user_lists test_table]
+
+ include_examples 'table validators', described_class, missing_tables
+end
diff --git a/spec/lib/gitlab/email/hook/silent_mode_interceptor_spec.rb b/spec/lib/gitlab/email/hook/silent_mode_interceptor_spec.rb
new file mode 100644
index 00000000000..cc371643bee
--- /dev/null
+++ b/spec/lib/gitlab/email/hook/silent_mode_interceptor_spec.rb
@@ -0,0 +1,74 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Email::Hook::SilentModeInterceptor, :mailer, feature_category: :geo_replication do
+ let_it_be(:user) { create(:user) }
+
+ before do
+ Mail.register_interceptor(described_class)
+ end
+
+ after do
+ Mail.unregister_interceptor(described_class)
+ end
+
+ context 'when silent mode is enabled' do
+ it 'prevents mail delivery' do
+ stub_application_setting(silent_mode_enabled: true)
+
+ deliver_mails(user)
+
+ should_not_email_anyone
+ end
+
+ it 'logs the suppression' do
+ stub_application_setting(silent_mode_enabled: true)
+
+ expect(Gitlab::AppJsonLogger).to receive(:info).with(
+ message: 'SilentModeInterceptor prevented sending mail',
+ mail_subject: 'Two-factor authentication disabled',
+ silent_mode_enabled: true
+ )
+ expect(Gitlab::AppJsonLogger).to receive(:info).with(
+ message: 'SilentModeInterceptor prevented sending mail',
+ mail_subject: 'Welcome to GitLab!',
+ silent_mode_enabled: true
+ )
+
+ deliver_mails(user)
+ end
+ end
+
+ context 'when silent mode is disabled' do
+ it 'does not prevent mail delivery' do
+ stub_application_setting(silent_mode_enabled: false)
+
+ deliver_mails(user)
+
+ should_email(user, times: 2)
+ end
+
+ it 'debug logs the no-op' do
+ stub_application_setting(silent_mode_enabled: false)
+
+ expect(Gitlab::AppJsonLogger).to receive(:debug).with(
+ message: 'SilentModeInterceptor did nothing',
+ mail_subject: 'Two-factor authentication disabled',
+ silent_mode_enabled: false
+ )
+ expect(Gitlab::AppJsonLogger).to receive(:debug).with(
+ message: 'SilentModeInterceptor did nothing',
+ mail_subject: 'Welcome to GitLab!',
+ silent_mode_enabled: false
+ )
+
+ deliver_mails(user)
+ end
+ end
+
+ def deliver_mails(user)
+ Notify.disabled_two_factor_email(user).deliver_now
+ DeviseMailer.user_admin_approval(user).deliver_now
+ end
+end
diff --git a/spec/lib/gitlab/error_tracking_spec.rb b/spec/lib/gitlab/error_tracking_spec.rb
index 0f056ee9eac..79016335a40 100644
--- a/spec/lib/gitlab/error_tracking_spec.rb
+++ b/spec/lib/gitlab/error_tracking_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
require 'raven/transports/dummy'
require 'sentry/transport/dummy_transport'
-RSpec.describe Gitlab::ErrorTracking do
+RSpec.describe Gitlab::ErrorTracking, feature_category: :shared do
let(:exception) { RuntimeError.new('boom') }
let(:issue_url) { 'http://gitlab.com/gitlab-org/gitlab-foss/issues/1' }
let(:extra) { { issue_url: issue_url, some_other_info: 'info' } }
@@ -58,7 +58,7 @@ RSpec.describe Gitlab::ErrorTracking do
stub_feature_flags(enable_new_sentry_integration: true)
stub_sentry_settings
- allow(described_class).to receive(:sentry_configurable?) { true }
+ allow(described_class).to receive(:sentry_configurable?).and_return(true)
allow(Labkit::Correlation::CorrelationId).to receive(:current_id).and_return('cid')
allow(I18n).to receive(:locale).and_return('en')
@@ -82,7 +82,7 @@ RSpec.describe Gitlab::ErrorTracking do
describe '.track_and_raise_for_dev_exception' do
context 'when exceptions for dev should be raised' do
before do
- expect(described_class).to receive(:should_raise_for_dev?).and_return(true)
+ allow(described_class).to receive(:should_raise_for_dev?).and_return(true)
end
it 'raises the exception' do
@@ -101,7 +101,7 @@ RSpec.describe Gitlab::ErrorTracking do
context 'when exceptions for dev should not be raised' do
before do
- expect(described_class).to receive(:should_raise_for_dev?).and_return(false)
+ allow(described_class).to receive(:should_raise_for_dev?).and_return(false)
end
it 'logs the exception with all attributes passed' do
@@ -219,7 +219,7 @@ RSpec.describe Gitlab::ErrorTracking do
end
end
- context 'the exception implements :sentry_extra_data' do
+ context 'when the exception implements :sentry_extra_data' do
let(:extra_info) { { event: 'explosion', size: :massive } }
before do
@@ -239,7 +239,7 @@ RSpec.describe Gitlab::ErrorTracking do
end
end
- context 'the exception implements :sentry_extra_data, which returns nil' do
+ context 'when the exception implements :sentry_extra_data, which returns nil' do
let(:extra) { { issue_url: issue_url } }
before do
@@ -260,7 +260,7 @@ RSpec.describe Gitlab::ErrorTracking do
end
end
- context 'event processors' do
+ describe 'event processors' do
subject(:track_exception) { described_class.track_exception(exception, extra) }
before do
@@ -269,7 +269,16 @@ RSpec.describe Gitlab::ErrorTracking do
allow(Gitlab::ErrorTracking::Logger).to receive(:error)
end
- context 'custom GitLab context when using Raven.capture_exception directly' do
+ # This is a workaround for restoring Raven's user context below.
+ # Raven.user_context(&block) does not restore the user context correctly.
+ around do |example|
+ previous_user_context = Raven.context.user.dup
+ example.run
+ ensure
+ Raven.context.user = previous_user_context
+ end
+
+ context 'with custom GitLab context when using Raven.capture_exception directly' do
subject(:track_exception) { Raven.capture_exception(exception) }
it 'merges a default set of tags into the existing tags' do
@@ -289,7 +298,7 @@ RSpec.describe Gitlab::ErrorTracking do
end
end
- context 'custom GitLab context when using Sentry.capture_exception directly' do
+ context 'with custom GitLab context when using Sentry.capture_exception directly' do
subject(:track_exception) { Sentry.capture_exception(exception) }
it 'merges a default set of tags into the existing tags' do
@@ -401,15 +410,17 @@ RSpec.describe Gitlab::ErrorTracking do
end
['Gitlab::SidekiqMiddleware::RetryError', 'SubclassRetryError'].each do |ex|
- let(:exception) { ex.constantize.new }
+ context "with #{ex} exception" do
+ let(:exception) { ex.constantize.new }
- it "does not report #{ex} exception to Sentry" do
- expect(Gitlab::ErrorTracking::Logger).to receive(:error)
+ it "does not report exception to Sentry" do
+ expect(Gitlab::ErrorTracking::Logger).to receive(:error)
- track_exception
+ track_exception
- expect(Raven.client.transport.events).to eq([])
- expect(Sentry.get_current_client.transport.events).to eq([])
+ expect(Raven.client.transport.events).to eq([])
+ expect(Sentry.get_current_client.transport.events).to eq([])
+ end
end
end
end
@@ -491,7 +502,7 @@ RSpec.describe Gitlab::ErrorTracking do
end
end
- context 'Sentry performance monitoring' do
+ describe 'Sentry performance monitoring' do
context 'when ENABLE_SENTRY_PERFORMANCE_MONITORING env is disabled' do
before do
stub_env('ENABLE_SENTRY_PERFORMANCE_MONITORING', false)
diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb
index 9130e8a741c..16a1ce9ccaa 100644
--- a/spec/models/application_setting_spec.rb
+++ b/spec/models/application_setting_spec.rb
@@ -274,6 +274,9 @@ RSpec.describe ApplicationSetting, feature_category: :shared, type: :model do
it { is_expected.to allow_value(nil).for(:database_apdex_settings) }
it { is_expected.to allow_value(valid_database_apdex_settings).for(:database_apdex_settings) }
+ it { is_expected.to allow_value([true, false]).for(:silent_mode_enabled) }
+ it { is_expected.not_to allow_value(nil).for(:silent_mode_enabled) }
+
context 'when deactivate_dormant_users is enabled' do
before do
stub_application_setting(deactivate_dormant_users: true)
diff --git a/spec/models/ci/build_report_result_spec.rb b/spec/models/ci/build_report_result_spec.rb
index 90b23d3e824..90426f60c73 100644
--- a/spec/models/ci/build_report_result_spec.rb
+++ b/spec/models/ci/build_report_result_spec.rb
@@ -33,6 +33,19 @@ RSpec.describe Ci::BuildReportResult do
expect(build_report_result.errors.full_messages).to eq(["Data must be a valid json schema"])
end
end
+
+ context 'when data tests is invalid' do
+ it 'returns errors' do
+ build_report_result.data = {
+ 'tests' => {
+ 'invalid' => 'invalid'
+ }
+ }
+
+ expect(build_report_result).to be_invalid
+ expect(build_report_result.errors.full_messages).to eq(["Data must be a valid json schema"])
+ end
+ end
end
describe '#tests_name' do
diff --git a/spec/requests/api/graphql/mutations/projects/sync_fork_spec.rb b/spec/requests/api/graphql/mutations/projects/sync_fork_spec.rb
index a77c026dd06..21977b1653e 100644
--- a/spec/requests/api/graphql/mutations/projects/sync_fork_spec.rb
+++ b/spec/requests/api/graphql/mutations/projects/sync_fork_spec.rb
@@ -50,6 +50,20 @@ RSpec.describe "Sync project fork", feature_category: :source_code_management do
end
end
+ context 'when the branch is protected', :use_clean_rails_redis_caching do
+ let_it_be(:protected_branch) do
+ create(:protected_branch, :no_one_can_push, :no_one_can_merge, project: project, name: target_branch)
+ end
+
+ it_behaves_like 'a mutation that returns a top-level access error'
+
+ it 'does not call the sync service' do
+ expect(::Projects::Forks::SyncWorker).not_to receive(:perform_async)
+
+ post_graphql_mutation(mutation, current_user: current_user)
+ end
+ end
+
context 'when the user does not have permission' do
let_it_be(:current_user) { create(:user) }
diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb
index e91d777bfb0..e161cc7e03f 100644
--- a/spec/requests/api/settings_spec.rb
+++ b/spec/requests/api/settings_spec.rb
@@ -68,6 +68,7 @@ RSpec.describe API::Settings, 'Settings', :do_not_mock_admin_mode_setting, featu
expect(json_response['user_defaults_to_private_profile']).to eq(false)
expect(json_response['default_syntax_highlighting_theme']).to eq(1)
expect(json_response['projects_api_rate_limit_unauthenticated']).to eq(400)
+ expect(json_response['silent_mode_enabled']).to be(false)
end
end
@@ -173,7 +174,8 @@ RSpec.describe API::Settings, 'Settings', :do_not_mock_admin_mode_setting, featu
allow_runner_registration_token: true,
user_defaults_to_private_profile: true,
default_syntax_highlighting_theme: 2,
- projects_api_rate_limit_unauthenticated: 100
+ projects_api_rate_limit_unauthenticated: 100,
+ silent_mode_enabled: true
}
expect(response).to have_gitlab_http_status(:ok)
@@ -243,6 +245,7 @@ RSpec.describe API::Settings, 'Settings', :do_not_mock_admin_mode_setting, featu
expect(json_response['user_defaults_to_private_profile']).to be(true)
expect(json_response['default_syntax_highlighting_theme']).to eq(2)
expect(json_response['projects_api_rate_limit_unauthenticated']).to be(100)
+ expect(json_response['silent_mode_enabled']).to be(true)
end
end
diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml
index 393f084ee97..a767ae69653 100644
--- a/spec/support/rspec_order_todo.yml
+++ b/spec/support/rspec_order_todo.yml
@@ -6430,7 +6430,6 @@
- './spec/lib/gitlab/error_tracking/processor/sanitize_error_message_processor_spec.rb'
- './spec/lib/gitlab/error_tracking/processor/sanitizer_processor_spec.rb'
- './spec/lib/gitlab/error_tracking/processor/sidekiq_processor_spec.rb'
-- './spec/lib/gitlab/error_tracking_spec.rb'
- './spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb'
- './spec/lib/gitlab/etag_caching/middleware_spec.rb'
- './spec/lib/gitlab/etag_caching/router/graphql_spec.rb'
diff --git a/spec/support/shared_examples/lib/gitlab/database/table_validators_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/database/table_validators_shared_examples.rb
new file mode 100644
index 00000000000..96e58294675
--- /dev/null
+++ b/spec/support/shared_examples/lib/gitlab/database/table_validators_shared_examples.rb
@@ -0,0 +1,84 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.shared_examples "table validators" do |validator, expected_result|
+ subject(:result) { validator.new(structure_file, database).execute }
+
+ let(:structure_file_path) { Rails.root.join('spec/fixtures/structure.sql') }
+ let(:inconsistency_type) { validator.name.demodulize.underscore }
+ let(:database_model) { Gitlab::Database.database_base_models['main'] }
+ let(:connection) { database_model.connection }
+ let(:schema) { connection.current_schema }
+ let(:database) { Gitlab::Database::SchemaValidation::Database.new(connection) }
+ let(:structure_file) { Gitlab::Database::SchemaValidation::StructureSql.new(structure_file_path, schema) }
+ let(:database_tables) do
+ [
+ {
+ 'table_name' => 'wrong_table',
+ 'column_name' => 'id',
+ 'not_null' => true,
+ 'data_type' => 'integer',
+ 'column_default' => "nextval('audit_events_id_seq'::regclass)"
+ },
+ {
+ 'table_name' => 'wrong_table',
+ 'column_name' => 'description',
+ 'not_null' => true,
+ 'data_type' => 'character varying',
+ 'column_default' => nil
+ },
+ {
+ 'table_name' => 'extra_table',
+ 'column_name' => 'id',
+ 'not_null' => true,
+ 'data_type' => 'integer',
+ 'column_default' => "nextval('audit_events_id_seq'::regclass)"
+ },
+ {
+ 'table_name' => 'extra_table',
+ 'column_name' => 'email',
+ 'not_null' => true,
+ 'data_type' => 'character varying',
+ 'column_default' => nil
+ },
+ {
+ 'table_name' => 'extra_table_columns',
+ 'column_name' => 'id',
+ 'not_null' => true,
+ 'data_type' => 'bigint',
+ 'column_default' => "nextval('audit_events_id_seq'::regclass)"
+ },
+ {
+ 'table_name' => 'extra_table_columns',
+ 'column_name' => 'name',
+ 'not_null' => true,
+ 'data_type' => 'character varying(255)',
+ 'column_default' => nil
+ },
+ {
+ 'table_name' => 'extra_table_columns',
+ 'column_name' => 'extra_column',
+ 'not_null' => true,
+ 'data_type' => 'character varying(255)',
+ 'column_default' => nil
+ },
+ {
+ 'table_name' => 'missing_table_columns',
+ 'column_name' => 'id',
+ 'not_null' => true,
+ 'data_type' => 'bigint',
+ 'column_default' => 'NOT NULL'
+ }
+ ]
+ end
+
+ before do
+ allow(connection).to receive(:exec_query).and_return(database_tables)
+ end
+
+ it 'returns table inconsistencies' do
+ expect(result.map(&:object_name)).to match_array(expected_result)
+ expect(result.map(&:type)).to all(eql inconsistency_type)
+ end
+end