diff --git a/CHANGELOG.md b/CHANGELOG.md
index b787d9ace7d..5e40467bced 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,730 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
+## 17.5.0 (2024-10-16)
+
+### Added (145 changes)
+
+- [Add X-Forwarded-To to allowed headers for email ingestion](https://gitlab.com/gitlab-org/gitlab/-/commit/e50f934dc3bcb7e1a9d85680d9c54a8ce8faebb1) by @divyamtayal ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168716))
+- [Search API: Merge request support for title search_as_you_type](https://gitlab.com/gitlab-org/gitlab/-/commit/9e0d5caa5d6e07e2868a82a31b24862e06b46ee7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167432)) **GitLab Enterprise Edition**
+- [Added the group select to the global timelogs report](https://gitlab.com/gitlab-org/gitlab/-/commit/9b4ed0b57d5cab002520a4fd8c9190ee5ccca459) by @zillemarco ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167238))
+- [Add global work item epics feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/41c10350edd29e5046670756c9844fb0969fa6e6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168943)) **GitLab Enterprise Edition**
+- [Add support for updating abuse report notes](https://gitlab.com/gitlab-org/gitlab/-/commit/25369ba6fa9a66000d8e12d9afd73e29470814f8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167011))
+- [Audit merged MRs](https://gitlab.com/gitlab-org/gitlab/-/commit/de051e539c6f4cf1c26b9035fd2ccf17aec9b370) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164846)) **GitLab Enterprise Edition**
+- [Add user level AI metrics API](https://gitlab.com/gitlab-org/gitlab/-/commit/838ccd4fb0c806464bced8feea26766888b98147) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166745)) **GitLab Enterprise Edition**
+- [Reschedule BackfillPCiRunnerMachineBuildsProjectId migration](https://gitlab.com/gitlab-org/gitlab/-/commit/f447557e7b893457927711f9d856dc3bdb35c61d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168420))
+- [Backfill runner_type, sharding_key_id columns on ci_runner_machines](https://gitlab.com/gitlab-org/gitlab/-/commit/a71538127ac2aafe0c8e9f3ffb92648811a28dd9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168651))
+- [Add sharding key ci_pipeline_chat_data.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/d28b07c40ab58a4e2663847af820c0e21032770d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167729))
+- [Add customize jira issue setting](https://gitlab.com/gitlab-org/gitlab/-/commit/ea22e7d7e6f3d01e32b3bb7029e46d3a3892d76c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164802)) **GitLab Enterprise Edition**
+- [Create todos for expired SSH keys](https://gitlab.com/gitlab-org/gitlab/-/commit/dd9383c7162eec67bf62bcc5a9b7fbfff6768f93) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166168))
+- [Implement project compliance center](https://gitlab.com/gitlab-org/gitlab/-/commit/daa6a9a5119f0d49e6b14458fcf4125dc6bed5f8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168318)) **GitLab Enterprise Edition**
+- [Add search button back to the header gated by feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/e284b809076fbe43661ae47f9bf69461e41503a1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165526))
+- [History rewrite: send emails after asynchronous processing](https://gitlab.com/gitlab-org/gitlab/-/commit/d0d6a197f7b255df2d2ff6390f5254dde48d47f9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167473))
+- [Add Project.projectComplianceStandardsAdherence field](https://gitlab.com/gitlab-org/gitlab/-/commit/89007ca5a4a74eedfe72616c41e86b8c671b333c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168299)) **GitLab Enterprise Edition**
+- [Add Project.projectComplianceStandardsAdherence field](https://gitlab.com/gitlab-org/gitlab/-/commit/9085b0ab5c92206855208e05007078697f84e6e4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168260)) **GitLab Enterprise Edition**
+- [Allow disabling password auth for SSO users](https://gitlab.com/gitlab-org/gitlab/-/commit/688786b4c616ed7f93c8eb4165439427c8200df3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168111))
+- [Add download button to a health-check page](https://gitlab.com/gitlab-org/gitlab/-/commit/ec0b84cfb03cbadfe22084071a5c212394b1d351) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165032)) **GitLab Enterprise Edition**
+- [Release project-level security exclusions feature](https://gitlab.com/gitlab-org/gitlab/-/commit/c1a49219c245e528a81f71ae1b3f9af1c4d36379) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168271)) **GitLab Enterprise Edition**
+- [Directly ingest emails by custom email in To header](https://gitlab.com/gitlab-org/gitlab/-/commit/29da1cc92ddebfb4bf90694a52d376213a274a8e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167770))
+- [Add migrate_memberships to BulkImportEntities](https://gitlab.com/gitlab-org/gitlab/-/commit/21653f70ac61f2abf70a5f3fb2023aa961ceaa3e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168128))
+- [Ignore column vulnerablity_count in project_statistics table](https://gitlab.com/gitlab-org/gitlab/-/commit/c4c510e6bc99e3c6f074986a01c929304168b4e3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168284))
+- [Add custom license to license widget](https://gitlab.com/gitlab-org/gitlab/-/commit/f6762215a74d672c8ed4e5a3e12c1a4ca5e55457) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162488)) **GitLab Enterprise Edition**
+- [Update Saml NameID related authentication errors](https://gitlab.com/gitlab-org/gitlab/-/commit/720dad3842fd826c925c379a2600b989e1bc035f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168353)) **GitLab Enterprise Edition**
+- [Add /help slash command](https://gitlab.com/gitlab-org/gitlab/-/commit/647bf92af43d1d0507018fffbc7cfcc486770f17) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167876)) **GitLab Enterprise Edition**
+- [Integrate SD Exclusions with Scan Diffs feature](https://gitlab.com/gitlab-org/gitlab/-/commit/1eaff0b8c33107d5f95f455c6557f548b8b8bbdf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168364)) **GitLab Enterprise Edition**
+- [Create audit event for container_repository_created](https://gitlab.com/gitlab-org/gitlab/-/commit/f146d9f2eab1f1d2c67f618d4fb21888ad390948) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156037)) **GitLab Enterprise Edition**
+- [Document new API endpoint `POST /deploy_keys`](https://gitlab.com/gitlab-org/gitlab/-/commit/a0bacc4da1ce546ba5b68c1908633ee88e90d2c0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167873))
+- [Pull mirror API: extend response with mirror related fields](https://gitlab.com/gitlab-org/gitlab/-/commit/a2929c517696b305f94742b0d1e5b60c3ba04944) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168377))
+- [Add update event handler for security policies](https://gitlab.com/gitlab-org/gitlab/-/commit/5f343163d5f088335663e3f82de6a64cfd5f857e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165572)) **GitLab Enterprise Edition**
+- [Persist additional context in chat history](https://gitlab.com/gitlab-org/gitlab/-/commit/215d12834c623de975e0f277fea9a95c15cf4928) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168127)) **GitLab Enterprise Edition**
+- [Model registry: Metrics for pull and push package](https://gitlab.com/gitlab-org/gitlab/-/commit/4064bf4d8fb245ec782adda654d08e3a2ca2531c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167298))
+- [Add runner_type, sharding_key_id columns to ci_runner_machines](https://gitlab.com/gitlab-org/gitlab/-/commit/51f67409e49062f7340930b35edb835a7079fae4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168069))
+- [Allow setting of weight on work item create](https://gitlab.com/gitlab-org/gitlab/-/commit/9c799b3ed901179eceb0cce2242e4ad66d2b4074) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168475)) **GitLab Enterprise Edition**
+- [Restoration of object storage through gitlab-backup-cli](https://gitlab.com/gitlab-org/gitlab/-/commit/b6b9c6b9387e9250bff23f79ad7c71d0a0d41e2e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163389))
+- [Add FK on events.personal_namespace_id](https://gitlab.com/gitlab-org/gitlab/-/commit/1829084aa298519b35ee81e067b007eef886c1be) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168320))
+- [Create AbuseReportLabelType GraphQL type](https://gitlab.com/gitlab-org/gitlab/-/commit/30968b5187756fc0f171334ef52ab429778e39b3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168473))
+- [Changed feature flag type from wip to beta](https://gitlab.com/gitlab-org/gitlab/-/commit/cbb6bcb6b262e4480e2ccf27fd00419da3d6b97a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167757)) **GitLab Enterprise Edition**
+- [Introduce notes and notes_internal to WorkItems](https://gitlab.com/gitlab-org/gitlab/-/commit/64db46386933e53321994d4a1a20424f8b153ce4) by @joe-snyder ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168216)) **GitLab Enterprise Edition**
+- [Changes for allowed_email_domain update audit event](https://gitlab.com/gitlab-org/gitlab/-/commit/7a76a2c665caddc38cbdc2011fe9d1b3e72f871a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166105))
+- [Add migration and model for max retries and backoff](https://gitlab.com/gitlab-org/gitlab/-/commit/4a0d167477daf555cc89079cd64baa5407b92f36) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166119))
+- [Added service ping metric for member management enabled](https://gitlab.com/gitlab-org/gitlab/-/commit/e02f9dc1a6bf952ff91377c82415d5e1661c8941) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168096)) **GitLab Enterprise Edition**
+- [Add members activity tracker worker](https://gitlab.com/gitlab-org/gitlab/-/commit/5911fc82d8f0cec1190028771f870640132fa171) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167423)) **GitLab Enterprise Edition**
+- [Show location and ISP in sign in from new location email](https://gitlab.com/gitlab-org/gitlab/-/commit/d6be7a24f833a2f000e903ddfd4516c2a19bf931) by @shangsuru ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163914))
+- [Add project.mergeRequestViolations field on project type](https://gitlab.com/gitlab-org/gitlab/-/commit/163bd7a56baefa7d323c5d8bd331c9f34723081f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158884)) **GitLab Enterprise Edition**
+- [Added new table and API for Workflow Events](https://gitlab.com/gitlab-org/gitlab/-/commit/d2397278ebfae0ec323400fd9926ad473428cc25) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166397)) **GitLab Enterprise Edition**
+- [Enable edit_branch_rules feature falg by default](https://gitlab.com/gitlab-org/gitlab/-/commit/724653c4d4cc9883ce18049be5625d2965ddb032) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166654))
+- [Add job_token_policies column to CI job token allowlist](https://gitlab.com/gitlab-org/gitlab/-/commit/1156ad38b4faa8ea70735876dec644f1378cda02) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166688))
+- [Add work_item_epics_ssot feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/e29682b09ab497bacdfcebfdcda0d256e7d344f1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168174)) **GitLab Enterprise Edition**
+- [Update GitLab Pages version](https://gitlab.com/gitlab-org/gitlab/-/commit/59f33e5fdacad2fc90f78c11725314e168787178) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168202))
+- [Alert success or file errors with model/version creation](https://gitlab.com/gitlab-org/gitlab/-/commit/c1ff9fc04813bb0a2bf759ef7d82f20c5372550c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166479))
+- [Remove pypi_extract_pypi_package_model feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/85d5be158023e45cc1bc6c7a217a3c44afae6f47) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167762))
+- [Model Registry ability to delete experiment](https://gitlab.com/gitlab-org/gitlab/-/commit/18eb2732ed482284d4eb2b2425aa162b86e646f1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167414))
+- [Display page header and subheader](https://gitlab.com/gitlab-org/gitlab/-/commit/6509f8f185983b3dd9bce06a87a01a1da12f54c1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167612)) **GitLab Enterprise Edition**
+- [Add a GraphQL mutation for updating `OrganizationUser`](https://gitlab.com/gitlab-org/gitlab/-/commit/95b9e199ee1cdf17853ad4b2f61131f4be4c940c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168037))
+- [Adds a cop and a generator to initialize bigint conversion](https://gitlab.com/gitlab-org/gitlab/-/commit/fff3f8369cc87460f6fee80d62ed3516512a083d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164788))
+- [Add search argument to contributed projects GraphQL query](https://gitlab.com/gitlab-org/gitlab/-/commit/addaf622c113c95022e88fb97d6b68c8d138cedb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167966))
+- [Add min_access_level and programming_language_name arguments](https://gitlab.com/gitlab-org/gitlab/-/commit/39f4ff2d7b58980f6ef32d08d2a8cb4871e940d8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167962))
+- [Add audit events for SD Exclusions on create, update and delete](https://gitlab.com/gitlab-org/gitlab/-/commit/bd4c946f826be442037776da4e084366060626ae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167943)) **GitLab Enterprise Edition**
+- [Add programming language filter to contributed projects GraphQL query](https://gitlab.com/gitlab-org/gitlab/-/commit/3dff73035f5b784ad929811887da716ba0638f55) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167017))
+- [Model Registry ability to delete candidate](https://gitlab.com/gitlab-org/gitlab/-/commit/a39b2f0d0b4a415b9af8430abd5f273750d01793) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167718))
+- [Create merge request dependency api endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/3b92612d27b4a8dec8f196cbd0e68dbaeeb081e9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166700)) **GitLab Enterprise Edition**
+- [Add async index to partition table](https://gitlab.com/gitlab-org/gitlab/-/commit/b4a3ad684e40ac20b5dd3e459c6266bc88eba120) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167814))
+- [Add instance level job token application settings](https://gitlab.com/gitlab-org/gitlab/-/commit/e1852d2b5b93559512feee725f4084ac3ef1395e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166952))
+- [Add async index to partition table](https://gitlab.com/gitlab-org/gitlab/-/commit/68122df51808168f16c851fd4c76c4e21535fba4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167811))
+- [Expose code suggestion events on GraphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/29c5c9218936e4d013c87d1541226b59637adb99) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165565)) **GitLab Enterprise Edition**
+- [Add sharding_key_id to ci_runners table](https://gitlab.com/gitlab-org/gitlab/-/commit/f891e25cda3463904a6c21f6e57850fea150af43) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166916))
+- [Introduce group-level protected branches](https://gitlab.com/gitlab-org/gitlab/-/commit/a633fc221ff1f83b0d4f720411ffadda0f5cff69) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167753)) **GitLab Enterprise Edition**
+- [Release "allow anyone to pull" feature for terraform modules](https://gitlab.com/gitlab-org/gitlab/-/commit/0df09a776924dc95bc3428c8faac2432b981439a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167739))
+- [Update API and docs to account for non-billable promotions](https://gitlab.com/gitlab-org/gitlab/-/commit/b42f20115b6e83c020db173240f8e8da28e764d7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167020)) **GitLab Enterprise Edition**
+- [Populate personal namespace for events](https://gitlab.com/gitlab-org/gitlab/-/commit/6f6af234dee87200827153f25b107e069f494c01) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164979))
+- [Add ml-candidate-metadata sharding-key](https://gitlab.com/gitlab-org/gitlab/-/commit/c770a2096dbaf9908598289631f05eb1ba98a5ed) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167660))
+- [Add aiFeatureSettings GQL query](https://gitlab.com/gitlab-org/gitlab/-/commit/659d8e03f89931638a69b1ec64c161730ad21ee2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166463)) **GitLab Enterprise Edition**
+- [Ingest identifier_names of vulnerability_reads](https://gitlab.com/gitlab-org/gitlab/-/commit/f42afba65294540e03067cc950fb1d20e6f70dc8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163086))
+- [Auto-ban duplicate users when a user is banned](https://gitlab.com/gitlab-org/gitlab/-/commit/0ac977cc965ad2664a7fe02dc8387d44a8dafe78) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166673))
+- [Add new project redirect route to spec](https://gitlab.com/gitlab-org/gitlab/-/commit/b7cebc25cca7bdaae2751b20b7663db8fb960db2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165889))
+- [Add Duo permission ability to vulnerability report](https://gitlab.com/gitlab-org/gitlab/-/commit/35a30d05511e5f4a8c87962193ed4589abf8ab7a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167583)) **GitLab Enterprise Edition**
+- [Add UserActivity class](https://gitlab.com/gitlab-org/gitlab/-/commit/4dff8c5eea8efdcc227b85e7a4e3af8ffd92d855) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167035)) **GitLab Enterprise Edition**
+- [Add a link to navigate to the CI/CD analytics on the pipelines page](https://gitlab.com/gitlab-org/gitlab/-/commit/4cd78d7504f49934c247ce819d384a0349cd46bb) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167311))
+- [Enable CI job token authorizations log](https://gitlab.com/gitlab-org/gitlab/-/commit/329342b4b12b9a20e84c9a5f460e2513a8301cef) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167416))
+- [Model Registry ability to load model](https://gitlab.com/gitlab-org/gitlab/-/commit/9e2df64ca337ac3883e038a4ffabb54aba06c422) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165815))
+- [Add migrate_memberships to bulk_import_config](https://gitlab.com/gitlab-org/gitlab/-/commit/70bccda6c6ee42de11d2353c33a3e542ad07b8c0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167056))
+- [Add duo free access ending alert banner](https://gitlab.com/gitlab-org/gitlab/-/commit/f8ddc764202b359e7aa085999684d02062526b25) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167061)) **GitLab Enterprise Edition**
+- [Delete stale npm metadata caches with background migration](https://gitlab.com/gitlab-org/gitlab/-/commit/f4d4ca9921889a52190f5f2f894e31800d54ab9c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165813))
+- [Add suffix strategy selector](https://gitlab.com/gitlab-org/gitlab/-/commit/ceb2fa2c7fb2e4d8d1f4f9ece3a7bbe04ce7eb95) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166549)) **GitLab Enterprise Edition**
+- [Save draft data in storage](https://gitlab.com/gitlab-org/gitlab/-/commit/9de95c47c3e44b6bec50d07f908b76b9d0939580) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166586))
+- [Add ability to remove resolved vulnerabilities](https://gitlab.com/gitlab-org/gitlab/-/commit/32e3c13a5985d73e991473594ae118f72417d1f0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166914)) **GitLab Enterprise Edition**
+- [Add description field environments API](https://gitlab.com/gitlab-org/gitlab/-/commit/345f30d175d5ba270dbd31ad72871524a0242b4f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167079))
+- [Expose `has_vulnerability_resolution` via GraphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/7f704def79735d36a980e72fc8b957d2e6a5860c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166312)) **GitLab Enterprise Edition**
+- [Add description text field to environment details](https://gitlab.com/gitlab-org/gitlab/-/commit/093182d3e38039e69d8cf5a2e0d591357208a7a9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167062))
+- [Add description field to environment (BE & DB)](https://gitlab.com/gitlab-org/gitlab/-/commit/c963b54cdfa00a5f21c9ac6905e7cb6a4f740a7a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166941))
+- [Create the snooze and un-snooze todos mutations](https://gitlab.com/gitlab-org/gitlab/-/commit/9331b24be15f604234eb7b04646dfacba82f8aa9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164262))
+- [Filter merge trains by branch param](https://gitlab.com/gitlab-org/gitlab/-/commit/ce725c21a1eaa08b94942661de0bed6b6027fd9d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166949)) **GitLab Enterprise Edition**
+- [Introduce a delete MR dependency api endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/fb1ae36c0f4fb5d29a9d6e5e4cf5be84e108139d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166339)) **GitLab Enterprise Edition**
+- [Add `include_personal` argument to contributed projects GraphQL query](https://gitlab.com/gitlab-org/gitlab/-/commit/616f6dfb10be465829ab41e64638fa02c7a772d8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167174))
+- [GraphQL: Add `aggregate` field to PipelineAnalytics](https://gitlab.com/gitlab-org/gitlab/-/commit/719e68074bf30bb9f224d16b0c162bab503db360) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165549))
+- [Update Llm completion for VR suggestion](https://gitlab.com/gitlab-org/gitlab/-/commit/cb4252ae300cfe7ed7396922ebf692fbee8bf0f0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166230)) **GitLab Enterprise Edition**
+- [Add source-branch filter](https://gitlab.com/gitlab-org/gitlab/-/commit/dfa9283d8c1aee78b05f3f1d3f4872d08b52c8fe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156491))
+- [Enable Ruby support for GitLab Advanced SAST](https://gitlab.com/gitlab-org/gitlab/-/commit/a319102766075cb2597a1365f28b602a246584b0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165943))
+- [Add ingestion for EPSS data into GitLab DB](https://gitlab.com/gitlab-org/gitlab/-/commit/6a17d43561196e6165c8ec1560ec3bdc4e520660) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164348)) **GitLab Enterprise Edition**
+- [Remove feature flag vulnerability_resolution_ga](https://gitlab.com/gitlab-org/gitlab/-/commit/c5456f1548914668659ac06a67dafe9003a96988) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166354)) **GitLab Enterprise Edition**
+- [Added membership_modified_by_admin_event](https://gitlab.com/gitlab-org/gitlab/-/commit/7a71e994d79cd3ba9752ce50df32cb54bc194bd1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163631)) **GitLab Enterprise Edition**
+- [Protected branches API: support `deploy_key_id`](https://gitlab.com/gitlab-org/gitlab/-/commit/ffa03ce93bdfb03a2ceb8b86d87cc596bbc6583c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166598)) **GitLab Enterprise Edition**
+- [Remove loose_foreign_keys_update_column_to feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/4b159a7f0c266274ed4ff8a4f9bdbacd1d79259c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167006))
+- [Add an empty state for MR approvals per branch](https://gitlab.com/gitlab-org/gitlab/-/commit/85ad6180f1d95e55bab21b24875a8298bf60285d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166996)) **GitLab Enterprise Edition**
+- [Adds GitlabSubscriptions::SeatAssignment model](https://gitlab.com/gitlab-org/gitlab/-/commit/563a3eb96a81844a5bb495c3812335a4e4ec1b79) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164799)) **GitLab Enterprise Edition**
+- [Backfill for `vulnerability_reads.has_vulnerability_resolution`](https://gitlab.com/gitlab-org/gitlab/-/commit/5db7c9bf3c95d2185e71ece8e3856036277ee1c7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166110)) **GitLab Enterprise Edition**
+- [Elasticsearch: Merge requests with title completion](https://gitlab.com/gitlab-org/gitlab/-/commit/eac40c5be6b672138a38c6623ab3edb0101a1032) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166751)) **GitLab Enterprise Edition**
+- [Add min_access_level argument to contributed projects GraphQL query](https://gitlab.com/gitlab-org/gitlab/-/commit/d79ebab6a1b1ed1ba8a1f7c19b8c3977a7dffbc7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166409))
+- [Use CycloneDX SBOMs licenses in license scanner](https://gitlab.com/gitlab-org/gitlab/-/commit/abdfd55584c321e43e4b427f6d2bd03dc8b4c7aa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162631)) **GitLab Enterprise Edition**
+- [Add backticks to GitHub import user mentions](https://gitlab.com/gitlab-org/gitlab/-/commit/46dd8d71f2912a2fce793158657e0afecedf48bc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166635))
+- [Support for editing the model version description in the model registry](https://gitlab.com/gitlab-org/gitlab/-/commit/2ae4f7108fcbbc5112bb1795df28ec3205517094) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165539))
+- [Add column 'max_number_of_vulnerabilities' to 'project_settings' table](https://gitlab.com/gitlab-org/gitlab/-/commit/a25e82643726a3f06f019c0fe9461808edf8c4f4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166578))
+- [Add RewriteHistoryWorker to asynchronously rewrite repository history](https://gitlab.com/gitlab-org/gitlab/-/commit/9b8bb4a8cf2e750ad47c8c7e983f1440d05f58f8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162306))
+- [Protected tags API: support `deploy_key_id`](https://gitlab.com/gitlab-org/gitlab/-/commit/5e428dfbbebc0692968757d1109f2fb8c0c84fc2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166866)) **GitLab Enterprise Edition**
+- [Remove work_item_epics_rollout feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/3efdcc118619284090d23a08ffb66ed9ce7b6a7e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165338))
+- [Add cron info to pipeline schedules table](https://gitlab.com/gitlab-org/gitlab/-/commit/1013d760aaa17eaf5f515d4c5265ffa5daed005f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166547))
+- [Add subscribed argument to issues query](https://gitlab.com/gitlab-org/gitlab/-/commit/738d8e2cdac5d3b633a1238426b7a6cde8c4133e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134807))
+- [Initial checkin for Banner](https://gitlab.com/gitlab-org/gitlab/-/commit/9bc518e510d2e45905c6bec6048e4f9e6eabaaa5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165756)) **GitLab Enterprise Edition**
+- [Change relationship type of linked items via drag & drop](https://gitlab.com/gitlab-org/gitlab/-/commit/97bdd0a47b648241d90a23f6b58eb17e8c3f0edd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164296))
+- [Remove references to gitlab_com_duo_pro_bulk_user_assignment](https://gitlab.com/gitlab-org/gitlab/-/commit/6d3312d46ddefb2eb0799bb8a35242cdf08d446a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166747))
+- [Add rails endpoinds for workflow status updates](https://gitlab.com/gitlab-org/gitlab/-/commit/16ee928bc5e7d6e16d0feda57e710dc6d2de30d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165818)) **GitLab Enterprise Edition**
+- [Add event handlers for security policies changes](https://gitlab.com/gitlab-org/gitlab/-/commit/a9182c9344c1785fe80b2a9a2f14241b59ac633d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165569)) **GitLab Enterprise Edition**
+- [Add API endpoint to publish CI Catalog Resource Version](https://gitlab.com/gitlab-org/gitlab/-/commit/9db6aa7ed4820488e817096759d8d4d10622032d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164858))
+- [Add language filter to projects GraphQL query](https://gitlab.com/gitlab-org/gitlab/-/commit/935b8fd064877aec1f37556a569d3eee8b47dcf9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166098))
+- [Database changes for splitting microsoft applications](https://gitlab.com/gitlab-org/gitlab/-/commit/6467dddd1286a663877d2b8b9d5cc41bbddfe5da) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164377))
+- [Add vuln counts to container regsitry page](https://gitlab.com/gitlab-org/gitlab/-/commit/70c9d6928209e1d6504c94dbf0d46bc4ac4d26fb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161994))
+- [Add license checks to group level work items ability checks](https://gitlab.com/gitlab-org/gitlab/-/commit/6800de2b04e5ddab1937d36ba2891ea19a889aea) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165909))
+- [Add log fingerprint to the created issue](https://gitlab.com/gitlab-org/gitlab/-/commit/3cb1073119f2be42d85dd605ddf27ba5b855061d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166214)) **GitLab Enterprise Edition**
+- [Add min_access_level argument to Projects GraphQL query](https://gitlab.com/gitlab-org/gitlab/-/commit/1f94c52f172b45be3fb72d5a613bf76e97d59368) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166376))
+- [Add graphql mutations for project security exclusions](https://gitlab.com/gitlab-org/gitlab/-/commit/1d3f7c7c1336f708a8f03bfd25010a7208ca9235) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165396)) **GitLab Enterprise Edition**
+- [Admin API Endpoint: Token Info](https://gitlab.com/gitlab-org/gitlab/-/commit/142cca525f054dae36fdaf9b1368f7c7db9246f9) by @nwittstruck ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165157))
+- [Release "allow anyone to pull" feature for group-level maven endpoints](https://gitlab.com/gitlab-org/gitlab/-/commit/c4ff30e55761c74c20d4776e724bfb58e8e91f01) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166115))
+- [Add artifacts archive setting](https://gitlab.com/gitlab-org/gitlab/-/commit/f8d5adce372ebbac2dd1036f658c32961f5019eb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166496))
+- [Release "allow anyone to pull" feature for group-level NuGet endpoints](https://gitlab.com/gitlab-org/gitlab/-/commit/e3020839c59d094d1058b89ccc87a3a9913e785a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164325))
+- [Delete `custom_ability_admin_runners` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/68efeab37432d0579da5c16065b0f93c086398f1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163234)) **GitLab Enterprise Edition**
+- [Persist approval_policy_rule_id for scan_result_policy_violations](https://gitlab.com/gitlab-org/gitlab/-/commit/5068afd1791dfec1817b7f3275ddab680d3ae6d0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164808)) **GitLab Enterprise Edition**
+- [Move the zoekt_repository to failed if retries_left gets 0](https://gitlab.com/gitlab-org/gitlab/-/commit/11fdad2ff35c1707d03651142bf21428de7d02d2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165187)) **GitLab Enterprise Edition**
+- [Rename and add fields additional context rest api](https://gitlab.com/gitlab-org/gitlab/-/commit/96006484858a7c8cd5b369f20185e87515ee6d14) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164944)) **GitLab Enterprise Edition**
+- [Show SBOM reports errors on the pipeline security and licenses tabs](https://gitlab.com/gitlab-org/gitlab/-/commit/1f079c0ae6293aff0bf95597001a6c9a56419e96) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161235)) **GitLab Enterprise Edition**
+- [Enable dependency_scanning_using_sbom_reports by](https://gitlab.com/gitlab-org/gitlab/-/commit/b44bc52692676d7894aaa2c363cb845e12b75491) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165775)) **GitLab Enterprise Edition**
+- [Add aiSelfHostedModelFeatureSettings query](https://gitlab.com/gitlab-org/gitlab/-/commit/b26d01ea4138e0e2585e8dc2831271f8ab7a3aea) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166315)) **GitLab Enterprise Edition**
+- [Add merge_after attribute to MergeRequest](https://gitlab.com/gitlab-org/gitlab/-/commit/c36f582d9f5134693add8cde163744ec2344337f) by @Taucher2003 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165092))
+- [Suspend/Resume flux reconciliation from the UI](https://gitlab.com/gitlab-org/gitlab/-/commit/9e94ac3afdd5a91464498e1ae721f25339cab13b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165955))
+
+### Fixed (132 changes)
+
+- [Protected containers: Push protection for admin users](https://gitlab.com/gitlab-org/gitlab/-/commit/443b67e0f0a7aa50f6a34b88c2acccc2f69f6b63) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/157464))
+- [Prevent submitting form when pressing enter in transfer location search](https://gitlab.com/gitlab-org/gitlab/-/commit/4326a77740e85de613744ef3ba84278f9c4300db) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168440))
+- [Revert "Fix Helm chart appVersion not being quoted in index.yaml"](https://gitlab.com/gitlab-org/gitlab/-/commit/f5468087f7ce77a04f14d054817dfc3be8145b01) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169141))
+- [Cloud Connector sync: Read license from DB](https://gitlab.com/gitlab-org/gitlab/-/commit/24faba75877ffc5454e98c6b83fc30570587d1c9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168796)) **GitLab Enterprise Edition**
+- [Revert "Merge branch 'sc1-optimise-concurrency-tracking' into 'master'"](https://gitlab.com/gitlab-org/gitlab/-/commit/58924e97585f2fe2f5c6cac3ca1bf513ed67f03a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169050))
+- [Fix handling of loading secrets with empty section](https://gitlab.com/gitlab-org/gitlab/-/commit/c25f903f3cff73bb47b2d1ee9ade9febfd170b07) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168902))
+- [Merge requests API: fix cache for "with_labels_details" argument](https://gitlab.com/gitlab-org/gitlab/-/commit/3d7e2858794c7a44225b1c6e8e9ed08095fd4e08) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167440))
+- [Labels page: Fix vertical alignment and badge](https://gitlab.com/gitlab-org/gitlab/-/commit/6bdc6cb4fd6069f1c821150ca5f64efaf662a7c7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168932))
+- [Prevent non-ASCII names](https://gitlab.com/gitlab-org/gitlab/-/commit/21020627671ee03012b5f1e8637d11725fc732e0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168899))
+- [Mini Pipeline graph: Fix height of item and alignment of retry](https://gitlab.com/gitlab-org/gitlab/-/commit/f964a98df5ebf6221ec72539045569051fb08a53) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168798))
+- [Add response-content-disposition to url in Workhorse.send_url](https://gitlab.com/gitlab-org/gitlab/-/commit/eeb0598b35e889dc96aa108d59bb36363603643f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167015))
+- [PullMirrors::UpdateService: remove previous data after mirror's update](https://gitlab.com/gitlab-org/gitlab/-/commit/c7e9b840d177c74b5dbd208b01d81c3ea2e3c523) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168417)) **GitLab Enterprise Edition**
+- [Update export to not hard fail when one batch export fails](https://gitlab.com/gitlab-org/gitlab/-/commit/1e8e9abe799782a8b97c1fdf37cded83d04167b0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168768))
+- [Requeue BackfillPCiPipelineVariablesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/3afb5bb404dce203a98d2ee5937683d023857803) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168493))
+- [Show pending project members on pending members page](https://gitlab.com/gitlab-org/gitlab/-/commit/46f919a9d646abf1003c3d3e2b69b4cce9e43c7d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167481)) **GitLab Enterprise Edition**
+- [fix: Use hash reference for resolving security finding CWE identifier](https://gitlab.com/gitlab-org/gitlab/-/commit/bb508ac16ed279a5c5611609d3ddbc8ae532efcd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168658)) **GitLab Enterprise Edition**
+- [Fix access to job logs for anonymous users](https://gitlab.com/gitlab-org/gitlab/-/commit/9186689cdeca4d14511ab43d5d1484093b77588c) by @Taucher2003 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168125))
+- [Allow self registered user to trigger user_create hook](https://gitlab.com/gitlab-org/gitlab/-/commit/54a93bc65ed684c1954ed13c0db974e91e18c11a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167867))
+- [Reset ci_deleted_objects#pick_up_at](https://gitlab.com/gitlab-org/gitlab/-/commit/bd32a37d9de7e462463ce7e8a38f65c4b4ce0b10) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165778))
+- [Wrap source user reassignments in a lock](https://gitlab.com/gitlab-org/gitlab/-/commit/e3970a7de431f76f223a486194fd203928150adf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167765))
+- [Fix #root_ancestor when parent_id is defined](https://gitlab.com/gitlab-org/gitlab/-/commit/052bab7f670d09d4b16e0b909da7424e39ef0cda) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168149))
+- [Fix project_settings#has_vulnerabilities data inconsistency issue](https://gitlab.com/gitlab-org/gitlab/-/commit/620686bcb7852527c4f5a1ec5bc6a8dedb729dbc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167933))
+- [Send correct namespace for the Flux resource](https://gitlab.com/gitlab-org/gitlab/-/commit/a318f28e48c75c95eb37de7ef3dd9e7e28d124d8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168571))
+- [ansi2json: Handle multiple CRs in line endings](https://gitlab.com/gitlab-org/gitlab/-/commit/713116ba1e34d9b7bfa40c32cb35841bf5f782e8) by @lb90 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167050))
+- [Pipeline Graph: Fix badge text color and card header in darkmode](https://gitlab.com/gitlab-org/gitlab/-/commit/7f60f4e8e7144c115096be37b927b8dfb448dea9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168418))
+- [Fix deeplink urls for migrated epics](https://gitlab.com/gitlab-org/gitlab/-/commit/6099d8378f0705d666116dbe1c453e6aa6b671a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167572))
+- [Respect model registry and experiment visibility settings](https://gitlab.com/gitlab-org/gitlab/-/commit/416ec82806b6932dafabc7abf29fb0dd5c8d8396) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168148))
+- [Add `epic` to confidentiality feature](https://gitlab.com/gitlab-org/gitlab/-/commit/1831dc9521eb13163064b2aacb560d3e48c401c1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168455)) **GitLab Enterprise Edition**
+- [Flash alerts: Fix sticky position](https://gitlab.com/gitlab-org/gitlab/-/commit/6b06688a56375cf29d75e2ed5bee6170bb8843f0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167898))
+- [Reset group callout for all seats used banner when deleting a member](https://gitlab.com/gitlab-org/gitlab/-/commit/0c86cba0b2f6621cdf638b96451440340d3dd6b1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168429)) **GitLab Enterprise Edition**
+- [Fix min-width of user select dropdown](https://gitlab.com/gitlab-org/gitlab/-/commit/253f951e6b388279551e5c8b2707f329f3f70173) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167686))
+- [Remove bottom padding on images](https://gitlab.com/gitlab-org/gitlab/-/commit/496f232b662f2580b8f599b0674e5bb1b7140257) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168423))
+- [Remove vertical scrollbar on GLQL tables](https://gitlab.com/gitlab-org/gitlab/-/commit/8f03055e409b83c8a174dbb628fadcdd178686cd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168421))
+- [Fix for Personal Projects Settings bug](https://gitlab.com/gitlab-org/gitlab/-/commit/5b8625a1609c755307374189d7c20e955f424252) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167066))
+- [Separate UI and API checks for user impersonation](https://gitlab.com/gitlab-org/gitlab/-/commit/51c6695194966c8608b98f05285d8baa6f88ac9e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166639)) **GitLab Enterprise Edition**
+- [Fix policy violations not being deleted properly](https://gitlab.com/gitlab-org/gitlab/-/commit/a1f604ff05a78dbc7f5c063d378c3241940701f8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168373)) **GitLab Enterprise Edition**
+- [Prevent registration group creation changing registration_type](https://gitlab.com/gitlab-org/gitlab/-/commit/451cf1dc8049547c354c444bbd71974da168af77) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167959)) **GitLab Enterprise Edition**
+- [Delete deployed Pages on Project archive](https://gitlab.com/gitlab-org/gitlab/-/commit/6a72e7eb5cfa88e10bf1db94a7bfe47448e0ab52) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168352))
+- [Link compliance frameworks with pipeline execution policies](https://gitlab.com/gitlab-org/gitlab/-/commit/f6e14854631c53ee2233ba72ebc0d59396f1daf3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167970)) **GitLab Enterprise Edition**
+- [Remove `go_get_handle_401_error` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/6c0de46aefcdeb8613bd3ecced2955cea363ca3c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168338))
+- [Clear draft on cancel](https://gitlab.com/gitlab-org/gitlab/-/commit/e9f9a7929b9e7ae1d9c1aacde0e170b6d4f6a8d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168251))
+- [Fix project level value stream analytics default date](https://gitlab.com/gitlab-org/gitlab/-/commit/84773751f3595e03333da412690d374490042a3c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167476))
+- [Distinct select style for user mentions in RTE](https://gitlab.com/gitlab-org/gitlab/-/commit/29ec0bae734d49954daae20fdf08cf0cc7e45516) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168120))
+- [Only show custom emoji from current group in frequently used emoji](https://gitlab.com/gitlab-org/gitlab/-/commit/993a7811f0da4e857d9f8771a383712d192b02ba) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167665))
+- [Update CycloneDX 1.5 json schema with upstream](https://gitlab.com/gitlab-org/gitlab/-/commit/6d18ef2462a0add8a4dc622ebaee64bdc83c9400) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167829))
+- [Fixes package tag not being displayed](https://gitlab.com/gitlab-org/gitlab/-/commit/eea81d108fea46106b67a5c5b624dc0ada4d7844) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168229))
+- [Groups Filter - Fix pagination tree view](https://gitlab.com/gitlab-org/gitlab/-/commit/8759bd95b8ace74f648c5ebd9d17ee7dbdb2ef44) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167821))
+- [Use error message from backend when updating member role](https://gitlab.com/gitlab-org/gitlab/-/commit/d566faf1e4f46ff2f99d0bb210d7bb0428aaecd9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168115)) **GitLab Enterprise Edition**
+- [In Pages build use use_open_file instead of use_file](https://gitlab.com/gitlab-org/gitlab/-/commit/789a78a46b98011c6587ff161656f15c78238272) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167150))
+- [Allow Instance Admin to always create projects](https://gitlab.com/gitlab-org/gitlab/-/commit/7c7a2c77fca1588f6e75c7b39f7764edc124c9da) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168021))
+- [Model Registry model versions empty state typo](https://gitlab.com/gitlab-org/gitlab/-/commit/efc5115666a629ee90634343e8601d43d16a02aa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168070))
+- [Update haml markdown editor toolbar buttons to match Vue version](https://gitlab.com/gitlab-org/gitlab/-/commit/1986af18c2020bc7a77a3b77501176efdf1b5b1c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167486))
+- [Recover destroyed ML model version packages](https://gitlab.com/gitlab-org/gitlab/-/commit/3f89d8f0ab46e484c5aa28ebbd7c2fb061d64e5a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165214))
+- [Fix broken wiki sidebar when slugs contain special characters](https://gitlab.com/gitlab-org/gitlab/-/commit/2d2f164ec58453d8d28f37b5876c3afedee2499e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167331))
+- [Drop project_id not null constraint ci_deleted_objects](https://gitlab.com/gitlab-org/gitlab/-/commit/7cb19470ae995db7d008489e884ab2abd30f377f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168024))
+- [Fix link color override with increasing specificity](https://gitlab.com/gitlab-org/gitlab/-/commit/af6ef77df854356bd6c3329bad4c4e36df119b8c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167921))
+- [Remove project_id FK constraint on terraform module metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/2743d2382767682865fc11e868f6c88773804a4b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167182))
+- [Fix collapsed diff discussions expanding when adding a new discussion](https://gitlab.com/gitlab-org/gitlab/-/commit/e6855e9755cd6138b381346252d93e4c27075959) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167987))
+- [Prevent deploy key access when owner is not a member of the project](https://gitlab.com/gitlab-org/gitlab/-/commit/9ad5f83c1ef739e56ad1ec4b002cc93473983aa7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167297))
+- [Prevent approval rule from overlapping approvals count in drawer](https://gitlab.com/gitlab-org/gitlab/-/commit/bf051cfe3b11cde28172f857a51d718574de9a2c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167981)) **GitLab Enterprise Edition**
+- [Handle expired CI job artifacts with orphaned projects](https://gitlab.com/gitlab-org/gitlab/-/commit/49b0c18fd57fb920d85a1a6024146216be77ce75) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167977))
+- [Filter work item children and ancestors out of work item token input](https://gitlab.com/gitlab-org/gitlab/-/commit/ca7b02cbc179b42855d9a506d206047c6bdfbb0a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167247))
+- [PWA: Respect the screen rotation settings of the user device](https://gitlab.com/gitlab-org/gitlab/-/commit/e269216e49a96e988abfc428a893286aac43911e) by @kurages ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166957))
+- [Fix flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/6c2ee16bee3cd7d9296ecef98d7aff1fe4c7ba20) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167892))
+- [Do not fetch license on Duo page when SaaS](https://gitlab.com/gitlab-org/gitlab/-/commit/4be030a6cda722426add1c69e402298c5af93eee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167431)) **GitLab Enterprise Edition**
+- [Fix Web IDE Oauth domain mismatch screen](https://gitlab.com/gitlab-org/gitlab/-/commit/5fff1ec16ed0afad01b96330ff4a7116e9d8b2e6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167598))
+- [Fix for Groups Duo Subscription Bug](https://gitlab.com/gitlab-org/gitlab/-/commit/7b5f7b45b459437e9bae691e705dd9dacd5f1105) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167259)) **GitLab Enterprise Edition**
+- [Fix Helm chart appVersion not being quoted in index.yaml](https://gitlab.com/gitlab-org/gitlab/-/commit/503f7688f10a703b1e6540435091967a457e60fb) by @djhoese ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166663))
+- [Fix styling problems for Escalation policy rule controls](https://gitlab.com/gitlab-org/gitlab/-/commit/b37c422df6e4c2823b02ee93fb010b89724b0c32) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167675)) **GitLab Enterprise Edition**
+- [Allow `:admin_runners` to clear runners cache](https://gitlab.com/gitlab-org/gitlab/-/commit/f2857a90614adfaf8b9a5c83cf0ce5fa1645d12f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166545)) **GitLab Enterprise Edition**
+- [Projects::GraphsController#charts: fix URL generation](https://gitlab.com/gitlab-org/gitlab/-/commit/c644501f79b9c52a9f7a7512c6a7c0550b6d4028) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167616))
+- [Handle existing resolved ocs vulns](https://gitlab.com/gitlab-org/gitlab/-/commit/4a13718607a5094a7651babd5f54dcd1d288dd23) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166593))
+- [Add migration for fixing organization_id inconsistencies](https://gitlab.com/gitlab-org/gitlab/-/commit/fde998e9f5ba4de3f552fc0cdb7468f5894ed5c1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166909))
+- [Only create system note on color change](https://gitlab.com/gitlab-org/gitlab/-/commit/7d801c2b540e2c99bf3fbfda89ee33c5d9871f69) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167479)) **GitLab Enterprise Edition**
+- [Fix flaky logger spec](https://gitlab.com/gitlab-org/gitlab/-/commit/88a71a200c17d8ef3cce3af6f71c456dd96092c7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167159)) **GitLab Enterprise Edition**
+- [Skip status checks for empty diff hashes](https://gitlab.com/gitlab-org/gitlab/-/commit/2c8627f26919e44549bf7d3fd94c45ac1be34d7c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167063)) **GitLab Enterprise Edition**
+- [Fix NRE when logged out and reading merge trains via GraphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/0d21ab174b1290fbfd5e34355e40fdba5df816d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167410))
+- [Allow reviewer unassign via quick action at MR creation](https://gitlab.com/gitlab-org/gitlab/-/commit/1942d99575ec486f650d6490f30e6d026be9b290) by @kingjan1999 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166379))
+- [Fix counting new vulnerabilities in ingestion logic](https://gitlab.com/gitlab-org/gitlab/-/commit/0c9cd9fccdda1d9c6d377ce9af905ec1c3e6dbbd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166724)) **GitLab Enterprise Edition**
+- [Fixing pipeline config issue for multiple frameworks](https://gitlab.com/gitlab-org/gitlab/-/commit/394a004f6867cbc8ce85b9675d9c040d8686b475) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166282)) **GitLab Enterprise Edition**
+- [Fix authorized find in project security exclusion mutations](https://gitlab.com/gitlab-org/gitlab/-/commit/4884e709131c72f75ae7b4bd4b8dc70a2c92b252) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167340)) **GitLab Enterprise Edition**
+- [Skip new branch name validation for some keypresses](https://gitlab.com/gitlab-org/gitlab/-/commit/15c65d468b77ae69379f56dce3e01dbde67cc369) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166754))
+- [Remove duplicate ci status](https://gitlab.com/gitlab-org/gitlab/-/commit/474cfb9aa85945431d16fabb5e5fc7cb73bae26d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167198))
+- [Make a Vulnerability a proper todo target](https://gitlab.com/gitlab-org/gitlab/-/commit/37ca3ffc0f8bbc9c032e3670f71438c83d967236) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167042)) **GitLab Enterprise Edition**
+- [Add auth check to delete tag endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/1af60712cbdb0c9b42e8b65c50c19f07e589af62) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166606))
+- [Handle merge when checks pass correctly in the api](https://gitlab.com/gitlab-org/gitlab/-/commit/acc30ec6270ab67c0d0f255cdce8f925c7c2c066) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166301))
+- [Fix timeline style in dark mode](https://gitlab.com/gitlab-org/gitlab/-/commit/04fd023b2f93fe4673b554c1e83affdf5e6a5ce5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167230))
+- [Add sass file page_bundles/todos_vue.scss](https://gitlab.com/gitlab-org/gitlab/-/commit/c5002ff2e6fbf865c09fc76605dac1ab4fe73128) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167204))
+- [Adjust wording for pipeline's license tab](https://gitlab.com/gitlab-org/gitlab/-/commit/979b0bf570973153bbaf35d39a5fdb31f61f1a36) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167189)) **GitLab Enterprise Edition**
+- [Fix logged out header for auto color mode](https://gitlab.com/gitlab-org/gitlab/-/commit/d723c1e02075ec2bb3aa4c32c3fb00a3c18d22cc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167158))
+- [Prevent 500 errors when evaluating empty changelog configs](https://gitlab.com/gitlab-org/gitlab/-/commit/c81182ff7acac70803a6f24b08d1530a9bda9e0e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166610))
+- [Initial commit for hide duo chat](https://gitlab.com/gitlab-org/gitlab/-/commit/707769340d1e6341f4793d2507c138e13dd1e168) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166225))
+- [Improvements to markdown "Exit full screen" button](https://gitlab.com/gitlab-org/gitlab/-/commit/1d77947b9e02d4d46d7f187072d355bf1d9d0d90) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165838))
+- [Prevent footnote backref from displaying as emoji](https://gitlab.com/gitlab-org/gitlab/-/commit/26101bc2b955756b5cc4f9c29696cbd799e0b4de) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166768))
+- [Fix draft not clearing after submitting description](https://gitlab.com/gitlab-org/gitlab/-/commit/f43381765754c3012a82294264e99f88020b5edb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167069))
+- [Fix error when trying to access nil commit author (via GraphQL)](https://gitlab.com/gitlab-org/gitlab/-/commit/689e8aab2b0698c160e19319012aff2f1be127b0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166951))
+- [Filter out duplicate milestone results in filter search bar](https://gitlab.com/gitlab-org/gitlab/-/commit/8e696e5f22a01821039ec2958ece5abe97077f69) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166947))
+- [Prevent links in project descriptions from making project rows too wide](https://gitlab.com/gitlab-org/gitlab/-/commit/956324dda2f7bb9d3ab2819d8cda7f9de7b6edb8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166930))
+- [Update access level for imported protected tags](https://gitlab.com/gitlab-org/gitlab/-/commit/409ae571ce32a6c3dd3666592408fa3d8f6ad414) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166905))
+- [Fix partitioning rollback for p_ci_pipelines](https://gitlab.com/gitlab-org/gitlab/-/commit/19f7b1e7b68745d0ddea02a93a86c3b04b1160ad) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166455))
+- [Allow to search for todos with commit target type](https://gitlab.com/gitlab-org/gitlab/-/commit/276c8643e217e4b6fc13bc8a440386e8d33bea6b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166744))
+- [Todos: Add namespace and project target types to GraphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/b6c6b4bd0dd498315a31a6619705e09016a61dd1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166744))
+- [Grant Auditor users :read_package ability on the group-level](https://gitlab.com/gitlab-org/gitlab/-/commit/2b3b560064b9b02a761f7425e04e868f2aecc7e7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166753)) **GitLab Enterprise Edition**
+- [Fix decreasing the project vulnerability counts](https://gitlab.com/gitlab-org/gitlab/-/commit/1d0ed78adbf80d9e853470285463094c13622c12) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166734)) **GitLab Enterprise Edition**
+- [Fix Zoekt global code search](https://gitlab.com/gitlab-org/gitlab/-/commit/136233eac31c236d7061c1fee530408083a49f54) by @skel2007 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165835)) **GitLab Enterprise Edition**
+- [Design management: Highlight current user handle](https://gitlab.com/gitlab-org/gitlab/-/commit/d71d0349ccf647d019e9cf9b830cca33ab65b89d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166295))
+- [Model Registry version compatability with mlflow endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/46bf0d0d1127a2a7d13e3f4828ce6f888421853b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166458))
+- [Restore border on pipelines table](https://gitlab.com/gitlab-org/gitlab/-/commit/2a713329ca0e6c151895fc20724de9bb02a84c8b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166645))
+- [Fix incorrect gitlab-shell-check filename](https://gitlab.com/gitlab-org/gitlab/-/commit/e30f163ac684362c1536a5cd12d3ad796498fdae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166684))
+- [Enable external status checks mutation for Projects::AllBranchesRule](https://gitlab.com/gitlab-org/gitlab/-/commit/f2425195a4370a4ad6b2b76d94b94df4c59c28d7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165961)) **GitLab Enterprise Edition**
+- [Sync pipeline iid with subscription](https://gitlab.com/gitlab-org/gitlab/-/commit/d7232b9a152ef599cb54dc8652157d18e2a2daa2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166538))
+- [Fix misleading UI message](https://gitlab.com/gitlab-org/gitlab/-/commit/2bf0d162feb69d3986fd317ee4ddedbd42d55879) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166607)) **GitLab Enterprise Edition**
+- [Broadcast message styles remove manual dark mode color override](https://gitlab.com/gitlab-org/gitlab/-/commit/d944b8c97b75633be28ac6f937cfbf958c18c59a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166589))
+- [Remove add child console error](https://gitlab.com/gitlab-org/gitlab/-/commit/5b1bd1e47f965e33a14732a2135c6b467d988983) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165622))
+- [Fix truncated messages for commits](https://gitlab.com/gitlab-org/gitlab/-/commit/82b2d2a26e538c927838ee886810ac0ee346957a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166327))
+- [Allow POST to jwt/auth during maintenance mode](https://gitlab.com/gitlab-org/gitlab/-/commit/b4e290ea1040ee7181ec723ecdaef903e09ec487) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166322)) **GitLab Enterprise Edition**
+- [Reschedule setting vulnerability counts for projects](https://gitlab.com/gitlab-org/gitlab/-/commit/ceb506aadeb5a5380d3ac7569e316edfc4ffaf8a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166471))
+- [Fix page jump when reacting to work item comments](https://gitlab.com/gitlab-org/gitlab/-/commit/29f631929b05da75977be94540fef4c46164b38e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166462))
+- [Fix regression not allowing clearing out runner tags](https://gitlab.com/gitlab-org/gitlab/-/commit/a4aa25b608881f9322b739dd413ff247fd041c9b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166437))
+- [Fix work item skeleton loaders for extra pages](https://gitlab.com/gitlab-org/gitlab/-/commit/2b5be723081c60d5e8affaf64180f1e254122d66) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166441))
+- [Send null memberRoleId instead of undefined](https://gitlab.com/gitlab-org/gitlab/-/commit/23930e78d4076a0972cd5e4777cb5d7793010844) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166432))
+- [Avoid database reconnections when host disconnected from load balancer](https://gitlab.com/gitlab-org/gitlab/-/commit/934db1c7952db68b8c65c4eacaeabd684a9a8616) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166231))
+- [Fix framework link in policy migration merge request](https://gitlab.com/gitlab-org/gitlab/-/commit/3ea8d2fcb90701f78317db41d473064108df9a89) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166260)) **GitLab Enterprise Edition**
+- [Remove extra container classes on Auto DevOps banner](https://gitlab.com/gitlab-org/gitlab/-/commit/0b68c687821d3aac4b75f994486ac954127a2d75) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166216))
+- [Check commit message for issue close pattern setting](https://gitlab.com/gitlab-org/gitlab/-/commit/ba347d799733a7b641bdc324caf6f580569f8bb0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165877))
+- [Initially hide final alert on model registry artifact upload](https://gitlab.com/gitlab-org/gitlab/-/commit/900510a1eb985bf94ad6a20a79c6de93173a4dfa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166121))
+- [Consider Duo Enterprise when counting Pro users](https://gitlab.com/gitlab-org/gitlab/-/commit/f6245703cbfbfa7db6b0af35655fd9c087e25e95) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166120)) **GitLab Enterprise Edition**
+- [Fix ci_owned_runners returning other groups](https://gitlab.com/gitlab-org/gitlab/-/commit/da2cabe48a2859d0f0287aef1b682282a9e82245) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165886))
+- [Ensure pipeline job items in a stage have appropriate border radius](https://gitlab.com/gitlab-org/gitlab/-/commit/01e428f372da08609b1cfa65d87532147d3c42c2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165866))
+- [Do not parse SSE events if not streaming](https://gitlab.com/gitlab-org/gitlab/-/commit/4830d389e0def82c2c961b8d7537580502487adf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165771)) **GitLab Enterprise Edition**
+- [Fix N+1 in cluster agents resolver](https://gitlab.com/gitlab-org/gitlab/-/commit/e13cb11bc308eebd572c5876f45ef56c233c49a4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165734))
+- [Fix bug where car left after branch deletion](https://gitlab.com/gitlab-org/gitlab/-/commit/76fd7acb19210c6a239fa14a2989c981e6cbac76) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165216)) **GitLab Enterprise Edition**
+
+### Changed (205 changes)
+
+- [Add page refresh when policy type is selected](https://gitlab.com/gitlab-org/gitlab/-/commit/1a799dc1608dbf303bb14aab383ec4462c747be3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168881)) **GitLab Enterprise Edition**
+- [Remove allow_cross_joins_across_databases in finding_signature.rb](https://gitlab.com/gitlab-org/gitlab/-/commit/b37fbf55cfdde1755436dcd3f65d80504f8f2978) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168627)) **GitLab Enterprise Edition**
+- [GraphQL: Rename CiJobsDurationStatistics to CiDurationStatistics](https://gitlab.com/gitlab-org/gitlab/-/commit/cc9f07ae166b46e7b0644f688b0267b46d6dc0f4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167941))
+- [Added feature flag gate](https://gitlab.com/gitlab-org/gitlab/-/commit/b586b7e488fcf9d837af6085d883ac83205acc98) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168770)) **GitLab Enterprise Edition**
+- [UI: Do not expire direct memberships in subgroups and projects](https://gitlab.com/gitlab-org/gitlab/-/commit/c12b4adb7e3d4a18cefa68b9cadbe8d5dda563d3) by @nwittstruck ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168183))
+- [Separate notes from vulnerabilities update when dismissing](https://gitlab.com/gitlab-org/gitlab/-/commit/b1f2249ca7a9e15e4501d3cf5d1b633b394b1050) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167299)) **GitLab Enterprise Edition**
+- [Update Load Performance Testing templates](https://gitlab.com/gitlab-org/gitlab/-/commit/3d609d4edfa874759a4d15d2b624ca0eee644727) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168538))
+- [Use file icon for uploads](https://gitlab.com/gitlab-org/gitlab/-/commit/061346deacbe314709956951044a92b79906632e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168869))
+- [Support pages deploy jobs with names other than "pages"](https://gitlab.com/gitlab-org/gitlab/-/commit/277c9f6b643c92d00101aca0f2b4b874a144f7c5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166731))
+- [Remove `finding_resolver_use_pure_finder` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/72cff03c35c3d2f24b3d9b0e9a8347411abcec99) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168882)) **GitLab Enterprise Edition**
+- [Mark oauth_applications table as clusterwide](https://gitlab.com/gitlab-org/gitlab/-/commit/c54be1640371abbed26bade038ab54b1b5c692bd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162438))
+- [Remove references for editor field on workspaces](https://gitlab.com/gitlab-org/gitlab/-/commit/56cbef665d316101c4fd3cf94166c563989b6f37) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167673)) **GitLab Enterprise Edition**
+- [Add CI/CD Catalog wrapper to releases](https://gitlab.com/gitlab-org/gitlab/-/commit/42b7f5a1438e61adb7879d05a40badb5a92461a2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167664))
+- [Load first note on work items](https://gitlab.com/gitlab-org/gitlab/-/commit/c84bb1c35438612a6e0fca57daf1497354ad0d34) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164840))
+- [Update copy for free registration paths](https://gitlab.com/gitlab-org/gitlab/-/commit/383e63df9a2f81e2a5df456152060499755d8abf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168118)) **GitLab Enterprise Edition**
+- [Handle mailmapped emails for ssh verified commits](https://gitlab.com/gitlab-org/gitlab/-/commit/67cada1c739a8c9a5b05220f61e9b8c7b6c425b0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167667))
+- [Handle Work Item URLs in Duo Chat](https://gitlab.com/gitlab-org/gitlab/-/commit/3a11e0164a024fb2548cfe92da925a6beeb01cab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168359)) **GitLab Enterprise Edition**
+- [Update license scanning documentation](https://gitlab.com/gitlab-org/gitlab/-/commit/f123ab83eb356e767d93932ebe83661ba4c955f1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168771)) **GitLab Enterprise Edition**
+- [Remove delete_otp_no_webauthn feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/6559857ebc6e52bd8418d4aad62eec7504395d21) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168434))
+- [Wikilinks now handle characters escpaed in title](https://gitlab.com/gitlab-org/gitlab/-/commit/3c8ab86df5175868e57733621c880f6508cc5396) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168837))
+- [Set vulnerability_exports table to gitlab_sec schema](https://gitlab.com/gitlab-org/gitlab/-/commit/8f6e831cc98177cc624d90b1189ca049910f99a8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168856)) **GitLab Enterprise Edition**
+- [Adjust toggle behaviour for runner registration token setting at group](https://gitlab.com/gitlab-org/gitlab/-/commit/75f7bc6376260e41e7393768bfa0cc1398e45646) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167417))
+- [Skip CS components when parsing licenses from SBOM](https://gitlab.com/gitlab-org/gitlab/-/commit/c83412701871e6371664924f45043a36ccc0de44) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168828))
+- [Update pipeline mini graph variables](https://gitlab.com/gitlab-org/gitlab/-/commit/86b966fbe70e0db3971c92f48c876dc82334190c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167359))
+- [Enable FF enable_add_on_users_filtering by default](https://gitlab.com/gitlab-org/gitlab/-/commit/87a1593e1623b680ab3ce165ce810f03a1b335e3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168692))
+- [Improve status dropdown description](https://gitlab.com/gitlab-org/gitlab/-/commit/27dcde5ec2562568382a4d79ad5984596678acaf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168025)) **GitLab Enterprise Edition**
+- [Process security policies only when they are changed](https://gitlab.com/gitlab-org/gitlab/-/commit/9a72cd707663a145cde04202b8787bd64200c58b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167969)) **GitLab Enterprise Edition**
+- [Settings block: Move collapsible button to left](https://gitlab.com/gitlab-org/gitlab/-/commit/b2ffdfc6c103a789597feb5087e8e2fa319d433d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168523))
+- [Display an icon for closed merge requests on branches page](https://gitlab.com/gitlab-org/gitlab/-/commit/448bdc9bfd3d7aa6f050afa39221dfe2dc8ff284) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161879))
+- [Security dashboard: Update heading to use shared component](https://gitlab.com/gitlab-org/gitlab/-/commit/ce4f0cbf6234c26400173c686830d49ab93ddc45) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168644))
+- [Display helper text for severity group](https://gitlab.com/gitlab-org/gitlab/-/commit/48254aa6831dcd76655071c6656b84303d2fbf75) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168372)) **GitLab Enterprise Edition**
+- [Initial commit for changing admin Duo Utilization routes](https://gitlab.com/gitlab-org/gitlab/-/commit/d2f5079a8484dad1f03426dbb1b330e6448e2a57) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167989)) **GitLab Enterprise Edition**
+- [Improve documentation `spp_repository_pipeline_access` settings](https://gitlab.com/gitlab-org/gitlab/-/commit/d51dd18a5b8915a392367c6b9e18e9934663deab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168560))
+- [Synchronously add vulnerabilities_reads indexes](https://gitlab.com/gitlab-org/gitlab/-/commit/6af2f6d09e4af4c82acfdf7722b093301cad011b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167603))
+- [Remove `ai_merge_request_reader_for_chat` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/f191302237f5914455e5c1a167d1f4e0f23e5c74) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168684)) **GitLab Enterprise Edition**
+- [Allow top level group owners to create Service Accounts in Self-Managed](https://gitlab.com/gitlab-org/gitlab/-/commit/872e801070ac439bf7c037925cb909649d612589) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163726)) **GitLab Enterprise Edition**
+- [Update GlPagination to use design tokens](https://gitlab.com/gitlab-org/gitlab/-/commit/2a47780fe6fa1a9bc47d297a77da0fc029fdb45c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163581))
+- [Artifacts page: Update heading to use shared component](https://gitlab.com/gitlab-org/gitlab/-/commit/7bd20124894515ae1ce661b35b5523cc4acb23df) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168643))
+- [Handle permanently available deprovision parameters](https://gitlab.com/gitlab-org/gitlab/-/commit/d54104038cd259113ebc68fcf84f782535d27a73) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168383)) **GitLab Enterprise Edition**
+- [Include HTML layouts in project export and project transfer emails](https://gitlab.com/gitlab-org/gitlab/-/commit/88c7f65791135f283bbb99991730f815cb7f847a) by @jimender2 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165600))
+- [Fix sbom scanner to work with reported licenses](https://gitlab.com/gitlab-org/gitlab/-/commit/50a42eef656f32ae1a1848c52f6a8ada6d0e0224) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167185)) **GitLab Enterprise Edition**
+- [Remove allow_cross_joins_across_databases](https://gitlab.com/gitlab-org/gitlab/-/commit/cdc23a26f715ab24136ebdbb36ed73b0449c4a8d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168447)) **GitLab Enterprise Edition**
+- [Fix Vue 3 failing test](https://gitlab.com/gitlab-org/gitlab/-/commit/3892ace1ee828c30937428f9e19ceba5adcfb994) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168280)) **GitLab Enterprise Edition**
+- [Fix Vue 3 failing test](https://gitlab.com/gitlab-org/gitlab/-/commit/e0fc6599f55420889ed5ae877c47542ee390cd60) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168267)) **GitLab Enterprise Edition**
+- [Duo Utilization routes setup](https://gitlab.com/gitlab-org/gitlab/-/commit/d460e03b9f67873dd29b1f2d13c643befe1c7a7c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167864)) **GitLab Enterprise Edition**
+- [Link project_bot user deletion audit event to its resource if possible](https://gitlab.com/gitlab-org/gitlab/-/commit/cba1c715f3156b93470a15754051b9c91928939b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167021)) **GitLab Enterprise Edition**
+- [Revise and update repository xray docs](https://gitlab.com/gitlab-org/gitlab/-/commit/180b6eaacaafb88632e1702dd900094272518617) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167752))
+- [Remove the beta badge for Secret push protection](https://gitlab.com/gitlab-org/gitlab/-/commit/b7f663d94c33930fbebab26e0140372b4b2880ae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167273)) **GitLab Enterprise Edition**
+- [Update push check and scanning gem to handle exclusions](https://gitlab.com/gitlab-org/gitlab/-/commit/a190168cfec90fb2ee19ba5e0efc641b196c8228) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166511)) **GitLab Enterprise Edition**
+- [Update extension for docs links in misc ruby files 2](https://gitlab.com/gitlab-org/gitlab/-/commit/74bc0a4fa97dc6f3b37f6817a2ed712f73d434b4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168477)) **GitLab Enterprise Edition**
+- [Add regex support for runner tag search](https://gitlab.com/gitlab-org/gitlab/-/commit/df12ac2b67a7fc055ca1add3421cd7680c3d8b25) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166508))
+- [Hide bulk selection column when user doesn't allowed to delete artifacts](https://gitlab.com/gitlab-org/gitlab/-/commit/f3b4af9d910531625352bd0f4d2cb4c874399351) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168487))
+- [CI/CD Admin: Use shared components](https://gitlab.com/gitlab-org/gitlab/-/commit/57dd64d19de2bae3f9100a2d80ac4c319e232d4a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168041))
+- [Changing RCA prompt to new prompt](https://gitlab.com/gitlab-org/gitlab/-/commit/59bfd130faafb622d0eb35521435b6fea8f8a024) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168450)) **GitLab Enterprise Edition**
+- [Send trial_type param during trial generation](https://gitlab.com/gitlab-org/gitlab/-/commit/bc0f2291b5720027fc30c5d9266a768852712913) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168265)) **GitLab Enterprise Edition**
+- [Add API support for webhook feature flag events](https://gitlab.com/gitlab-org/gitlab/-/commit/904ad7a3732dc63b1a7861f8f649d298a0492470) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168442))
+- [Hide blob ci status](https://gitlab.com/gitlab-org/gitlab/-/commit/ea9135fd4b09b6171e407eb82f1510763ff37420) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167950))
+- [Seperate gitlab_sec updates from gitlab_main transaction](https://gitlab.com/gitlab-org/gitlab/-/commit/debda5ddb1d60fa9121ef772a349d7d00c13811a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167048)) **GitLab Enterprise Edition**
+- [Add conditional mapping for elasticsearch](https://gitlab.com/gitlab-org/gitlab/-/commit/8ab8c2b4ac3bc413eda556d09ffb8765d122f456) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163946)) **GitLab Enterprise Edition**
+- [Localize dates in UI](https://gitlab.com/gitlab-org/gitlab/-/commit/9baa157ba628627efced9abb5725852b7bdf3cf7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166627))
+- [Convert ml_models.project_id constraint to cascade delete](https://gitlab.com/gitlab-org/gitlab/-/commit/7c5e0bc3ae8e95cdd09da9a6456fcccfb594e352) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168323))
+- [Update extension for docs links in misc ruby files](https://gitlab.com/gitlab-org/gitlab/-/commit/003687ff433207cca737c0ef4351dd007eb94884) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168316)) **GitLab Enterprise Edition**
+- [Update Harbor Registry illustrations](https://gitlab.com/gitlab-org/gitlab/-/commit/54542b4ef81a891f10ed218d17818b072dadceee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168073))
+- [Update extension for docs links in models and presenters](https://gitlab.com/gitlab-org/gitlab/-/commit/72c9f70908284585fad40bbe3fe88a9e9c024d3c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167865))
+- [Switch to Duo Chat V2](https://gitlab.com/gitlab-org/gitlab/-/commit/b06a85a968065ff653871c4f515a2fa68038ca29) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168326))
+- [Remove security_policy_bot_shared_avatar feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/e971103792d6bf4da641c3268ca36c89732fd00a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168315))
+- [Update extension for docs links in ruby helpers](https://gitlab.com/gitlab-org/gitlab/-/commit/52c00c92b3a097fa5aad8ae4269683c2f725ca4e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167566))
+- [Add bold font for status filter](https://gitlab.com/gitlab-org/gitlab/-/commit/1d4e785949c26ba2575d34c3f8228261b3bd2cf1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168130)) **GitLab Enterprise Edition**
+- [Remove group_access_request_webhooks feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/275a70a15cf2caffa3f48ba2f42aad204afa0c92) by @Taucher2003 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168279))
+- [Clarify 'GitLab' term in signup error message](https://gitlab.com/gitlab-org/gitlab/-/commit/403dedde74ad70a1c066b37ae4a9e92a08bb8bcf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166904))
+- [Remove gl-new-card](https://gitlab.com/gitlab-org/gitlab/-/commit/269edb35089748995dbd1ece68cabd88a9e45007) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161737))
+- [Update extension for docs links in /lib ruby files](https://gitlab.com/gitlab-org/gitlab/-/commit/8efd9495e5a82451a5283ce7826e987cc39ab8e6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167863))
+- [Fix `tag` icon display in the project ref selector dropdown](https://gitlab.com/gitlab-org/gitlab/-/commit/43fb0b6f31d465b965be6222e5657379bcaacb2f) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168109))
+- [Use a default value for the parameter that will be parsed by JSON.parse](https://gitlab.com/gitlab-org/gitlab/-/commit/c825dcf0db78a4cba59a6eea7b7bed211de5c028) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168103))
+- [Disable heap fragmentation memory watchdog check](https://gitlab.com/gitlab-org/gitlab/-/commit/9dbaa09087500675b4bef1a9a8b2e2b2d7194386) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168100))
+- [Return all linked projects/namespaces when fetching policies](https://gitlab.com/gitlab-org/gitlab/-/commit/ac81f7df2422e207cd884f215fa87d1ffd70567d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166605)) **GitLab Enterprise Edition**
+- [Fix Vue 3 failing test](https://gitlab.com/gitlab-org/gitlab/-/commit/b08d1b7e8f704719b1e8ffd00093ea6edb50effb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167899)) **GitLab Enterprise Edition**
+- [Allow filtering users on backend in RTE](https://gitlab.com/gitlab-org/gitlab/-/commit/4fc46eb7f89d9be90fecab3d98d14e8d61008db5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168040))
+- [Add probe for checks in air-gapped instances](https://gitlab.com/gitlab-org/gitlab/-/commit/f18719c8f2e122b5ebab01c9b4ff738867fc3603) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167016)) **GitLab Enterprise Edition**
+- [Add markdown version to redis cache key](https://gitlab.com/gitlab-org/gitlab/-/commit/d905c0a2b7df63f368f754dded1f990eb84dbdab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165707))
+- [Allow watermarks to move from high to low for zoekt indices](https://gitlab.com/gitlab-org/gitlab/-/commit/6bc1d0c61e8015e811d53219bcfc7a615190ee09) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167996)) **GitLab Enterprise Edition**
+- [Change duo trials duration logic](https://gitlab.com/gitlab-org/gitlab/-/commit/4809632e8982a345fea6cec38216ea314d92c90a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164572)) **GitLab Enterprise Edition**
+- [This MR changes layout of filters](https://gitlab.com/gitlab-org/gitlab/-/commit/8909b8bed22f097ff8c90955bb9baf284a1d1b0e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/160934)) **GitLab Enterprise Edition**
+- [Add watermark enum to zoekt indices](https://gitlab.com/gitlab-org/gitlab/-/commit/6499f9911c426a14e00846ce01aa450dfef7f9b6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166360))
+- [Rename config_version field in workspaces table](https://gitlab.com/gitlab-org/gitlab/-/commit/e08c61cffb5e76b5e492ecb9344e4520795651d7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165876)) **GitLab Enterprise Edition**
+- [Remove default for organization_id](https://gitlab.com/gitlab-org/gitlab/-/commit/d0be8f1f1d752c2af5f17099a181db78f6df5fbd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166999)) **GitLab Enterprise Edition**
+- [Fixes a bug with the duo free access ending banner](https://gitlab.com/gitlab-org/gitlab/-/commit/7369b3d9715152d1b7e92fbbd01cbcafe3162539) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167926)) **GitLab Enterprise Edition**
+- [Add storage watermark to zoekt indices](https://gitlab.com/gitlab-org/gitlab/-/commit/70beddf59706332696c7607ccf2e6a6e5b0f5e98) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166222)) **GitLab Enterprise Edition**
+- [Add keyboard nav to boards](https://gitlab.com/gitlab-org/gitlab/-/commit/d348d55ab70daa6d59444f97560c09ddbdb98f48) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165895)) **GitLab Enterprise Edition**
+- [Migrate Admin group edit page to use SettingsSection component](https://gitlab.com/gitlab-org/gitlab/-/commit/b9554daeed9972b7ab5975b9b609d0bfea64f750) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167900))
+- [Update kubernates empty states illustrations](https://gitlab.com/gitlab-org/gitlab/-/commit/3ecee77258383800b4e00f4c2ca8baf421f692ac) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167681))
+- [Split AI impact dashboard table into multiple panels](https://gitlab.com/gitlab-org/gitlab/-/commit/51f4e411ee958aaf213ac0bdbf291d4d31d79cfd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167057)) **GitLab Enterprise Edition**
+- [Add handling big content for a drawer](https://gitlab.com/gitlab-org/gitlab/-/commit/58c5f92fe719c9e780964d846975193a5e164f5a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165395)) **GitLab Enterprise Edition**
+- [Create work item: Add dividers to items in sidebar](https://gitlab.com/gitlab-org/gitlab/-/commit/8c1a7a33d852bcaee7b8110f6afd48a5e33686bd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167747))
+- [Split the Value stream dashboard table into multiple panels](https://gitlab.com/gitlab-org/gitlab/-/commit/186eaf185b640b0f8935fd055af1329261fae290) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167217)) **GitLab Enterprise Edition**
+- [Update extension for docs links in ci ruby files](https://gitlab.com/gitlab-org/gitlab/-/commit/917c67cbbe169bcb5bccf9bbf7606d7c26b48168) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167858))
+- [Add scheduling worker to update storage used on zoekt index](https://gitlab.com/gitlab-org/gitlab/-/commit/a6b610aa5b09f68629ac6e76b5b7074360b96aa0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166403)) **GitLab Enterprise Edition**
+- [Add conditional mapping for elasticsearch](https://gitlab.com/gitlab-org/gitlab/-/commit/ea2f2f9266e9928043d8de5cf14dd0e70d9599e4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163009)) **GitLab Enterprise Edition**
+- [Add stat cards for filtering users](https://gitlab.com/gitlab-org/gitlab/-/commit/fbd2b2162b3615d3ba094cdcd6f4e4b883f24fbc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165403))
+- [Change the order of fork information](https://gitlab.com/gitlab-org/gitlab/-/commit/6086eac82f9c041c94e5c6ff6ecafbc22754421b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167769))
+- [Add an option to track_event API to send events to Snowplow](https://gitlab.com/gitlab-org/gitlab/-/commit/7472945df02616271ff4d2f1baf1265c5c9193a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165748))
+- [Discover Duo Pro: Migrate to regular card](https://gitlab.com/gitlab-org/gitlab/-/commit/92df5d1bc0d0e845e12e82ca76faab7cc73e5edb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167761)) **GitLab Enterprise Edition**
+- [Update Members page](https://gitlab.com/gitlab-org/gitlab/-/commit/51a4a8d4291b3bd84ffcac06c33c61008049b87d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166384))
+- [Use POST request to force unsubscribe by email clients](https://gitlab.com/gitlab-org/gitlab/-/commit/f5d93688699e4226413b8b4cc9c0dedf1c2f1008) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167196))
+- [Update Locked Files page](https://gitlab.com/gitlab-org/gitlab/-/commit/043dd1e37ec6f4a91966a6548c2db0613f13834b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166529))
+- [Drop randomization_seed from database load balancing log messages](https://gitlab.com/gitlab-org/gitlab/-/commit/ada9c6a52104b201302ca498db96b9f2a26ee6a8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167710))
+- [Remove load_balancing_disconnect_without_verify feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/4faed9ecb481a7544645330a7cb50d5d7051d19f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167661))
+- [Add new list between two lists on a board](https://gitlab.com/gitlab-org/gitlab/-/commit/0267db6915f3cbedbf8d227019d47f6cd529e8ae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163390))
+- [Make roles and permissions page visible to premium](https://gitlab.com/gitlab-org/gitlab/-/commit/c3b3600d80576cae291468bfef4748eecae8cde9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165968)) **GitLab Enterprise Edition**
+- [Show specific OmniAuth buttons in signup page](https://gitlab.com/gitlab-org/gitlab/-/commit/7bcbb146b5132b2396f0ab08abc308e842d0832e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167467))
+- [Consider multiple target branch pipelines for license policy](https://gitlab.com/gitlab-org/gitlab/-/commit/dd4f2d7bb1bfb064850176d2ba66790f8298c817) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165906)) **GitLab Enterprise Edition**
+- [This MR adds extra check for policy scope](https://gitlab.com/gitlab-org/gitlab/-/commit/e643df59a9de62aa04d66d9d4d4f67e1bbfe472b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167601)) **GitLab Enterprise Edition**
+- [Backfill PATs seven_days_notification_sent_at column](https://gitlab.com/gitlab-org/gitlab/-/commit/225aaaf4c7282caade83944b7e428a01aa1e4666) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165592))
+- [Add integration test for group scope](https://gitlab.com/gitlab-org/gitlab/-/commit/5288f8483aacd247ce3d40bf7a2f0c58187ddc75) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167334)) **GitLab Enterprise Edition**
+- [Update Escalation Policies empty state illustration](https://gitlab.com/gitlab-org/gitlab/-/commit/754c830c2217b3d32176082d5d411d97830b3903) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167497))
+- [Format code blocks](https://gitlab.com/gitlab-org/gitlab/-/commit/1e48162be1b9b9f851c7668284ff3dbacc883c6d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167469))
+- [Scope ComponentsResolver to Group or Project](https://gitlab.com/gitlab-org/gitlab/-/commit/6e3c725d3b8136385a69952d58cbfddbd9c73b55) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166493)) **GitLab Enterprise Edition**
+- [Separate gitlab_main updates from gitlab_sec updates](https://gitlab.com/gitlab-org/gitlab/-/commit/e4bc163aaa5931476799ab148e8fab5bbafd54f7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167046)) **GitLab Enterprise Edition**
+- [Add errors to SecurityPolicyProjectCreated subscription](https://gitlab.com/gitlab-org/gitlab/-/commit/b2181f0fd5b6ea1ae8412b785c3d175e4c428d9f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167422)) **GitLab Enterprise Edition**
+- [Simplify logic to exclude rules in Scan Execution Policies](https://gitlab.com/gitlab-org/gitlab/-/commit/61ef3cdb7475d4766f663a267c423eb3a508e7d6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164804)) **GitLab Enterprise Edition**
+- [Finalize UpdateWorkspacesConfigVersion3 migration](https://gitlab.com/gitlab-org/gitlab/-/commit/80ace9b0354b7e502e4726de50c14d0a60d587b3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167094))
+- [Make tag content more ergonomic on commit list pages](https://gitlab.com/gitlab-org/gitlab/-/commit/ff850af3063c9b8a44b9f1bc8b8b10df8b0a497a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167343))
+- [This MR updates linked SPP query](https://gitlab.com/gitlab-org/gitlab/-/commit/d06a5a37c72d2d3343c5e2fcefc4b489f467daab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167314)) **GitLab Enterprise Edition**
+- [Adds to RedisStore sid](https://gitlab.com/gitlab-org/gitlab/-/commit/df89e2c30f6a5f8ca98251657219336134eed665) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167151))
+- [Create loose fkeys dast_profiles_schedulus.profile_id](https://gitlab.com/gitlab-org/gitlab/-/commit/68c86edf2344a701f77164facda9425423a1de47) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164716))
+- [This MR fix remove button layout](https://gitlab.com/gitlab-org/gitlab/-/commit/68af0dc3446b70ad4446ae01eb9e0f2a41659fa3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166681)) **GitLab Enterprise Edition**
+- [Raise error on lock retries exhaustion](https://gitlab.com/gitlab-org/gitlab/-/commit/13c6fcf1423f88f2f3670fd7e21aacf077ea7fd4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167257))
+- [Add watermark enum to zoekt indices](https://gitlab.com/gitlab-org/gitlab/-/commit/ceb0153a5aeb95f15e98313805ac64cf2b69ebe4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167112))
+- [Add Changelog trailer](https://gitlab.com/gitlab-org/gitlab/-/commit/5bc45a577a78a9e2347e12a9ebabe0b311948ba7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167002))
+- [Add option to skip cache with zoekt scheduling service](https://gitlab.com/gitlab-org/gitlab/-/commit/4105b9ef0e96c9eebb29287c224badc0d5d8b264) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167232)) **GitLab Enterprise Edition**
+- [Align time tracking link size](https://gitlab.com/gitlab-org/gitlab/-/commit/1b6f32ed31ed38ae49b523fc97e9da6cf3a33791) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167187))
+- [Show manifest media type for container registry image tag](https://gitlab.com/gitlab-org/gitlab/-/commit/e6a735df721157c0aff366cf708c9ac1855a0526) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166151))
+- [Re-enable DocumentationLinks in haml-lint](https://gitlab.com/gitlab-org/gitlab/-/commit/ad7c4c12861ec99c716ad131227c74cb1b984501) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166971))
+- [Remove index from SBOM tables](https://gitlab.com/gitlab-org/gitlab/-/commit/8856885ffa6934c4db995845d4d540d80174f8e7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166912))
+- [Fix yaml support for monaco-editor with vite](https://gitlab.com/gitlab-org/gitlab/-/commit/f05bce4435fb73dc7756622836a2bbf2cd1b8d90) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/152660))
+- [Model Registry present latest SemVer instead of ID](https://gitlab.com/gitlab-org/gitlab/-/commit/07a4734f1783fd3e87a96bc6ce94f65314e12a45) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166713))
+- [Use a `label` instead of `strong` tag in a CI job token allowlist form](https://gitlab.com/gitlab-org/gitlab/-/commit/cbe5dccd1e6f2f91de0cb44a393aa43fe451db94) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166953))
+- [Small update to Linked widget help copy](https://gitlab.com/gitlab-org/gitlab/-/commit/1593dabc9bbda74e532419fca2c76d24cf5cc9d4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166960))
+- [Zoekt nodes skip tasks when over critical storage watermarks](https://gitlab.com/gitlab-org/gitlab/-/commit/9901138d9d30c1eeca5f0bad53387bf7fa9286d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166750)) **GitLab Enterprise Edition**
+- [Update container registry tags list toggle details icon](https://gitlab.com/gitlab-org/gitlab/-/commit/d88b345ae65d60ef27fa929da445b88f12f6451f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166746))
+- [Switch from Rails.application.secrets to Rails.application.credentials](https://gitlab.com/gitlab-org/gitlab/-/commit/8a88f8cdcd177fec0104940c84bf729d748283f7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166431))
+- [Ensure zoekt replica router returns distinct set of indices](https://gitlab.com/gitlab-org/gitlab/-/commit/030379350eabc7a2e0568e50d959a4d273c13bf5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167064)) **GitLab Enterprise Edition**
+- [Remove meta-programming from AutoMergeService](https://gitlab.com/gitlab-org/gitlab/-/commit/4061a20cf3d3a20474b6b639aa2d5414fba2fc1c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166778))
+- [This MR fix remove button layout](https://gitlab.com/gitlab-org/gitlab/-/commit/40a4150ae7e1b91ac6a9e190bede2c34018e9cbd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167060)) **GitLab Enterprise Edition**
+- [Send add-on metrics during seat link sync](https://gitlab.com/gitlab-org/gitlab/-/commit/3858ff75159be51769869b0f220d7987a8fd7234) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166182)) **GitLab Enterprise Edition**
+- [Set default true for pipeline mainteennce feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/f26851fd02b24fe5405c78f206cb4fb3eeebd35c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165760)) **GitLab Enterprise Edition**
+- [Add link to error code to Duo Chat response](https://gitlab.com/gitlab-org/gitlab/-/commit/978738f9249d67d9e605e7f5b52923d6037cdc96) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166369)) **GitLab Enterprise Edition**
+- [Avatar: Refactor img to use GlAvatar](https://gitlab.com/gitlab-org/gitlab/-/commit/f49ea7918cc90e4a0ad0e4cd8d58d66676245ea2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166472))
+- [Localize dates in UI](https://gitlab.com/gitlab-org/gitlab/-/commit/ad18c79d5f7f1005602fbe21af3c96a77bd081e3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166521))
+- [Remove legacy event tracking from Value Streams Dashboard](https://gitlab.com/gitlab-org/gitlab/-/commit/886d1edf74176d4d27f338e7edb64df10d47289d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166366)) **GitLab Enterprise Edition**
+- [Add pages_domains not null constraint for project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/2c82883aeeeb2679d4c52eaccff2b342e3390ef2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166705))
+- [Update pipeline migration UI text](https://gitlab.com/gitlab-org/gitlab/-/commit/6e29c0882f0b75c033bc8a6696241707cbd6bdd5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166822)) **GitLab Enterprise Edition**
+- [Allow to select multiple groups with the same name in MR approval rules](https://gitlab.com/gitlab-org/gitlab/-/commit/d50b4bc2ea10fab58d22aa322f3d67382b881639) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166818))
+- [Use `GlTable` for the deployment approval settings in the add rule modal](https://gitlab.com/gitlab-org/gitlab/-/commit/b7afb50c652c9647108d88b9e6ed5550d9897ae4) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166495)) **GitLab Enterprise Edition**
+- [This MR adds warning for invalid policies](https://gitlab.com/gitlab-org/gitlab/-/commit/fd7530d6921c805cd281e5a32c635a8dee4bc2ff) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164809)) **GitLab Enterprise Edition**
+- [Update approval_policy_rule_id fk to nullify on delete](https://gitlab.com/gitlab-org/gitlab/-/commit/5a561fde9f5d00330a898c270beb73eacffe246f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166482)) **GitLab Enterprise Edition**
+- [Remove cache when zoekt replica search FF is changed](https://gitlab.com/gitlab-org/gitlab/-/commit/850cde732dee180e89e801670ba19e8770b0150a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166752))
+- [Clean up `scan_execution_policy_cache_ci_templates` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/00745d754d82ed114e9a3f67a7d6c885bd965366) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166594)) **GitLab Enterprise Edition**
+- [Update Puma to 6.4.3 and patch PID reaper](https://gitlab.com/gitlab-org/gitlab/-/commit/53dfdcd47cc0da402c188b8b069619a16d300598) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166758))
+- [Domain verification: Migrate to Crud](https://gitlab.com/gitlab-org/gitlab/-/commit/ba5b53531135f866033e55b5a77b91c7528482d0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166144))
+- [Let embedded videos be full width with max-width 100%](https://gitlab.com/gitlab-org/gitlab/-/commit/f482759df97eccbf2d443bd449fd262096905aff) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166016))
+- [Remove default project_id from p_ci_finished_build_ch_sync_event](https://gitlab.com/gitlab-org/gitlab/-/commit/39605fb3f6540aec8901016097fbfd595df75d66) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166736)) **GitLab Enterprise Edition**
+- [Update UI docs links in app/view/groups files](https://gitlab.com/gitlab-org/gitlab/-/commit/6c31e61b75adc71fbaec294f00b4e6c05be3e7ba) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166022))
+- [Update UI docs links in assorted files](https://gitlab.com/gitlab-org/gitlab/-/commit/20ab7bb7049df44f3e5a76214cb088b8d40b423c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166024))
+- [Update UI docs links in app/views/shared files](https://gitlab.com/gitlab-org/gitlab/-/commit/9923e0eeced8927d106a63dfd3a648ae29817ab1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166023))
+- [Update UI docs links in app/view/projects files](https://gitlab.com/gitlab-org/gitlab/-/commit/bf326e77acd1a4d031100b43d2005e0214585c24) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165885))
+- [Add comparison pipelines in bot comments for error cases](https://gitlab.com/gitlab-org/gitlab/-/commit/62d54c02191d13580b5a5f33465187bab55a4899) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162863)) **GitLab Enterprise Edition**
+- [Fix Vue 3 failing test](https://gitlab.com/gitlab-org/gitlab/-/commit/87380270de28dd255e445abb465c4ec99d899b58) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166714)) **GitLab Enterprise Edition**
+- [Made Environments > Deployment details page mobile friendly](https://gitlab.com/gitlab-org/gitlab/-/commit/72c2608b8bfe2add80bc179c0a41da1871ff5e1b) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166261)) **GitLab Enterprise Edition**
+- [Show group path in group selection dropdown in purchase flow](https://gitlab.com/gitlab-org/gitlab/-/commit/bd9bb78a8350e3a6827235544222760953a1d0f7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166407)) **GitLab Enterprise Edition**
+- [Renamed run pipeline button](https://gitlab.com/gitlab-org/gitlab/-/commit/8669e6924ab261f771f0185b31364e3de566eb39) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166442))
+- [ACTUALLY set the schema to gitlab_sec](https://gitlab.com/gitlab-org/gitlab/-/commit/02b025571341b90fb51757da6f38c545e9dfb521) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164518)) **GitLab Enterprise Edition**
+- [Update pipeline migration text and link](https://gitlab.com/gitlab-org/gitlab/-/commit/7b12f82bc8c204a8ff9330f07326c3415301d9e1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166541)) **GitLab Enterprise Edition**
+- [Add an OPS FF to avoid flooding sentry with semver dialect errors](https://gitlab.com/gitlab-org/gitlab/-/commit/ff1757dee727548947a68d4de401e4326716748c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165184)) **GitLab Enterprise Edition**
+- [There were several problems here:](https://gitlab.com/gitlab-org/gitlab/-/commit/ff81c8a28e30e309e71ec0a8e45ca5cc93d8154e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166644)) **GitLab Enterprise Edition**
+- [There were several problems here:](https://gitlab.com/gitlab-org/gitlab/-/commit/00e47f0a14227615f78cd7b9152c9a0c82bef727) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166643)) **GitLab Enterprise Edition**
+- [Remove beta mention in metadata database alert on registry pages](https://gitlab.com/gitlab-org/gitlab/-/commit/10a90861c59c883ec2b505086d3928553789d67f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166393))
+- [Fix zoekt replica group search](https://gitlab.com/gitlab-org/gitlab/-/commit/544f74fce1797499f9e2016e26e6323cd4c1c12b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165862)) **GitLab Enterprise Edition**
+- [Clean up `ci_conditionals_reduce_gitaly_calls` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/90677dc202e82110363279245b257e600601887c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166590))
+- [Commits: Migrate non-compliant Avatar sizes](https://gitlab.com/gitlab-org/gitlab/-/commit/339af3ff495dae0f1f5f903f0c302087ac9c7bcc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166587))
+- [Show an empty state when Protected Environment has no approval rules](https://gitlab.com/gitlab-org/gitlab/-/commit/c53b3cbaa4458cbce51e6a31dde8444c9a86adc0) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166309)) **GitLab Enterprise Edition**
+- [Update UI docs links in application_settings files](https://gitlab.com/gitlab-org/gitlab/-/commit/283a7bf85cb72c108fbff4b1aad1604687e42491) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164986))
+- [Update ffi gem to v1.17.0](https://gitlab.com/gitlab-org/gitlab/-/commit/9165bb9ebef94c1ec7f74b8ad91b64f49bd262a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166535))
+- [Split remediations query from upload deletion for decomposition](https://gitlab.com/gitlab-org/gitlab/-/commit/f687d630e8e76298284b51622eed4961e594bc9b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166519)) **GitLab Enterprise Edition**
+- [Do not destroy empty ML model packages](https://gitlab.com/gitlab-org/gitlab/-/commit/58a7655ed8c6a8d30d1b8e017aafc662b9ec031b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166186))
+- [Finalize migration NullifyOrganizationIdForSnippets](https://gitlab.com/gitlab-org/gitlab/-/commit/5e38f8fb4af576bcdeb70e9c775cd72807f49a65) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165353))
+- [Add used_storage_bytes column to zoekt indices](https://gitlab.com/gitlab-org/gitlab/-/commit/d0166780291bcd390f62e4950fc6fc45faa2ef6a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166398))
+- [Modify the way dividers are generated](https://gitlab.com/gitlab-org/gitlab/-/commit/d9402cf62660462732091f99fd5ce3e312fd2633) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166351))
+- [Remove cross DB transaction against dast_site_profile](https://gitlab.com/gitlab-org/gitlab/-/commit/56f54a9b8791b717b547284dace34eb5e38509ab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166147)) **GitLab Enterprise Edition**
+- [Remove feature flag zoekt_create_indexing_tasks](https://gitlab.com/gitlab-org/gitlab/-/commit/82b302a23dbe07726090fbafb79f5ddc3adf603b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165978)) **GitLab Enterprise Edition**
+- [Watch for k8s events changes](https://gitlab.com/gitlab-org/gitlab/-/commit/bf3c4eddc1a9663f0d5df51f48c0cb70a47b5cde) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165633))
+- [Cleanup 'locked_paths_mergeability_check' FF](https://gitlab.com/gitlab-org/gitlab/-/commit/c7de1897616a9328b10561b41f370852e84c965c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166269))
+- [Enable summarize_notes_with_duo by default](https://gitlab.com/gitlab-org/gitlab/-/commit/e10a45d4580f2f3c62a9a19194076ba502d750dc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165951))
+- [Improve messaging for pending approval invited members](https://gitlab.com/gitlab-org/gitlab/-/commit/08f2b377991dc9d3eed049f0e854e7575f05843e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164733)) **GitLab Enterprise Edition**
+- [Add loader for pipeline actions](https://gitlab.com/gitlab-org/gitlab/-/commit/6f2cca99dd7013e71b6c44ff8a9ca9a289a5ac0c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165982))
+- [Hide failed jobs widget logic](https://gitlab.com/gitlab-org/gitlab/-/commit/de8ef80b303e50f5df002b4d6d1084c09e171fb4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165704))
+- [Tranition vulnerability_state_transitions to gitlab_sec schema](https://gitlab.com/gitlab-org/gitlab/-/commit/059fae9e1955a2cf3cb848a558b0a4ee80d3b639) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165308)) **GitLab Enterprise Edition**
+- [Localize dates within issues](https://gitlab.com/gitlab-org/gitlab/-/commit/14629109f134cefe771fd9bae4906ce760ae6632) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162278))
+- [Make pages_domains.project_id not nullable](https://gitlab.com/gitlab-org/gitlab/-/commit/cc08641a24c5526020c9d2a5a1dbe36e68fbed4d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166123))
+- [Permanently delete project: Remove gl-new-card classes](https://gitlab.com/gitlab-org/gitlab/-/commit/b991c6b5f2e438abc92ce011447e80c19625c101) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166142)) **GitLab Enterprise Edition**
+- [Add popover for image and tag on vuln report page](https://gitlab.com/gitlab-org/gitlab/-/commit/c7d3bcdc07fa42329fbdd9b2345f15ee18a6cceb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165607))
+- [Remove allow_cross_joins_across_databases](https://gitlab.com/gitlab-org/gitlab/-/commit/e9a32751e0ced515f04e20400d47bc61dfeff445) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165941)) **GitLab Enterprise Edition**
+- [Only notify user who started BulkImport](https://gitlab.com/gitlab-org/gitlab/-/commit/ce513bfbb65b39c11f9fcf072c7d4d27af02d2df) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165939))
+- [Update dependency ai-gateway to v1.18.0](https://gitlab.com/gitlab-org/gitlab/-/commit/a2527cb16011d0e70d90495346a04c97e702bfa9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162943))
+- [Change the UX of the create model button for Model registry](https://gitlab.com/gitlab-org/gitlab/-/commit/50af6c16518313ed841f9ee757bca778a1b1a9e0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163594))
+
+### Deprecated (6 changes)
+
+- [Deprecate Legacy Epics on GraphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/62581f85f497665bd2812028816001f2b6612974) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168182)) **GitLab Enterprise Edition**
+- [Adds ContainerTagsExpirationPolicy graphql type](https://gitlab.com/gitlab-org/gitlab/-/commit/8520ad0e58baa89764afa4792fed33f581fa6112) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167126))
+- [GraphQL: Deprecate CiRunnerUsageByProject.ciUsedMinutes](https://gitlab.com/gitlab-org/gitlab/-/commit/5478d93acfd7b0b187db3315c0bbe8b385a36fe3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168199))
+- [GraphQL: Deprecate CiRunnerUsage.ciUsedMinutes in favor of ciDuration](https://gitlab.com/gitlab-org/gitlab/-/commit/42f76ca8db5e8fbc76907cdbcce3617b4ea6c1a8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167928))
+- [Initial checkin for Issue 479384](https://gitlab.com/gitlab-org/gitlab/-/commit/f647b4769fb8b4e91ff9b5e163339bc506b1c423) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162914)) **GitLab Enterprise Edition**
+- [Deprecate namespaces addOnPurchase GraphQL field](https://gitlab.com/gitlab-org/gitlab/-/commit/03437346baf040373fc8a333501031731b1cbc21) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166198)) **GitLab Enterprise Edition**
+
+### Removed (40 changes)
+
+- [Removed include_manual_to_pipeline_completion flag](https://gitlab.com/gitlab-org/gitlab/-/commit/2bc56b5dc023c62b6bf758bf05387c5929c6c247) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166156))
+- [Clean up account_validation_email feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/b4a808a404518f5e1c242ba985c0733d1dce62ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167147)) **GitLab Enterprise Edition**
+- [Remove identifier_external_ids column from vulnerability_reads](https://gitlab.com/gitlab-org/gitlab/-/commit/28f9ad96f1d9fd87fe2d87f4ec4ae8afb5adf87e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164883))
+- [Remove cross join allowances from vuln ingestion process](https://gitlab.com/gitlab-org/gitlab/-/commit/1ed5fc3fc6cfbb00c803bf0b8acfb90e0f5aa3b3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166720)) **GitLab Enterprise Edition**
+- [Model Registry removed Candidates tab](https://gitlab.com/gitlab-org/gitlab/-/commit/3c3250c058867d9cf16c29e7daaa2bd04a369490) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168510))
+- [Remove flash background colors](https://gitlab.com/gitlab-org/gitlab/-/commit/942b2908713051f019567b8100e7fc5bbe06e6f0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165186))
+- [Drop zoekt_shards table](https://gitlab.com/gitlab-org/gitlab/-/commit/5e109d41d6781348510073631bcf2bcbc8cb6511) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167720))
+- [Remove finalized BBM that contains cross join sec decomp can't support](https://gitlab.com/gitlab-org/gitlab/-/commit/9d7077407728cff8d4c79c4f5b3fa8f8f097443d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167789)) **GitLab Enterprise Edition**
+- [Delete migration BackfillSbomOccurrencesTraversalIdsAndArchived](https://gitlab.com/gitlab-org/gitlab/-/commit/c6b51ca94bb64a13dec8cce3a8e221fbf32fb072) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167597))
+- [Remove Issue Analytics broken search filters](https://gitlab.com/gitlab-org/gitlab/-/commit/d7ee235aee8cb3d957c46b7c57cda0c887734847) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168246))
+- [Remove BBM that cannot function post Sec Decomposition](https://gitlab.com/gitlab-org/gitlab/-/commit/ef009c0b064aab3c4869d1bd7388108c50ca0f76) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167794))
+- [Remove sec-decomposition related cross join supression](https://gitlab.com/gitlab-org/gitlab/-/commit/18df0f268088c65d45d743555a99036e10fdab77) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168053)) **GitLab Enterprise Edition**
+- [Remove sec-decomposition related cross join suppresion](https://gitlab.com/gitlab-org/gitlab/-/commit/acc0184d9ba7781e7a84004b5506fce02d8fb0cb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168051)) **GitLab Enterprise Edition**
+- [Delete unused BBM code](https://gitlab.com/gitlab-org/gitlab/-/commit/28234fa491169243f15804434ebc536fe8336bf3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167049)) **GitLab Enterprise Edition**
+- [Elasticsearch: Reindex to remove title completion](https://gitlab.com/gitlab-org/gitlab/-/commit/c3a23a84594e7028b2e6b57dcb85d136546d02f0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167887)) **GitLab Enterprise Edition**
+- [Remove no longer needed cross join suppressions](https://gitlab.com/gitlab-org/gitlab/-/commit/453f74f78f897d9777655bf2ac9456e087be4a20) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167787))
+- [Remove unneeded transitional cross join suppresion](https://gitlab.com/gitlab-org/gitlab/-/commit/f96eb60ccd6b42cb072b4f08bce4cbb9f7f8b195) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167682)) **GitLab Enterprise Edition**
+- [Remove unneeded cross db interaction suppressions](https://gitlab.com/gitlab-org/gitlab/-/commit/f208794ce0f0007e1aa0e545fec65076ec444ed9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167679)) **GitLab Enterprise Edition**
+- [Remove unneeded cross join suppresion](https://gitlab.com/gitlab-org/gitlab/-/commit/7770d64bf9d246969bd6ed994371ba787e6607d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167676)) **GitLab Enterprise Edition**
+- [Drop token_with_ivs table](https://gitlab.com/gitlab-org/gitlab/-/commit/6ba14590090f9021198593602565d751b734069b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/157650))
+- [Clean up migrated prompts for self-hosted code suggestions](https://gitlab.com/gitlab-org/gitlab/-/commit/8b54635235c0c3ae1537e3dc81e284671c05c9ab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167426)) **GitLab Enterprise Edition**
+- [Remove cross DB access suppression from remediation creation](https://gitlab.com/gitlab-org/gitlab/-/commit/711062fd0f34349ac5731265cf2149f276df258e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167327)) **GitLab Enterprise Edition**
+- [Remove transitional cross DB warning suppresion](https://gitlab.com/gitlab-org/gitlab/-/commit/ca06f505d35a539de02763610764269bd122de8f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167347)) **GitLab Enterprise Edition**
+- [Place Product Analytics admin settings behind flag](https://gitlab.com/gitlab-org/gitlab/-/commit/716cfa9888166b030bd2034ccbb55b1dc1c1f8b1) by @max.woolf ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167192)) **GitLab Enterprise Edition**
+- [Remove faulty async index definitions](https://gitlab.com/gitlab-org/gitlab/-/commit/e74a9c0b5da03c780a780f366a45355a9f75a099) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167102))
+- [Remove possibly unnecessary cross join suppresion for vuln helper](https://gitlab.com/gitlab-org/gitlab/-/commit/fc24597f8d932405cdd1e6143bab27f1cf00120d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167054)) **GitLab Enterprise Edition**
+- [Remove unneeded cross DB suppression](https://gitlab.com/gitlab-org/gitlab/-/commit/625f465c9b67a2a90547ed6c3f51df70b5a375d7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167044)) **GitLab Enterprise Edition**
+- [Remove unneeded cross join allowances](https://gitlab.com/gitlab-org/gitlab/-/commit/d4713a3d7f75a668da0821cba134d3138921c931) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166710)) **GitLab Enterprise Edition**
+- [Delete the `emoji_webhooks` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/f5c2a454198c5ed68fdbecc6c0c2b43d266356e6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161133))
+- [Remove ci_platform_metrics and related Sidekiq code](https://gitlab.com/gitlab-org/gitlab/-/commit/e5753a8b72bff30ed22c04da1390d8c0a4be757f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165460))
+- [Remove early access checkbox](https://gitlab.com/gitlab-org/gitlab/-/commit/4747e4289d13d2b201ccd58a917a383114339eb8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166776)) **GitLab Enterprise Edition**
+- [Remove transitional cross join allowances](https://gitlab.com/gitlab-org/gitlab/-/commit/37816be66872d15247122cdfa946c2a16b394096) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166723)) **GitLab Enterprise Edition**
+- [Remove pipeline reference from state transition](https://gitlab.com/gitlab-org/gitlab/-/commit/44b7985dca17966fa9449ec31d3dda034720c5fe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164207))
+- [Remove unneeded cross join allowance for sec decomposition](https://gitlab.com/gitlab-org/gitlab/-/commit/9b782ac7b949aeedb73f2e32830de4681536f547) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166513)) **GitLab Enterprise Edition**
+- [Remove DAG code](https://gitlab.com/gitlab-org/gitlab/-/commit/9f011c483e79a2b45220d9bdfb20969f796b1f22) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166367))
+- [Remove unneeded transitional cross join suppresions](https://gitlab.com/gitlab-org/gitlab/-/commit/315a0bc810df5cbea1d930bf6e4118e457bd89da) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166345)) **GitLab Enterprise Edition**
+- [Drop namespace setting column toggle_security_policy_custom_ci](https://gitlab.com/gitlab-org/gitlab/-/commit/47bfeb893a9c47c5adf4bbab329f58f40f8f248f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162712))
+- [Remove ensure prepared worker](https://gitlab.com/gitlab-org/gitlab/-/commit/3fdbfd37d8381c1bf1fa502dba4986c86052b1b2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166035))
+- [Remove validate_target_sha_in_user_commit_files feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/dc4605da7432c2e61d29f44267ab665cbf6f6a4a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165695))
+- [Remove ignore_columns for Packages::BuildInfo](https://gitlab.com/gitlab-org/gitlab/-/commit/004e48e40d75e879f2968764ab28e14f36ae1ee1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165616))
+
+### Security (13 changes)
+
+- [Prevent guest access to project templates](https://gitlab.com/gitlab-org/gitlab/-/commit/30cdc6ad27b6fabcedcd381eedddc306db911546)
+- [Skip content when listing conflict files with types](https://gitlab.com/gitlab-org/gitlab/-/commit/00b8a6c8f52722b58d6e2f134579a2bd3aeb62a0)
+- [Do not create a pipeline on MR refresh if source branch was deleted](https://gitlab.com/gitlab-org/gitlab/-/commit/480d0bd7ccdca6f93ff715abcd6c2fa7a9bebec2)
+- [Escape OAuth application name on authorize page](https://gitlab.com/gitlab-org/gitlab/-/commit/18520b5abefbf3d63b39ca786274cdd388c73e97)
+- [Remove access to local requests via cube query service](https://gitlab.com/gitlab-org/gitlab/-/commit/ac39cbe4c47622259b06b92f4557d697fd2a8831)
+- [Prevent deploy keys from pushing code to an archived project](https://gitlab.com/gitlab-org/gitlab/-/commit/7950fe587ec01257909ee1c6f4035e4477b97c6a)
+- [Hide version info from unauthorized users](https://gitlab.com/gitlab-org/gitlab/-/commit/7cc59acbd64189bc4cd6f6a3a3c829a51ac855ed)
+- [Return for admin condition if user authentication with job token](https://gitlab.com/gitlab-org/gitlab/-/commit/f5e8c0286f0245eb5704c036ecabeddfc8c7d757) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167449))
+- [External webhook token should be set](https://gitlab.com/gitlab-org/gitlab/-/commit/0dbce3f1a8d18540e9914abfba7d73e8eadf9a80)
+- [Updates Summarize Comments LLM Prompt](https://gitlab.com/gitlab-org/gitlab/-/commit/e0ed4fc43edb5da97568a7148f0e0f40f4b41221)
+- [Hide system notes with invalid references](https://gitlab.com/gitlab-org/gitlab/-/commit/975ac7740d0b5dc7026020872e73fb1b543f5aed)
+- [Reset dependency proxy maven credentials when registry url is changed](https://gitlab.com/gitlab-org/gitlab/-/commit/2e3b0d702470cb6080a8cd329d9f97f27205e3e8)
+- [Implement input sanitization for SummarizeComments](https://gitlab.com/gitlab-org/gitlab/-/commit/a0ff56cc58330b1b3e6ad133de203f0655a6e227)
+
+### Performance (11 changes)
+
+- [Update import_data sharding](https://gitlab.com/gitlab-org/gitlab/-/commit/9754abd2b504bbc2387a0c9ed822583c6919a8aa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168391))
+- [Stop creating keep-arounds on merge base commits](https://gitlab.com/gitlab-org/gitlab/-/commit/396e4a2575a30cdcff985464739a7fc2bded1fa9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168604))
+- [Remove cancel_redundant_pipelines_without_hierarchy_cte feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/1de53bdea42174e149503833f02300233590ed75) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164436))
+- [Use sticky data consistency for post receive worker](https://gitlab.com/gitlab-org/gitlab/-/commit/2a98ad6964b326751665c53486218ba65234de0b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168514))
+- [Enable CI variables optimization for pipeline creation](https://gitlab.com/gitlab-org/gitlab/-/commit/054e53fcc54a93309111e62e9cd6835ea1ab3cc9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168061))
+- [Add concurrency_limit to ProcessScanResultPolicyWorker](https://gitlab.com/gitlab-org/gitlab/-/commit/ef7ae09cb04607836017b4b0e852ad57053ca470) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168086)) **GitLab Enterprise Edition**
+- [Move a field check into the query instead of the loop body](https://gitlab.com/gitlab-org/gitlab/-/commit/0187b2d63352b90b27c03d4fc744c7c2c2c0472a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168004))
+- [Add deduplication to SynScanPoliciesWorker](https://gitlab.com/gitlab-org/gitlab/-/commit/6b5d93995ab52a3906e0b443970c1ee179eab85b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167965)) **GitLab Enterprise Edition**
+- [Limit count query in the events APIs](https://gitlab.com/gitlab-org/gitlab/-/commit/e96c39be7fa190d9376a253414586aa93f3db9c7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166695))
+- [Remove increase_diff_file_performance feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/09413b63c2005afbfe79a2f39ed16aeb2570d3f4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166036))
+- [Cache Fog::Storage object for CI build chunks](https://gitlab.com/gitlab-org/gitlab/-/commit/d4a21f54f1754a59cce02221f030468ed72f5029) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165900))
+
+### Other (146 changes)
+
+- [Add and backfill project_id for dast_site_profiles_builds](https://gitlab.com/gitlab-org/gitlab/-/commit/15eb6afe1f8b680930c83b294f40f2518053adbc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167768))
+- [Add and backfill project_id for dast_profiles_pipelines](https://gitlab.com/gitlab-org/gitlab/-/commit/1d9212f7a51b38f9577c6e6211d2edeb1ff58ef9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167633))
+- [Clean up send_verification_code_to_secondary_email feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/679969d736b689c018e77ca69041985e0b2436bb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166869))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/cfde235e8948ace348a879939c6b884e5852363c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168910))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/057db5079901ad14e514dfcab84d002a44ee5e32) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169030))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/634a9262451c2d40c5c60f0a968291d96470b5fc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168907))
+- [Finalize migration BackfillBoardsEpicListsGroupId](https://gitlab.com/gitlab-org/gitlab/-/commit/2a11dd992de0d0c047e1c0b6ce5d8822eca910c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168458))
+- [Add expiration wording to duo pro and enterprise trial success](https://gitlab.com/gitlab-org/gitlab/-/commit/1be9b534ac4a56593a0ee24428038ba2968a5a4c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168845)) **GitLab Enterprise Edition**
+- [Remove in-app trials redirect to stored user location](https://gitlab.com/gitlab-org/gitlab/-/commit/23c5a3c34cc39024faebcf8aa96ec9844fd645f8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168838)) **GitLab Enterprise Edition**
+- [Finalize BackfillComplianceFrameworkSecurityPoliciesNamespaceId](https://gitlab.com/gitlab-org/gitlab/-/commit/892b0b3897fca1571c528ffcfa6a8503be6da82e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168886))
+- [refactor: Protected badge as reusable component](https://gitlab.com/gitlab-org/gitlab/-/commit/a3cdc6743df8caed227967f47766bb3da7ca128c) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161917))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/53fde6693289a3207f30b582c055bfba423f8b48) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168906))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/4a29325cb30dd5166240acd4222a8d2ea0cfc4c1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168732))
+- [Do not subscribe to Users::ActivityEvent](https://gitlab.com/gitlab-org/gitlab/-/commit/f751f18e5c5b33e07f95bf64ee5cd17f62abe329) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168629))
+- [Create partitions for p_ci_build_trace_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/84e95d14d400373ab3a4486d1f9e3c5335800ed9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168756))
+- [Drop issues.correct_work_item_type_id foreign key](https://gitlab.com/gitlab-org/gitlab/-/commit/85bf51031d0cfff970ab91a2a3fbb3f9896a96b7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168741))
+- [Backfill migration for vulnerability_reads identifier_names](https://gitlab.com/gitlab-org/gitlab/-/commit/92fbabce742a5ac4e510d3ffea6720f5c927a62c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163088))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/859c508fad84e3c6347e01b6f68c3d1acd1b946c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167118))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/a5f477e15b14e920854eea99123411d0dc8baa79) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167265))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/804a24f9df49d1b70ef1f6d97ead2b9aed088d2c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164818))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/a37d795f42ed6fe65c5a3d0b8935c2ced473a6a4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166852))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/33f75660b6bb1420304fcf61331997a85dd70337) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166853))
+- [Add db_config_database into marginalia comments](https://gitlab.com/gitlab-org/gitlab/-/commit/f92e2fc4748478cdb3f96daebe96c8b497e6c80d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168272))
+- [Avoid sidekiq warning for FlushCounterIncrementsWorker](https://gitlab.com/gitlab-org/gitlab/-/commit/b27987142bc3a30e55bd38f986898467b931b03a) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167145))
+- [Finalize migration BackfillBoardsEpicBoardPositionsGroupId](https://gitlab.com/gitlab-org/gitlab/-/commit/af48342889a4ae0103ac8ac53d764b22daab07f6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167979))
+- [Track worker concurrency using Redis hash](https://gitlab.com/gitlab-org/gitlab/-/commit/1667b7e08898d79c5f9bd418005c693a5e5dd47d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167027))
+- [Backfill issues.correct_work_item_type_id with correct value](https://gitlab.com/gitlab-org/gitlab/-/commit/44e195be1bb6d9f698ee6ea15b97c438530d604a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167972))
+- [Remove upcoming_reconciliations from spec](https://gitlab.com/gitlab-org/gitlab/-/commit/13fbb3e7276780932c991337a63f2134d6cf0bca) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168624))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/c605c6a099f627f45c55a8396129b0a7f2e91608) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167391))
+- [Add trigger to update issues.correct_work_item_type_id](https://gitlab.com/gitlab-org/gitlab/-/commit/6670a9fc44c4056d418a10b8eadc9671b676e592) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167510))
+- [Reduce wait time for replica if worker urgency is high](https://gitlab.com/gitlab-org/gitlab/-/commit/cc8dfe47eefd291a856baf1d698311b816c4c783) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167877))
+- [Regenerate RuboCop TODO files](https://gitlab.com/gitlab-org/gitlab/-/commit/2cb80a94a24c134ec14fcb63d3cfe509df523e86) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168547))
+- [Add and backfill project_id for packages_composer_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/df81b0d75bb6e9c2125c9da3cb9b0de8d0cc875a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167444))
+- [Add and backfill project_id for dast_scanner_profiles_builds](https://gitlab.com/gitlab-org/gitlab/-/commit/170a80a95b611c80d3a3828f7dcedf63bf91c55c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167626))
+- [Use routing table name for PipelineConfig model](https://gitlab.com/gitlab-org/gitlab/-/commit/ce8aec8656f2d468239b75cd554e185be5566012) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168088))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/aa9549861cc91c94b853fe591aa13ea49869efb4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167698))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/6a1b1f38e67d0efe99f6cd9057d1977bdf683ced) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167117))
+- [Move Cop/WithoutReactiveCache to gitlab-org/gitlab](https://gitlab.com/gitlab-org/gitlab/-/commit/e51616651746d28b82aba81a7945fed9dddb8754) by @schurzi ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164279))
+- [Set `vulnerability_count` of project_security_statistics records](https://gitlab.com/gitlab-org/gitlab/-/commit/377f3574934ed708c65ec72e87b3b31642390e72) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167812))
+- [Create partitions for p_ci_build_trace_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/054c6e8146ab1778bfd2e8799fc513ee78f3f20f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168365))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/849e2394cd1849bf5304abf9adae4ad57b880c1e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167999))
+- [Finalize migration BackfillAuditEventsStreamingHeadersGroupId](https://gitlab.com/gitlab-org/gitlab/-/commit/2f71141963797ae09778b02a1d6b4db0a0eaf607) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167692))
+- [Correct tag name restrictions documentation](https://gitlab.com/gitlab-org/gitlab/-/commit/45c865ef61734f4f0d2be9d963367ccb8d78d0ec) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168300))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/972671b289c4034aca05dda58ee27da1eebbde6a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167115))
+- [Finalize migration BackfillApprovalProjectRulesUsersProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/d48e5535eed9e72243fe11037d3a6878d0e3229f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167506))
+- [Protected containers: Align actor for feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/ea3051b7c0eb6a64e1e60d6c70f994f42ae02f3a) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164083))
+- [Add and backfill project_id for ci_secure_file_states](https://gitlab.com/gitlab-org/gitlab/-/commit/4e2af1a4d13d179d06254bba32bca21a49b6b7c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167617))
+- [Add and backfill project_id for packages_pypi_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/808c8b9f78685eab1729620d097b9aba788ae8ed) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167608))
+- [Fix Style/SingleArgumentDig offences](https://gitlab.com/gitlab-org/gitlab/-/commit/d6ef31b38f9c175d27eb50c23d86d5a25c91572e) by @rutvikchandla3 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167424))
+- [Add and backfill project_id for ci_pipeline_schedule_variables](https://gitlab.com/gitlab-org/gitlab/-/commit/7f74125edf2b1295e7ada3c0c4e8452c281c0fd6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168110))
+- [Regenerate RuboCop TODO files](https://gitlab.com/gitlab-org/gitlab/-/commit/03732e45b4773774129fd56bb05f729162f0fc82) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168223))
+- [Add and backfill project_id for packages_rubygems_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/cea51c5cedefadef818490961e92264a4902d649) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167611))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/f62ecb9bfa119a33a13f21b0afe88bb33e426037) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167116))
+- [Add initial schema for custom field configuration](https://gitlab.com/gitlab-org/gitlab/-/commit/920e98dc24efe75bd930fd4225a875630756fb34) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167591))
+- [Continue removal of Trial Abandonment worker](https://gitlab.com/gitlab-org/gitlab/-/commit/004b8282445dbab762834174bad3e49b0a3111bd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167952)) **GitLab Enterprise Edition**
+- [Cleanup of backend and E2E for `pipeline_security_dashboard_graphql`](https://gitlab.com/gitlab-org/gitlab/-/commit/b561c29fb389d16a3d7a727e925c20636ccc4297) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166732))
+- [Solve null equality in BBM that deduplicates lfs_objects_projects](https://gitlab.com/gitlab-org/gitlab/-/commit/dc0065b4335415fe18766e9bd246ca91c2cc34db) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167468))
+- [Add and backfill project_id for pages_domain_acme_orders](https://gitlab.com/gitlab-org/gitlab/-/commit/9ca5697a1fa565356c3e9d472bd3555503ea74d4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167614))
+- [Remove .issuable-row background in milestone's page_bundles](https://gitlab.com/gitlab-org/gitlab/-/commit/475f644e9196484f655e1db3c7f3be26e639b336) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167934))
+- [Add foreign key constraint to `projects.organization_id`](https://gitlab.com/gitlab-org/gitlab/-/commit/a80b66b895271b06731e28b5a65a2a26c46309a7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166980))
+- [Add and backfill project_id for ci_resources](https://gitlab.com/gitlab-org/gitlab/-/commit/116d28970c5000188291278b3c900d9cb271d985) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167645))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/ab5a0c4e6208cbdef96f7e488cfe51e99c372586) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167859))
+- [Remove web_ide_oauth flag and its references](https://gitlab.com/gitlab-org/gitlab/-/commit/a709cce3ef830c1d4e7f4eb3d5ee79ae4fea3415) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167464))
+- [Finalize migration BackfillApprovalsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/fb06aca117ab018a50c0f11eadeadb9b9221bf61) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167507))
+- [Finalize migration BackfillApprovalMergeRequestRuleSourcesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/592aea8c2c243ed088f37372c64ccfc13f20a36e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167251))
+- [Change the duo pro discover page to match new wording and design](https://gitlab.com/gitlab-org/gitlab/-/commit/1915ffa36f96181f1a9ada32e00d2220697082a9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167826)) **GitLab Enterprise Edition**
+- [DB Docs are up to date](https://gitlab.com/gitlab-org/gitlab/-/commit/37df8b9a965150924632c640f50f188cde766f9b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166584))
+- [Add Duo Enterprise product interaction for seat assignment lead](https://gitlab.com/gitlab-org/gitlab/-/commit/52ec6b6af0a656b57bd157e2f0760ee7ae196c25) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167685)) **GitLab Enterprise Edition**
+- [Add and backfill project_id for packages_nuget_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/34849d27534b4d6655a71b8faac263e511e049bb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167607))
+- [Remove the nodes which are offline for more than 12 hours](https://gitlab.com/gitlab-org/gitlab/-/commit/5e89958a116d7dbda617d3c396c8bc6d0136194d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166481)) **GitLab Enterprise Edition**
+- [Add and backfill project_id for ci_builds_runner_session](https://gitlab.com/gitlab-org/gitlab/-/commit/84e195a20dbba1cf2807369ab497ba46e0b0d947) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167634))
+- [Add and backfill project_id for pages_deployment_states](https://gitlab.com/gitlab-org/gitlab/-/commit/7a1f0960202ff3fbc0ef71946e8e32b92b4127c1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167613))
+- [Add and backfill project_id for packages_rpm_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/7e0b3bfb3ea0033427f7f4a48fb445f070a9c73d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167609))
+- [Add and backfill project_id for approval_project_rules_protected_branche](https://gitlab.com/gitlab-org/gitlab/-/commit/ec8450985d455ae76d850285b644a32f52d409eb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167648))
+- [Add and backfill project_id for packages_npm_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/36adef0b862c019a3c6d2b27c79f040c61969c86) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167446))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/26f847dc3d8ad57900021ebbf841ab211dddad2e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166798))
+- [Remove pipeline_run_keyword feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/f38c167adacf21af3ee72c240cd3d3bad6ff55f8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167722))
+- [Add and backfill project_id for incident_management_pending_alert_escala](https://gitlab.com/gitlab-org/gitlab/-/commit/2af4990b64de20b437266bd098d02a254b2fb8d5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166816))
+- [Introduce `project_security_statistics` table](https://gitlab.com/gitlab-org/gitlab/-/commit/5ee258fee64d791fe7d9182019037ab33facbf2f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167442))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/23443ff5dd7e7f21394230cea3c3b2bc4a0cfe3d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167267))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/713ced6b0c985e7d2bff1294ca6df0b41abd867c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167390))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/2b107dd3f41780780bd5e685ba6c62f1ca731f4e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167270))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/7686ebb61f3d13c06e669668df543726bdefabe1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167511))
+- [Finalize migration BackfillApprovalGroupRulesUsersGroupId](https://gitlab.com/gitlab-org/gitlab/-/commit/e9d05ffe7e6092ccc12d77931e025bd045036e64) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167250))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/518442bf0c1a29ee63d734c1be3ef6c430c41501) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166976))
+- [Use defined constants for selector types](https://gitlab.com/gitlab-org/gitlab/-/commit/22aa8612331e85d478b86202d9897afe029d286e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167419)) **GitLab Enterprise Edition**
+- [Finalize migration BackfillApprovalMergeRequestRulesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/d8d4c9b33e5e9a9ea7e39da271d0d9a8fdffcc2a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167252))
+- [Finalize migration BackfillApprovalGroupRulesProtectedBranchesGroupId](https://gitlab.com/gitlab-org/gitlab/-/commit/c08c5deab001904ea17c5bb5a1fc84211e3333e5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167249))
+- [Finalize migration BackfillAgentActivityEventsAgentProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/93c554737050d14c06da3c190221b2016a091638) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167103))
+- [Fix Performance/RegexpMatch offenses](https://gitlab.com/gitlab-org/gitlab/-/commit/384835435286f39ebffb39d48928566a67c737dd) by @bolah2009 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166706)) **GitLab Enterprise Edition**
+- [Fully deprecate legacy sidekiq workers for onboarding](https://gitlab.com/gitlab-org/gitlab/-/commit/454adab2d63dc10996e0ffe107dae94f2b8408e0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167211))
+- [Add metric to track when CVS cannot scan component](https://gitlab.com/gitlab-org/gitlab/-/commit/963b5d448b26f78fc773d5fef6d8dc9aac3f20df) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166928)) **GitLab Enterprise Edition**
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/c977d261ad66a5320e5ec256fd8b0a8219de733a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167114))
+- [Add and backfill project_id for incident_management_timeline_event_tag_l](https://gitlab.com/gitlab-org/gitlab/-/commit/f28b7d013796687e4e63c75cac894c021e473339) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166461))
+- [Add and backfill project_id for ci_unit_test_failures](https://gitlab.com/gitlab-org/gitlab/-/commit/f6fbec5901a010549aaeecedb4d5978627e70a93) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166817))
+- [Mark 20231016162120 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/dd761045c83b611cd315db200aa58a3e1d9cd879) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165989)) **GitLab Enterprise Edition**
+- [Add issues.correct_work_item_type_id column](https://gitlab.com/gitlab-org/gitlab/-/commit/b33fd7b2bc18a54b2987ad477e67e09e4d38738f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167092))
+- [Add `work_item_types.correct_id` column](https://gitlab.com/gitlab-org/gitlab/-/commit/5a49ce40fe455dd462424d973891892ad690f687) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166548))
+- [Mark 20231019223356 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/1ea982f3d0cd3de1ec2a76825f9f52c34db262f6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165990)) **GitLab Enterprise Edition**
+- [Fix packages_packages definition file](https://gitlab.com/gitlab-org/gitlab/-/commit/81e00e9e40b0c0dec8d28cc14061c7f36a6b9956) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/167047))
+- [Add emails notification for RewriteHistory worker](https://gitlab.com/gitlab-org/gitlab/-/commit/b5147c8f76d0244859b2b304c0573e5935b3358c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166173))
+- [Add target_type to refine the query](https://gitlab.com/gitlab-org/gitlab/-/commit/dcac8b142a6cfe0e60a8788c6d64ce024a316cc0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166983))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/79c0ca788472db6c4c777e5323e97354ac17fef3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166811))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/ec73bc7896035283180b900bcc8d5864d637b182) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166796))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/8588173d926ffa971c6948d9cfb3a2e59a4840de) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166975))
+- [Drop database table compliance_checks](https://gitlab.com/gitlab-org/gitlab/-/commit/77108c49ccaea585099a157c91eb6da52a75984b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166353))
+- [refactor: Fix rubocop offense Layout/space_inside_parens](https://gitlab.com/gitlab-org/gitlab/-/commit/9c5e82136d2fc86e27433602d6d9f6c883669bf8) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166802))
+- [Drop default for work_item_types.id](https://gitlab.com/gitlab-org/gitlab/-/commit/826ac6bd42d9526337cb054a510f713a8321cad6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166678))
+- [Change FF type and default enable flag](https://gitlab.com/gitlab-org/gitlab/-/commit/560789f67e38ca643c39e79ab2bb0bc2521c2a45) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166608)) **GitLab Enterprise Edition**
+- [Redefine broken foreign keys on p_ci_pipelines](https://gitlab.com/gitlab-org/gitlab/-/commit/eda06ec1bda8ed2642459268d9b2047054460ea7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166318))
+- [Add accessibility tests to todos filtering dashboard](https://gitlab.com/gitlab-org/gitlab/-/commit/49cd60a4b8f86cfdbcd3a5c875d9d3f4bde082f4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161036))
+- [Add and backfill project_id for milestone_releases](https://gitlab.com/gitlab-org/gitlab/-/commit/5e330b243e58e8ba85feff4019bca60219a74314) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166466))
+- [Mark 20231005103449 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/12ec00d4319b25f0c6ef7c65edbad0fd453c5b3c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165988)) **GitLab Enterprise Edition**
+- [Rubocop fix](https://gitlab.com/gitlab-org/gitlab/-/commit/b43b2944af17bd579b94aa9d901898ae0ac1c8eb) by @arno_gr ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166805))
+- [Change default for org id](https://gitlab.com/gitlab-org/gitlab/-/commit/4377786c3a4a2f2833d18542b8ae9ebc9b7700ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166348)) **GitLab Enterprise Edition**
+- [Fix the initial_indexing logic](https://gitlab.com/gitlab-org/gitlab/-/commit/f38dbcecec9122ab6a7bbf27b5869e9eed8aff3f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165033)) **GitLab Enterprise Edition**
+- [Mark 20231130202203 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/aa4cd9ff3e3954f76bc9e08ca5ea53c45db06e39) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165993)) **GitLab Enterprise Edition**
+- [Add and backfill project_id for incident_management_oncall_rotations](https://gitlab.com/gitlab-org/gitlab/-/commit/0b3bedadf5cad169294375e60940172f510570b2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166153))
+- [Add and backfill project_id for alert_management_alert_user_mentions](https://gitlab.com/gitlab-org/gitlab/-/commit/b99f532801dcd3710f11f32a3e0e6c520d02c16e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166145))
+- [Remove `project_analytics_dashboard_dynamic_vsd` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/bda375a1c0fdc7c320960d749137782b926a8fcf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166581)) **GitLab Enterprise Edition**
+- [Add and backfill project_id for incident_management_escalation_rules](https://gitlab.com/gitlab-org/gitlab/-/commit/c6154d59871e4d47af68536201180b7044252d6a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166149))
+- [Remove unused code for build tags](https://gitlab.com/gitlab-org/gitlab/-/commit/2545fe78266478c20f46e66b3a0609d3f797f15a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166613))
+- [Mark 20231004124852 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/c6f669877952cf206dad546d694c7a6167252a6d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165987)) **GitLab Enterprise Edition**
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/30376537273cd0f20e6bdeaf163ffe6c5ed0ff0a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166419))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/65a992c617316483e0b11173463eef97870f031b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166562))
+- [Mark 20240107132344 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/32177974b4be1d4a0f50b5272fa01f75d0fca92a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165996)) **GitLab Enterprise Edition**
+- [DB Docs are up to date](https://gitlab.com/gitlab-org/gitlab/-/commit/83d7e2d9c9fa6ef0e211a00d332da47746280177) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166060))
+- [Audit list of classes in dashboard.scss](https://gitlab.com/gitlab-org/gitlab/-/commit/a358925bdfc6e9d538e0d0dcb4966e65a1e56d87) by @NIKU-SINGH ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164651))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/cd4324c765db2fae7eabc61eb33d89efa7b6a90f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162350))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/74b8dc684db2ae608466c388d9a352fa6aaf7c5c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162804))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/4d572efcfee3b764ef9a7a31a6eebc2e5f7d6f64) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163125))
+- [Add and backfill project_id for alert_management_alert_metric_images](https://gitlab.com/gitlab-org/gitlab/-/commit/356f5e171895bcef512b1a7d30fba99feccb812d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166074))
+- [Mark 20240104134928 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/ab39e45fb175cd07484fcb3f2ba3a13179abc68f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165995)) **GitLab Enterprise Edition**
+- [Partition ci_build_trace_metadata table - 4](https://gitlab.com/gitlab-org/gitlab/-/commit/93b9e2cadcc7a481036ef7a4779bb15926b1e6b1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165316))
+- [Add and backfill project_id for ci_job_artifact_states](https://gitlab.com/gitlab-org/gitlab/-/commit/bc4b7118b814becfd0eade0ec6a71a3f9bc450ea) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165940))
+- [Remove obsolete Advanced search migrations](https://gitlab.com/gitlab-org/gitlab/-/commit/b33dc6ee75b1f31f687215841e0dfd33c24066b8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165977)) **GitLab Enterprise Edition**
+- [Remove feature flag save_policy_violation_data](https://gitlab.com/gitlab-org/gitlab/-/commit/5413f08d1db4e241fdcd913ad1338d29ed969346) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166298)) **GitLab Enterprise Edition**
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/c2bb4944d7d7b9be83d411047b56d1265556e43d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164150))
+- [Mark 20231213172132 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/01c05bbcafa882f4b6a15703f0b528ff54c04232) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165994)) **GitLab Enterprise Edition**
+- [Add index for component search on Occurrences table](https://gitlab.com/gitlab-org/gitlab/-/commit/0177ab0fd84ea4554f9afd846001ee49db2e3697) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166180))
+- [Mark 20231130152447 as obsolete](https://gitlab.com/gitlab-org/gitlab/-/commit/916e8ec15f74a9382d9bb7baeecb5d80ec14f883) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165991)) **GitLab Enterprise Edition**
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/112f51fe5f5894fa791351072b5f9dca7e0f2cb6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164578))
+- [Remove & clean up set_sbom_report_ingestion_errors FF](https://gitlab.com/gitlab-org/gitlab/-/commit/6f1123d14d1009ca6f17e80cccf556153c0fccf3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165865))
+- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/81385243047622e00d54d83780190666dbf196ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/155375))
+- [Adjust signup page items for more clarity](https://gitlab.com/gitlab-org/gitlab/-/commit/e272c8a4c7b243758454d6f15363d0c13ca05c04) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165202)) **GitLab Enterprise Edition**
+- [Removes Unused CSS class](https://gitlab.com/gitlab-org/gitlab/-/commit/4e17154650ee4afc8b1ae4238d27efb908855a19) by @NIKU-SINGH ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164637))
+
## 17.4.2 (2024-10-09)
### Fixed (1 change)
diff --git a/app/assets/javascripts/notes/components/note_actions.vue b/app/assets/javascripts/notes/components/note_actions.vue
index 6e8606df618..9e7a62799df 100644
--- a/app/assets/javascripts/notes/components/note_actions.vue
+++ b/app/assets/javascripts/notes/components/note_actions.vue
@@ -4,6 +4,7 @@ import {
GlButton,
GlDisclosureDropdown,
GlDisclosureDropdownItem,
+ GlDisclosureDropdownGroup,
} from '@gitlab/ui';
// eslint-disable-next-line no-restricted-imports
import { mapActions, mapGetters, mapState } from 'vuex';
@@ -33,6 +34,7 @@ export default {
GlButton,
GlDisclosureDropdown,
GlDisclosureDropdownItem,
+ GlDisclosureDropdownGroup,
ReplyButton,
TimelineEventButton,
UserAccessRoleBadge,
@@ -350,15 +352,6 @@ export default {
class="note-action-button more-actions-toggle"
no-caret
>
-
-
- {{ $options.i18n.reportAbuse }}
-
-
-
-
- {{ __('Delete comment') }}
-
-
+
+
+
+ {{ $options.i18n.reportAbuse }}
+
+
+
+
+ {{ __('Delete comment') }}
+
+
+
diff --git a/app/assets/javascripts/packages_and_registries/settings/project/components/cleanup_image_tags.vue b/app/assets/javascripts/packages_and_registries/settings/project/components/cleanup_image_tags.vue
index 92534c65917..aebe9a8c5c6 100644
--- a/app/assets/javascripts/packages_and_registries/settings/project/components/cleanup_image_tags.vue
+++ b/app/assets/javascripts/packages_and_registries/settings/project/components/cleanup_image_tags.vue
@@ -32,16 +32,16 @@ export default {
FETCH_SETTINGS_ERROR_MESSAGE,
},
apollo: {
- containerExpirationPolicy: {
+ containerTagsExpirationPolicy: {
query: expirationPolicyQuery,
variables() {
return {
projectPath: this.projectPath,
};
},
- update: (data) => data.project?.containerExpirationPolicy,
+ update: (data) => data.project?.containerTagsExpirationPolicy,
result({ data }) {
- this.workingCopy = { ...get(data, 'project.containerExpirationPolicy', {}) };
+ this.workingCopy = { ...get(data, 'project.containerTagsExpirationPolicy', {}) };
},
error(e) {
this.fetchSettingsError = e;
@@ -51,16 +51,16 @@ export default {
data() {
return {
fetchSettingsError: false,
- containerExpirationPolicy: null,
+ containerTagsExpirationPolicy: null,
workingCopy: {},
};
},
computed: {
isEnabled() {
- return this.containerExpirationPolicy || this.enableHistoricEntries;
+ return this.containerTagsExpirationPolicy || this.enableHistoricEntries;
},
isLoading() {
- return this.$apollo.queries.containerExpirationPolicy.loading;
+ return this.$apollo.queries.containerTagsExpirationPolicy.loading;
},
showDisabledFormMessage() {
return !this.isEnabled && !this.fetchSettingsError;
@@ -69,10 +69,10 @@ export default {
return this.isAdmin ? UNAVAILABLE_ADMIN_FEATURE_TEXT : UNAVAILABLE_USER_FEATURE_TEXT;
},
isEdited() {
- if (isEmpty(this.containerExpirationPolicy) && isEmpty(this.workingCopy)) {
+ if (isEmpty(this.containerTagsExpirationPolicy) && isEmpty(this.workingCopy)) {
return false;
}
- return !isEqual(this.containerExpirationPolicy, this.workingCopy);
+ return !isEqual(this.containerTagsExpirationPolicy, this.workingCopy);
},
},
};
diff --git a/app/assets/javascripts/packages_and_registries/settings/project/components/container_expiration_policy.vue b/app/assets/javascripts/packages_and_registries/settings/project/components/container_expiration_policy.vue
index 030637be529..73318cc9527 100644
--- a/app/assets/javascripts/packages_and_registries/settings/project/components/container_expiration_policy.vue
+++ b/app/assets/javascripts/packages_and_registries/settings/project/components/container_expiration_policy.vue
@@ -43,14 +43,14 @@ export default {
FETCH_SETTINGS_ERROR_MESSAGE,
},
apollo: {
- containerExpirationPolicy: {
+ containerTagsExpirationPolicy: {
query: expirationPolicyQuery,
variables() {
return {
projectPath: this.projectPath,
};
},
- update: (data) => data.project?.containerExpirationPolicy,
+ update: (data) => data.project?.containerTagsExpirationPolicy,
error(e) {
this.fetchSettingsError = e;
},
@@ -59,15 +59,15 @@ export default {
data() {
return {
fetchSettingsError: false,
- containerExpirationPolicy: null,
+ containerTagsExpirationPolicy: null,
};
},
computed: {
isCleanupEnabled() {
- return this.containerExpirationPolicy?.enabled ?? false;
+ return this.containerTagsExpirationPolicy?.enabled ?? false;
},
isEnabled() {
- return this.containerExpirationPolicy || this.enableHistoricEntries;
+ return this.containerTagsExpirationPolicy || this.enableHistoricEntries;
},
showDisabledFormMessage() {
return !this.isEnabled && !this.fetchSettingsError;
@@ -112,7 +112,7 @@ export default {
{{ cleanupRulesButtonText }}
-
+
{
- draftState.project.containerExpirationPolicy = {
- ...draftState.project.containerExpirationPolicy,
- ...updatedData.updateContainerExpirationPolicy.containerExpirationPolicy,
+ draftState.project.containerTagsExpirationPolicy = {
+ ...draftState.project.containerTagsExpirationPolicy,
+ ...updatedData.updateContainerExpirationPolicy.containerTagsExpirationPolicy,
};
});
diff --git a/app/assets/javascripts/work_items/components/notes/work_item_note_actions.vue b/app/assets/javascripts/work_items/components/notes/work_item_note_actions.vue
index 56fd9b49b9c..130e6a4f3dc 100644
--- a/app/assets/javascripts/work_items/components/notes/work_item_note_actions.vue
+++ b/app/assets/javascripts/work_items/components/notes/work_item_note_actions.vue
@@ -4,6 +4,7 @@ import {
GlTooltipDirective,
GlDisclosureDropdown,
GlDisclosureDropdownItem,
+ GlDisclosureDropdownGroup,
} from '@gitlab/ui';
import * as Sentry from '~/sentry/sentry_browser_wrapper';
import { __, sprintf } from '~/locale';
@@ -28,6 +29,7 @@ export default {
GlButton,
GlDisclosureDropdown,
GlDisclosureDropdownItem,
+ GlDisclosureDropdownGroup,
ReplyButton,
UserAccessRoleBadge,
},
@@ -277,15 +279,6 @@ export default {
category="tertiary"
no-caret
>
-
-
- {{ $options.i18n.reportAbuseText }}
-
-
-
-
- {{ $options.i18n.deleteNoteText }}
-
-
+
+
+
+ {{ $options.i18n.reportAbuseText }}
+
+
+
+
+ {{ $options.i18n.deleteNoteText }}
+
+
+
diff --git a/app/assets/javascripts/work_items/components/work_item_links/work_item_children_wrapper.vue b/app/assets/javascripts/work_items/components/work_item_links/work_item_children_wrapper.vue
index a5358778e3e..b576fdb9b3a 100644
--- a/app/assets/javascripts/work_items/components/work_item_links/work_item_children_wrapper.vue
+++ b/app/assets/javascripts/work_items/components/work_item_links/work_item_children_wrapper.vue
@@ -66,11 +66,6 @@ export default {
required: false,
default: false,
},
- allowedChildTypes: {
- type: Array,
- required: false,
- default: () => [],
- },
isTopLevel: {
type: Boolean,
required: false,
@@ -90,6 +85,16 @@ export default {
required: false,
default: true,
},
+ allowedChildrenByType: {
+ type: Object,
+ required: false,
+ default: () => {},
+ },
+ draggedItemType: {
+ type: String,
+ required: false,
+ default: null,
+ },
},
data() {
return {
@@ -290,8 +295,9 @@ export default {
parentId: toParentId,
};
},
- handleDragOnStart() {
+ handleDragOnStart(params) {
sortableStart();
+ this.$emit('drag', params.item.dataset.childType);
this.dragCancelled = false;
// Attach listener to detect `ESC` key press to cancel drag.
document.addEventListener('keyup', this.handleDocumentKeyup);
@@ -299,6 +305,7 @@ export default {
async handleDragOnEnd(params) {
clearTimeout(this.toggleTimer);
sortableEnd();
+ this.$emit('drop');
document.removeEventListener('keyup', this.handleDocumentKeyup);
// Drag was cancelled, prevent reordering.
if (this.dragCancelled) return;
@@ -524,10 +531,14 @@ export default {
:show-labels="showLabels"
:work-item-full-path="fullPath"
:show-task-weight="showTaskWeight"
- :allowed-child-types="allowedChildTypes"
+ :dragged-item-type="draggedItemType"
+ :allowed-children-by-type="allowedChildrenByType"
:is-top-level="isTopLevel"
:data-child-title="child.title"
+ :data-child-type="child.workItemType.name"
class="!gl-border-x-0 !gl-border-b-1 !gl-border-t-0 !gl-border-solid !gl-pb-2 last:!gl-border-b-0 last:!gl-pb-0"
+ @drag="$emit('drag', $event)"
+ @drop="$emit('drop')"
@mouseover="prefetchWorkItem(child)"
@mouseout="clearPrefetching"
@removeChild="removeChild"
diff --git a/app/assets/javascripts/work_items/components/work_item_links/work_item_link_child.vue b/app/assets/javascripts/work_items/components/work_item_links/work_item_link_child.vue
index b50f07fbdf3..21a67d9c9b2 100644
--- a/app/assets/javascripts/work_items/components/work_item_links/work_item_link_child.vue
+++ b/app/assets/javascripts/work_items/components/work_item_links/work_item_link_child.vue
@@ -59,16 +59,21 @@ export default {
required: false,
default: false,
},
- allowedChildTypes: {
- type: Array,
+ draggedItemType: {
+ type: String,
required: false,
- default: () => [],
+ default: null,
},
showTaskWeight: {
type: Boolean,
required: false,
default: true,
},
+ allowedChildrenByType: {
+ type: Object,
+ required: false,
+ default: () => {},
+ },
},
data() {
return {
@@ -180,11 +185,14 @@ export default {
shouldShowWeight() {
return this.childItemType === WORK_ITEM_TYPE_VALUE_TASK ? this.showTaskWeight : true;
},
- allowedChildren() {
- return this.allowedChildTypes.length > 0;
+ allowedChildTypes() {
+ return this.allowedChildrenByType?.[this.childItemType] || [];
+ },
+ draggedItemTypeIsAllowed() {
+ return this.allowedChildTypes.includes(this.draggedItemType);
},
showChildrenDropzone() {
- return !this.hasChildren && this.allowedChildren;
+ return !this.hasChildren && this.draggedItemTypeIsAllowed;
},
},
methods: {
@@ -280,6 +288,10 @@ export default {
:is-top-level="false"
:show-task-weight="showTaskWeight"
:has-indirect-children="hasIndirectChildren"
+ :dragged-item-type="draggedItemType"
+ :allowed-children-by-type="allowedChildrenByType"
+ @drag="$emit('drag', $event)"
+ @drop="$emit('drop')"
@removeChild="$emit('removeChild', childItem)"
@error="$emit('error', $event)"
@click="$emit('click', $event)"
diff --git a/app/assets/javascripts/work_items/components/work_item_links/work_item_tree.vue b/app/assets/javascripts/work_items/components/work_item_links/work_item_tree.vue
index 63742f07225..fe3e798cb1a 100644
--- a/app/assets/javascripts/work_items/components/work_item_links/work_item_tree.vue
+++ b/app/assets/javascripts/work_items/components/work_item_links/work_item_tree.vue
@@ -24,6 +24,7 @@ import {
getShowLabelsFromLocalStorage,
} from '../../utils';
import getWorkItemTreeQuery from '../../graphql/work_item_tree.query.graphql';
+import namespaceWorkItemTypesQuery from '../../graphql/namespace_work_item_types.query.graphql';
import WorkItemChildrenLoadMore from '../shared/work_item_children_load_more.vue';
import WorkItemMoreActions from '../shared/work_item_more_actions.vue';
import WorkItemActionsSplitButton from './work_item_actions_split_button.vue';
@@ -108,10 +109,12 @@ export default {
workItem: {},
disableContent: false,
showLabelsLocalStorageKey: WORKITEM_TREE_SHOWLABELS_LOCALSTORAGEKEY,
+ workItemTypes: [],
+ hierarchyWidget: null,
+ draggedItemType: null,
};
},
apollo: {
- // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties
hierarchyWidget: {
query: getWorkItemTreeQuery,
variables() {
@@ -139,6 +142,20 @@ export default {
}
},
},
+ workItemTypes: {
+ query: namespaceWorkItemTypesQuery,
+ variables() {
+ return {
+ fullPath: this.fullPath,
+ };
+ },
+ update(data) {
+ return data.workspace?.workItemTypes?.nodes;
+ },
+ skip() {
+ return !this.canUpdate;
+ },
+ },
},
computed: {
workItemHierarchy() {
@@ -218,6 +235,17 @@ export default {
showTaskWeight() {
return this.workItemType !== WORK_ITEM_TYPE_VALUE_EPIC;
},
+ allowedChildrenByType() {
+ return this.workItemTypes.reduce((acc, type) => {
+ const definition = type.widgetDefinitions?.find(
+ (widgetDefinition) => widgetDefinition.type === WIDGET_TYPE_HIERARCHY,
+ );
+ if (definition?.allowedChildTypes?.nodes?.length > 0) {
+ acc[type.name] = definition.allowedChildTypes.nodes.map((a) => a.name);
+ }
+ return acc;
+ }, {});
+ },
},
mounted() {
this.showLabels = getShowLabelsFromLocalStorage(
@@ -354,9 +382,12 @@ export default {
:work-item-type="workItemType"
:show-labels="showLabels"
:disable-content="disableContent"
- :allowed-child-types="allowedChildTypes"
:show-task-weight="showTaskWeight"
:has-indirect-children="hasIndirectChildren"
+ :allowed-children-by-type="allowedChildrenByType"
+ :dragged-item-type="draggedItemType"
+ @drag="draggedItemType = $event"
+ @drop="draggedItemType = null"
@error="error = $event"
@show-modal="showModal"
/>
diff --git a/app/assets/javascripts/work_items/graphql/work_item_type.fragment.graphql b/app/assets/javascripts/work_items/graphql/work_item_type.fragment.graphql
index dad7a18399e..9193bbd9821 100644
--- a/app/assets/javascripts/work_items/graphql/work_item_type.fragment.graphql
+++ b/app/assets/javascripts/work_items/graphql/work_item_type.fragment.graphql
@@ -3,5 +3,13 @@ fragment WorkItemTypeFragment on WorkItemType {
name
widgetDefinitions {
type
+ ... on WorkItemWidgetDefinitionHierarchy {
+ allowedChildTypes {
+ nodes {
+ id
+ name
+ }
+ }
+ }
}
}
diff --git a/app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb b/app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb
index bf6c667b87b..b6ea1d95037 100644
--- a/app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb
+++ b/app/controllers/projects/analytics/cycle_analytics/value_streams_controller.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
class Projects::Analytics::CycleAnalytics::ValueStreamsController < Projects::ApplicationController
+ extend ::Gitlab::Utils::Override
include ::Analytics::CycleAnalytics::ValueStreamActions
respond_to :json
@@ -14,3 +15,5 @@ class Projects::Analytics::CycleAnalytics::ValueStreamsController < Projects::Ap
project.project_namespace
end
end
+
+Projects::Analytics::CycleAnalytics::ValueStreamsController.prepend_mod
diff --git a/app/workers/concerns/application_worker.rb b/app/workers/concerns/application_worker.rb
index 08bdaf2a0ad..422577fbb1c 100644
--- a/app/workers/concerns/application_worker.rb
+++ b/app/workers/concerns/application_worker.rb
@@ -75,6 +75,10 @@ module ApplicationWorker
set(rescheduled_once: true)
end
+ def concurrency_limit_resume
+ set(concurrency_limit_resume: true)
+ end
+
def generated_queue_name
Gitlab::SidekiqConfig::WorkerRouter.queue_name_from_worker_name(self)
end
diff --git a/app/workers/group_destroy_worker.rb b/app/workers/group_destroy_worker.rb
index ca894e72b6b..e209c1a24fa 100644
--- a/app/workers/group_destroy_worker.rb
+++ b/app/workers/group_destroy_worker.rb
@@ -13,9 +13,8 @@ class GroupDestroyWorker
idempotent!
deduplicate :until_executed, ttl: 2.hours
- def perform(group_id, user_id, params = {})
+ def perform(group_id, user_id, params = {}) # rubocop:disable Lint/UnusedMethodArgument -- Keep params parameter for backwards compatibility. Remove `param` in 18.0 release.
Gitlab::QueryLimiting.disable!('https://gitlab.com/gitlab-org/gitlab/-/issues/464673')
- params = params.with_indifferent_access
begin
group = Group.find(group_id)
@@ -25,28 +24,12 @@ class GroupDestroyWorker
user = User.find(user_id)
- admin_mode = params[:admin_mode]
- optionally_run_in_admin_mode(user, admin_mode) do
+ # AdjournedGroupDeletionWorker will destroy groups days after they are scheduled for deletion.
+ # If admin_mode is enabled, it will potentially halt group and project deletion.
+ # The admin_mode flag allows bypassing this check (but no other policy checks), since the admin_mode
+ # check should have been run when the job was scheduled, not whenever Sidekiq gets around to it.
+ Gitlab::Auth::CurrentUserMode.optionally_run_in_admin_mode(user) do
Groups::DestroyService.new(group, user).execute
end
end
-
- private
-
- # AdjournedGroupDeletionWorker will destroy groups days after they are scheduled for deletion.
- # If admin_mode is enabled, it will potentially halt group and project deletion.
- # The admin_mode flag allows bypassing this check (but no other policy checks), since the admin_mode
- # check should have been run when the job was scheduled, not whenever Sidekiq gets around to it.
- def optionally_run_in_admin_mode(user, admin_mode)
- unless Gitlab::CurrentSettings.admin_mode && admin_mode && user.admin? # rubocop:disable Cop/UserAdmin -- policy checks are enforced further down the stack
- yield
- return
- end
-
- Gitlab::Auth::CurrentUserMode.bypass_session!(user.id) do
- Gitlab::Auth::CurrentUserMode.with_current_admin(user) do
- yield
- end
- end
- end
end
diff --git a/app/workers/project_destroy_worker.rb b/app/workers/project_destroy_worker.rb
index 565dfab9930..68aaf4a87dc 100644
--- a/app/workers/project_destroy_worker.rb
+++ b/app/workers/project_destroy_worker.rb
@@ -14,12 +14,19 @@ class ProjectDestroyWorker
deduplicate :until_executed, ttl: 2.hours
def perform(project_id, user_id, params)
+ params = params.symbolize_keys
Gitlab::QueryLimiting.disable!('https://gitlab.com/gitlab-org/gitlab/-/issues/333366')
project = Project.find(project_id)
user = User.find(user_id)
- ::Projects::DestroyService.new(project, user, params.symbolize_keys).execute
+ # AdjournedProjectDeletionWorker will destroy projects days after they are scheduled for deletion.
+ # If admin_mode is enabled, it will potentially halt group and project deletion.
+ # The admin_mode flag allows bypassing this check (but no other policy checks), since the admin_mode
+ # check should have been run when the job was scheduled, not whenever Sidekiq gets around to it.
+ Gitlab::Auth::CurrentUserMode.optionally_run_in_admin_mode(user) do
+ ::Projects::DestroyService.new(project, user, params).execute
+ end
rescue ActiveRecord::RecordNotFound => error
logger.error("Failed to delete project (#{project_id}): #{error.message}")
end
diff --git a/config/sidekiq_queues.yml b/config/sidekiq_queues.yml
index 0776ef9d7f4..5acf2e046b0 100644
--- a/config/sidekiq_queues.yml
+++ b/config/sidekiq_queues.yml
@@ -827,6 +827,8 @@
- 1
- - security_sync_policy_violation_comment
- 1
+- - security_sync_project_policies
+ - 1
- - security_sync_project_policy
- 1
- - security_sync_scan_policies
diff --git a/db/migrate/20241003144714_add_issue_link_id_to_related_epic_links.rb b/db/migrate/20241003144714_add_issue_link_id_to_related_epic_links.rb
new file mode 100644
index 00000000000..72304b9c004
--- /dev/null
+++ b/db/migrate/20241003144714_add_issue_link_id_to_related_epic_links.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddIssueLinkIdToRelatedEpicLinks < Gitlab::Database::Migration[2.2]
+ milestone '17.5'
+
+ def up
+ add_column :related_epic_links, :issue_link_id, :bigint
+ end
+
+ def down
+ remove_column :related_epic_links, :issue_link_id, if_exists: true
+ end
+end
diff --git a/db/migrate/20241003144908_add_work_item_parent_links_id_to_epic_issues.rb b/db/migrate/20241003144908_add_work_item_parent_links_id_to_epic_issues.rb
new file mode 100644
index 00000000000..0236244e56f
--- /dev/null
+++ b/db/migrate/20241003144908_add_work_item_parent_links_id_to_epic_issues.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddWorkItemParentLinksIdToEpicIssues < Gitlab::Database::Migration[2.2]
+ milestone '17.5'
+
+ def up
+ add_column :epic_issues, :work_item_parent_link_id, :bigint
+ end
+
+ def down
+ remove_column :epic_issues, :work_item_parent_link_id, if_exists: true
+ end
+end
diff --git a/db/migrate/20241004103850_add_work_item_parent_link_id_to_epics.rb b/db/migrate/20241004103850_add_work_item_parent_link_id_to_epics.rb
new file mode 100644
index 00000000000..0f0247ce31b
--- /dev/null
+++ b/db/migrate/20241004103850_add_work_item_parent_link_id_to_epics.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddWorkItemParentLinkIdToEpics < Gitlab::Database::Migration[2.2]
+ milestone '17.5'
+
+ def up
+ add_column :epics, :work_item_parent_link_id, :bigint
+ end
+
+ def down
+ remove_column :epics, :work_item_parent_link_id, if_exists: true
+ end
+end
diff --git a/db/post_migrate/20241008140109_add_related_epic_links_issue_link_constraints.rb b/db/post_migrate/20241008140109_add_related_epic_links_issue_link_constraints.rb
new file mode 100644
index 00000000000..fc42d31da71
--- /dev/null
+++ b/db/post_migrate/20241008140109_add_related_epic_links_issue_link_constraints.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddRelatedEpicLinksIssueLinkConstraints < Gitlab::Database::Migration[2.2]
+ milestone '17.5'
+
+ disable_ddl_transaction!
+ INDEX_NAME = 'index_unique_issue_link_id_on_related_epic_links'
+
+ def up
+ add_concurrent_index :related_epic_links, :issue_link_id, unique: true, name: INDEX_NAME
+ add_concurrent_foreign_key(:related_epic_links, :issue_links,
+ column: :issue_link_id, validate: true, on_delete: :cascade
+ )
+ end
+
+ def down
+ remove_concurrent_index_by_name :related_epic_links, INDEX_NAME
+ remove_foreign_key_if_exists :related_epic_links, column: :issue_link_id
+ end
+end
diff --git a/db/post_migrate/20241008140204_add_epic_issue_work_item_parent_link_constraints.rb b/db/post_migrate/20241008140204_add_epic_issue_work_item_parent_link_constraints.rb
new file mode 100644
index 00000000000..aa207ea6ac1
--- /dev/null
+++ b/db/post_migrate/20241008140204_add_epic_issue_work_item_parent_link_constraints.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddEpicIssueWorkItemParentLinkConstraints < Gitlab::Database::Migration[2.2]
+ milestone '17.5'
+
+ disable_ddl_transaction!
+ INDEX_NAME = 'index_unique_parent_link_id_on_epic_issues'
+
+ def up
+ add_concurrent_index :epic_issues, :work_item_parent_link_id, unique: true, name: INDEX_NAME
+ add_concurrent_foreign_key(:epic_issues, :work_item_parent_links,
+ column: :work_item_parent_link_id, validate: true, on_delete: :cascade
+ )
+ end
+
+ def down
+ remove_concurrent_index_by_name :epic_issues, INDEX_NAME
+ remove_foreign_key_if_exists :epic_issues, column: :work_item_parent_link_id
+ end
+end
diff --git a/db/post_migrate/20241008140221_add_epic_work_item_parent_link_constraints.rb b/db/post_migrate/20241008140221_add_epic_work_item_parent_link_constraints.rb
new file mode 100644
index 00000000000..9b2283f2885
--- /dev/null
+++ b/db/post_migrate/20241008140221_add_epic_work_item_parent_link_constraints.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddEpicWorkItemParentLinkConstraints < Gitlab::Database::Migration[2.2]
+ milestone '17.5'
+
+ disable_ddl_transaction!
+ INDEX_NAME = 'index_unique_parent_link_id_on_epics'
+
+ def up
+ add_concurrent_index :epics, :work_item_parent_link_id, unique: true, name: INDEX_NAME
+ add_concurrent_foreign_key(:epics, :work_item_parent_links,
+ column: :work_item_parent_link_id, validate: true, on_delete: :nullify
+ )
+ end
+
+ def down
+ remove_concurrent_index_by_name :epics, INDEX_NAME
+ remove_foreign_key_if_exists :epics, column: :work_item_parent_link_id
+ end
+end
diff --git a/db/schema_migrations/20241003144714 b/db/schema_migrations/20241003144714
new file mode 100644
index 00000000000..1bb8d48c791
--- /dev/null
+++ b/db/schema_migrations/20241003144714
@@ -0,0 +1 @@
+6eaaa9237a8df4734eff4feb42cd6ad687fa3d1d28fb20ecc1202bae30a15840
\ No newline at end of file
diff --git a/db/schema_migrations/20241003144908 b/db/schema_migrations/20241003144908
new file mode 100644
index 00000000000..6d3a9592224
--- /dev/null
+++ b/db/schema_migrations/20241003144908
@@ -0,0 +1 @@
+d9150237b49596467d630efcb9daa38a711f4fb4dfd0b4508ad92385b83da737
\ No newline at end of file
diff --git a/db/schema_migrations/20241004103850 b/db/schema_migrations/20241004103850
new file mode 100644
index 00000000000..1630b54956e
--- /dev/null
+++ b/db/schema_migrations/20241004103850
@@ -0,0 +1 @@
+699d206239f7696ce90c2338bf58f27367fb33abb0418397f3e9929963e70f4d
\ No newline at end of file
diff --git a/db/schema_migrations/20241008140109 b/db/schema_migrations/20241008140109
new file mode 100644
index 00000000000..919b36b4097
--- /dev/null
+++ b/db/schema_migrations/20241008140109
@@ -0,0 +1 @@
+5a16834f6a0c44dca575078ff523ada9de4ddf5421564a34794fcd2ff35cb2ca
\ No newline at end of file
diff --git a/db/schema_migrations/20241008140204 b/db/schema_migrations/20241008140204
new file mode 100644
index 00000000000..188a04daec9
--- /dev/null
+++ b/db/schema_migrations/20241008140204
@@ -0,0 +1 @@
+914aaf6bc4cb26a6e8cbe3b4266a84e7728825e5c48a14ff1ff21467fc94dc32
\ No newline at end of file
diff --git a/db/schema_migrations/20241008140221 b/db/schema_migrations/20241008140221
new file mode 100644
index 00000000000..4b15563576e
--- /dev/null
+++ b/db/schema_migrations/20241008140221
@@ -0,0 +1 @@
+9687e2ef0a8886e583b2806229349f3f08f1b167cc8ab9ff474ef291dc887190
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 5c75a8b4f32..b7240695902 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -11256,7 +11256,8 @@ CREATE TABLE epic_issues (
epic_id bigint NOT NULL,
issue_id bigint NOT NULL,
relative_position integer,
- namespace_id bigint
+ namespace_id bigint,
+ work_item_parent_link_id bigint
);
CREATE SEQUENCE epic_issues_id_seq
@@ -11345,6 +11346,7 @@ CREATE TABLE epics (
issue_id bigint,
imported smallint DEFAULT 0 NOT NULL,
imported_from smallint DEFAULT 0 NOT NULL,
+ work_item_parent_link_id bigint,
CONSTRAINT check_450724d1bb CHECK ((issue_id IS NOT NULL)),
CONSTRAINT check_ca608c40b3 CHECK ((char_length(color) <= 7)),
CONSTRAINT check_fcfb4a93ff CHECK ((lock_version IS NOT NULL))
@@ -17849,7 +17851,8 @@ CREATE TABLE related_epic_links (
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
link_type smallint DEFAULT 0 NOT NULL,
- group_id bigint
+ group_id bigint,
+ issue_link_id bigint
);
CREATE SEQUENCE related_epic_links_id_seq
@@ -31361,8 +31364,14 @@ CREATE UNIQUE INDEX index_unique_epics_on_issue_id ON epics USING btree (issue_i
CREATE UNIQUE INDEX index_unique_issuable_resource_links_on_unique_issue_link ON issuable_resource_links USING btree (issue_id, link) WHERE is_unique;
+CREATE UNIQUE INDEX index_unique_issue_link_id_on_related_epic_links ON related_epic_links USING btree (issue_link_id);
+
CREATE UNIQUE INDEX index_unique_issue_metrics_issue_id ON issue_metrics USING btree (issue_id);
+CREATE UNIQUE INDEX index_unique_parent_link_id_on_epic_issues ON epic_issues USING btree (work_item_parent_link_id);
+
+CREATE UNIQUE INDEX index_unique_parent_link_id_on_epics ON epics USING btree (work_item_parent_link_id);
+
CREATE UNIQUE INDEX index_unique_project_authorizations_on_unique_project_user ON project_authorizations USING btree (project_id, user_id) WHERE is_unique;
CREATE INDEX index_unit_test_failures_failed_at ON ci_unit_test_failures USING btree (failed_at DESC);
@@ -34557,6 +34566,9 @@ ALTER TABLE ONLY agent_user_access_group_authorizations
ALTER TABLE ONLY group_crm_settings
ADD CONSTRAINT fk_54592e5f57 FOREIGN KEY (source_group_id) REFERENCES namespaces(id) ON DELETE CASCADE;
+ALTER TABLE ONLY epic_issues
+ ADD CONSTRAINT fk_54dd5d38a7 FOREIGN KEY (work_item_parent_link_id) REFERENCES work_item_parent_links(id) ON DELETE CASCADE;
+
ALTER TABLE ONLY terraform_states
ADD CONSTRAINT fk_558901b030 FOREIGN KEY (locked_by_user_id) REFERENCES users(id) ON DELETE SET NULL;
@@ -34740,6 +34752,9 @@ ALTER TABLE ONLY protected_tag_create_access_levels
ALTER TABLE ONLY environments
ADD CONSTRAINT fk_75c2098045 FOREIGN KEY (cluster_agent_id) REFERENCES cluster_agents(id) ON DELETE SET NULL;
+ALTER TABLE ONLY epics
+ ADD CONSTRAINT fk_765e132668 FOREIGN KEY (work_item_parent_link_id) REFERENCES work_item_parent_links(id) ON DELETE SET NULL;
+
ALTER TABLE ONLY notes
ADD CONSTRAINT fk_76db6d50c6 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE;
@@ -35118,6 +35133,9 @@ ALTER TABLE ONLY vulnerability_reads
ALTER TABLE ONLY member_approvals
ADD CONSTRAINT fk_b2e4a4b68a FOREIGN KEY (member_id) REFERENCES members(id) ON DELETE CASCADE;
+ALTER TABLE ONLY related_epic_links
+ ADD CONSTRAINT fk_b30520b698 FOREIGN KEY (issue_link_id) REFERENCES issue_links(id) ON DELETE CASCADE;
+
ALTER TABLE ONLY issues
ADD CONSTRAINT fk_b37be69be6 FOREIGN KEY (work_item_type_id) REFERENCES work_item_types(id);
diff --git a/doc/administration/self_hosted_models/install_infrastructure.md b/doc/administration/self_hosted_models/install_infrastructure.md
index 27a3480de17..6792377e29d 100644
--- a/doc/administration/self_hosted_models/install_infrastructure.md
+++ b/doc/administration/self_hosted_models/install_infrastructure.md
@@ -42,7 +42,7 @@ Install one of the following GitLab-approved LLM models:
| Mistral | [Mistral 7B Text](https://huggingface.co/mistralai/Mistral-7B-v0.3) | **{check-circle}** Yes | **{dotted-circle}** No |**{dotted-circle}** No |
| Mistral | [Mixtral 8x22B Text](https://huggingface.co/mistralai/Mixtral-8x22B-v0.1) | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
| Mistral | [Mixtral 8x7B Text](https://huggingface.co/mistralai/Mixtral-8x7B-v0.1) | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
-| Claude 3 | [Claude 3.5 Sonnet](https://www.anthropic.com/news/claude-3-5-sonnet) | **{check-circle}** No | **{check-circle}** Yes | **{check-circle}** Yes |
+| Claude 3 | [Claude 3.5 Sonnet](https://www.anthropic.com/news/claude-3-5-sonnet) | **{dotted-circle}** No | **{check-circle}** Yes | **{check-circle}** Yes |
The following models are under evaluation, and support is limited:
@@ -55,11 +55,11 @@ The following models are under evaluation, and support is limited:
| CodeLlama | [Code-Llama 13b](https://huggingface.co/meta-llama/CodeLlama-13b-Instruct-hf) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
| DeepSeekCoder | [DeepSeek Coder 33b Instruct](https://huggingface.co/deepseek-ai/deepseek-coder-33b-instruct) | **{check-circle}** Yes | **{check-circle}** Yes | **{dotted-circle}** No |
| DeepSeekCoder | [DeepSeek Coder 33b Base](https://huggingface.co/deepseek-ai/deepseek-coder-33b-base) | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
-| GPT | [GPT-3.5-Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-35) | **{check-circle}** No | **{dotted-circle}** Yes | **{dotted-circle}** No |
-| GPT | [GPT-4](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{check-circle}** No | **{dotted-circle}** Yes | **{dotted-circle}** No |
-| GPT | [GPT-4 Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{check-circle}** No | **{dotted-circle}** Yes | **{dotted-circle}** No |
-| GPT | [GPT-4o](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{check-circle}** No | **{dotted-circle}** Yes | **{dotted-circle}** No |
-| GPT | [GPT-4o-mini](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{check-circle}** No | **{dotted-circle}** Yes | **{dotted-circle}** No |
+| GPT | [GPT-3.5-Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-35) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
+| GPT | [GPT-4](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
+| GPT | [GPT-4 Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
+| GPT | [GPT-4o](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
+| GPT | [GPT-4o-mini](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
diff --git a/doc/development/database/database_lab.md b/doc/development/database/database_lab.md
index 4df0cd24e52..1e336aaa2a3 100644
--- a/doc/development/database/database_lab.md
+++ b/doc/development/database/database_lab.md
@@ -175,7 +175,4 @@ the added benefit and safety of an isolated writeable environment.
#### Simplified access through `pgai` Ruby gem
-WARNING:
-The `pgai` gem has not yet been updated to use the new database lab instances so you will only be able to access the legacy instance using this tool.
-
For instructions on using the `pgai` Ruby gem, see: [Database Lab access using the pgai Ruby gem](database_lab_pgai.md).
diff --git a/doc/development/database/database_lab_pgai.md b/doc/development/database/database_lab_pgai.md
index cf9a1591302..8de0325a603 100644
--- a/doc/development/database/database_lab_pgai.md
+++ b/doc/development/database/database_lab_pgai.md
@@ -6,9 +6,6 @@ info: Any user with at least the Maintainer role can merge updates to this conte
# Database Lab access using the `pgai` Ruby gem
-WARNING:
-The `pgai` gem has not yet been updated to use the new database lab instances so you will only be able to access `gitlab-production-main` and `gitlab-production-ci` using this tool.
-
[@mbobin](https://gitlab.com/mbobin) created the [`pgai` Ruby Gem](https://gitlab.com/mbobin/pgai/#pgai) that
greatly simplifies access to a database clone, with support for:
diff --git a/doc/development/stage_group_observability/dashboards/error_budget_detail.md b/doc/development/stage_group_observability/dashboards/error_budget_detail.md
index 64f158ec098..a6fc358b7c2 100644
--- a/doc/development/stage_group_observability/dashboards/error_budget_detail.md
+++ b/doc/development/stage_group_observability/dashboards/error_budget_detail.md
@@ -21,7 +21,7 @@ On top of each dashboard, there's the same panel with the [error budget](../inde
Here, the time based targets adjust depending on the range.
For example, while the budget was 20 minutes per 28 days, it is only 1/4 of that for 7 days:
-
+
Also, keep in mind that Grafana rounds the numbers. In this example the
total time spent is 5 minutes and 24 seconds, so 24 seconds over
@@ -67,7 +67,7 @@ If this is something you would like for your group, let us know there.
### Stage group aggregation
-
+
The stage group aggregation shows a graph with the Apdex and errors
portion of the error budget over time. The lower a dip in the Apdex
@@ -82,7 +82,7 @@ the graph.
### Service-level indicators
-
+
This time series shows a breakdown of each SLI that could be contributing to the
error budget for a stage group. Similar to the stage group
diff --git a/doc/development/stage_group_observability/dashboards/img/error_budget_detail_7d_budget.png b/doc/development/stage_group_observability/dashboards/img/error_budget_detail_7d_budget_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/error_budget_detail_7d_budget.png
rename to doc/development/stage_group_observability/dashboards/img/error_budget_detail_7d_budget_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/error_budget_detail_sli.png b/doc/development/stage_group_observability/dashboards/img/error_budget_detail_sli_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/error_budget_detail_sli.png
rename to doc/development/stage_group_observability/dashboards/img/error_budget_detail_sli_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/error_budget_detail_stage_group_aggregation.png b/doc/development/stage_group_observability/dashboards/img/error_budget_detail_stage_group_aggregation_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/error_budget_detail_stage_group_aggregation.png
rename to doc/development/stage_group_observability/dashboards/img/error_budget_detail_stage_group_aggregation_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_28d_budget.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_28d_budget_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_28d_budget.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_28d_budget_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_annotation.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_annotation_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_annotation.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_annotation_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_1.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_1_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_1.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_1_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_2.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_2_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_2.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_2_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_3.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_3_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_3.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_debug_3_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_filters.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_filters_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_filters.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_filters_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_metrics.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_metrics_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_metrics.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_metrics_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_customization.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_customization_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_customization.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_customization_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_filter.png b/doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_filter_v14_10.png
similarity index 100%
rename from doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_filter.png
rename to doc/development/stage_group_observability/dashboards/img/stage_group_dashboards_time_filter_v14_10.png
diff --git a/doc/development/stage_group_observability/dashboards/index.md b/doc/development/stage_group_observability/dashboards/index.md
index fa4645408b2..a0797ec659a 100644
--- a/doc/development/stage_group_observability/dashboards/index.md
+++ b/doc/development/stage_group_observability/dashboards/index.md
@@ -34,7 +34,7 @@ Some generated dashboards are already available:
## Time range controls
-
+
By default, all the times are in UTC time zone.
[We use UTC when communicating in Engineering.](https://handbook.gitlab.com/handbook/communication/#writing-style-guidelines)
@@ -54,7 +54,7 @@ Some special events are meaningful to development and operational activities.
[Grafana annotations](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/annotate-visualizations/) mark them
directly on the graphs.
-
+
| Name | Type | Description |
| --------------- | ---------- | ----------- |
@@ -67,4 +67,4 @@ directly on the graphs.
Example of a feature flag annotation displayed on a dashboard panel:
-
+
diff --git a/doc/development/stage_group_observability/dashboards/stage_group_dashboard.md b/doc/development/stage_group_observability/dashboards/stage_group_dashboard.md
index 68e3313e8f5..19304105c57 100644
--- a/doc/development/stage_group_observability/dashboards/stage_group_dashboard.md
+++ b/doc/development/stage_group_observability/dashboards/stage_group_dashboard.md
@@ -17,7 +17,7 @@ contents, and how they can be customized.
### Error budget panels
-
+
The top panels display the [error budget](../index.md#error-budget).
These panels always show the 28 days before the end time selected in the
@@ -27,7 +27,7 @@ and stage.
### Metrics panels
-
+
Although most of the metrics displayed in the panels are self-explanatory in their title and nearby
description, note the following:
@@ -74,16 +74,16 @@ Example debugging workflow:
[Code Review group's dashboard](https://dashboards.gitlab.net/d/stage-groups-code_review/stage-groups-group-dashboard-create-code-review?orgId=1).
1. Sidekiq Error Rate panel shows an elevated error rate, specifically `UpdateMergeRequestsWorker`.
- 
+ 
1. If you select **Kibana: Kibana Sidekiq failed request logs** in the **Extra links** section, you can filter for `UpdateMergeRequestsWorker` and read through the logs.
- 
+ 
1. With [Sentry](https://sentry.gitlab.net/gitlab/gitlabcom/) you can find the exception where you
can filter by transaction type and `correlation_id` from Kibana's result item.
- 
+ 
1. A precise exception, including a stack trace, job arguments, and other information should now appear.
@@ -162,7 +162,7 @@ stageGroupDashboards.dashboard('source_code')
.stageGroupDashboardTrailer()
```
-
+
If you want to see the workflow in action, we've recorded a pairing session on customizing a dashboard,
diff --git a/doc/development/stage_group_observability/img/stage_group_dashboards_error_attribution.png b/doc/development/stage_group_observability/img/stage_group_dashboards_error_attribution_v14_1.png
similarity index 100%
rename from doc/development/stage_group_observability/img/stage_group_dashboards_error_attribution.png
rename to doc/development/stage_group_observability/img/stage_group_dashboards_error_attribution_v14_1.png
diff --git a/doc/development/stage_group_observability/img/stage_group_dashboards_service_sli_detail.png b/doc/development/stage_group_observability/img/stage_group_dashboards_service_sli_detail_v14_1.png
similarity index 100%
rename from doc/development/stage_group_observability/img/stage_group_dashboards_service_sli_detail.png
rename to doc/development/stage_group_observability/img/stage_group_dashboards_service_sli_detail_v14_1.png
diff --git a/doc/development/stage_group_observability/index.md b/doc/development/stage_group_observability/index.md
index 4d04d044394..e923b186d96 100644
--- a/doc/development/stage_group_observability/index.md
+++ b/doc/development/stage_group_observability/index.md
@@ -110,7 +110,7 @@ The row below the error budget row is collapsed by default. Expanding
it shows which component and violation type had the most offending
operations in the past 28 days.
-
+
The first panel on the left shows a table with the number of errors per
component. Digging into the first row in that table has
@@ -140,7 +140,7 @@ component means.
For example, see the `server` component of the `web-pages` service:
-
+
To add more SLIs tailored to specific features, you can use an [Application SLI](../application_slis/index.md).
diff --git a/doc/integration/omniauth.md b/doc/integration/omniauth.md
index b98baa104df..60d5787da79 100644
--- a/doc/integration/omniauth.md
+++ b/doc/integration/omniauth.md
@@ -347,52 +347,6 @@ omniauth:
::EndTabs
-## Use a custom OmniAuth provider
-
-NOTE:
-The following information only applies to self-compiled installations.
-
-If you have to integrate with an authentication solution other than the [OmniAuth](https://github.com/omniauth/omniauth) providers included with GitLab,
-you can use a custom OmniAuth provider.
-
-These steps are general. Read the OmniAuth provider's documentation for the exact
-implementation details.
-
-1. Stop GitLab:
-
- ```shell
- sudo service gitlab stop
- ```
-
-1. Add the gem to your [`Gemfile`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/Gemfile):
-
- ```shell
- gem "omniauth-your-auth-provider"
- ```
-
-1. Install the new OmniAuth provider gem:
-
- ```shell
- sudo -u git -H bundle install --without development test mysql --path vendor/bundle --no-deployment
- ```
-
- These commands are the same as the commands for [installing gems](../install/installation.md#install-gems)
- during initial installation, with `--path vendor/bundle --no-deployment` instead of `--deployment`.
-
-1. Start GitLab:
-
- ```shell
- sudo service gitlab start
- ```
-
-### Custom OmniAuth provider examples
-
-If you have successfully set up a provider that is not already integrated with GitLab,
-let us know.
-
-We can't officially support every possible authentication mechanism available,
-but we'd like to at least help those with specific needs.
-
## Keep OmniAuth user profiles up to date
You can enable profile syncing from selected OmniAuth providers.
diff --git a/doc/user/permissions.md b/doc/user/permissions.md
index 1d68c3deab3..3f432a4d129 100644
--- a/doc/user/permissions.md
+++ b/doc/user/permissions.md
@@ -201,7 +201,7 @@ Project permissions for [model registry](project/ml/model_registry/index.md) and
Project permissions for monitoring including [error tracking](../operations/error_tracking.md) and [incident management](../operations/incident_management/index.md):
| Action | Guest | Reporter | Developer | Maintainer | Owner | Notes |
-|---------------------------------------------------------------------------------------------------------------------|-:-:---|-:-:------|-:-:-------|-:-:--------|-:-:---|-------|
+|---------------------------------------------------------------------------------------------------------------------| :----:| :------: | :-------: | :--------: | :---: | :---: |
| View an [incident](../operations/incident_management/incidents.md) | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Assign an [incident management](../operations/incident_management/index.md) alert | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Participate in on-call rotation for [Incident Management](../operations/incident_management/index.md) | ✓ | ✓ | ✓ | ✓ | ✓ | |
@@ -331,37 +331,37 @@ Project permissions for [project features](project/organize_work_with_projects.m
Project permissions for [GitLab Pages](project/pages/index.md):
-| Action | Guest | Reporter | Developer | Maintainer | Owner | Notes |
-|---------------------------------------------------------------------------|:-----:|:--------:|:---------:|:----------:|:-----:|-------|
-| View GitLab Pages protected by [access control](project/pages/pages_access_control.md) | ✓ | ✓ | ✓ | ✓ | ✓ | |
-| Manage GitLab Pages | | | | ✓ | ✓ | |
-| Manage GitLab Pages domain and certificates | | | | ✓ | ✓ | |
-| Remove GitLab Pages | | | | ✓ | ✓ | |
+| Action | Guest | Reporter | Developer | Maintainer | Owner | Notes |
+|-----------------------------------------------------------------------------------------|:-----:|:--------:|:---------:|:----------:|:-----:|-------|
+| View GitLab Pages protected by [access control](project/pages/pages_access_control.md) | ✓ | ✓ | ✓ | ✓ | ✓ | |
+| Manage GitLab Pages | | | | ✓ | ✓ | |
+| Manage GitLab Pages domain and certificates | | | | ✓ | ✓ | |
+| Remove GitLab Pages | | | | ✓ | ✓ | |
### Repository
Project permissions for [repository](project/repository/index.md) features including source code, branches, push rules, and more:
-| Action | Guest | Reporter | Developer | Maintainer | Owner | Notes |
-|----------------------------------------------------------------|:-----:|:--------:|:---------:|:----------:|:-----:|-------|
-| View project code | ✓ | ✓ | ✓ | ✓ | ✓ | On self-managed GitLab instances, users with the Guest role are able to perform this action only on public and internal projects (not on private projects). [External users](../administration/external_users.md) must be given explicit access (at least the **Reporter** role) even if the project is internal. Users with the Guest role on GitLab.com are only able to perform this action on public projects because internal visibility is not available. In GitLab 15.9 and later, users with the Guest role and an Ultimate license can view private repository content if an administrator (on self-managed or GitLab Dedicated) or group owner (on GitLab.com) gives those users permission. The administrator or group owner can create a [custom role](custom_roles.md) through the API or UI and assign that role to the users. |
-| Pull project code | ✓ | ✓ | ✓ | ✓ | ✓ | On self-managed GitLab instances, users with the Guest role are able to perform this action only on public and internal projects (not on private projects). [External users](../administration/external_users.md) must be given explicit access (at least the **Reporter** role) even if the project is internal. Users with the Guest role on GitLab.com are only able to perform this action on public projects because internal visibility is not available. |
-| View commit status | | ✓ | ✓ | ✓ | ✓ | |
-| Create commit status | | | ✓ | ✓ | ✓ | If the [branch is protected](project/repository/branches/protected.md), this depends on the access given to Developers and Maintainers. |
-| Update commit status | | | ✓ | ✓ | ✓ | If the [branch is protected](project/repository/branches/protected.md), this depends on the access given to Developers and Maintainers. |
-| Create [Git tags](project/repository/tags/index.md) | | | ✓ | ✓ | ✓ | |
-| Delete [Git tags](project/repository/tags/index.md) | | | ✓ | ✓ | ✓ | |
-| Create new [branches](project/repository/branches/index.md) | | | ✓ | ✓ | ✓ | |
-| Delete non-protected branches | | | ✓ | ✓ | ✓ | |
-| Force push to non-protected branches | | | ✓ | ✓ | ✓ | |
-| Push to non-protected branches | | | ✓ | ✓ | ✓ | |
-| Manage [protected branches](project/repository/branches/protected.md) | | | | ✓ | ✓ | |
-| Delete protected branches | | | | ✓ | ✓ | |
-| Push to protected branches | | | | ✓ | ✓ | If the [branch is protected](project/repository/branches/protected.md), this depends on the access given to Developers and Maintainers. |
-| Manage [protected tags](project/protected_tags.md) | | | | ✓ | ✓ | |
-| Manage [push rules](project/repository/push_rules.md) | | | | ✓ | ✓ | |
-| Remove fork relationship | | | | | ✓ | |
-| Force push to protected branches | | | | | | Not allowed for Guest, Reporter, Developer, Maintainer, or Owner. See [protected branches](project/repository/branches/protected.md#allow-force-push-on-a-protected-branch). |
+| Action | Guest | Reporter | Developer | Maintainer | Owner | Notes |
+|-----------------------------------------------------------------------|:-----:|:--------:|:---------:|:----------:|:-----:|-------|
+| View project code | ✓ | ✓ | ✓ | ✓ | ✓ | On self-managed GitLab instances, users with the Guest role are able to perform this action only on public and internal projects (not on private projects). [External users](../administration/external_users.md) must be given explicit access (at least the **Reporter** role) even if the project is internal. Users with the Guest role on GitLab.com are only able to perform this action on public projects because internal visibility is not available. In GitLab 15.9 and later, users with the Guest role and an Ultimate license can view private repository content if an administrator (on self-managed or GitLab Dedicated) or group owner (on GitLab.com) gives those users permission. The administrator or group owner can create a [custom role](custom_roles.md) through the API or UI and assign that role to the users. |
+| Pull project code | ✓ | ✓ | ✓ | ✓ | ✓ | On self-managed GitLab instances, users with the Guest role are able to perform this action only on public and internal projects (not on private projects). [External users](../administration/external_users.md) must be given explicit access (at least the **Reporter** role) even if the project is internal. Users with the Guest role on GitLab.com are only able to perform this action on public projects because internal visibility is not available. |
+| View commit status | | ✓ | ✓ | ✓ | ✓ | |
+| Create commit status | | | ✓ | ✓ | ✓ | If the [branch is protected](project/repository/branches/protected.md), this depends on the access given to Developers and Maintainers. |
+| Update commit status | | | ✓ | ✓ | ✓ | If the [branch is protected](project/repository/branches/protected.md), this depends on the access given to Developers and Maintainers. |
+| Create [Git tags](project/repository/tags/index.md) | | | ✓ | ✓ | ✓ | |
+| Delete [Git tags](project/repository/tags/index.md) | | | ✓ | ✓ | ✓ | |
+| Create new [branches](project/repository/branches/index.md) | | | ✓ | ✓ | ✓ | |
+| Delete non-protected branches | | | ✓ | ✓ | ✓ | |
+| Force push to non-protected branches | | | ✓ | ✓ | ✓ | |
+| Push to non-protected branches | | | ✓ | ✓ | ✓ | |
+| Manage [protected branches](project/repository/branches/protected.md) | | | | ✓ | ✓ | |
+| Delete protected branches | | | | ✓ | ✓ | |
+| Push to protected branches | | | | ✓ | ✓ | If the [branch is protected](project/repository/branches/protected.md), this depends on the access given to Developers and Maintainers. |
+| Manage [protected tags](project/protected_tags.md) | | | | ✓ | ✓ | |
+| Manage [push rules](project/repository/push_rules.md) | | | | ✓ | ✓ | |
+| Remove fork relationship | | | | | ✓ | |
+| Force push to protected branches | | | | | | Not allowed for Guest, Reporter, Developer, Maintainer, or Owner. See [protected branches](project/repository/branches/protected.md#allow-force-push-on-a-protected-branch). |
Project permissions for [merge requests](project/merge_requests/index.md):
@@ -405,8 +405,8 @@ The following table lists group permissions available for each role:
Group permission for [analytics](../user/analytics/index.md) features including value streams, product analytics, and insights:
-| Action | Guest | Reporter | Developer | Maintainer | Owner | Notes |
-|---------------------------------------|:-----:|:--------:|:---------:|:----------:|:-----:|-------|
+| Action | Guest | Reporter | Developer | Maintainer | Owner | Notes |
+|-----------------------------------------------------------------------------------------|:-----:|:--------:|:---------:|:----------:|:-----:|-------|
| View [Insights](project/insights/index.md) | ✓ | ✓ | ✓ | ✓ | ✓ | |
| View [Insights](project/insights/index.md) charts | ✓ | ✓ | ✓ | ✓ | ✓ | |
| View [Issue analytics](group/issues_analytics/index.md) | ✓ | ✓ | ✓ | ✓ | ✓ | |
@@ -478,9 +478,9 @@ Group permissions for [group features](../user/group/index.md):
| Create subgroup | | | | ✓ | ✓ | Maintainers: Only if users with the Maintainer role [can create subgroups](group/subgroups/index.md#change-who-can-create-subgroups). |
| Edit [epic](group/epics/index.md) comments (posted by any user) | | | | ✓ | ✓ | |
| Fork project into a group | | | | ✓ | ✓ | |
-| View [Billing](../subscriptions/gitlab_com/index.md#view-gitlabcom-subscription) | | | | | ✓ | Does not apply to subgroups |
-| View group [Usage Quotas](storage_usage_quotas.md) page | | | | | ✓ | Does not apply to subgroups |
-| [Migrate group](group/import/index.md) | | | | | ✓ | |
+| View [Billing](../subscriptions/gitlab_com/index.md#view-gitlabcom-subscription) | | | | | ✓ | Does not apply to subgroups |
+| View group [Usage Quotas](storage_usage_quotas.md) page | | | | | ✓ | Does not apply to subgroups |
+| [Migrate group](group/import/index.md) | | | | | ✓ | |
| Delete group | | | | | ✓ | |
| Manage [subscriptions, storage, and compute minutes](../subscriptions/gitlab_com/index.md) | | | | | ✓ | |
| Manage [group access tokens](group/settings/group_access_tokens.md) | | | | | ✓ | |
diff --git a/lib/gitlab/auth/current_user_mode.rb b/lib/gitlab/auth/current_user_mode.rb
index 4dd808182ec..7354574248c 100644
--- a/lib/gitlab/auth/current_user_mode.rb
+++ b/lib/gitlab/auth/current_user_mode.rb
@@ -10,6 +10,7 @@ module Gitlab
class CurrentUserMode
include Gitlab::Utils::StrongMemoize
NotRequestedError = Class.new(StandardError)
+ NonSidekiqEnvironmentError = Class.new(StandardError)
# RequestStore entries
CURRENT_REQUEST_BYPASS_SESSION_ADMIN_ID_RS_KEY = { res: :current_user_mode, data: :bypass_session_admin_id }.freeze
@@ -84,6 +85,20 @@ module Gitlab
def current_admin
Gitlab::SafeRequestStore[CURRENT_REQUEST_ADMIN_MODE_USER_RS_KEY]
end
+
+ def optionally_run_in_admin_mode(user)
+ raise NonSidekiqEnvironmentError unless Gitlab::Runtime.sidekiq?
+
+ unless Gitlab::CurrentSettings.admin_mode && user.admin? # rubocop:disable Cop/UserAdmin -- policy checks should be enforced further down the stack
+ return yield
+ end
+
+ bypass_session!(user.id) do
+ with_current_admin(user) do
+ yield
+ end
+ end
+ end
end
def initialize(user, session = Gitlab::Session.current)
diff --git a/lib/gitlab/import_export/project/import_export.yml b/lib/gitlab/import_export/project/import_export.yml
index e4b974bb342..2e04eed3215 100644
--- a/lib/gitlab/import_export/project/import_export.yml
+++ b/lib/gitlab/import_export/project/import_export.yml
@@ -1057,10 +1057,12 @@ excluded_attributes:
- :start_date_sourcing_epic_id
- :due_date_sourcing_epic_id
- :issue_id
+ - :work_item_parent_link_id
epic_issue:
- :epic_id
- :issue_id
- :namespace_id
+ - :work_item_parent_link_id
system_note_metadata:
- :description_version_id
- :note_id
diff --git a/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb b/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb
index d7831a3d5a3..8580ad755f6 100644
--- a/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb
+++ b/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service.rb
@@ -78,14 +78,17 @@ module Gitlab
end
def send_to_processing_queue(job)
- context = (job['context'] || {}).merge(related_class: self.class.name)
+ context = job['context'] || {}
Gitlab::ApplicationContext.with_raw_context(context) do
args = job['args']
Gitlab::SidekiqLogging::ConcurrencyLimitLogger.instance.resumed_log(worker_name, args)
- worker_name.safe_constantize&.perform_async(*args)
+ worker_klass = worker_name.safe_constantize
+ next if worker_klass.nil?
+
+ worker_klass.concurrency_limit_resume.perform_async(*args)
end
end
diff --git a/lib/gitlab/sidekiq_middleware/concurrency_limit/middleware.rb b/lib/gitlab/sidekiq_middleware/concurrency_limit/middleware.rb
index c15eba47879..9877f7f5ee8 100644
--- a/lib/gitlab/sidekiq_middleware/concurrency_limit/middleware.rb
+++ b/lib/gitlab/sidekiq_middleware/concurrency_limit/middleware.rb
@@ -58,7 +58,7 @@ module Gitlab
end
def resumed?
- current_context['meta.related_class'] == concurrency_service.name
+ job['concurrency_limit_resume'] == true
end
def has_jobs_in_queue?
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 8fecdc4f519..32b6052c9f4 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -60183,7 +60183,7 @@ msgstr ""
msgid "ValueStreamAnalytics|Dashboard"
msgstr ""
-msgid "ValueStreamAnalytics|Edit Value Stream: %{name}"
+msgid "ValueStreamAnalytics|Edit value stream: %{name}"
msgstr ""
msgid "ValueStreamAnalytics|Failed to load usage overview data"
@@ -60216,7 +60216,7 @@ msgstr ""
msgid "ValueStreamAnalytics|Merge request analytics"
msgstr ""
-msgid "ValueStreamAnalytics|New Value Stream"
+msgid "ValueStreamAnalytics|New value stream"
msgstr ""
msgid "ValueStreamAnalytics|Number of commits pushed to the default branch"
diff --git a/qa/qa/service/docker_run/webgoat.rb b/qa/qa/service/docker_run/webgoat.rb
index 150b8ee5a81..7b714535391 100644
--- a/qa/qa/service/docker_run/webgoat.rb
+++ b/qa/qa/service/docker_run/webgoat.rb
@@ -11,7 +11,7 @@ module QA
def initialize
@image = 'registry.gitlab.com/gitlab-org/security-products/dast/webgoat-8.0@sha256:' \
- 'bc09fe2e0721dfaeee79364115aeedf2174cce0947b9ae5fe7c33312ee019a4e'
+ 'bc09fe2e0721dfaeee79364115aeedf2174cce0947b9ae5fe7c33312ee019a4e'
@name = 'webgoatserver'
super
end
@@ -20,24 +20,23 @@ module QA
return if running?
command = %W[docker run -d --rm --network #{network} --name #{name} --hostname #{host_name}]
- command.push("-e", "WEBGOAT_PORT=#{host_network? ? server_port : DEFAULT_SERVER_PORT}")
- command.push("-e", "WEBGOAT_SSRF_PORT=#{host_network? ? admin_port : DEFAULT_ADMIN_PORT}")
- command.push("-p", DEFAULT_SERVER_PORT, "-p", WEBGOAT_SSRF_PORT) unless host_network?
+ command.push("-e", "WEBGOAT_PORT=#{host_network? ? server_port_host : DEFAULT_SERVER_PORT}")
+ command.push("-e", "WEBGOAT_SSRF_PORT=#{host_network? ? admin_port_host : DEFAULT_ADMIN_PORT}")
+ command.push("-p", DEFAULT_SERVER_PORT, "-p", DEFAULT_ADMIN_PORT) unless host_network?
command.push(image)
shell command.join(" ")
end
def ip_address
- ip_address = `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' #{name}`.strip
- return host_name if ip_address.empty?
-
- ip_address
+ @ip_address ||= shell("docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' #{name}")
+ .strip
+ .then { |addr| addr.empty? ? host_name : addr }
end
def public_port
@public_port ||= if host_network?
- server_port
+ server_port_host
elsif docker_network?
DEFAULT_SERVER_PORT
else
@@ -47,7 +46,7 @@ module QA
def admin_port
@admin_port ||= if host_network?
- admin_port_random
+ admin_port_host
elsif docker_network?
DEFAULT_ADMIN_PORT
else
@@ -59,11 +58,11 @@ module QA
attr_reader :name, :image
- def server_port
+ def server_port_host
@server_port ||= random_port
end
- def admin_port_random
+ def admin_port_host
@admin_port_random ||= random_port
end
diff --git a/qa/qa/support/formatters/test_metrics_formatter.rb b/qa/qa/support/formatters/test_metrics_formatter.rb
index 5418d48a0a5..ded85209797 100644
--- a/qa/qa/support/formatters/test_metrics_formatter.rb
+++ b/qa/qa/support/formatters/test_metrics_formatter.rb
@@ -35,6 +35,7 @@ module QA
:ci_job_url,
:ci_job_name,
:rspec_retried?,
+ :parallel_run?,
to: QA::Runtime::Env
delegate :retry_failed_specs?, to: ::Gitlab::QA::Runtime::Env
@@ -66,7 +67,7 @@ module QA
def save_test_metrics
return log(:info, "Saving test metrics json not enabled, skipping") unless save_metrics_json?
- file = File.join('tmp', metrics_file_name(prefix: 'test'))
+ file = File.join('tmp', metrics_file_name(prefix: 'test', with_pipeline_id_postfix: false))
File.write(file, execution_data.to_json) && log(:debug, "Saved test metrics to #{file}")
rescue StandardError => e
@@ -99,7 +100,7 @@ module QA
retry_on_exception(sleep_interval: 30, message: 'Failed to push test metrics to GCS') do
gcs_client.put_object(
gcs_bucket,
- metrics_file_name(prefix: 'test', postfix: metrics_filename_postfix),
+ metrics_file_name(prefix: 'test'),
execution_data.to_json,
force: true, content_type: 'application/json'
)
@@ -145,7 +146,7 @@ module QA
retry_on_exception(sleep_interval: 30, message: 'Failed to push resource fabrication metrics to GCS') do
gcs_client.put_object(
gcs_bucket,
- metrics_file_name(prefix: 'fabrication', postfix: metrics_filename_postfix),
+ metrics_file_name(prefix: 'fabrication'),
data.to_json, force: true,
content_type: 'application/json'
)
@@ -184,22 +185,17 @@ module QA
# Construct file name for metrics
#
- # @param [Hash] prefix of filename
- # @return [void]
- def metrics_file_name(prefix:, postfix: '')
- "#{prefix}-metrics-#{env('CI_JOB_NAME_SLUG') || 'local'}" \
- "#{retry_failed_specs? ? "-retry-#{rspec_retried?}" : ''}#{postfix}.json"
- end
-
- # Postfix for metrics filenames
- #
+ # @param [String] prefix
+ # @param [Boolean] with_pipeline_id_postfix
# @return [String]
- def metrics_filename_postfix
- @metrics_filename_postfix ||= if QA::Runtime::Env.parallel_run?
- "-#{Process.pid}-#{env('CI_PIPELINE_ID') || 'local'}"
- else
- "-#{env('CI_PIPELINE_ID') || 'local'}"
- end
+ def metrics_file_name(prefix:, with_pipeline_id_postfix: true)
+ name = ["#{prefix}-metrics-#{env('CI_JOB_NAME_SLUG') || 'local'}"]
+ name << "-env-#{env('TEST_ENV_NUMBER') || 1}" if parallel_run?
+ name << "-retry-#{rspec_retried?}" if retry_failed_specs?
+ name << "-#{env('CI_PIPELINE_ID') || 'local'}" if with_pipeline_id_postfix
+ name << ".json"
+
+ name.join
end
# Transform example to influxdb compatible metrics data
diff --git a/qa/qa/tools/delete_test_users.rb b/qa/qa/tools/delete_test_users.rb
index 2a2295778b4..fbab965ad54 100644
--- a/qa/qa/tools/delete_test_users.rb
+++ b/qa/qa/tools/delete_test_users.rb
@@ -15,7 +15,7 @@
module QA
module Tools
class DeleteTestUsers < DeleteResourceBase
- EXCLUDE_USERS = %w[gitlab-qa gitlab-qa-user-for-ai].freeze
+ EXCLUDE_USERS = %w[gitlab-qa gitlab-qa-user-for-ai gitlab-qa-user-for-jetbrains glab-test-bot].freeze
def initialize(dry_run: false, exclude_users: nil)
super(dry_run: dry_run)
diff --git a/spec/features/projects/blobs/edit_spec.rb b/spec/features/projects/blobs/edit_spec.rb
index 5c82c039113..d8b1971007b 100644
--- a/spec/features/projects/blobs/edit_spec.rb
+++ b/spec/features/projects/blobs/edit_spec.rb
@@ -30,7 +30,9 @@ RSpec.describe 'Editing file blob', :js, feature_category: :source_code_manageme
edit_in_single_file_editor
end
- fill_editor(content: 'class NextFeature\\nend\\n')
+ # Append object_id so that the content varies between specs. If we don't do this then depending on test order
+ # there may be no diff and nothing to render.
+ fill_editor(content: "class NextFeature#{object_id}\\nend\\n")
if commit_changes
click_button 'Commit changes'
@@ -124,14 +126,12 @@ RSpec.describe 'Editing file blob', :js, feature_category: :source_code_manageme
expect(page).to have_content 'NextFeature'
end
- it 'previews content', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/448293' do
+ it 'previews content' do
edit_and_commit(commit_changes: false)
click_link 'Preview changes'
wait_for_requests
- new_line_count = page.all('.line_holder.new').size
-
- expect(new_line_count).to be > 0
+ expect(page).to have_css('.line_holder.new')
end
end
diff --git a/spec/frontend/notes/components/note_actions_spec.js b/spec/frontend/notes/components/note_actions_spec.js
index 47663360ce8..dba86041fe3 100644
--- a/spec/frontend/notes/components/note_actions_spec.js
+++ b/spec/frontend/notes/components/note_actions_spec.js
@@ -1,4 +1,8 @@
-import { GlDisclosureDropdown, GlDisclosureDropdownItem } from '@gitlab/ui';
+import {
+ GlDisclosureDropdown,
+ GlDisclosureDropdownItem,
+ GlDisclosureDropdownGroup,
+} from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import AxiosMockAdapter from 'axios-mock-adapter';
import { nextTick } from 'vue';
@@ -26,6 +30,7 @@ describe('noteActions', () => {
const findUserAccessRoleBadgeText = (idx) => findUserAccessRoleBadge(idx).text().trim();
const findTimelineButton = () => wrapper.findComponent(TimelineEventButton);
const findReportAbuseButton = () => wrapper.find(`[data-testid="report-abuse-button"]`);
+ const findDisclosureDropdownGroup = () => wrapper.findComponent(GlDisclosureDropdownGroup);
const setupStoreForIncidentTimelineEvents = ({
userCanAdd,
@@ -53,6 +58,7 @@ describe('noteActions', () => {
close: mockCloseDropdown,
},
}),
+ GlDisclosureDropdownGroup,
GlDisclosureDropdownItem,
},
});
@@ -119,6 +125,32 @@ describe('noteActions', () => {
expect(wrapper.find('[data-testid="note-emoji-button"]').exists()).toBe(true);
});
+ describe('actions dropdown group', () => {
+ it('should render the dropdown group when canReportAsAbuse is true', async () => {
+ wrapper.setProps({ canReportAsAbuse: true });
+ await nextTick();
+ expect(findDisclosureDropdownGroup().exists()).toBe(true);
+ });
+
+ it('should render the dropdown group when canEdit is true', async () => {
+ wrapper.setProps({ canEdit: true });
+ await nextTick();
+ expect(findDisclosureDropdownGroup().exists()).toBe(true);
+ });
+
+ it('should render the dropdown group when both canReportAsAbuse and canEdit are true', async () => {
+ wrapper.setProps({ canReportAsAbuse: true, canEdit: true });
+ await nextTick();
+ expect(findDisclosureDropdownGroup().exists()).toBe(true);
+ });
+
+ it('should not render the dropdown group when neither canReportAsAbuse nor canEdit is true', async () => {
+ wrapper.setProps({ canReportAsAbuse: false, canEdit: false });
+ await nextTick();
+ expect(findDisclosureDropdownGroup().exists()).toBe(false);
+ });
+ });
+
describe('actions dropdown', () => {
it('should be possible to edit the comment', () => {
expect(wrapper.find('.js-note-edit').exists()).toBe(true);
diff --git a/spec/frontend/packages_and_registries/settings/project/settings/components/cleanup_image_tags_spec.js b/spec/frontend/packages_and_registries/settings/project/settings/components/cleanup_image_tags_spec.js
index 949b288bbb6..2f5ff0eec40 100644
--- a/spec/frontend/packages_and_registries/settings/project/settings/components/cleanup_image_tags_spec.js
+++ b/spec/frontend/packages_and_registries/settings/project/settings/components/cleanup_image_tags_spec.js
@@ -19,7 +19,7 @@ import expirationPolicyQuery from '~/packages_and_registries/settings/project/gr
import {
expirationPolicyPayload,
emptyExpirationPolicyPayload,
- containerExpirationPolicyData,
+ containerTagsExpirationPolicyData,
nullExpirationPolicyPayload,
} from '../mock_data';
@@ -65,12 +65,12 @@ describe('Cleanup image tags project settings', () => {
describe('isEdited status', () => {
it.each`
- description | apiResponse | workingCopy | result
- ${'empty response and no changes from user'} | ${emptyExpirationPolicyPayload()} | ${{}} | ${false}
- ${'empty response and changes from user'} | ${emptyExpirationPolicyPayload()} | ${{ enabled: true }} | ${true}
- ${'response and no changes'} | ${expirationPolicyPayload()} | ${containerExpirationPolicyData()} | ${false}
- ${'response and changes'} | ${expirationPolicyPayload()} | ${{ ...containerExpirationPolicyData(), nameRegex: '12345' }} | ${true}
- ${'response and empty'} | ${expirationPolicyPayload()} | ${{}} | ${true}
+ description | apiResponse | workingCopy | result
+ ${'empty response and no changes from user'} | ${emptyExpirationPolicyPayload()} | ${{}} | ${false}
+ ${'empty response and changes from user'} | ${emptyExpirationPolicyPayload()} | ${{ enabled: true }} | ${true}
+ ${'response and no changes'} | ${expirationPolicyPayload()} | ${containerTagsExpirationPolicyData()} | ${false}
+ ${'response and changes'} | ${expirationPolicyPayload()} | ${{ ...containerTagsExpirationPolicyData(), nameRegex: '12345' }} | ${true}
+ ${'response and empty'} | ${expirationPolicyPayload()} | ${{}} | ${true}
`('$description', async ({ apiResponse, workingCopy, result }) => {
mountComponentWithApollo({
provide: { ...defaultProvidedValues, enableHistoricEntries: true },
diff --git a/spec/frontend/packages_and_registries/settings/project/settings/components/container_expiration_policy_form_spec.js b/spec/frontend/packages_and_registries/settings/project/settings/components/container_expiration_policy_form_spec.js
index a4701f1ff4d..5846f77cf7d 100644
--- a/spec/frontend/packages_and_registries/settings/project/settings/components/container_expiration_policy_form_spec.js
+++ b/spec/frontend/packages_and_registries/settings/project/settings/components/container_expiration_policy_form_spec.js
@@ -24,12 +24,12 @@ describe('Container Expiration Policy Settings Form', () => {
const {
data: {
- project: { containerExpirationPolicy },
+ project: { containerTagsExpirationPolicy },
},
} = expirationPolicyPayload();
const defaultProps = {
- value: { ...containerExpirationPolicy },
+ value: { ...containerTagsExpirationPolicy },
};
const trackingPayload = {
@@ -107,7 +107,7 @@ describe('Container Expiration Policy Settings Form', () => {
// we keep in sync what prop we pass to the component with the cache
const {
data: {
- project: { containerExpirationPolicy: value },
+ project: { containerTagsExpirationPolicy: value },
},
} = queryPayload;
diff --git a/spec/frontend/packages_and_registries/settings/project/settings/graphql/cache_updated_spec.js b/spec/frontend/packages_and_registries/settings/project/settings/graphql/cache_update_spec.js
similarity index 91%
rename from spec/frontend/packages_and_registries/settings/project/settings/graphql/cache_updated_spec.js
rename to spec/frontend/packages_and_registries/settings/project/settings/graphql/cache_update_spec.js
index 76d5f8a6659..85d0b3a1930 100644
--- a/spec/frontend/packages_and_registries/settings/project/settings/graphql/cache_updated_spec.js
+++ b/spec/frontend/packages_and_registries/settings/project/settings/graphql/cache_update_spec.js
@@ -7,7 +7,7 @@ describe('Registry settings cache update', () => {
const payload = (value) => ({
data: {
updateContainerExpirationPolicy: {
- containerExpirationPolicy: {
+ containerTagsExpirationPolicy: {
...value,
},
},
@@ -16,7 +16,7 @@ describe('Registry settings cache update', () => {
const cacheMock = {
project: {
- containerExpirationPolicy: {
+ containerTagsExpirationPolicy: {
enabled: false,
},
},
@@ -45,7 +45,7 @@ describe('Registry settings cache update', () => {
...queryAndVariables,
data: {
project: {
- containerExpirationPolicy: {
+ containerTagsExpirationPolicy: {
enabled: true,
},
},
@@ -60,7 +60,7 @@ describe('Registry settings cache update', () => {
...queryAndVariables,
data: {
project: {
- containerExpirationPolicy: {
+ containerTagsExpirationPolicy: {
enabled: false,
},
},
diff --git a/spec/frontend/packages_and_registries/settings/project/settings/mock_data.js b/spec/frontend/packages_and_registries/settings/project/settings/mock_data.js
index 8e91d2bb1d8..913109d4028 100644
--- a/spec/frontend/packages_and_registries/settings/project/settings/mock_data.js
+++ b/spec/frontend/packages_and_registries/settings/project/settings/mock_data.js
@@ -1,5 +1,5 @@
-export const containerExpirationPolicyData = () => ({
- __typename: 'ContainerExpirationPolicy',
+export const containerTagsExpirationPolicyData = () => ({
+ __typename: 'ContainerTagsExpirationPolicy',
cadence: 'EVERY_DAY',
enabled: true,
keepN: 'TEN_TAGS',
@@ -13,8 +13,8 @@ export const expirationPolicyPayload = (override) => ({
data: {
project: {
id: '1',
- containerExpirationPolicy: {
- ...containerExpirationPolicyData(),
+ containerTagsExpirationPolicy: {
+ ...containerTagsExpirationPolicyData(),
...override,
},
},
@@ -24,7 +24,7 @@ export const expirationPolicyPayload = (override) => ({
export const emptyExpirationPolicyPayload = () => ({
data: {
project: {
- containerExpirationPolicy: {},
+ containerTagsExpirationPolicy: {},
},
},
});
@@ -33,7 +33,7 @@ export const nullExpirationPolicyPayload = () => ({
data: {
project: {
id: '1',
- containerExpirationPolicy: null,
+ containerTagsExpirationPolicy: null,
},
},
});
@@ -41,8 +41,8 @@ export const nullExpirationPolicyPayload = () => ({
export const expirationPolicyMutationPayload = ({ override, errors = [] } = {}) => ({
data: {
updateContainerExpirationPolicy: {
- containerExpirationPolicy: {
- ...containerExpirationPolicyData(),
+ containerTagsExpirationPolicy: {
+ ...containerTagsExpirationPolicyData(),
...override,
},
errors,
diff --git a/spec/frontend/super_sidebar/components/super_sidebar_spec.js b/spec/frontend/super_sidebar/components/super_sidebar_spec.js
index 316c55420d6..75b0c5d63d4 100644
--- a/spec/frontend/super_sidebar/components/super_sidebar_spec.js
+++ b/spec/frontend/super_sidebar/components/super_sidebar_spec.js
@@ -126,7 +126,7 @@ describe('SuperSidebar component', () => {
it('adds inert attribute when collapsed', () => {
createWrapper({ sidebarState: { isCollapsed: true } });
- expect(findSidebar().attributes('inert')).toBe('inert');
+ expect(findSidebar().attributes('inert')).toBeDefined();
});
it('does not add inert attribute when expanded', () => {
@@ -271,7 +271,7 @@ describe('SuperSidebar component', () => {
it(`initially makes sidebar inert and peekable (${STATE_CLOSED})`, () => {
createWrapper({ sidebarState: { isCollapsed: true, isPeekable: true } });
- expect(findSidebar().attributes('inert')).toBe('inert');
+ expect(findSidebar().attributes('inert')).toBeDefined();
expect(findSidebar().classes()).not.toContain(peekHintClass);
expect(findSidebar().classes()).not.toContain(hasPeekedClass);
expect(findSidebar().classes()).not.toContain(peekClass);
@@ -283,7 +283,7 @@ describe('SuperSidebar component', () => {
findPeekBehavior().vm.$emit('change', STATE_WILL_OPEN);
await nextTick();
- expect(findSidebar().attributes('inert')).toBe('inert');
+ expect(findSidebar().attributes('inert')).toBeDefined();
expect(findSidebar().classes()).toContain(peekHintClass);
expect(findSidebar().classes()).toContain(hasPeekedClass);
expect(findSidebar().classes()).not.toContain(peekClass);
@@ -414,6 +414,7 @@ describe('SuperSidebar component', () => {
wrapper.vm.sidebarState.isCollapsed = false;
await nextTick();
+ await nextTick();
expect(focusSpy).toHaveBeenCalledTimes(1);
});
@@ -432,6 +433,7 @@ describe('SuperSidebar component', () => {
wrapper.vm.sidebarState.isCollapsed = false;
await nextTick();
+ await nextTick();
expect(focusSpy).toHaveBeenCalledTimes(1);
@@ -448,9 +450,10 @@ describe('SuperSidebar component', () => {
});
const ESC_KEY = 27;
- it('collapses sidebar when sidebar is in overlay mode', () => {
+ it('collapses sidebar when sidebar is in overlay mode', async () => {
jest.spyOn(bp, 'windowWidth').mockReturnValue(lg);
- findSidebar().trigger('keydown', { keyCode: ESC_KEY });
+ await findSidebar().trigger('keydown.esc', { keyCode: ESC_KEY });
+
expect(toggleSuperSidebarCollapsed).toHaveBeenCalled();
});
diff --git a/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js b/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js
index 2929051bdd4..8d135eadf71 100644
--- a/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js
+++ b/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js
@@ -1,4 +1,4 @@
-import { GlDisclosureDropdown } from '@gitlab/ui';
+import { GlDisclosureDropdown, GlDisclosureDropdownGroup } from '@gitlab/ui';
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createMockApollo from 'helpers/mock_apollo_helper';
@@ -27,6 +27,7 @@ describe('Work Item Note Actions', () => {
const findAuthorBadge = () => wrapper.findByTestId('author-badge');
const findMaxAccessLevelBadge = () => wrapper.findByTestId('max-access-level-badge');
const findContributorBadge = () => wrapper.findByTestId('contributor-badge');
+ const findDisclosureDropdownGroup = () => wrapper.findComponent(GlDisclosureDropdownGroup);
const addEmojiMutationResolver = jest.fn().mockResolvedValue({
data: {
@@ -84,6 +85,42 @@ describe('Work Item Note Actions', () => {
showSpy.mockClear();
});
+ describe('dropdown group', () => {
+ it('renders dropdown group when either canReportAbuse or showEdit is true', () => {
+ createComponent({ canReportAbuse: true, showEdit: true });
+
+ expect(findDisclosureDropdownGroup().exists()).toBe(true);
+ });
+
+ it('does not render dropdown group when both canReportAbuse and showEdit are false', () => {
+ createComponent({ canReportAbuse: false, showEdit: false });
+
+ expect(findDisclosureDropdownGroup().exists()).toBe(false);
+ });
+
+ it('renders reportAbuse button inside dropdown group when canReportAbuse is true', () => {
+ createComponent({ canReportAbuse: true });
+
+ expect(findDisclosureDropdownGroup().exists()).toBe(true);
+ expect(findReportAbuseToAdminButton().exists()).toBe(true);
+ });
+
+ it('renders delete note button inside dropdown group when showEdit is true', () => {
+ createComponent({ showEdit: true });
+
+ expect(findDisclosureDropdownGroup().exists()).toBe(true);
+ expect(findDeleteNoteButton().exists()).toBe(true);
+ });
+
+ it('renders both reportAbuse and delete note buttons when both canReportAbuse and showEdit are true', () => {
+ createComponent({ canReportAbuse: true, showEdit: true });
+
+ expect(findDisclosureDropdownGroup().exists()).toBe(true);
+ expect(findReportAbuseToAdminButton().exists()).toBe(true);
+ expect(findDeleteNoteButton().exists()).toBe(true);
+ });
+ });
+
describe('reply button', () => {
it('is visible by default', () => {
createComponent();
diff --git a/spec/frontend/work_items/components/work_item_links/work_item_children_wrapper_spec.js b/spec/frontend/work_items/components/work_item_links/work_item_children_wrapper_spec.js
index d5245796d51..1e1fa66cfd3 100644
--- a/spec/frontend/work_items/components/work_item_links/work_item_children_wrapper_spec.js
+++ b/spec/frontend/work_items/components/work_item_links/work_item_children_wrapper_spec.js
@@ -171,11 +171,14 @@ describe('WorkItemChildrenWrapper', () => {
describe('drag & drop', () => {
let dragParams;
+ let draggedItem;
beforeEach(() => {
isLoggedIn.mockReturnValue(true);
createComponent({ canUpdate: true, children: childrenWorkItemsObjectives });
+ draggedItem = findFirstWorkItemLinkChildItem().element;
+
dragParams = {
oldIndex: 1,
newIndex: 0,
@@ -184,14 +187,16 @@ describe('WorkItemChildrenWrapper', () => {
};
});
- it('adds a class `is-dragging` to document body when dragging', async () => {
+ it('emits drag event with child type and adds a class `is-dragging` to document body when dragging', async () => {
expect(document.body.classList.contains('is-dragging')).toBe(false);
- wrapper.findComponent(Draggable).vm.$emit('start');
+ wrapper.findComponent(Draggable).vm.$emit('start', { item: draggedItem });
+ expect(wrapper.emitted('drag')).toEqual([[draggedItem.dataset.childType]]);
expect(document.body.classList.contains('is-dragging')).toBe(true);
wrapper.findComponent(Draggable).vm.$emit('end', dragParams);
+ expect(wrapper.emitted('drop').length).toBe(1);
await nextTick();
expect(document.body.classList.contains('is-dragging')).toBe(false);
@@ -199,7 +204,7 @@ describe('WorkItemChildrenWrapper', () => {
it('dispatches `mouseup` event and cancels drag when Escape key is pressed', async () => {
jest.spyOn(document, 'dispatchEvent');
- wrapper.findComponent(Draggable).vm.$emit('start');
+ wrapper.findComponent(Draggable).vm.$emit('start', { item: draggedItem });
const event = new Event('keyup');
event.code = ESC_KEY;
diff --git a/spec/frontend/work_items/components/work_item_links/work_item_link_child_spec.js b/spec/frontend/work_items/components/work_item_links/work_item_link_child_spec.js
index 2d63a719173..7cd84823618 100644
--- a/spec/frontend/work_items/components/work_item_links/work_item_link_child_spec.js
+++ b/spec/frontend/work_items/components/work_item_links/work_item_link_child_spec.js
@@ -26,6 +26,7 @@ import {
workItemHierarchyTreeResponse,
workItemHierarchyPaginatedTreeResponse,
workItemHierarchyTreeFailureResponse,
+ workItemHierarchyNoChildrenTreeResponse,
} from '../../mock_data';
jest.mock('~/alert');
@@ -60,6 +61,7 @@ describe('WorkItemLinkChild', () => {
workItemTreeQueryHandler = getWorkItemTreeQueryHandler,
isExpanded = false,
showTaskWeight = false,
+ props = {},
} = {}) => {
const mockApollo = createMockApollo([[getWorkItemTreeQuery, workItemTreeQueryHandler]], {
Mutation: {
@@ -85,6 +87,7 @@ describe('WorkItemLinkChild', () => {
workItemType,
workItemFullPath,
showTaskWeight,
+ ...props,
},
stubs: {
WorkItemChildrenWrapper,
@@ -286,4 +289,56 @@ describe('WorkItemLinkChild', () => {
});
});
});
+ describe('drag & drop', () => {
+ const allowedChildrenByType = { Issue: ['Task'], Epic: ['Epic', 'Issue'] };
+ const getWorkItemTreeNoChildrenQueryHandler = jest
+ .fn()
+ .mockResolvedValue(workItemHierarchyNoChildrenTreeResponse);
+
+ it('emits drag & drop events from children wrapper', () => {
+ createComponent({
+ isExpanded: true,
+ });
+
+ findTreeChildren().vm.$emit('drag', 'Task');
+ expect(wrapper.emitted('drag')).toEqual([['Task']]);
+
+ findTreeChildren().vm.$emit('drop');
+ expect(wrapper.emitted('drop').length).toBe(1);
+ });
+
+ it.each`
+ draggedItemType | childItemType | showChildrenDropzone
+ ${'Task'} | ${'Task'} | ${false}
+ ${'Task'} | ${'Issue'} | ${true}
+ ${'Task'} | ${'Epic'} | ${false}
+ ${'Issue'} | ${'Task'} | ${false}
+ ${'Issue'} | ${'Issue'} | ${false}
+ ${'Issue'} | ${'Epic'} | ${true}
+ ${'Epic'} | ${'Task'} | ${false}
+ ${'Epic'} | ${'Issue'} | ${false}
+ ${'Epic'} | ${'Epic'} | ${true}
+ `(
+ 'shows children dropzone is $showChildrenDropzone when dragging $draggedItemType in $childItemType for orphans',
+ async ({ draggedItemType, childItemType, showChildrenDropzone }) => {
+ createComponent({
+ workItemTreeQueryHandler: getWorkItemTreeNoChildrenQueryHandler,
+ props: {
+ allowedChildrenByType,
+ draggedItemType,
+ childItem: {
+ ...workItemEpic,
+ workItemType: {
+ ...workItemEpic.workItemType,
+ name: childItemType,
+ },
+ },
+ },
+ });
+ await waitForPromises();
+
+ expect(findTreeChildren().exists()).toBe(showChildrenDropzone);
+ },
+ );
+ });
});
diff --git a/spec/frontend/work_items/components/work_item_links/work_item_tree_spec.js b/spec/frontend/work_items/components/work_item_links/work_item_tree_spec.js
index c96dc54fb1d..8de76a1095d 100644
--- a/spec/frontend/work_items/components/work_item_links/work_item_tree_spec.js
+++ b/spec/frontend/work_items/components/work_item_links/work_item_tree_spec.js
@@ -13,6 +13,7 @@ import WorkItemActionsSplitButton from '~/work_items/components/work_item_links/
import WorkItemMoreActions from '~/work_items/components/shared/work_item_more_actions.vue';
import WorkItemRolledUpData from '~/work_items/components/work_item_links/work_item_rolled_up_data.vue';
import getWorkItemTreeQuery from '~/work_items/graphql/work_item_tree.query.graphql';
+import namespaceWorkItemTypesQuery from '~/work_items/graphql/namespace_work_item_types.query.graphql';
import {
FORM_TYPES,
WORK_ITEM_TYPE_ENUM_OBJECTIVE,
@@ -31,6 +32,7 @@ import {
workItemHierarchyTreeEmptyResponse,
workItemHierarchyNoUpdatePermissionResponse,
mockRolledUpCountsByType,
+ namespaceWorkItemTypesQueryResponse,
} from '../../mock_data';
jest.mock('~/alert');
@@ -43,6 +45,9 @@ describe('WorkItemTree', () => {
const workItemHierarchyTreeResponseHandler = jest
.fn()
.mockResolvedValue(workItemHierarchyTreeResponse);
+ const namespaceWorkItemTypesQueryHandler = jest
+ .fn()
+ .mockResolvedValue(namespaceWorkItemTypesQueryResponse);
const findEmptyState = () => wrapper.findByTestId('crud-empty');
const findLoadingIcon = () => wrapper.findComponent(GlLoadingIcon);
@@ -76,7 +81,10 @@ describe('WorkItemTree', () => {
canUpdate,
canUpdateChildren,
},
- apolloProvider: createMockApollo([[getWorkItemTreeQuery, workItemHierarchyTreeHandler]]),
+ apolloProvider: createMockApollo([
+ [getWorkItemTreeQuery, workItemHierarchyTreeHandler],
+ [namespaceWorkItemTypesQuery, namespaceWorkItemTypesQueryHandler],
+ ]),
provide: {
hasSubepicsFeature,
},
@@ -365,4 +373,15 @@ describe('WorkItemTree', () => {
fullPath: 'test/project',
});
});
+
+ it('fetches widget definitions and passes formatted allowed children by type to children wrapper', async () => {
+ await createComponent();
+
+ expect(namespaceWorkItemTypesQueryHandler).toHaveBeenCalled();
+ await nextTick();
+
+ expect(findWorkItemLinkChildrenWrapper().props('allowedChildrenByType')).toEqual({
+ Issue: ['Task'],
+ });
+ });
});
diff --git a/spec/frontend/work_items/mock_data.js b/spec/frontend/work_items/mock_data.js
index fb2bfa0d43c..1acc0fffc12 100644
--- a/spec/frontend/work_items/mock_data.js
+++ b/spec/frontend/work_items/mock_data.js
@@ -5266,3 +5266,98 @@ export const mockUploadErrorDesignMutationResponse = {
designManagementUpload: null,
},
};
+
+export const namespaceWorkItemTypesQueryResponse = {
+ data: {
+ workspace: {
+ id: 'gid://gitlab/Namespaces/1',
+ workItemTypes: {
+ nodes: [
+ {
+ __typename: 'WorkItemType',
+ id: 'gid://gitlab/WorkItems::Type/1',
+ name: 'Issue',
+ widgetDefinitions: [
+ {
+ type: 'HIERARCHY',
+ allowedChildTypes: {
+ nodes: [
+ {
+ id: 'gid://gitlab/WorkItems::Type/5',
+ name: 'Task',
+ __typename: 'WorkItemType',
+ },
+ ],
+ __typename: 'WorkItemTypeConnection',
+ },
+ __typename: 'WorkItemWidgetDefinitionHierarchy',
+ },
+ ],
+ },
+ ],
+ },
+ },
+ },
+};
+
+export const workItemHierarchyNoChildrenTreeResponse = {
+ data: {
+ workItem: {
+ id: 'gid://gitlab/WorkItem/3',
+ iid: '3',
+ archived: false,
+ workItemType: {
+ id: 'gid://gitlab/WorkItems::Type/2411',
+ name: 'Objective',
+ iconName: 'issue-type-objective',
+ __typename: 'WorkItemType',
+ },
+ title: 'New title without children',
+ userPermissions: {
+ deleteWorkItem: true,
+ updateWorkItem: true,
+ setWorkItemMetadata: true,
+ adminParentLink: true,
+ createNote: true,
+ adminWorkItemLink: true,
+ __typename: 'WorkItemPermissions',
+ },
+ confidential: false,
+ reference: 'test-project-path#2',
+ namespace: {
+ __typename: 'Project',
+ id: '1',
+ fullPath: 'test-project-path',
+ name: 'Project name',
+ fullName: 'Project name',
+ },
+ widgets: [
+ {
+ type: 'DESCRIPTION',
+ __typename: 'WorkItemWidgetDescription',
+ },
+ {
+ type: 'HIERARCHY',
+ parent: null,
+ hasChildren: false,
+ depthLimitReachedByType: [],
+ rolledUpCountsByType: [],
+ children: {
+ pageInfo: {
+ hasNextPage: false,
+ hasPreviousPage: false,
+ startCursor: null,
+ endCursor: null,
+ __typename: 'PageInfo',
+ },
+ count: 0,
+ nodes: [],
+ __typename: 'WorkItemConnection',
+ },
+ __typename: 'WorkItemWidgetHierarchy',
+ },
+ ],
+ __typename: 'WorkItem',
+ },
+ },
+};
diff --git a/spec/initializers/memory_watchdog_spec.rb b/spec/initializers/memory_watchdog_spec.rb
index d1dfb198818..be44a07b2cb 100644
--- a/spec/initializers/memory_watchdog_spec.rb
+++ b/spec/initializers/memory_watchdog_spec.rb
@@ -61,7 +61,7 @@ RSpec.describe 'memory watchdog', feature_category: :cloud_connector do
end
context 'when runtime is unsupported' do
- it 'does not register life-cycle hook' do
+ it 'does not register life-cycle hook', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/468232' do
expect(Gitlab::Cluster::LifecycleEvents).not_to receive(:on_worker_start)
run_initializer
diff --git a/spec/lib/gitlab/auth/current_user_mode_spec.rb b/spec/lib/gitlab/auth/current_user_mode_spec.rb
index 014c812d9ee..141220cac8f 100644
--- a/spec/lib/gitlab/auth/current_user_mode_spec.rb
+++ b/spec/lib/gitlab/auth/current_user_mode_spec.rb
@@ -408,5 +408,38 @@ RSpec.describe Gitlab::Auth::CurrentUserMode, :request_store, feature_category:
end
end
end
+
+ describe '.optionally_run_in_admin_mode' do
+ let(:admin) { build_stubbed(:admin) }
+
+ context 'when invoked from a sidekiq context', :with_sidekiq_context do
+ before do
+ stub_application_setting(admin_mode: true)
+ end
+
+ it 'yields without changing the admin mode for non-admin users' do
+ expect { |b| described_class.optionally_run_in_admin_mode(user, &b) }.to yield_control
+ expect(described_class.bypass_session_admin_id).to be_nil
+ end
+
+ it 'runs in admin mode for admin users' do
+ described_class.optionally_run_in_admin_mode(admin) do
+ expect(described_class.bypass_session_admin_id).to eq(admin.id)
+ end
+ end
+
+ it 'resets the admin mode after yielding for admin users' do
+ described_class.optionally_run_in_admin_mode(admin) { -> {} }
+ expect(described_class.bypass_session_admin_id).to be_nil
+ end
+ end
+
+ context 'when invoked from a non-sidekiq context' do
+ it 'raises an exception' do
+ expect { described_class.optionally_run_in_admin_mode(admin) }
+ .to raise_error(Gitlab::Auth::CurrentUserMode::NonSidekiqEnvironmentError)
+ end
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml
index 48846ddb582..051240baa72 100644
--- a/spec/lib/gitlab/import_export/all_models.yml
+++ b/spec/lib/gitlab/import_export/all_models.yml
@@ -964,6 +964,7 @@ epic_issues:
- issue
- epic
- work_item
+- work_item_parent_link
feature_flag_issues:
- issue
- feature_flag
@@ -1073,10 +1074,12 @@ epic:
- epic_board_positions
- work_item
- own_subscriptions
+- work_item_parent_link
epic_issue:
- epic
- issue
- work_item
+- work_item_parent_link
system_note_metadata:
- note
- description_version
diff --git a/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service_spec.rb b/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service_spec.rb
index 4f722a74002..ebd905ed507 100644
--- a/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service_spec.rb
+++ b/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/concurrency_limit_service_spec.rb
@@ -127,16 +127,17 @@ RSpec.describe Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitServ
describe '#resume_processing!' do
let(:jobs) { [[1], [2], [3]] }
- let(:expected_context) { stored_context.merge(related_class: described_class.name) }
+ let(:setter) { instance_double('Sidekiq::Job::Setter') }
it 'puts jobs back into the queue and respects order' do
jobs.each do |j|
service.add_to_queue!(j, worker_context)
end
- expect(worker_class).to receive(:perform_async).with(1).ordered
- expect(worker_class).to receive(:perform_async).with(2).ordered
- expect(worker_class).not_to receive(:perform_async).with(3).ordered
+ expect(worker_class).to receive(:concurrency_limit_resume).twice.and_return(setter)
+ expect(setter).to receive(:perform_async).with(1).ordered
+ expect(setter).to receive(:perform_async).with(2).ordered
+ expect(setter).not_to receive(:perform_async).with(3).ordered
expect(Gitlab::SidekiqLogging::ConcurrencyLimitLogger.instance)
.to receive(:resumed_log)
@@ -154,9 +155,10 @@ RSpec.describe Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitServ
end
expect(Gitlab::ApplicationContext).to receive(:with_raw_context)
- .with(expected_context)
+ .with(stored_context)
.exactly(jobs.count).times.and_call_original
- expect(worker_class).to receive(:perform_async).exactly(jobs.count).times
+ expect(worker_class).to receive(:concurrency_limit_resume).exactly(3).times.and_return(setter)
+ expect(setter).to receive(:perform_async).exactly(jobs.count).times
expect { service.resume_processing!(limit: jobs.count) }
.to change { service.has_jobs_in_queue? }.from(true).to(false)
diff --git a/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb b/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb
index d2c1f345b1a..a48eb4836ed 100644
--- a/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb
+++ b/spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb
@@ -61,14 +61,41 @@ RSpec.describe Gitlab::SidekiqMiddleware::ConcurrencyLimit::Server, feature_cate
TestConcurrencyLimitWorker.perform_async('foo')
end
- it 'executes the job if resumed' do
- expect(TestConcurrencyLimitWorker).to receive(:work)
- expect(Gitlab::SidekiqLogging::ConcurrencyLimitLogger.instance).not_to receive(:deferred_log)
- expect(Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService).not_to receive(:add_to_queue!)
+ context 'when only the related_class is set in the context' do
+ it 'defers the job' do
+ expect(TestConcurrencyLimitWorker).not_to receive(:work)
+ expect(Gitlab::SidekiqLogging::ConcurrencyLimitLogger.instance).to receive(:deferred_log).and_call_original
+ expect(Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService).to receive(:add_to_queue!)
- related_class = 'Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService'
- Gitlab::ApplicationContext.with_raw_context(related_class: related_class) do
- TestConcurrencyLimitWorker.perform_async('foo')
+ related_class = 'Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService'
+ Gitlab::ApplicationContext.with_raw_context(related_class: related_class) do
+ TestConcurrencyLimitWorker.perform_async('foo')
+ end
+ end
+ end
+
+ context 'when concurrency_limit_resume setter is used' do
+ it 'executes the job if resumed' do
+ expect(TestConcurrencyLimitWorker).to receive(:work)
+ expect(Gitlab::SidekiqLogging::ConcurrencyLimitLogger.instance).not_to receive(:deferred_log)
+ expect(Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService).not_to receive(:add_to_queue!)
+
+ Gitlab::ApplicationContext.with_raw_context do
+ TestConcurrencyLimitWorker.concurrency_limit_resume.perform_async('foo')
+ end
+ end
+ end
+
+ context 'when both related class and concurrency_limit_resume setter is used' do
+ it 'executes the job if resumed' do
+ expect(TestConcurrencyLimitWorker).to receive(:work)
+ expect(Gitlab::SidekiqLogging::ConcurrencyLimitLogger.instance).not_to receive(:deferred_log)
+ expect(Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService).not_to receive(:add_to_queue!)
+
+ related_class = 'Gitlab::SidekiqMiddleware::ConcurrencyLimit::ConcurrencyLimitService'
+ Gitlab::ApplicationContext.with_raw_context(related_class: related_class) do
+ TestConcurrencyLimitWorker.concurrency_limit_resume.perform_async('foo')
+ end
end
end
end
diff --git a/spec/lib/system_check/incoming_email/imap_authentication_check_spec.rb b/spec/lib/system_check/incoming_email/imap_authentication_check_spec.rb
index 66eb52b70a3..0e8aa15bb84 100644
--- a/spec/lib/system_check/incoming_email/imap_authentication_check_spec.rb
+++ b/spec/lib/system_check/incoming_email/imap_authentication_check_spec.rb
@@ -16,7 +16,8 @@ RSpec.describe SystemCheck::IncomingEmail::ImapAuthenticationCheck do
describe '#load_config' do
subject { system_check.send(:load_config) }
- context 'returns no mailbox configurations with mailroom default configuration' do
+ context 'returns no mailbox configurations with mailroom default configuration',
+ quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/448844' do
it { is_expected.to be_nil }
end
diff --git a/spec/requests/api/npm_group_packages_spec.rb b/spec/requests/api/npm_group_packages_spec.rb
index 12b2ccd1bf7..ca99dda69ba 100644
--- a/spec/requests/api/npm_group_packages_spec.rb
+++ b/spec/requests/api/npm_group_packages_spec.rb
@@ -15,7 +15,9 @@ RSpec.describe API::NpmGroupPackages, feature_category: :package_registry do
subject { get(url) }
end
- it_behaves_like 'handling get metadata requests for packages in multiple projects'
+ context 'when qurantined shared example', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/496617' do
+ it_behaves_like 'handling get metadata requests for packages in multiple projects'
+ end
context 'with mixed group and project visibilities' do
subject { get(url, headers: headers) }
diff --git a/spec/services/issuable/discussions_list_service_spec.rb b/spec/services/issuable/discussions_list_service_spec.rb
index beea2c9d590..043da3e3a81 100644
--- a/spec/services/issuable/discussions_list_service_spec.rb
+++ b/spec/services/issuable/discussions_list_service_spec.rb
@@ -17,7 +17,9 @@ RSpec.describe Issuable::DiscussionsListService, feature_category: :team_plannin
describe 'fetching notes for issue' do
let_it_be(:issuable) { create(:issue, project: project) }
- it_behaves_like 'listing issuable discussions', user_role: :guest, internal_discussions: 1, total_discussions: 7
+ context 'when qurantined shared example', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/446157' do
+ it_behaves_like 'listing issuable discussions', user_role: :guest, internal_discussions: 1, total_discussions: 7
+ end
context 'without notes widget' do
let_it_be(:issuable) { create(:work_item, project: project) }
@@ -35,6 +37,9 @@ RSpec.describe Issuable::DiscussionsListService, feature_category: :team_plannin
describe 'fetching notes for merge requests' do
let_it_be(:issuable) { create(:merge_request, source_project: project, target_project: project) }
- it_behaves_like 'listing issuable discussions', user_role: :reporter, internal_discussions: 0, total_discussions: 6
+ context 'when qurantined shared example', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/446156' do
+ it_behaves_like 'listing issuable discussions',
+ user_role: :reporter, internal_discussions: 0, total_discussions: 6
+ end
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index e214cfc1df8..4c03af11c07 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -145,6 +145,9 @@ RSpec.configure do |config|
# Admin controller specs get auto admin mode enabled since they are
# protected by the 'EnforcesAdminAuthentication' concern
metadata[:enable_admin_mode] = true if %r{(ee)?/spec/controllers/admin/}.match?(location)
+
+ # The worker specs get Sidekiq context
+ metadata[:with_sidekiq_context] = true if %r{(ee)?/spec/workers/}.match?(location)
end
config.define_derived_metadata(file_path: %r{(ee)?/spec/.+_docs\.rb\z}) do |metadata|
diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml
index b7e7259defd..71cd9f56054 100644
--- a/spec/support/rspec_order_todo.yml
+++ b/spec/support/rspec_order_todo.yml
@@ -2539,7 +2539,6 @@
- './ee/spec/views/subscriptions/new.html.haml_spec.rb'
- './ee/spec/workers/active_user_count_threshold_worker_spec.rb'
- './ee/spec/workers/adjourned_group_deletion_worker_spec.rb'
-- './ee/spec/workers/adjourned_project_deletion_worker_spec.rb'
- './ee/spec/workers/adjourned_projects_deletion_cron_worker_spec.rb'
- './ee/spec/workers/admin_emails_worker_spec.rb'
- './ee/spec/workers/analytics/code_review_metrics_worker_spec.rb'
@@ -8393,7 +8392,6 @@
- './spec/workers/post_receive_spec.rb'
- './spec/workers/process_commit_worker_spec.rb'
- './spec/workers/project_cache_worker_spec.rb'
-- './spec/workers/project_destroy_worker_spec.rb'
- './spec/workers/project_export_worker_spec.rb'
- './spec/workers/projects/after_import_worker_spec.rb'
- './spec/workers/projects/git_garbage_collect_worker_spec.rb'
diff --git a/spec/support/shared_examples/models/concerns/protected_branch_access_shared_examples.rb b/spec/support/shared_examples/models/concerns/protected_branch_access_shared_examples.rb
index 6c6b4f8add6..4703ac6a33d 100644
--- a/spec/support/shared_examples/models/concerns/protected_branch_access_shared_examples.rb
+++ b/spec/support/shared_examples/models/concerns/protected_branch_access_shared_examples.rb
@@ -32,34 +32,4 @@ RSpec.shared_examples 'protected branch access' do
expect(protected_ref).to have_received(:group)
end
end
-
- context 'when current_project is nil' do
- context "and protected_branch_group isn't nil" do
- let_it_be(:group) { create(:group) }
- let_it_be(:current_user) { create(:user) }
- let_it_be(:protected_ref) { create(:protected_branch, project: nil, group: group) }
- let_it_be(:access_level) { ::Gitlab::Access::DEVELOPER }
-
- using RSpec::Parameterized::TableSyntax
-
- where(:assign_access_level, :expected_check_access) do
- :guest | false
- :reporter | false
- :developer | true
- :maintainer | true
- :owner | true
- end
-
- with_them do
- subject do
- group.add_member(current_user, assign_access_level)
-
- described_class.new(protected_branch: protected_ref, access_level: access_level).check_access(current_user,
- nil)
- end
-
- it { is_expected.to eq(expected_check_access) }
- end
- end
- end
end
diff --git a/spec/support/shared_examples/models/concerns/protected_ref_access_shared_examples.rb b/spec/support/shared_examples/models/concerns/protected_ref_access_shared_examples.rb
index b87c59b4e39..6676fbf070e 100644
--- a/spec/support/shared_examples/models/concerns/protected_ref_access_shared_examples.rb
+++ b/spec/support/shared_examples/models/concerns/protected_ref_access_shared_examples.rb
@@ -33,6 +33,19 @@ RSpec.shared_examples 'protected ref access' do
end
end
+ describe 'scopes' do
+ describe '::for_role' do
+ subject(:for_role) { described_class.for_role }
+
+ let_it_be(:developer_access) { create(described_factory, :developer_access) }
+ let_it_be(:maintainer_access) { create(described_factory, :maintainer_access) }
+
+ it 'includes all role based access levels' do
+ expect(for_role).to contain_exactly(developer_access, maintainer_access)
+ end
+ end
+ end
+
describe '::human_access_levels' do
subject { described_class.human_access_levels }
diff --git a/spec/support/sidekiq.rb b/spec/support/sidekiq.rb
index 6c354c780b2..ebba6bf5fdd 100644
--- a/spec/support/sidekiq.rb
+++ b/spec/support/sidekiq.rb
@@ -18,6 +18,10 @@ RSpec.configure do |config|
redis_queues_metadata_cleanup!
end
+ def with_sidekiq_context
+ allow(Sidekiq).to receive(:server?).and_return(true)
+ end
+
# As we'll review the examples with this tag, we should either:
# - fix the example to not require Sidekiq inline mode (and remove this tag)
# - explicitly keep the inline mode and change the tag for `:sidekiq_inline` instead
@@ -29,6 +33,18 @@ RSpec.configure do |config|
gitlab_sidekiq_inline { example.run }
end
+ config.before(:example, :sidekiq_inline) do
+ with_sidekiq_context
+ end
+
+ config.before(:example, :sidekiq_might_not_need_inline) do
+ with_sidekiq_context
+ end
+
+ config.before(:example, :with_sidekiq_context) do
+ with_sidekiq_context
+ end
+
# Some specs need to run mailers through Sidekiq explicitly, rather
# than the ActiveJob test adapter. There is a Rails bug that means we
# have to do some extra steps to make this happen:
diff --git a/spec/workers/concerns/application_worker_spec.rb b/spec/workers/concerns/application_worker_spec.rb
index d41dd1dc2eb..79bd9bb3f28 100644
--- a/spec/workers/concerns/application_worker_spec.rb
+++ b/spec/workers/concerns/application_worker_spec.rb
@@ -540,6 +540,26 @@ RSpec.describe ApplicationWorker, feature_category: :shared do
end
end
+ describe '.concurrency_limit_resume' do
+ around do |example|
+ Sidekiq::Testing.fake!(&example)
+ end
+
+ context 'when the worker is not marked as deferred' do
+ it 'concurrency_limit_resume key is nil' do
+ worker.perform_async
+ expect(Sidekiq::Queues[worker.queue].first['concurrency_limit_resume']).to eq nil
+ end
+ end
+
+ context 'when the concurrency limited worker is marked as resume' do
+ it 'sets defaults if no arguments are passed' do
+ worker.concurrency_limit_resume.perform_async
+ expect(Sidekiq::Queues[worker.queue].first['concurrency_limit_resume']).to eq(true)
+ end
+ end
+ end
+
describe '.with_status' do
around do |example|
Sidekiq::Testing.fake!(&example)
diff --git a/spec/workers/project_destroy_worker_spec.rb b/spec/workers/project_destroy_worker_spec.rb
index 5473f3419f9..bf8a589d42e 100644
--- a/spec/workers/project_destroy_worker_spec.rb
+++ b/spec/workers/project_destroy_worker_spec.rb
@@ -3,10 +3,11 @@
require 'spec_helper'
RSpec.describe ProjectDestroyWorker, feature_category: :source_code_management do
- let_it_be(:project) { create(:project, :repository, pending_delete: true) }
- let_it_be(:repository) { project.repository.raw }
+ let!(:project) { create(:project, :repository, pending_delete: true) }
+ let!(:repository) { project.repository.raw }
let(:user) { project.first_owner }
+ let(:params) { {} }
subject(:worker) { described_class.new }
@@ -20,11 +21,44 @@ RSpec.describe ProjectDestroyWorker, feature_category: :source_code_management d
end
describe '#perform' do
- it 'deletes the project' do
- worker.perform(project.id, user.id, {})
+ shared_examples 'deletes the project' do
+ specify do
+ worker.perform(project.id, user.id, params)
- expect(Project.all).not_to include(project)
- expect(repository).not_to exist
+ expect(Project.all).not_to include(project)
+ expect(repository).not_to exist
+ end
+ end
+
+ it_behaves_like 'deletes the project'
+
+ context 'when an admin deletes the project' do
+ let_it_be(:user) { create(:admin) }
+
+ context 'with admin_mode setting enabled' do
+ context 'with admin mode session', :enable_admin_mode do
+ it_behaves_like 'deletes the project'
+ end
+
+ context 'without admin mode session' do
+ it 'does not delete the project' do
+ worker.perform(project.id, user.id, params)
+
+ expect(Project.all).to include(project)
+ expect(repository).to exist
+ end
+ end
+ end
+
+ context 'with admin_mode setting disabled' do
+ before do
+ stub_application_setting(admin_mode: false)
+ end
+
+ context 'without admin mode session' do
+ it_behaves_like 'deletes the project'
+ end
+ end
end
it 'does not raise error when project could not be found' do