Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-03-19 12:12:10 +00:00
parent 8f6bfc6915
commit fa91163a5b
73 changed files with 2162 additions and 313 deletions

View File

@ -2,6 +2,803 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 17.10.0 (2025-03-19)
### Added (150 changes)
- [Add CI runner manager custom executor count to service ping](https://gitlab.com/gitlab-org/gitlab/-/commit/0ff760ca3f36016b6558c9d27e3b0cefeb1fe827) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184308))
- [Add compliance control: auth_sso_enabled](https://gitlab.com/gitlab-org/gitlab/-/commit/e386ea2d8ebab9512a2552011da1e10520595ee8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183762)) **GitLab Enterprise Edition**
- [Protected containers: Integrate delete protection in REST API](https://gitlab.com/gitlab-org/gitlab/-/commit/074e863f366b85096f8e59dd93ba046b30692de8) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183729))
- [Destroy compliance statuses when project is deleted](https://gitlab.com/gitlab-org/gitlab/-/commit/48105bbba27648d01879e9c72ab2f0538abec2b1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183997)) **GitLab Enterprise Edition**
- [Add GraphQL query for organization cluster agents](https://gitlab.com/gitlab-org/gitlab/-/commit/0a58bad5b22f26825368ffbc1560b74c05637c5f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183728))
- [Export squash options](https://gitlab.com/gitlab-org/gitlab/-/commit/2219cde7bf1098f3f07d51a22d30d3d8c5ccb622) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175472)) **GitLab Enterprise Edition**
- [Add query to pipeline inputs form](https://gitlab.com/gitlab-org/gitlab/-/commit/10237c60e0680d7a219d504320a1b87205f4f7a8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183587))
- [Update table_size database dictionary entries](https://gitlab.com/gitlab-org/gitlab/-/commit/f90fc44e30f41f8a33d0ff8b8b79765d94189d76) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184718))
- [Added graphql query for listing project compliance statuses](https://gitlab.com/gitlab-org/gitlab/-/commit/c1e2223ba7c2321445d6de70bacdf4df737ad830) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183640)) **GitLab Enterprise Edition**
- [Emit input data to pipeline new form](https://gitlab.com/gitlab-org/gitlab/-/commit/1e8c63a524d7c3a9c9fb1ff92a4bdaa2d11bcbeb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184375))
- [Add missing sorting options to access token APIs](https://gitlab.com/gitlab-org/gitlab/-/commit/fecf59b69b870f037442b5fea70d32b7d0c135a8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184298))
- [Add work item view controls](https://gitlab.com/gitlab-org/gitlab/-/commit/663aecae54ae491c642bb5986bdb38983df8a880) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181184))
- [Backfill software_license_policies without spdx and custom_license](https://gitlab.com/gitlab-org/gitlab/-/commit/e8187711095b23e1dbefd31480512859d3daa9e2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181736)) **GitLab Enterprise Edition**
- [Updating pipeline inputs form](https://gitlab.com/gitlab-org/gitlab/-/commit/9f133639227253535e7fbb30110d162abffa010b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184112))
- [Track credentials inventory page visits on SAAS, SM & Dedicated](https://gitlab.com/gitlab-org/gitlab/-/commit/c8ce6b9ae02e3f693c8986032b6c3a5cddc18c81) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184346)) **GitLab Enterprise Edition**
- [Add inputs to pipeline schedule endpoints](https://gitlab.com/gitlab-org/gitlab/-/commit/f08790547e5fa28746ae880788d96400fd0374ae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184019))
- [Support filtering work items by timeframe](https://gitlab.com/gitlab-org/gitlab/-/commit/65916874d04584fa91188da709910dfd50d8f129) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181904))
- [Release GitLab Query Language (GLQL) Beta](https://gitlab.com/gitlab-org/gitlab/-/commit/bd5d4c6eaa885e0fd514e543d9d5bf1a38e00450) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184168))
- [Add createdAt field to source_user_type](https://gitlab.com/gitlab-org/gitlab/-/commit/b39d88016f4fb445487c2bac5cd944214cb6e50b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182177))
- [Automatically scan pubspec.lock files when new analyzer enabled](https://gitlab.com/gitlab-org/gitlab/-/commit/706c6a20a3221223cb5c4877344914e0d39d23ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184379))
- [Add admin page for targeted messages basic upload](https://gitlab.com/gitlab-org/gitlab/-/commit/f08d3ffa800c991c7b22a8bd118fff0fe003e84b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183052)) **GitLab Enterprise Edition**
- [Implement vulnerability archive export API](https://gitlab.com/gitlab-org/gitlab/-/commit/ff0904799c49d21d5e82cee60ba034fd1f69d487) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183521)) **GitLab Enterprise Edition**
- [Create merge_request_approval_settings table](https://gitlab.com/gitlab-org/gitlab/-/commit/0b44f525835df85f0261eb0bc64daa3b84a26743) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183679)) **GitLab Enterprise Edition**
- [ActiveContext preprocessor for embeddings](https://gitlab.com/gitlab-org/gitlab/-/commit/5017fd3d05b4a2be28d424a2be78561b2a089809) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183693))
- [Respect tag protection rules when deleting tags](https://gitlab.com/gitlab-org/gitlab/-/commit/c99b88552ecf214475b5d6f13adebf710af57ba6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180661))
- [Show subgroup projects in the DORA projects comparison visualization](https://gitlab.com/gitlab-org/gitlab/-/commit/910ecaf74f432346fa7d420ee8a67521ad0d66f7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184211)) **GitLab Enterprise Edition**
- [Enable importer_user_mapping_reassignment_csv flag by default](https://gitlab.com/gitlab-org/gitlab/-/commit/278aee25d619a71912eb645cb479020b39df64ac) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184169))
- [Add count of createdservice_accounts,28d](https://gitlab.com/gitlab-org/gitlab/-/commit/03dcd1495e212b94d580c6bf81bd18fd1f85a053) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183222)) **GitLab Enterprise Edition**
- [Add by_project_id scope to ProjectSettings](https://gitlab.com/gitlab-org/gitlab/-/commit/e5ad00c21571e79f1acd187b4c937588b2498858) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180296)) **GitLab Enterprise Edition**
- [Enable the `todos_bulk_actions` FF by default](https://gitlab.com/gitlab-org/gitlab/-/commit/40563c25b3cd9d3d1baf39fb38a87e1fbedd9497) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184151))
- [Add shortcut tooltips](https://gitlab.com/gitlab-org/gitlab/-/commit/f669b3a6963bbb161d35f36947da7ed698801171) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183757))
- [ActiveContext preprocessors for preload and bulk embeddings](https://gitlab.com/gitlab-org/gitlab/-/commit/dcdec6b4eea2f043aa32481a410ddaf2137d7f10) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183374))
- [Add the ability to search versions](https://gitlab.com/gitlab-org/gitlab/-/commit/c00d278bfa68375ebd0b7dcd287f2f2311e007c4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183105)) **GitLab Enterprise Edition**
- [Add service account update endpoint for groups](https://gitlab.com/gitlab-org/gitlab/-/commit/5404b436347d7441bb5b0870ce1d3e3d56cb6113) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182607)) **GitLab Enterprise Edition**
- [Added code to auto approve pending promotions via ldap](https://gitlab.com/gitlab-org/gitlab/-/commit/f7d60b5b3f319ff31e884a7d796c294570ef86d3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182423)) **GitLab Enterprise Edition**
- [Admin Token API: Revoke pipeline trigger tokens](https://gitlab.com/gitlab-org/gitlab/-/commit/765c467ac4315c33ecf61e5ba0fe7f82b4572351) by @nwittstruck ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181598))
- [Expose path_lock permissions in graphql endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/894e13e9c6753b396706170fc7ebadbf6b367862) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184242)) **GitLab Enterprise Edition**
- [Protected packages: Add minimum_access_level_for_delete to GRAPHQL API](https://gitlab.com/gitlab-org/gitlab/-/commit/dd2c7c3ab12793bc8023de5bac784fb191fec601) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180260))
- [Add `usage_count` data source and visualizations](https://gitlab.com/gitlab-org/gitlab/-/commit/7b371873cfb3041ab919221d1c12529f36cd90a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183891)) **GitLab Enterprise Edition**
- [Add Duo with Amazon Q to Duo interface](https://gitlab.com/gitlab-org/gitlab/-/commit/11a972aa5d8cf7937e8810f5e2c1c0efc75c3873) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182120)) **GitLab Enterprise Edition**
- [Model experiments: Add artifacts list](https://gitlab.com/gitlab-org/gitlab/-/commit/c7cb2c8c359e8c3fb2c39782ef81c2e59360b479) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183678))
- [Add excluded_merge_requests table](https://gitlab.com/gitlab-org/gitlab/-/commit/09179454c488f3eb5601f5f9b362347fa7da61f3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182488))
- [Add vulnerability_severity_overrides table](https://gitlab.com/gitlab-org/gitlab/-/commit/a985600fdcc410d872dea0f9a40bd9e347612a86) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176952)) **GitLab Enterprise Edition**
- [Introduce Ci::ProjectWithPipelineVariable model and migration](https://gitlab.com/gitlab-org/gitlab/-/commit/6197a60603908283344b91e0350fe0ca03e477f2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176022))
- [Protected packages: Integrate delete protection](https://gitlab.com/gitlab-org/gitlab/-/commit/98b2aaeabd1eed7a2867f342bd9d2ba63ab595e2) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179931))
- [Add ci_pipeline_schedule_inputs table](https://gitlab.com/gitlab-org/gitlab/-/commit/378b5df8157a955108e45bbc8423b2dd647f5a48) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182763))
- [Add duo_chat_troubleshoot_job to FLAGGED_FEATURES](https://gitlab.com/gitlab-org/gitlab/-/commit/317691ac2664f6ceb4a1ef9eec23abc0a530cf64) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184134)) **GitLab Enterprise Edition**
- [Remove users_search_scoped_to_authorized_namespaces_advanced_search flag](https://gitlab.com/gitlab-org/gitlab/-/commit/e951adcae07423cd2168fdfc53f5677d63e16fc5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184125)) **GitLab Enterprise Edition**
- [Add Authz::UserGroupMemberRole model](https://gitlab.com/gitlab-org/gitlab/-/commit/7c8eb82dc54b884203206bdffb598b03a9391260) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182980)) **GitLab Enterprise Edition**
- [Add `parent_path` argument to Groups GQL resolver](https://gitlab.com/gitlab-org/gitlab/-/commit/4a8aab2d65bcf3a3d0f9ee846f3bbacc25900d49) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183012))
- [Added a new vulnerability_namespace_statistics table](https://gitlab.com/gitlab-org/gitlab/-/commit/6c5539a6df41b93423a715036ec17681821bdaf1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183138))
- [Support admin custom roles on SaaS](https://gitlab.com/gitlab-org/gitlab/-/commit/4117831792cc903acf9a9c62209dcf27fb441d83) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181559)) **GitLab Enterprise Edition**
- [Implement `GET /Groups/:id` SCIM endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/052e8d5b635a77ce8994ff05d395ecbdcd14ef38) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181577)) **GitLab Enterprise Edition**
- [Add WorkItemWidgetVulnerabilities with related vulnerabilities](https://gitlab.com/gitlab-org/gitlab/-/commit/7c6acbd08fbb273e5250f175ae7f747b6055b072) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183548)) **GitLab Enterprise Edition**
- [Prevent decremeting stars of project with zero star count](https://gitlab.com/gitlab-org/gitlab/-/commit/c9b3c9629ad2b537ae32104af0efc1766d09c0b5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183481))
- [Added table and model for project requirement status](https://gitlab.com/gitlab-org/gitlab/-/commit/ae8b8a4fd10691298e4bd7470683bc7860c25f5f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183484)) **GitLab Enterprise Edition**
- [Enable Duo Code Review and change it to beta](https://gitlab.com/gitlab-org/gitlab/-/commit/60dc901bf62c1bce545668d6334d362a865a891d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183478)) **GitLab Enterprise Edition**
- [Add inputs adoption banner](https://gitlab.com/gitlab-org/gitlab/-/commit/e636f6533b62a10abe1729f01e97f3183f35eb0a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183407))
- [Add dependency paths data to vulnerabilities](https://gitlab.com/gitlab-org/gitlab/-/commit/98401d1dd27cfd7cd4d383448c6fa2ecb5950475) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183487)) **GitLab Enterprise Edition**
- [Update GitLab Pages version](https://gitlab.com/gitlab-org/gitlab/-/commit/b2c8391c0fdab273c7a2e1d15a1a2272948f7f37) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183856))
- [Show blame preferences when .git-blame-ignore-revs file exists](https://gitlab.com/gitlab-org/gitlab/-/commit/cee1cfacd22437ca8556977c93cd897011541327) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182827))
- [Bulk add controls while requirement creation](https://gitlab.com/gitlab-org/gitlab/-/commit/d883fe61541afa002f63e21202c18b53d66e5597) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181898)) **GitLab Enterprise Edition**
- [Add groups GQL query argument to only return groups with user membership](https://gitlab.com/gitlab-org/gitlab/-/commit/7fffc8b4136d61a113caa2831d697c882ed13408) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183161))
- [Add ability to force cancel jobs stuck in canceling status](https://gitlab.com/gitlab-org/gitlab/-/commit/1a70128e344b4ad63adc84134ba0207b031cba15) by @ajuckel ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179137))
- [Add put API endpoint to support uploading recipe package files](https://gitlab.com/gitlab-org/gitlab/-/commit/6eea3d1010efdcdc023e0f0d0a4c26d8867fd6d2) by @oceane_scania ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181393))
- [Add the `RecentlyViewedMergeRequestsResolver` class](https://gitlab.com/gitlab-org/gitlab/-/commit/8e4c6010d12f75cf730a2658a037b154a0698a2b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183706))
- [Introduce GroupDora type with projects](https://gitlab.com/gitlab-org/gitlab/-/commit/d039f1486c4f93cc6d736d2a1e7858446039930d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181975)) **GitLab Enterprise Edition**
- [Introduce separate rate limiter for /autocomplete/users](https://gitlab.com/gitlab-org/gitlab/-/commit/c56892fd850d37dba6aaadd58bcd232d7b0bd1ca) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183244))
- [Track Cloud Connector token signing metrics](https://gitlab.com/gitlab-org/gitlab/-/commit/91861f52d73a451a5d1d312878c3828aa9202e2f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183676)) **GitLab Enterprise Edition**
- [Add vulnerability_severity_overrides table](https://gitlab.com/gitlab-org/gitlab/-/commit/bce60bb6a9bd6a2de27beff230ce3cebef9e420f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176952)) **GitLab Enterprise Edition**
- [Process security report observability events](https://gitlab.com/gitlab-org/gitlab/-/commit/c4be99cf6fd9777f8308aa2f093f3a70e05b229d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175612))
- [Capture job token policies for API endpoints](https://gitlab.com/gitlab-org/gitlab/-/commit/bc7f41bba693e4fb6afcec218ba2e6f7f781f371) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182582))
- [Update vulnerabilities ExternalIssueLink create service](https://gitlab.com/gitlab-org/gitlab/-/commit/a81fd7f5dfa68a8dd2d322952dec905178a5a35e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181950)) **GitLab Enterprise Edition**
- [Migrate table cell dropdown to a bubble menu](https://gitlab.com/gitlab-org/gitlab/-/commit/a3e34dfe4c15c3d865c8685b83190bce4d00b675) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182909))
- [Add Duo with Amazon Q support to SM/Dedicated provisioning](https://gitlab.com/gitlab-org/gitlab/-/commit/445de297eb3a4b2d226f60d6ed3354d8515c3d0c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183529)) **GitLab Enterprise Edition**
- [Add value renderer](https://gitlab.com/gitlab-org/gitlab/-/commit/4c119afc75d69056bab78c2b26e1ead1121fcc17) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182799))
- [Remove block_seat_overages feeature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/42db137830172086da6e0014f9fd30a1af196068) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181653)) **GitLab Enterprise Edition**
- [Add import history table and import source table components](https://gitlab.com/gitlab-org/gitlab/-/commit/d5e4d47d16a22c4034489c7e2f849dbf40d6b78f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180098))
- [Add namespace_metadata visualization and data source](https://gitlab.com/gitlab-org/gitlab/-/commit/1e0753a2b28826057b41e8b9419820df2e76c877) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183096)) **GitLab Enterprise Edition**
- [Add CSV format to group dependency export](https://gitlab.com/gitlab-org/gitlab/-/commit/78781796626b4dedb2597aaa8e4228a3b9015cff) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183097)) **GitLab Enterprise Edition**
- [Restrict manual job variables](https://gitlab.com/gitlab-org/gitlab/-/commit/709a35fd11d4becb26763c2575e38d1610b28838) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183068))
- [Cloud Connector: add key rotation rake tasks](https://gitlab.com/gitlab-org/gitlab/-/commit/54a43ecebdea34e1667589302f9074212bace19a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182711)) **GitLab Enterprise Edition**
- [Create GraphQL endpoint to return pipeline inputs](https://gitlab.com/gitlab-org/gitlab/-/commit/be04d0ea0fff216ac93b64b8cddd2579574fc3ce) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182609))
- [Add Project.forkedFrom to graphql api](https://gitlab.com/gitlab-org/gitlab/-/commit/9ba1c9b57d20d61ff05e23204998c5b86d19aa05) by @Taucher2003 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183115))
- [Add error tracking widget to work items](https://gitlab.com/gitlab-org/gitlab/-/commit/440bb7783d17ddb814e684d9ea04c0b554492817) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181983))
- [Enable cluster agents for groups](https://gitlab.com/gitlab-org/gitlab/-/commit/b8d6ec5cd500c71846ddf5891e725d3d0b470cb6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182628))
- [Apply GitHub markdown reformatting to more objects](https://gitlab.com/gitlab-org/gitlab/-/commit/16570e16526ead2673d16eda5e46dadbe102f92e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181297))
- [Improve pipeline execution policy documentation](https://gitlab.com/gitlab-org/gitlab/-/commit/4e6657b52057a2a53f8c20687e163c165a88e3b8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182269))
- [Add GraphQL API for querying dedicated usage filters](https://gitlab.com/gitlab-org/gitlab/-/commit/747d7f9796b33e5af5b364a70ce9f4b7089774f3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181383)) **GitLab Enterprise Edition**
- [Add namespace package setting for audit events](https://gitlab.com/gitlab-org/gitlab/-/commit/6e1017c7db9da4e696bb6fbd3203355deed9f1c4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182310))
- [Adding the CI_PROJECT_NAMESPACE_SLUG variable](https://gitlab.com/gitlab-org/gitlab/-/commit/481185f5bfcb475d6ad8df8d7b66bd82a5f18168) by @tonton1728 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181988))
- [Update GitLab Pages version](https://gitlab.com/gitlab-org/gitlab/-/commit/d8222b92a2c63fb1fd44bd3511a01d173a26c1fe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183193))
- [ActiveContext OpenSearch processor for queries](https://gitlab.com/gitlab-org/gitlab/-/commit/61448378d87d011d0ee462548111e50ce0cf47a1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183192))
- [Add support for /epic on work_items](https://gitlab.com/gitlab-org/gitlab/-/commit/3e19a48db9e3043b8f7aef2a1567d973db1048b5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181750)) **GitLab Enterprise Edition**
- [Add `organization_id` field to `fork_networks`](https://gitlab.com/gitlab-org/gitlab/-/commit/34c02117ed94dbb83d583852ec0ec30f67f55f88) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182898))
- [Add vulnerability id for create work item](https://gitlab.com/gitlab-org/gitlab/-/commit/80a8757f432c2d2e464c5717d35cd3a49b6b9c3a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181895))
- [Pre-select permissions when creating a custom role](https://gitlab.com/gitlab-org/gitlab/-/commit/080b2dac7f9dd28879dfb62d0114a609c9da903c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178060)) **GitLab Enterprise Edition**
- [Append any value defined in pages.publish to artifact paths](https://gitlab.com/gitlab-org/gitlab/-/commit/f4fe9adc6581fbebbdcb7a2b3bc4b405dbe714ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180239))
- [Add a limited count field to registries](https://gitlab.com/gitlab-org/gitlab/-/commit/2da96a9139f78087ec65db80dd997d863028202a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183189)) **GitLab Enterprise Edition**
- [Implement `POST /Groups` SCIM endpoint for self-managed](https://gitlab.com/gitlab-org/gitlab/-/commit/bda74db95a055eaa7720b22a00867f1b162235b7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180831)) **GitLab Enterprise Edition**
- [GraphQL query for component dependency path](https://gitlab.com/gitlab-org/gitlab/-/commit/01b9e3dbb1e0a59c6f709e2cb79ffe21826cd101) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182289)) **GitLab Enterprise Edition**
- [Add pipeline inputs table](https://gitlab.com/gitlab-org/gitlab/-/commit/39762c32ec5147924304e1e4320686cf16bf36f1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182676))
- [Add worker to assign security bot for namespaces](https://gitlab.com/gitlab-org/gitlab/-/commit/97a31e6586895bf2e461f577b15f86c597f8e483) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181182)) **GitLab Enterprise Edition**
- [Remove feature flag change_data_consistency_for_permissions_workers](https://gitlab.com/gitlab-org/gitlab/-/commit/fa64b4ffc6fee61e2591cd334bbe63e2c5952cde) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182975))
- [Allow users to /q test in mr note](https://gitlab.com/gitlab-org/gitlab/-/commit/952392123f3c5764ec1b2d00c87e4732c76f3af7) by @jlosito ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182010)) **GitLab Enterprise Edition**
- [Add models for system defined status](https://gitlab.com/gitlab-org/gitlab/-/commit/91e8062dcf2ea2fba8f0e0b1ace91b6582542327) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181962))
- [Add default role to variables settings](https://gitlab.com/gitlab-org/gitlab/-/commit/a240e2b741a3f02975974ac408b4552a9226c8ec) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181272))
- [Add index on merge_request_diffs for id and project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/2b5e662ed26b2ff40cd6d677ea48371fa084bcd5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173929))
- [Support duo_chat_2 conversation type](https://gitlab.com/gitlab-org/gitlab/-/commit/dbaf33ea2547f3658fdb70bab1422bfa535ffd6f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181771)) **GitLab Enterprise Edition**
- [Expose CI_JOB_GROUP_NAME variable for builds](https://gitlab.com/gitlab-org/gitlab/-/commit/cd0ce46c878ad8c521e02d1d7ab3a56107700544) by @azinke ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179447))
- [Add find_or_initialize_project_control_status](https://gitlab.com/gitlab-org/gitlab/-/commit/6bb465ef64ab325605d62196a866207717ff444e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180107)) **GitLab Enterprise Edition**
- [Expose `blocked_work_items` feature availability in WI permissions](https://gitlab.com/gitlab-org/gitlab/-/commit/ac8edbb59ecc74d007303de508e3f3a72b71e7c5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182158)) **GitLab Enterprise Edition**
- [Add GraphQL for WorkItems::UserPreference](https://gitlab.com/gitlab-org/gitlab/-/commit/e2d5263ee9f18ef213f41bd386fe42afb9a389f7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176975))
- [Release PAT expiry notifications to inherited group and project members](https://gitlab.com/gitlab-org/gitlab/-/commit/1acddc4e2a70d9b52eeb0d83063b721ffa219377) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182055))
- [Promote model version through api](https://gitlab.com/gitlab-org/gitlab/-/commit/600cfc3169aef35e2ebce46dfe6bff9ead9f916e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182777))
- [Introduce a GraphQL mutation to archive vulnerabilities](https://gitlab.com/gitlab-org/gitlab/-/commit/f1872a8335f6b88b1eea2da5fd39d4c6babf2539) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181986)) **GitLab Enterprise Edition**
- [Add user_discussions_count to WorkItem API](https://gitlab.com/gitlab-org/gitlab/-/commit/5d0a04b4dd55874cae26b4b393bd2048e9422446) by @vedant-jain03 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179164))
- [Add migration to create missing nuget symbols](https://gitlab.com/gitlab-org/gitlab/-/commit/2148e0dc8fc667635cbbb5fc8699250121e1fd2f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173869))
- [Enable users to fetch all WorkItems they have access through GraphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/83be9dc0b25f78c83d8af5194ddd99e3ff14bdc2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177484))
- [Preload policies in contributed and starred projects resolvers](https://gitlab.com/gitlab-org/gitlab/-/commit/1bfafed705e6f6366429823d93c81ae9fbb0887e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182494))
- [Markdown: Select text and paste URL to create link](https://gitlab.com/gitlab-org/gitlab/-/commit/bcd2a3bcc3f4b91c4e5afc6828df8e1bbe03d083) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182471))
- [Add export dropdown to dependency list](https://gitlab.com/gitlab-org/gitlab/-/commit/f112339a2cf3853179fc89aeff5383a9b1260a97) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180617)) **GitLab Enterprise Edition**
- [GraphQL: search by commit in the repository](https://gitlab.com/gitlab-org/gitlab/-/commit/013cd757b4e6441bf77b0948e22d8e7d7f3c967e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179542))
- [Add external control fields to GraphQL API](https://gitlab.com/gitlab-org/gitlab/-/commit/7017d5d7f382e0f179282e9dfbcb7ee22aebaf31) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181318)) **GitLab Enterprise Edition**
- [Make Ci::Runner#token routable](https://gitlab.com/gitlab-org/gitlab/-/commit/82024706866a6ba3ce64ce25bfc9d22464bec059) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170634))
- [Removes limited_capacity_member_destruction FF](https://gitlab.com/gitlab-org/gitlab/-/commit/f636f1de5af54404ac76c4c6d3ebd7d8892c8198) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180185))
- [Add comment summarization to work items](https://gitlab.com/gitlab-org/gitlab/-/commit/f75414f0787901a7ca9565f8bf36d6ee34c7aaaa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181712)) **GitLab Enterprise Edition**
- [Removes billable_member_async_deletion FF](https://gitlab.com/gitlab-org/gitlab/-/commit/543a9f346f427743a7513e779b28d81f9e7f910a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180184)) **GitLab Enterprise Edition**
- [Show auto-resolve info banner on vulnerability report](https://gitlab.com/gitlab-org/gitlab/-/commit/741da3d24853da9e3084d8d9af116cdeaa9c879f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181967)) **GitLab Enterprise Edition**
- [Make Users API rate limits configurable](https://gitlab.com/gitlab-org/gitlab/-/commit/4ed1d53f75058b391a135323788383d22122feef) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181054))
- [Add switch for CI/CD Job Token format](https://gitlab.com/gitlab-org/gitlab/-/commit/953335cecad9625afa08aa0f44a7ee99c119c5d0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181293))
- [Show Start/Due date sort options in Work Item list](https://gitlab.com/gitlab-org/gitlab/-/commit/eb0f231b4b440d525960e7924aefc6cfca52ee7b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182173))
- [Remove feature flag pipeline_execution_policy_analyze_configs](https://gitlab.com/gitlab-org/gitlab/-/commit/d834b44e1ddc9133be84e4f4009f18d6b14bc50b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181963)) **GitLab Enterprise Edition**
- [Add import history stats and error components](https://gitlab.com/gitlab-org/gitlab/-/commit/81f0cc980422fdc96084ab00f1aae21f267a8c23) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181146))
- [Add runner ID filter for dedicated usage query](https://gitlab.com/gitlab-org/gitlab/-/commit/4d2b776c4b7d22ee1bc4fa09bf915851067326d3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181916)) **GitLab Enterprise Edition**
- [ActiveContext OpenSearch executor for migrations](https://gitlab.com/gitlab-org/gitlab/-/commit/ef037daaf65a75748fba84d529c888f825af81c4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181971))
- [ActiveContext Find partition by serializing collection](https://gitlab.com/gitlab-org/gitlab/-/commit/010dc11145cd18c3a4e9dc27503a57cfabefe72a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181525))
- [Mutation for destroying compliance control](https://gitlab.com/gitlab-org/gitlab/-/commit/f2c8c7c90b9b389026fa225f8952cbb64e850040) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177878)) **GitLab Enterprise Edition**
- [Add Support PIN UI functionality](https://gitlab.com/gitlab-org/gitlab/-/commit/3bf456b1fe8e3c31ed8793289fd58df46c81e8cf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176922))
- [Add system note when submitted review is "comments only"](https://gitlab.com/gitlab-org/gitlab/-/commit/45c24bde9d692e042b86a9910829dd9e841eb767) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179149))
- [Enable work item description templates](https://gitlab.com/gitlab-org/gitlab/-/commit/a38540c58ed75d15cf8b9215286b6b4eeae41450) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181688))
- [Protected packages: Add basics for package delete protection](https://gitlab.com/gitlab-org/gitlab/-/commit/241a1dc3e3f74996f62aee1208a5db0db34d3046) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179739))
- [Display warning banner when LFS is misconfigured](https://gitlab.com/gitlab-org/gitlab/-/commit/05d5a2034f2b2e4ef97f3641d7d31be1cc30ca51) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181953))
- [Expose error tracking stack trace though GraphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/5d848cf139d116004f57e599925adcb9f264b46a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181520))
- [Adds project_id and namespace_id to JWT payload](https://gitlab.com/gitlab-org/gitlab/-/commit/df5a3ac35174b81aa16e90cdbe8d6b6879f0d7e9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180975))
- [Add peek functionality for ResourceUsageLimiter](https://gitlab.com/gitlab-org/gitlab/-/commit/64a1d528b65f0afec148df972b4a92f935ccb4fd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/174808))
- [Add move button to work item Issue type actions menu](https://gitlab.com/gitlab-org/gitlab/-/commit/10e007178488cb7473d56da2417ed041c96859b6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178799))
- [Add support for api site profiles in DAST Scan Execution Policies](https://gitlab.com/gitlab-org/gitlab/-/commit/5849f39b6cf27cdecaaeae4e45218b0b844e8b50) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181411)) **GitLab Enterprise Edition**
- [Clean up display_password_requirements feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/55e94756c3d8337cc38b1a7914820584dfe3d4d6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181446)) **GitLab Enterprise Edition**
- [Handle Silent Mode for Audit Events streaming](https://gitlab.com/gitlab-org/gitlab/-/commit/ff7b8d7fde8a37b37503636f65aa5c85d020b5db) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181421)) **GitLab Enterprise Edition**
### Fixed (183 changes)
- [Detect JSON tables even with other lang params](https://gitlab.com/gitlab-org/gitlab/-/commit/292c8ffa2f3d7d8d0f47a9198538a2a0a31294c8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184635))
- [Make sure a.anchor::after has position absolute all the time](https://gitlab.com/gitlab-org/gitlab/-/commit/c1dcb71b1bbc80e840ebbf08e779683c62998919) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184220))
- [Do not enforce job token permissions for public endpoints](https://gitlab.com/gitlab-org/gitlab/-/commit/e7c4bc1d5bdbd23fbef1a2e50a3fb78f0e4f95f1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184087))
- [Fix URL escaping in badges API](https://gitlab.com/gitlab-org/gitlab/-/commit/a7329a7c08b2f1120e59266e7581f682beca441f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183543))
- [Add migration to delete zoekt_replicas with evicted zoekt_indices](https://gitlab.com/gitlab-org/gitlab/-/commit/52c2600fe5210921814c06eb32c884de09f89ff8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183685))
- [Fix group level auth for epics advanced search](https://gitlab.com/gitlab-org/gitlab/-/commit/4970eff19fff21b05b379820e8721044fe4678c5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183748)) **GitLab Enterprise Edition**
- [Handle duplication error](https://gitlab.com/gitlab-org/gitlab/-/commit/331dad5654cc4f1a51f225fc05be8c717096a401) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184116))
- [Fix comment templates](https://gitlab.com/gitlab-org/gitlab/-/commit/4f47d3a1b79133d7e34ef10fa60fb7adb83a00ea) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181913))
- [Add conditional Flux reconciliation update](https://gitlab.com/gitlab-org/gitlab/-/commit/20c4a32f9d0f64f5c856a8be135f66b6aa6fb218) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184505))
- [Fix integrations table alignment](https://gitlab.com/gitlab-org/gitlab/-/commit/162506aa1f6c74ad4b3cbdf9cb1ecc803e524aae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184538))
- [Fix VSA filtered search bar overflow issue when many filters are applied](https://gitlab.com/gitlab-org/gitlab/-/commit/fc3e4fb731dfc097cb590f3902f49bed41887352) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184520))
- [Prevent new user registration when block seat overages is enabled](https://gitlab.com/gitlab-org/gitlab/-/commit/4c35d12bb2ee647da185ba77d599e7a8a72c7f72) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183913)) **GitLab Enterprise Edition**
- [GLQL table: Fix inclusion of table in description field](https://gitlab.com/gitlab-org/gitlab/-/commit/f04c4eadd5785b631e5d8a53db025cd3a6db7b75) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184435))
- [Rolled up dates only when rollUp is true](https://gitlab.com/gitlab-org/gitlab/-/commit/f70825f10d5b6f30a5dfd84c18a6173099665729) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183455))
- [Fix: Skip agent authorization check for environment creation in REST API](https://gitlab.com/gitlab-org/gitlab/-/commit/2ea4c98270a76bcee6076e62e34cb848373397c7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184403))
- [Stop scroll misbehavior when linking to comments](https://gitlab.com/gitlab-org/gitlab/-/commit/ee0d8c9c7bc426f9a0f3c8e5168e4e063440c32e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184009))
- [Prevent WI sticky header edit button from shrinking when title is long](https://gitlab.com/gitlab-org/gitlab/-/commit/4dc4486acc993895573c8f680b7795a3ae3a5aaf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184370))
- [Add additional checks for group projects](https://gitlab.com/gitlab-org/gitlab/-/commit/5ddc49644b4a823ee21c5beb75eda09f24d1ff4e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184350)) **GitLab Enterprise Edition**
- [Only load vulnerability related records when actually exporting](https://gitlab.com/gitlab-org/gitlab/-/commit/8129bf948471ba32e66c439c73311a77217b8f38) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184195)) **GitLab Enterprise Edition**
- [Reorder runners backfill migrations](https://gitlab.com/gitlab-org/gitlab/-/commit/73f53b6c5b762686a30c74a95b9d70ebbb033cb1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184341))
- [Ignore math on spaced_link_filter](https://gitlab.com/gitlab-org/gitlab/-/commit/cd90ac39b4eda4d2c7407135923ce81370a850ab) by @Bubbis ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182626))
- [Fix read more button styling](https://gitlab.com/gitlab-org/gitlab/-/commit/d73c72a76e02169002b34ac4e230f76199513556) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184262))
- [Zoekt: Fix undefined feature flag handling in gitlab:zoekt:info](https://gitlab.com/gitlab-org/gitlab/-/commit/e256adfb3719ced95f2d3d65ecca40f2eafca1a4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184315)) **GitLab Enterprise Edition**
- [Refactor rule_index while updating security policy](https://gitlab.com/gitlab-org/gitlab/-/commit/ab2cdaddfdc50e2c768223b26e374260f08d5567) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183117)) **GitLab Enterprise Edition**
- [Return an error if the parent DNE / Lacks permissions](https://gitlab.com/gitlab-org/gitlab/-/commit/c02e35aba467208a49f8a410ce7e30c0df87021c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183938))
- [Removes ordering requirement for funnel sync test](https://gitlab.com/gitlab-org/gitlab/-/commit/8c7211bcf6c6a626c70ef95c6221f528896ba204) by @max.woolf ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184167))
- [Add check for nullability for compliance framework](https://gitlab.com/gitlab-org/gitlab/-/commit/80dacf519c6c6cb8c7c2f9798104f9e83514a10f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183665)) **GitLab Enterprise Edition**
- [Fix sorting issue credential inventory](https://gitlab.com/gitlab-org/gitlab/-/commit/836b8d90e45b9e42deaf227336abd6e2271e93a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183076))
- [Add `description` param to the service access tokens](https://gitlab.com/gitlab-org/gitlab/-/commit/5bda9dffa3bc75f3e365fbc27dcd2e1e00dd70f5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184099))
- [Reduce redundant Redis parameter initialization](https://gitlab.com/gitlab-org/gitlab/-/commit/ba04c2c1baf5e337c26944628d5d685d1adc8be3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184218))
- [Fix gitlab:elastic:info rake task](https://gitlab.com/gitlab-org/gitlab/-/commit/4c602bd80431c20b978061327f516f55bdcd87b6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184278)) **GitLab Enterprise Edition**
- [Fix work item draft and description with "\n\n"](https://gitlab.com/gitlab-org/gitlab/-/commit/87c3e20492c3bff884fb43115db95cf921052f8c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184273))
- [Add fallback for yaml editor](https://gitlab.com/gitlab-org/gitlab/-/commit/12d75bbde14dfba0a7888d6b7c0837e49c42ba39) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183917))
- [Improve a11y of Integrations table](https://gitlab.com/gitlab-org/gitlab/-/commit/19760748a3040424f67095ca78c5584dcd001b06) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183756))
- [Fix inconsistent state for project-level approval settings](https://gitlab.com/gitlab-org/gitlab/-/commit/14e9785890325f4793b24f5a387d3a49d0382210) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183677)) **GitLab Enterprise Edition**
- [Ensure "Edit release" links have accessible labels](https://gitlab.com/gitlab-org/gitlab/-/commit/8dc2fef337a0247cec4a2a361931901e11183ba5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183749))
- [Fix error when fetching custom roles when used in policies](https://gitlab.com/gitlab-org/gitlab/-/commit/e4c5855c011b493275b6d45b333436d18cde76c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183506)) **GitLab Enterprise Edition**
- [Add 99 to valid onboarding_status_role value](https://gitlab.com/gitlab-org/gitlab/-/commit/98e2a7d659dd64d0374990d0ad9412fa561bdee8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184159)) **GitLab Enterprise Edition**
- [Don't use DestroyExportWorker on successful export](https://gitlab.com/gitlab-org/gitlab/-/commit/4c895fd1c74ff725cc9efe68bad87f1f1d0635ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184175)) **GitLab Enterprise Edition**
- [Fix CI/CD variable settings with custom role](https://gitlab.com/gitlab-org/gitlab/-/commit/63e034a43296ac1fbd632ebd458e9167da693a41) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183448))
- [Fix merge request pipelines on ambiguous refs](https://gitlab.com/gitlab-org/gitlab/-/commit/9e126a06392558f8f4787cfd55c1bc0f34992c62) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158976))
- [Remove tsquery_deduplicate_search_terms feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/076fd9d3aa223ded31fb11a6c66c92950f01c9fc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183538))
- [Handle undefined body and html for rte](https://gitlab.com/gitlab-org/gitlab/-/commit/0792e0e9f73c4e20c941543b707bc8eaae4195cf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184140))
- [Use normalized package_name during](https://gitlab.com/gitlab-org/gitlab/-/commit/47a734bb9cfdbeb1728dddfe34e7d88fe5772f29) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183995)) **GitLab Enterprise Edition**
- [Update pipeline variables polling](https://gitlab.com/gitlab-org/gitlab/-/commit/2ea276fb72ed30bb2ff890ab82d1fcd0c80eefcf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183881))
- [Fix rebase failure alert variant](https://gitlab.com/gitlab-org/gitlab/-/commit/d6a647ce6583c6e35b3b2f47f8d8c796c36c56c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184085))
- [Ensure "Edit release" links have accessible labels](https://gitlab.com/gitlab-org/gitlab/-/commit/58234022a177f8bba09ce7e7b459f3fb5d029f1d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183747))
- [Adapt Duo Chat Slash commands for multi-threaded](https://gitlab.com/gitlab-org/gitlab/-/commit/435a8408c1dc0b4f0ec9be6d0222596f3ede3292) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183822)) **GitLab Enterprise Edition**
- [Passing color contrast for job log line numbers](https://gitlab.com/gitlab-org/gitlab/-/commit/f42daf67b72a3d3af7fc3db27fb7d1c3190e5f14) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179551))
- [Show full job sidebar when troubleshoot bar exists](https://gitlab.com/gitlab-org/gitlab/-/commit/c64143a64c44f534ddb72bb6aaf0e0c926c212e2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184053))
- [fix: Use short ref name as fallback in pipeline UI](https://gitlab.com/gitlab-org/gitlab/-/commit/5ac5fc25933c71fda32a3e8ecc760b44e19210be) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184052))
- [Add unverified_author_email to grahql endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/763dae9e6b0848fb2066f458c64905c6e374dfe7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181805))
- [Allow anonymous users to load pipeline analytics](https://gitlab.com/gitlab-org/gitlab/-/commit/60839c49f24800433380a6cf1724b3801a441e8c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184032))
- [Fix WorkItemType for reference work items](https://gitlab.com/gitlab-org/gitlab/-/commit/8cf4e1496ac11e4df12491dbd75e0bfaaee5f7e6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183647))
- [Stop redirection loop with welcome during onboarding](https://gitlab.com/gitlab-org/gitlab/-/commit/4cfcc6d997a75c36ffb1407ac7c057081c6f64d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183899)) **GitLab Enterprise Edition**
- [Capture model experiment creation RecordNotUnique error](https://gitlab.com/gitlab-org/gitlab/-/commit/8262f11a4e82b11183453beadc5fd33720845fdc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183515))
- [Fix frozen array error with custom analyzers](https://gitlab.com/gitlab-org/gitlab/-/commit/0337089fedacf862073554e7efb6002a222a36fb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183879)) **GitLab Enterprise Edition**
- [Fix Rack Attack incorrectly rate limiting runner API](https://gitlab.com/gitlab-org/gitlab/-/commit/f3547556874377474cfe1f64ccbb22f83088a8e4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183764))
- [Fix SHM health check not enabling properly](https://gitlab.com/gitlab-org/gitlab/-/commit/f15f2bb428b3b968f4e6f4c1bc8138bb5e2e0123) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183692)) **GitLab Enterprise Edition**
- [Use Redis pipeline creation for MR commit pushes](https://gitlab.com/gitlab-org/gitlab/-/commit/cd290ed3a3a5a6d95eb7682f819033d51a9fb5c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182449))
- [Use design tokens for diff file row and linked diff file](https://gitlab.com/gitlab-org/gitlab/-/commit/31c22efb66f6aa22e5873aa5e41da7e3abf2efdc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183456))
- [Convert DuoEnterprise trials lead form to view component](https://gitlab.com/gitlab-org/gitlab/-/commit/b798acf110292b70f58bfe4e7e74659db0e07716) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181874)) **GitLab Enterprise Edition**
- [Fix confidential filters for epics advanced search](https://gitlab.com/gitlab-org/gitlab/-/commit/f877c05292ba8dce79a21dca6c4b035b133218f7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183437)) **GitLab Enterprise Edition**
- [Add all actions to sticky header](https://gitlab.com/gitlab-org/gitlab/-/commit/c0bcc11ee7c87b0929de3a4360543ba12a20228f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183547))
- [A11y improvements for user profile and admin user groups/projects page](https://gitlab.com/gitlab-org/gitlab/-/commit/d3c36d30eaabbcbb2269737dd784fefe8771d656) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183438))
- [Ensure revoke token buttons have unique link text](https://gitlab.com/gitlab-org/gitlab/-/commit/17eba2966bce266c1c53ee148a25ef2c48237876) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183265))
- [Fix path rejection for Dependency path](https://gitlab.com/gitlab-org/gitlab/-/commit/c619aed99d762435b976d2b952cb1bf5ed2260ab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183682)) **GitLab Enterprise Edition**
- [Make sure aside has its implicit complementary role](https://gitlab.com/gitlab-org/gitlab/-/commit/8d26b5a8977a99875ad57990439c71ef8deb219c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163483))
- [Fix admin_display_duo_addon_settings? check](https://gitlab.com/gitlab-org/gitlab/-/commit/e430aa150ff69f89553f28d4c0eae7be55fd9266) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183507)) **GitLab Enterprise Edition**
- [Prevent invalidating remember tokens on logout](https://gitlab.com/gitlab-org/gitlab/-/commit/ce87820a7879854e1b4d891ec5e6cecdcdedad57) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183471))
- [Fix checkbox toggling in work item notes](https://gitlab.com/gitlab-org/gitlab/-/commit/59fb1b71fde5b2baf98da1f049ee78d4dfe6fb36) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182771))
- [Fixes CE profile Usage Quotas rendering](https://gitlab.com/gitlab-org/gitlab/-/commit/26dda60685d6d6e6bc856e8e499337175f58f60f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183577))
- [Don't auto-resolve dismissed vulnerabilities](https://gitlab.com/gitlab-org/gitlab/-/commit/0c393436c2bdca79b59eb9bed59204b0efadd139) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183430)) **GitLab Enterprise Edition**
- [Include before_sha in PEP pipelines](https://gitlab.com/gitlab-org/gitlab/-/commit/7ab7e8b5779495b84e9736a41cd56932e533af09) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182876)) **GitLab Enterprise Edition**
- [Added long line truncation for frontend highlighting](https://gitlab.com/gitlab-org/gitlab/-/commit/5331b6595deda1f9335dc159da3295a8b98782a0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180761))
- [Requeue migration to resync policy project links](https://gitlab.com/gitlab-org/gitlab/-/commit/16e6f0d7d385b9a592954b5295fd9986f9d5c497) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183065)) **GitLab Enterprise Edition**
- [Capture model registry version creation PG errors](https://gitlab.com/gitlab-org/gitlab/-/commit/4983076ce1b477e1917477127dc664ce9bdef9a9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183475))
- [Do not disable OAuth by "Disable personal access tokens" group setting](https://gitlab.com/gitlab-org/gitlab/-/commit/cc8aa847dc94ac1137e44b9756dbeede53b4e4aa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183488)) **GitLab Enterprise Edition**
- [Stop user onboarding for group saml](https://gitlab.com/gitlab-org/gitlab/-/commit/7ac701f3ebf87cec739b6c73bbb1f60e2b68da52) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183252)) **GitLab Enterprise Edition**
- [Update PruneProjectExportJobsWorker cronjob schedule](https://gitlab.com/gitlab-org/gitlab/-/commit/6c12d7f4e62e3e3cd022149a1fd8b352e6ccbf85) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182971))
- [Add optional chaining to ref response](https://gitlab.com/gitlab-org/gitlab/-/commit/6be2fb04c6d44f908c6bb353d9f73134bab43631) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183463))
- [Improve a11y of Help menu](https://gitlab.com/gitlab-org/gitlab/-/commit/9ee75f409cd732fac04028728e4f9adf6c4e66ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183443))
- [Ensure feature flag edit buttons have unique link text](https://gitlab.com/gitlab-org/gitlab/-/commit/ff5b26da8223f551d23727614b7f17548156acde) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183262))
- [Remove filter_saml_enforced_resources_from_graphql feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/3dfd246265acffb47d687e6ff570c7cd61effa88) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183417))
- [Improve a11y of links in Whats New drawer](https://gitlab.com/gitlab-org/gitlab/-/commit/6c972a1025f12977e675b8ab27effd38db834c7f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183411))
- [Show copy to clipboard button on mermaid code block](https://gitlab.com/gitlab-org/gitlab/-/commit/51c99b275e8f029d45fc821544d3170c14681739) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183247))
- [Fix RTE loading indicator position](https://gitlab.com/gitlab-org/gitlab/-/commit/4ab6ae83369e6dc425b32069fe4feb841c5e03ab) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183358))
- [Ensure user edit links in admin have unique text](https://gitlab.com/gitlab-org/gitlab/-/commit/d3776f58bfee2dbd6317f0eacec18194a4d203f4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183268))
- [Ensure docs and config links on admin dashboard are accessible](https://gitlab.com/gitlab-org/gitlab/-/commit/92bbbbe6d7716fb430a0b5613089348600818502) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183379))
- [Fix source and target branch in dev widget](https://gitlab.com/gitlab-org/gitlab/-/commit/f869a5f30ad71946f26f2fd38a4b044aa4cbc522) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182504))
- [Fix group filter on work items list](https://gitlab.com/gitlab-org/gitlab/-/commit/71ea84e06fa0f37ab7caa2ff259f87b81cb6934c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182163))
- [Fix custom_ability_ feature flag usage](https://gitlab.com/gitlab-org/gitlab/-/commit/e2a0044a21eb2f34421407c6330ddf7326eccca3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181738)) **GitLab Enterprise Edition**
- [Fix pipeline marked invalid when var is empty string](https://gitlab.com/gitlab-org/gitlab/-/commit/6f7428aa9d35043e547d8cd49af29f22a7e22441) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182993))
- [Add aria-desrcribedby for status links in admin jobs table](https://gitlab.com/gitlab-org/gitlab/-/commit/7f428f94f13e0d9bffb626206a17aacc457adcde) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183271))
- [Fix open vsx resource url template](https://gitlab.com/gitlab-org/gitlab/-/commit/934cd0b99786c79f88cd85aee3eb0713c26f23d8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183071))
- [Stream audit events only once using feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/d25fe8a7bab78fe6a08add1d404c6ecc314ed9ce) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182587)) **GitLab Enterprise Edition**
- [Fix missing graphql field](https://gitlab.com/gitlab-org/gitlab/-/commit/04d9869db9c7a8ab420824a9097ca17c1b4fd279) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182755))
- [Skip entry owners check for exclusion pattern](https://gitlab.com/gitlab-org/gitlab/-/commit/d372d595a373019a8911fc4ebfc342dc5a305aa7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182403))
- [Fix invalid sort in placeholder users app](https://gitlab.com/gitlab-org/gitlab/-/commit/3e701946fbd9edf1701cd1af653cafab4aa8f8ba) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183210))
- [Fix emoji key in suggestions dropdown](https://gitlab.com/gitlab-org/gitlab/-/commit/e3c0846074f55ff1b8663a21e2e0a77ef7192a37) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183206))
- [Abuse report: Fix a11y issues](https://gitlab.com/gitlab-org/gitlab/-/commit/8c0885c040e944e05f922d9c7a8170d86d09da59) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182237))
- [Process auto megre on page load if required](https://gitlab.com/gitlab-org/gitlab/-/commit/b4afe537d2771232a0925f1ea4fdf19d69d1aafb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182992))
- [Fix downloads failing due to duplicate SSRF filters](https://gitlab.com/gitlab-org/gitlab/-/commit/b42c01c7b2ae04d03f6404bba02c102d1a3621e0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182493))
- [Implement repository archive cache cleaning inside Workhorse](https://gitlab.com/gitlab-org/gitlab/-/commit/6ba452632a17b32d4b33dab2bac117d0bf4388ad) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182796))
- [Split cyclonedx artifact into multiple reports](https://gitlab.com/gitlab-org/gitlab/-/commit/fca94833bb4694bc11989cf4694d7ce3184f950e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182324)) **GitLab Enterprise Edition**
- [Fix the pipe search for zoekt exact search mode](https://gitlab.com/gitlab-org/gitlab/-/commit/2efdc94d5f275b73561f5bc995ecbac8f227b48a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181424))
- [Fix workItem parent dropdown item click](https://gitlab.com/gitlab-org/gitlab/-/commit/55d5bbf5098b0addbe4d314b2029f47f59f27360) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183030))
- [Preserve selected items in dropdown text](https://gitlab.com/gitlab-org/gitlab/-/commit/f8380923b9cfa09edbbd71e966bcc8a3b2d9d7c9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182644)) **GitLab Enterprise Edition**
- [Model runs: Handle not destroyed error](https://gitlab.com/gitlab-org/gitlab/-/commit/d6f6576effe05e5674fa201d9383520ba50fc4fa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183004))
- [Return a bad request status if an environment fails to stop via API](https://gitlab.com/gitlab-org/gitlab/-/commit/c56d035749724865d7af64522cb9da6ca64e12b4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181339))
- [Update typo](https://gitlab.com/gitlab-org/gitlab/-/commit/7150c42a347e74248764f5740c226ecb1ba26714) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182964))
- [Reset selected exceptions projects](https://gitlab.com/gitlab-org/gitlab/-/commit/90e389ee13fe424ac6ce75b9be5f6b54998c6693) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182951)) **GitLab Enterprise Edition**
- [Adjust help text for instance wide restricted access setting](https://gitlab.com/gitlab-org/gitlab/-/commit/35a26ea5a74820766963e95b25ece5faf19a160c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182942)) **GitLab Enterprise Edition**
- [Fixed missing regex and syntax options buttons in topbar](https://gitlab.com/gitlab-org/gitlab/-/commit/56e67fb1140ef5e8187a3c23be5459f56ec556c1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182879))
- [Delete security_policies when policy.yml becomes invalid](https://gitlab.com/gitlab-org/gitlab/-/commit/97faf8265c2515d8be730d59347036c074d512d8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181837)) **GitLab Enterprise Edition**
- [Show rebase button if user can push to source branch](https://gitlab.com/gitlab-org/gitlab/-/commit/b1ee4cb4ec7f2c3004fec739dc41b9a19779d055) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182793))
- [Fix emoji award button styling for selected state](https://gitlab.com/gitlab-org/gitlab/-/commit/55b0ea60941defa2f88173aef312090303122df4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182787))
- [Prevent CiIcon text color from being overridden](https://gitlab.com/gitlab-org/gitlab/-/commit/5b56510e4ed97325f49eb9446c1ac57de973061f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182780))
- [Ensure badge popover opens on click](https://gitlab.com/gitlab-org/gitlab/-/commit/564879f68bd353271e1f5127ff7f2623a0aa0a5d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182399))
- [Zoekt: Fix missing repo logic](https://gitlab.com/gitlab-org/gitlab/-/commit/4d58b55f51fd4bc248d4e107286654d0170815af) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182585)) **GitLab Enterprise Edition**
- [Fix issuable filter focus shortcut](https://gitlab.com/gitlab-org/gitlab/-/commit/27ae7b1fefbe1f9d50f19d46cdcfb4300ef66af8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/152427))
- [Release status badge: Fix border not appearing render issue](https://gitlab.com/gitlab-org/gitlab/-/commit/f43308b6ee0cb1d6094231b475c25d13523f6d68) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182743))
- [Catch Key errors in Google Cloud audit event steaming](https://gitlab.com/gitlab-org/gitlab/-/commit/8e8deebfec32552d114fefabf6f4f8a805471ebb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182712))
- [Add background migration to resync policy project links](https://gitlab.com/gitlab-org/gitlab/-/commit/c95a6596ba20a6c3c93199c9aca0737443ed611a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181164)) **GitLab Enterprise Edition**
- [Use semantic H2 for "Related jobs" header](https://gitlab.com/gitlab-org/gitlab/-/commit/bcdd2db8fbfd8e52f17989c38ad1a9c4d0c5cbf9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182320))
- [Set default for pipeline dependency export](https://gitlab.com/gitlab-org/gitlab/-/commit/ad56573215a5f6efb5a71eeb025a9b1a548eace8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182634)) **GitLab Enterprise Edition**
- [Prevent deletion of project_bot users with non-expiring access tokens](https://gitlab.com/gitlab-org/gitlab/-/commit/6937915aed1d3d2a8eb215b39d3f335cf41f9257) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182621))
- [Fix accessibility of Whats New drawer headers](https://gitlab.com/gitlab-org/gitlab/-/commit/07ab934351c9bc663873da6da25eda1a3e4cc6f0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182625))
- [Fix skip to main content button UI](https://gitlab.com/gitlab-org/gitlab/-/commit/18ada5a052e02bd2286e21accd94b05203a4a36d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182614))
- [Fix indentation for default yaml file](https://gitlab.com/gitlab-org/gitlab/-/commit/31b54f898cff97841117b07a80d352766c47e881) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182572)) **GitLab Enterprise Edition**
- [Add validation styling for approver widget](https://gitlab.com/gitlab-org/gitlab/-/commit/1fafa422669bf6c9fe31a575047110c16d59ecc5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182482)) **GitLab Enterprise Edition**
- [Prevent double escaping forward slashes](https://gitlab.com/gitlab-org/gitlab/-/commit/ed79877215e03aac58ca4e741c2cf0f2c46940df) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182548))
- [Fix badly formatted help link on some integrations](https://gitlab.com/gitlab-org/gitlab/-/commit/c6e860551a4f0d88169c4ec7d60af3235b681426) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181348))
- [Update truncato](https://gitlab.com/gitlab-org/gitlab/-/commit/8fa7d5929775e178722695e7a7f4809949219d7f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182200))
- [Load missing from dropdown groups](https://gitlab.com/gitlab-org/gitlab/-/commit/18070d862a34930548be629b2fad9a4353b17a53) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182333)) **GitLab Enterprise Edition**
- [Fix "code_owner_approval_required" override when the param is not set](https://gitlab.com/gitlab-org/gitlab/-/commit/a575c3c0fe86d5d5a5b91de4567d789f0e285f26) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181419)) **GitLab Enterprise Edition**
- [Fix pagination issue on empty To-Do dashboard pages](https://gitlab.com/gitlab-org/gitlab/-/commit/fe80749758601efb8e719213877b7d0ebba92396) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182434))
- [Fix policies for GitLab Duo code suggestions and glab ask](https://gitlab.com/gitlab-org/gitlab/-/commit/d088304f4783cb875f87b8e8112a73afd4dd302c) by @stepech ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182315)) **GitLab Enterprise Edition**
- [Issue boards: Add new item projects select a11y label fix](https://gitlab.com/gitlab-org/gitlab/-/commit/fc4e8458003d36bdbb833902bfd31323e9f94b97) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182270))
- [Use semantic H3 for "Can't scan the code" section of 2FA setup](https://gitlab.com/gitlab-org/gitlab/-/commit/f03e5814e2c8017341b312bd226b4fde91636864) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182336))
- [Use semantic headers in SingleStatComponent in admin elasticsearch form](https://gitlab.com/gitlab-org/gitlab/-/commit/4cafbb359a0d98d0e7f1569a8247ff27f53f6355) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182335))
- [Use semantic headers for user stat cards in admin and unique links](https://gitlab.com/gitlab-org/gitlab/-/commit/9cb7f6973875f8c3c5461bc5c28ec850ac3353a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182332))
- [Correct acessibility header issues in admin dashboard](https://gitlab.com/gitlab-org/gitlab/-/commit/8bf74f71d69482dbd868642338c5d5088d69ddde) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182329))
- [Use H2 for job empty state](https://gitlab.com/gitlab-org/gitlab/-/commit/789f9d20e05516ef6296b426c16478a840aee741) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182322))
- [Prevent Child item expand toggle from overlapping child item](https://gitlab.com/gitlab-org/gitlab/-/commit/40ab430c4e8b465551104a8a9aaffce4271d460c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182169))
- [Fix detection of empty merge request approval policy](https://gitlab.com/gitlab-org/gitlab/-/commit/8e0adb60fac29ec4b05a9662b708315915a46e8b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179623)) **GitLab Enterprise Edition**
- [Fix MR approval policy evaluation for chained MRs](https://gitlab.com/gitlab-org/gitlab/-/commit/5295fe63551a4343e09864472de3bcf267511d22) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176630)) **GitLab Enterprise Edition**
- [Ensure Md header anchor shows even when description is collapsed](https://gitlab.com/gitlab-org/gitlab/-/commit/52774c106c5c541abc358589d3f543007fc880a9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182182))
- [Fix previous/next commit buttons on merge requests](https://gitlab.com/gitlab-org/gitlab/-/commit/3a138546fef5a1091cc3a9cd0f42091d4fb64098) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182168))
- [Fix work item epic listing button](https://gitlab.com/gitlab-org/gitlab/-/commit/d4ad029021d68a70b49ad94181da77b59f2487fc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182061))
- [Fixes deactive active deployment with same path](https://gitlab.com/gitlab-org/gitlab/-/commit/39c329746f7572ca18f9658182706d8778ea25bb) by @Rumple_17 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179100))
- [Load missing from dropdown frameworks](https://gitlab.com/gitlab-org/gitlab/-/commit/88eb6009e897872b69afcc1e79aed8bf7f480313) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182184)) **GitLab Enterprise Edition**
- [Load missing from dropdown projects](https://gitlab.com/gitlab-org/gitlab/-/commit/cee88f87f5fb2a76e0bf9b1e77a15b967273bd04) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182137)) **GitLab Enterprise Edition**
- [Add max length calculations and user indications to status form](https://gitlab.com/gitlab-org/gitlab/-/commit/feabf8d1b869709939c6842e98b7546b9f8ad1a1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179618))
- [Resync security_policies with incorrect index](https://gitlab.com/gitlab-org/gitlab/-/commit/d4374e2a95a7c0d9cefb3cffad1f3ddd04fd8bd3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181303)) **GitLab Enterprise Edition**
- [Adjusts BSO logic for free groups](https://gitlab.com/gitlab-org/gitlab/-/commit/cf4d27e5b61cc2279c2269765a759dc2b4f76986) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181765)) **GitLab Enterprise Edition**
- [Dompurify: Allow background-color style attribute on GlLabel](https://gitlab.com/gitlab-org/gitlab/-/commit/68405c44650f7c8c07037d3d918bcdccb009e7e4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180194))
- [Allow read access for admin job token permissions](https://gitlab.com/gitlab-org/gitlab/-/commit/cd925b93d1ac6fe05091e91794e5d7767b2c852b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181970))
- [Fix setting ci_id_token_sub_claim_components](https://gitlab.com/gitlab-org/gitlab/-/commit/82f296045e3c76fd8a23c9471cbd152769a5016a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181981)) **GitLab Enterprise Edition**
- [Fixes admin page CI minutes css class usage](https://gitlab.com/gitlab-org/gitlab/-/commit/27b10b521c2df4f4a053b98f0973f4569f4f58ba) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180797)) **GitLab Enterprise Edition**
- [Correct milestone in featue flag definition](https://gitlab.com/gitlab-org/gitlab/-/commit/043d54854c4503589331a2387f7a134ba97d052f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181991)) **GitLab Enterprise Edition**
- [Ignore policy schema validation for custom roles](https://gitlab.com/gitlab-org/gitlab/-/commit/ad4151cb5b83f3956cb66936fc3c4eb0af513cc8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182026)) **GitLab Enterprise Edition**
- [Keep value stream analytics active in sidebar](https://gitlab.com/gitlab-org/gitlab/-/commit/1f3d18edc4350f445e9b99fba1de6010dfa95fd8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181844))
- [Add queuing worker for broken adherences](https://gitlab.com/gitlab-org/gitlab/-/commit/c616ddd831d78a973f8dfe77de149ce9e809046c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179944)) **GitLab Enterprise Edition**
- [Fix severity filtering for severity overridden security findings](https://gitlab.com/gitlab-org/gitlab/-/commit/5044210769ef8ba1955b860bf6c11f3ae538a44b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181998)) **GitLab Enterprise Edition**
- [Skip processed members](https://gitlab.com/gitlab-org/gitlab/-/commit/0c7861ca1e89f61c7a9254cc6a744674f28d6d3a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180935))
- [Fix DOMPurify validation for SVGs](https://gitlab.com/gitlab-org/gitlab/-/commit/9464f220997d8d4f5d7eea34cd00f0e18d4d0834) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181941))
- [Import GitHub collaborators consistently](https://gitlab.com/gitlab-org/gitlab/-/commit/4eefdb14c629edbad6a29a5c3eb8b0e55f08041a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180685))
- [Fix edit framework refresh bug](https://gitlab.com/gitlab-org/gitlab/-/commit/d3eb0a43790295bb3ac4dedd73f759089ce3bc29) by @nradina ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181290))
- [Add min size to confidential icon](https://gitlab.com/gitlab-org/gitlab/-/commit/42c1fb65dc6a85e5fe03a96fa3c1bdd36994d5a0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181779))
- [Generate correct agent URL in managed resource annotations](https://gitlab.com/gitlab-org/gitlab/-/commit/75e8af59be806dfe396c3bcec421008d29351de1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181839))
- [Small alignment fixes in merge widget](https://gitlab.com/gitlab-org/gitlab/-/commit/ae895daf7a003acb4f0acdd8ce327cb318eaa180) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181834))
- [Change date toggle when updated via subscriptions](https://gitlab.com/gitlab-org/gitlab/-/commit/28e939251dc80c52283ef7d32b43c48f9b7c59ba) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181654)) **GitLab Enterprise Edition**
- [Hide markdown editor fullscreen button when work item is in drawer](https://gitlab.com/gitlab-org/gitlab/-/commit/4c7a183471138021d80cae1ee691ac1f5ea7a77f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180626))
- [Fix release evidence tag name generation](https://gitlab.com/gitlab-org/gitlab/-/commit/d80669df6168f308e010f3f35baad2555045cb25) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180772))
- [Fix ambiguous created_at column for pipeline_configuration_full_path](https://gitlab.com/gitlab-org/gitlab/-/commit/0e7ef108f246a1bef4a3765c3340875dbdd0a30f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181334)) **GitLab Enterprise Edition**
- [Fix audit event http streaming under feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/5fb51e7e0a621a1b8a2ffecb207996919bd91141) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181009)) **GitLab Enterprise Edition**
- [Update query for banned user project deletion](https://gitlab.com/gitlab-org/gitlab/-/commit/637bbb91b0ee3b802d220cab2a5130d7042cdbc4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181592))
- [Safely handle when sanitized Elastic result is blank](https://gitlab.com/gitlab-org/gitlab/-/commit/ead89bd40ebcad3b7f88216d45fef06fad735781) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181760)) **GitLab Enterprise Edition**
- [Use correct project when fetching managed resources templates](https://gitlab.com/gitlab-org/gitlab/-/commit/da815aee5ea74e58c86b5020268e93277dde3972) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181749))
- [Fix 'Apply' button for WI dates widget](https://gitlab.com/gitlab-org/gitlab/-/commit/c94cca690189e346d7107c2e90067fe930777d01) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181578))
- [Allow access to publicly accessible features from job tokens](https://gitlab.com/gitlab-org/gitlab/-/commit/9d03265f820d7b92cb3b3a8fb1370fc92f503029) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179717))
- [Make multi-word label matching case-insensitive](https://gitlab.com/gitlab-org/gitlab/-/commit/3ceafd23802ab2a38b5ad60a85a7956270fe2281) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180823))
### Changed (189 changes)
- [Use epic creation adapter in more places](https://gitlab.com/gitlab-org/gitlab/-/commit/852f75d079c36a2ba3d0fcd5a4d3ce41c0da442c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181767)) **GitLab Enterprise Edition**
- [Add email delivery for vulnerabilities exports](https://gitlab.com/gitlab-org/gitlab/-/commit/360ecb7d206e7fce820c6b30c96e700d37e984ce) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183169)) **GitLab Enterprise Edition**
- [Update CI steps syntax specification](https://gitlab.com/gitlab-org/gitlab/-/commit/8fddc95cde27be66643f4bd1bc8a6a5b0384291b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184005))
- [Document how to use a custom PEP pre stage as non-blocking](https://gitlab.com/gitlab-org/gitlab/-/commit/e65edda1f9f55b42e59b31ce76a95a3b95707581) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184603))
- [Finalize delete_orphaned_stage_records](https://gitlab.com/gitlab-org/gitlab/-/commit/67ce59edcfe157444b31c6eafa012f0d70f02209) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178120))
- [Finalize backfill subscription_add_on_purchases](https://gitlab.com/gitlab-org/gitlab/-/commit/97916629289e446348c9d91768b908655c82f7ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184336))
- [Improve performance of CI/CD analytics page](https://gitlab.com/gitlab-org/gitlab/-/commit/98b0b808163da3e7f0e62140fa9c57f80b51bbf4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184328))
- [Update description for q test mr norm and diff](https://gitlab.com/gitlab-org/gitlab/-/commit/f34979a5d3829b18b4ab20b8e9e54be7dd49465a) by @jlosito ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183853)) **GitLab Enterprise Edition**
- [Changed text on the breadcrumbs for creating new entities in projects:](https://gitlab.com/gitlab-org/gitlab/-/commit/5aba39fe7e5fb5367df098e5dbc3e752c48f2ae5) by @illia_bakunovskyi ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/174315))
- [Crud, MR widget, settings block: Add preference for reduced motion](https://gitlab.com/gitlab-org/gitlab/-/commit/37ea97fceee67309f370a3ea9d36c4055c6dbe1e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184434))
- [Remove feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/03b521aa7c270d000618343c536b315f06e20b76) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184330)) **GitLab Enterprise Edition**
- [Refresh member authorized projects in background job](https://gitlab.com/gitlab-org/gitlab/-/commit/19b9a244692d21a6b6a4f3226f04df8074be4702) by @Taucher2003 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183920))
- [Enable migrated prompts for summarize comments](https://gitlab.com/gitlab-org/gitlab/-/commit/256d33b1cc2c21f6243055db31847fde5a90c685) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184447))
- [Refactored util to fix sm billable logic](https://gitlab.com/gitlab-org/gitlab/-/commit/fc3ac3521061f789c0493e50eed38c52299e6163) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184305)) **GitLab Enterprise Edition**
- [Add header to project snippets page](https://gitlab.com/gitlab-org/gitlab/-/commit/8e3eed6da4d3e93746014d0638992a84b5c89222) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184201))
- [Enable configuration of Duo Chat sub-features](https://gitlab.com/gitlab-org/gitlab/-/commit/03a24fdcb780fa5d04b621b3b0a79f31d9f152de) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175349)) **GitLab Enterprise Edition**
- [Show skipped rows in CSV reassignment email](https://gitlab.com/gitlab-org/gitlab/-/commit/98b291c2ac1fd9a921dee908078dc16ea74ffc9d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183449))
- [Expose correlation ID in overloaded message](https://gitlab.com/gitlab-org/gitlab/-/commit/d9fe2edb9e63f3b0c5131d6b541512c322ba6b15) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182908))
- [Update dependency auto-deploy-image to v2.125.0](https://gitlab.com/gitlab-org/gitlab/-/commit/c091dd0c9f2725ec9c488d66bbe6f5fd130493c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184388))
- [Add group and project scope for basic users autocomplete](https://gitlab.com/gitlab-org/gitlab/-/commit/8217c1ac948c9022805f61d3fdd43ff2d527dd21) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182557))
- [RCA/Troubleshoot uses new Claude 3.7 model](https://gitlab.com/gitlab-org/gitlab/-/commit/50bac36c3516db7e8c7fa6a6b4d8e825040456a8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184364)) **GitLab Enterprise Edition**
- [Release the Docker Hub credentials support in the Dependency Proxy](https://gitlab.com/gitlab-org/gitlab/-/commit/58d339780ba2cbe87e6a57ecfd3a89f1c71e901b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183020))
- [Update code creation slash commands to Claude 3.7 Sonnet](https://gitlab.com/gitlab-org/gitlab/-/commit/0f6788435f293cacf8eab113fbbf1da654293e3a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184333)) **GitLab Enterprise Edition**
- [Remove deprecated remote_development_agent_config references](https://gitlab.com/gitlab-org/gitlab/-/commit/8ce5e46c151eb5a14c036b60b25f897a478cdcbf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183427)) **GitLab Enterprise Edition**
- [Release squash commits options for branch rules](https://gitlab.com/gitlab-org/gitlab/-/commit/236f5a3a9ddc7eaf9a3a1c29a4d3ba85985382c1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184177))
- [GLQL: Add Crud to views](https://gitlab.com/gitlab-org/gitlab/-/commit/94e52b56a4fe7b079c802e90560bcc6ab29d8f11) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183709))
- [Vulnerability finding: Update design of form](https://gitlab.com/gitlab-org/gitlab/-/commit/1566dddbcf26cb42ec43535df3e894b36c996815) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183668))
- [Move Seat Control > Restricted Access to paid plans only](https://gitlab.com/gitlab-org/gitlab/-/commit/5e9eff2ed6eb41e8aafd7ac78c018b12e2516800) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183983)) **GitLab Enterprise Edition**
- [Release ignore specific revisions in git blame](https://gitlab.com/gitlab-org/gitlab/-/commit/ba43eb5cce1014310146c73086781447bdba375b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184260))
- [Tables: Add scroll indicator](https://gitlab.com/gitlab-org/gitlab/-/commit/8c90370c3fdade51379b0406e52781fa98e2cf49) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181650))
- [Update class for to-do item on hover](https://gitlab.com/gitlab-org/gitlab/-/commit/251652370cf6d24bba2fd4afe254ab706df4587e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184064))
- [Update page headings in the CI/CD analytics pages](https://gitlab.com/gitlab-org/gitlab/-/commit/aadca97beb43dc8b4499df58f41f6a2a487d0920) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184282))
- [Remove feature flag `dependency_scanning_using_sbom_reports`](https://gitlab.com/gitlab-org/gitlab/-/commit/11ffa7c2fcd06e030f29ffad39b7719f8339d55f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184295)) **GitLab Enterprise Edition**
- [Clean up labels UI](https://gitlab.com/gitlab-org/gitlab/-/commit/23eb196ed6bf89e45438ff66e3ad9acd5a502156) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183767))
- [Improve error message for webhook name description](https://gitlab.com/gitlab-org/gitlab/-/commit/1bfe6b2c061108c4f17b4d50b9b3ceb0ac35022d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184256))
- [Default enable duo_code_review_claude_3_7_sonnet](https://gitlab.com/gitlab-org/gitlab/-/commit/2f99149eb71a65eb7f60987c252d50928810beaa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184253)) **GitLab Enterprise Edition**
- [Default enable generate_commit_message_claude_3_7](https://gitlab.com/gitlab-org/gitlab/-/commit/d096074c61b313db95350670e709270db9668e6b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184255)) **GitLab Enterprise Edition**
- [SPP docs diff scan web requests feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/b27eeb5198d9c9eb2b345012bef5a01b3b1d8e8c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183741))
- [Make snippet list info focusable](https://gitlab.com/gitlab-org/gitlab/-/commit/f546698d83357dec5e75abb5fbc7122ee32ed96b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184209))
- [Add archived only project filter to project graphQL](https://gitlab.com/gitlab-org/gitlab/-/commit/f286badda17c876009be947c1c100996dba4972f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182667))
- [Optimize file size check using quarantine dir and add EE-specific check](https://gitlab.com/gitlab-org/gitlab/-/commit/b13520eba56ce581ad58a54fdd422c082d4afd76) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183600)) **GitLab Enterprise Edition**
- [Remove group_dependency_list_csv_export feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/e44cee8234d6469a28d4ada3e3d5d551bafb36dd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184206)) **GitLab Enterprise Edition**
- [Updating /troubleshoot or RCA AI Feature to pull prompt from AI Gateway](https://gitlab.com/gitlab-org/gitlab/-/commit/e0363d9d5d2c2a9a8b20bd47f027e1ceb2b7f6ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184198))
- [Rollout manual severity overrides feature](https://gitlab.com/gitlab-org/gitlab/-/commit/2bfe5a82b28c6912a0687dcfb614568cede38231) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183528)) **GitLab Enterprise Edition**
- [Move GLQL SLIs to its new controller](https://gitlab.com/gitlab-org/gitlab/-/commit/84e91e1952036022ae5a581852bc6b467a467022) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183842))
- [Bump PG default version for CI](https://gitlab.com/gitlab-org/gitlab/-/commit/18d719abee7707e3ba84a918475f840785823b65) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183537))
- [Update Sidekiq memory killer docs](https://gitlab.com/gitlab-org/gitlab/-/commit/d3b2009da3a40bcdd5f6bf273a4d02149196f602) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184130))
- [Remove `your_work_projects_vue` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/dfd2721c1deee154dafc60257ac142613c8fbda6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183429))
- [Move CI_PAGES_HOSTNAME from build.rb to project.rb](https://gitlab.com/gitlab-org/gitlab/-/commit/05346c2fe6c110cd90e642f9ecb336d0fb6818e4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183671))
- [Rename Rack Attack log field: request_method -> method](https://gitlab.com/gitlab-org/gitlab/-/commit/c41459d2c6805f332fa1e2ea853890c0ec33ffcd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183888))
- [Add v2 approval rule associations to user and user group](https://gitlab.com/gitlab-org/gitlab/-/commit/6726d1dba0c7a6669a4c78577342161cb648cbeb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179877)) **GitLab Enterprise Edition**
- [Ingest and display direct dependencies](https://gitlab.com/gitlab-org/gitlab/-/commit/5ae47e2187a0e021a3c8932a9ff6d2526ca378be) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183246)) **GitLab Enterprise Edition**
- [Add ReplicatorEvents module to seperate event logic from other files](https://gitlab.com/gitlab-org/gitlab/-/commit/93516f6be6ed412b9cd1b47f666cbb79db3fc090) by @bymayanksingh ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/126397)) **GitLab Enterprise Edition**
- [Add tooltip directive to remove snooze](https://gitlab.com/gitlab-org/gitlab/-/commit/8d83822cf76894f87fdff54a63dd97c2246a16a4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184071))
- [Add policy type property to editors](https://gitlab.com/gitlab-org/gitlab/-/commit/ec785719c49eb7a49921972a54034f94c24d0bd9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183557)) **GitLab Enterprise Edition**
- [Mlflow get run to return less metrics data](https://gitlab.com/gitlab-org/gitlab/-/commit/9f0cea5f74bf821de69ee44a8ed1ca07df46f7f0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183838))
- [Block local URLs for external controls on SaaS](https://gitlab.com/gitlab-org/gitlab/-/commit/012e0578b04d796232a52469232c9569eaff4ae0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182877)) **GitLab Enterprise Edition**
- [Simplify admin_display_duo_addon_settings? method](https://gitlab.com/gitlab-org/gitlab/-/commit/3b724ee7f410aab4a32731510e9dee2bb2d422b5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183970)) **GitLab Enterprise Edition**
- [For autocomplete scoped search options, check greater than or equal](https://gitlab.com/gitlab-org/gitlab/-/commit/9c308bf7badb9d240fea90433f930e12248d39f5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183972))
- [Enable unblock_rules_using_pipeline_execution_policies by default](https://gitlab.com/gitlab-org/gitlab/-/commit/7db3d37252923a5d16d94e74c8aa18a59f709acb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184023)) **GitLab Enterprise Edition**
- [Update policy_tuning wording to account for pipeline execution policies](https://gitlab.com/gitlab-org/gitlab/-/commit/1c2f01ab5263ce4e0e349b204f78d7741535e569) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183840)) **GitLab Enterprise Edition**
- [Use secure defaults for token storage in TokenAuthenticatable](https://gitlab.com/gitlab-org/gitlab/-/commit/4e111ec3a500290d450b27e501f373512a5338aa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183341))
- [Update documentation of policy_tuning with pipeline execution policies](https://gitlab.com/gitlab-org/gitlab/-/commit/0a14ae58cf4fd2cef7614b3cde2278b47fa0190e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183839))
- [Update User Cap settings related error message](https://gitlab.com/gitlab-org/gitlab/-/commit/08b33b9bb09f471cf219ad41b88cfeb49b44c1c0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183652)) **GitLab Enterprise Edition**
- [Sync FK `fk_rails_507416c33a_p`](https://gitlab.com/gitlab-org/gitlab/-/commit/01926187255bd87b75c823552f93eafa39cc76b0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178117))
- [Add validation for approvals required](https://gitlab.com/gitlab-org/gitlab/-/commit/58c3a67bf114fab167e19a9aad984f7a5ae00071) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183835)) **GitLab Enterprise Edition**
- [Changed regex button colors to design tokem colors](https://gitlab.com/gitlab-org/gitlab/-/commit/3fe6e6583c8903b6638991eb4c4a17b37464b35d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183406))
- [Change text limit for duo workflow event message](https://gitlab.com/gitlab-org/gitlab/-/commit/7c73cc21d95567bbba3ca1226a6ff40d8095b7b3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183885))
- [Use progress track when importing single relations](https://gitlab.com/gitlab-org/gitlab/-/commit/13db8ffb657c7b004278be14583f44b7d0c91404) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183862))
- [Use sentence case for package registry](https://gitlab.com/gitlab-org/gitlab/-/commit/a02a09e91f8e8048222ad82b182ba11240791ab7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183533))
- [Rename custom status widget to status widget](https://gitlab.com/gitlab-org/gitlab/-/commit/ef78e820ad7994c643871e83a7b22288fadfd61b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183026))
- [Use text.color.link for hover color in issuable sidebar controls](https://gitlab.com/gitlab-org/gitlab/-/commit/4aa2d94087a7cae2e018ffc0ecec152a8d3812a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183307))
- [Rename the status widget to the verification status widget](https://gitlab.com/gitlab-org/gitlab/-/commit/5c40e02e1b4ce0853c586d873b700a4a2ad86f5a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182520))
- [Making existing pipeline colours more vibrant and supporting additional pipeline statuses](https://gitlab.com/gitlab-org/gitlab/-/commit/951a8521a3c27b6a2021944a7c14255eea033b81) by @barton.tomas ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181091))
- [Display test duration time in 24hr format](https://gitlab.com/gitlab-org/gitlab/-/commit/1a5376274170ea5b8ae58a99515acef701f60be0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183705))
- [Add check to prevent banning paid users](https://gitlab.com/gitlab-org/gitlab/-/commit/a208f3fa4240018ed34c3a008c813c4f57bbf738) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183733)) **GitLab Enterprise Edition**
- [Exclude bot users from dormant removal](https://gitlab.com/gitlab-org/gitlab/-/commit/09382f5c28a1d59a3e995bd3db3a660b371ba05f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183489)) **GitLab Enterprise Edition**
- [System notes: Update icon design tokens](https://gitlab.com/gitlab-org/gitlab/-/commit/f01f4bddd2a672e45ef721a9a7a32f76892849bd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183228))
- [Fix auto-applying labels when creating a child issue](https://gitlab.com/gitlab-org/gitlab/-/commit/af0c49b0e31215cfae3f5e02f9627cd6242093df) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181605))
- [Restrict new pipeline variables](https://gitlab.com/gitlab-org/gitlab/-/commit/19287da677c161a6e7704ef2cca4d3c2a36eefcb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183420))
- [Runner registration page should not be accessible if registered](https://gitlab.com/gitlab-org/gitlab/-/commit/5168e6cb936042bcbc95d4df8129b4f40a94933b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183178))
- [Add awareness banner for new adhernece report](https://gitlab.com/gitlab-org/gitlab/-/commit/4f005d444b3b24fb23ce3a0cf5308b1193bf8964) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182870)) **GitLab Enterprise Edition**
- [Raise runner token_encrypted length from 128 to 512 bytes](https://gitlab.com/gitlab-org/gitlab/-/commit/ae363528ed36452c7a666dafedf6f8cb5be2d5d2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183454))
- [Update feature name to GitLab Duo Self-Hosted in the UI](https://gitlab.com/gitlab-org/gitlab/-/commit/f252a8e7e6504d8c5b47026dedcd6474ac24b24d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182672)) **GitLab Enterprise Edition**
- [Design item: Improve a11y label, contrast and alignment](https://gitlab.com/gitlab-org/gitlab/-/commit/81fceee656b91ecaf5d7c0ec8da2b3f856c0a2bf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182722))
- [Remove `reject_security_policy_project_deletion_groups` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/b561e72ddbe970548d29876625d3e06142d82f80) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183334)) **GitLab Enterprise Edition**
- [Update Compliance Center Breadcrumbs](https://gitlab.com/gitlab-org/gitlab/-/commit/fad978ee4b44c2c246daaafdace629832e0f2d05) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182571)) **GitLab Enterprise Edition**
- [Allow requesting multiple embeddings from vertex](https://gitlab.com/gitlab-org/gitlab/-/commit/389f3afe454440fbe0d161936fc350fea871a0cc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182989)) **GitLab Enterprise Edition**
- [Delete the `index_todos_on_author_id` index](https://gitlab.com/gitlab-org/gitlab/-/commit/abfdd0837dcd8e61bbe438c5b91760656448512a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183434))
- [Clean up validate_codeowner_users feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/ab9568cf9bde17ad4dabed53c80cca143c29b508) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182817))
- [Restrict pipeline schedule variables](https://gitlab.com/gitlab-org/gitlab/-/commit/03af63e9d24d362f6668c9f7d070348bdf1b1f8d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183370))
- [Prevent double policy update](https://gitlab.com/gitlab-org/gitlab/-/commit/18f34792108f9f55be10432dc94a071da5d4b309) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183387)) **GitLab Enterprise Edition**
- [Write multiple PEP schedules](https://gitlab.com/gitlab-org/gitlab/-/commit/fa43c2e4209548f1a1856759eb03d7870a02c64c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180714)) **GitLab Enterprise Edition**
- [Add PG 17 to nightly rspec builds](https://gitlab.com/gitlab-org/gitlab/-/commit/5667867f40e4e635d3e286a4db7bb64c47f43db3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182730))
- [Remove FF projectComponentFilter](https://gitlab.com/gitlab-org/gitlab/-/commit/200b808ee862447e97bf33ca2f2f5c6b7452320c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180350)) **GitLab Enterprise Edition**
- [Update seats related notifications](https://gitlab.com/gitlab-org/gitlab/-/commit/048f5998001dcda45b2629a5a800f63d8481ebd2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181811)) **GitLab Enterprise Edition**
- [Backfill pipeline execution policy config links](https://gitlab.com/gitlab-org/gitlab/-/commit/d680bee9f4f8ac181b3a0a2f87a8d5cd8d4dd2b3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181151)) **GitLab Enterprise Edition**
- [Update dependency auto-deploy-image to v2.124.0](https://gitlab.com/gitlab-org/gitlab/-/commit/c232855b436be8a2463481971f439df7456ca99b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179863))
- [Skip updated failed zoekt tasks to processing](https://gitlab.com/gitlab-org/gitlab/-/commit/f720c56ff067f6515520e5e3cbe51f1b6f865a6c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183272)) **GitLab Enterprise Edition**
- [Add enterprise_user key to allowlist](https://gitlab.com/gitlab-org/gitlab/-/commit/90d8c668c96e0278c2aac8c77b8f439a52b51f90) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183267))
- [Re-enable PG16 nightly integration jobs](https://gitlab.com/gitlab-org/gitlab/-/commit/6650424340878d2dc84370530ac1ff3e2c7c5558) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182619))
- [Show type label for all pipeline types](https://gitlab.com/gitlab-org/gitlab/-/commit/ba2e11c9c4ef1aaf56c54d7cb8a1a16e2d0e49be) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179760))
- [Update UX for dependency proxy for packages settings](https://gitlab.com/gitlab-org/gitlab/-/commit/c46a4336cb16690c4ce3eba3f38515118f0e52b4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182818)) **GitLab Enterprise Edition**
- [Update Application Secrets developer docs](https://gitlab.com/gitlab-org/gitlab/-/commit/49221d20ce09b10ce64b59ea8adc5750d1a71ed8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181271))
- [Wiki notes: Update design tokens used, bugfixes](https://gitlab.com/gitlab-org/gitlab/-/commit/2d9703161a74b67714182a9e04d60abb8e6c9c75) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183175))
- [Add learn more link to Disable PAT for enterprise users docs](https://gitlab.com/gitlab-org/gitlab/-/commit/99019772b511a6e7c381c600c5337455abb58771) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182965)) **GitLab Enterprise Edition**
- [Sync FK `fk_rails_494e57ee78_p`](https://gitlab.com/gitlab-org/gitlab/-/commit/0efb97716db5f501eecfd63ec807a3ea4231ae98) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177980))
- [Align submit buttons for policy cards](https://gitlab.com/gitlab-org/gitlab/-/commit/f4de386d04494a3b7e51a5a40b79af4e7686b469) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183180)) **GitLab Enterprise Edition**
- [Remove feature flag separate_group_scim_table](https://gitlab.com/gitlab-org/gitlab/-/commit/15645449430e62f421a2d37ca7068d3fb5296f8e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181148))
- [Improve development widget error message](https://gitlab.com/gitlab-org/gitlab/-/commit/47bf43d79cd6cd4d82863d3f4f5a59f59e350cce) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182445))
- [Migrate web_ide_extensions_marketplace ff to data](https://gitlab.com/gitlab-org/gitlab/-/commit/838c777f1cb49ec2d8dcb48ccf8f479d6568c859) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181152))
- [Extends work item shortcut support](https://gitlab.com/gitlab-org/gitlab/-/commit/0f4e1426a03a2d5900dabb415af1490f288e9af9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182327))
- [Remove `reject_security_policy_project_deletion` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/6a75854eacda80e35f8e646d6a919d7f0a65aae3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182413))
- [Update icon in nav to use import](https://gitlab.com/gitlab-org/gitlab/-/commit/df1435f4c1a67aa8e7ebf9b7b0ab604285d58370) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182428))
- [Advanced Search user autocomplete scoped to auth namespaces](https://gitlab.com/gitlab-org/gitlab/-/commit/837a8bed6e3832eb3a0c5ebee069d24eaeb9899f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182277)) **GitLab Enterprise Edition**
- [Execute GitLabDocumentation tool via Agents](https://gitlab.com/gitlab-org/gitlab/-/commit/22446d49a5ccc1a83dda2f3c81f53e9e35020887) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180273)) **GitLab Enterprise Edition**
- [Remove id mapping from skip ci](https://gitlab.com/gitlab-org/gitlab/-/commit/d1987eab6331b866189362dc131309f67c80917c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183027)) **GitLab Enterprise Edition**
- [Remove two related Cloud Connector FFs](https://gitlab.com/gitlab-org/gitlab/-/commit/586288de96c39c5066639f3f4587cf6d82f716c4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183010)) **GitLab Enterprise Edition**
- [Introduce new policy for deleting image tags](https://gitlab.com/gitlab-org/gitlab/-/commit/d8413839057daf0fb9b54cb6828c45717137354d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181857))
- [Replace feature flags for email restrictions with setting](https://gitlab.com/gitlab-org/gitlab/-/commit/a522fce6849ad6050e25019076bd5447eff587f3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182601))
- [Persist analytics dashboards filter bar selections in the URL](https://gitlab.com/gitlab-org/gitlab/-/commit/a6e5427eb7185be432d8fc32f3ac929fceba488d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182465))
- [Stop logging Direct Transfer pipeline steps](https://gitlab.com/gitlab-org/gitlab/-/commit/52a86894e07455790c3486b5bbcf1547c64d4215) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182966))
- [Migrate restrict_user_defined_variables to `true`](https://gitlab.com/gitlab-org/gitlab/-/commit/998d84eeb4f49a9be9396f21ac8b2263f38ebee6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181856))
- [Fix Style/FormatString offenses](https://gitlab.com/gitlab-org/gitlab/-/commit/7b948e371a1fd5fe9d0596c774c67ed0814064fd) by @JonstonChan ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180293))
- [Copying over the rest of the pipeline variables form code](https://gitlab.com/gitlab-org/gitlab/-/commit/d210d4b52efec681e99a34f717ee0b6e9d4916c9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182455))
- [Add scheduling columns to PEP schedules](https://gitlab.com/gitlab-org/gitlab/-/commit/1fd72554464971cf1e05cf8f4d0b0be8cab24264) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180708)) **GitLab Enterprise Edition**
- [Shorten text when leaving comment as review](https://gitlab.com/gitlab-org/gitlab/-/commit/c85dffde22659b99c05637016af530dbb464ab15) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182885))
- [Adjust texts for exclude license packages](https://gitlab.com/gitlab-org/gitlab/-/commit/92c1ac78928ed40614bc4c60c2a58960c9858d47) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182740)) **GitLab Enterprise Edition**
- [Create new Geo verification state table for SnippetRepository](https://gitlab.com/gitlab-org/gitlab/-/commit/a7e7a8303af57ed28ca095719bfff1190693d30e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181255)) **GitLab Enterprise Edition**
- [Add ids argument for descendant groups](https://gitlab.com/gitlab-org/gitlab/-/commit/f846d2b6a971fca31ed76918aef7e6591eeb46ac) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182411))
- [Fetch details of banned and blocked users](https://gitlab.com/gitlab-org/gitlab/-/commit/59540294796a74d28a8e1ec9c8ae46d0ffa1c567) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182218))
- [Abstract pipeline_variables_form to its own component](https://gitlab.com/gitlab-org/gitlab/-/commit/c240c18d7349fbf8622d1a7efe071f7a913f86fd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182376))
- [Document Workhorse repository archive cache](https://gitlab.com/gitlab-org/gitlab/-/commit/ce38353bf2ba67f4381632db12df95a0b006fab8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182810))
- [Improve dependency export API usability](https://gitlab.com/gitlab-org/gitlab/-/commit/c1c21fe6bf4c1f811db1b0e3453a69c316032136) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182814)) **GitLab Enterprise Edition**
- [Clean up auto_assign_duo_seat feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/3a71ad12a8c1e888ed710ec55d08106078fd2707) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182638)) **GitLab Enterprise Edition**
- [Change strings to use consistant ellipses](https://gitlab.com/gitlab-org/gitlab/-/commit/aeb6a8a1dc3f4f7dae354b4d0402e7290f305531) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182709))
- [Add zoekt setting to control rollout batch size](https://gitlab.com/gitlab-org/gitlab/-/commit/2fdb68a4bcbdc18879e77f83384dc4ebec3d938b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182581)) **GitLab Enterprise Edition**
- [Added delete oauth connection on Amazon Q disconnect](https://gitlab.com/gitlab-org/gitlab/-/commit/a5c5d0ee36dbbd37e91fd1a8c66353d5eaaf3551) by @protsivd ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182043)) **GitLab Enterprise Edition**
- [Deprecate the `force_to_redownload` field in Types::Geo::RegistryType](https://gitlab.com/gitlab-org/gitlab/-/commit/651735dbe5dcbdbdbef42b0692584e7377c6b898) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182342)) **GitLab Enterprise Edition**
- [Add bulk dismissed event and subscriber](https://gitlab.com/gitlab-org/gitlab/-/commit/64799942060e65f084e8ef420bd046a5394b8abe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181239)) **GitLab Enterprise Edition**
- [Save licenses outside of the spdx catalog as custom licenses](https://gitlab.com/gitlab-org/gitlab/-/commit/fd33f8ca15745c0bb7e144ca5eef502274913e74) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181454)) **GitLab Enterprise Edition**
- [Allow use to select a date range of Runner Usage](https://gitlab.com/gitlab-org/gitlab/-/commit/e6e9b74b758bf8c306c9d54dba7185e23fa77c86) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182095))
- [Allow dashboard panel to reload data with query overrides](https://gitlab.com/gitlab-org/gitlab/-/commit/7e05ab0554047785fae5929c90f0046d28487c00) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181955))
- [Add ai context migration model](https://gitlab.com/gitlab-org/gitlab/-/commit/a4e9b17d25adcadb76b07afff4deb11042f741dc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181238)) **GitLab Enterprise Edition**
- [Delete dropdown item in label list use danger variant](https://gitlab.com/gitlab-org/gitlab/-/commit/104f17a715665f916426eadc0bebb3c24d140673) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182301))
- [Use tertiary explore projects button](https://gitlab.com/gitlab-org/gitlab/-/commit/cc55c1746705eca56bd8e8f111d320a4688aa8f1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182447))
- [Update active context Collections table](https://gitlab.com/gitlab-org/gitlab/-/commit/b02468dab2f8df0e8a08351bd184752b289d6d5b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181923))
- [Update bundler to v2.6.5](https://gitlab.com/gitlab-org/gitlab/-/commit/3e387d7f9a7d8802b371e17dbbf1d8741b698bd8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182381))
- [Extract fromYaml method shared method](https://gitlab.com/gitlab-org/gitlab/-/commit/8dc39af3ac2ca661a978c18823a92a55ddd783ef) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182288)) **GitLab Enterprise Edition**
- [Change markdown multiline quoting behaviour on already quoted lines](https://gitlab.com/gitlab-org/gitlab/-/commit/d31b9144e6eb513d9ff7dd9038ee4d0f6d1fabb8) by @Bubbis ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178744))
- [Update Pod counters to reflect search filter results on environment page](https://gitlab.com/gitlab-org/gitlab/-/commit/6879ae9e2912f0978fce5e0cfa0c675a07095024) by @antonkalmykov ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182283))
- [Remove action approvers from helper](https://gitlab.com/gitlab-org/gitlab/-/commit/c6121a53ee5e95730049ca81831127f70b31e328) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179138)) **GitLab Enterprise Edition**
- [Add UI for pipeline variables minimum role project setting](https://gitlab.com/gitlab-org/gitlab/-/commit/0fc948bdf08c32be1d91ad44229017355105bee4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172304))
- [Clarify tooltip message](https://gitlab.com/gitlab-org/gitlab/-/commit/52e8fec529460437601269b4800c3f34b7388ec6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181635)) **GitLab Enterprise Edition**
- [Avoid writing over the severity override](https://gitlab.com/gitlab-org/gitlab/-/commit/7c488d2191af61f37271003f047c69f8368bc4a4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178804)) **GitLab Enterprise Edition**
- [Improve API error for invalid sub claim component](https://gitlab.com/gitlab-org/gitlab/-/commit/94a7572382c6fa633dad1906d0330acfa404bb70) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182257)) **GitLab Enterprise Edition**
- [Cleanup duo_chat_drop_redis_storage feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/a03300e094fd10129aba3a8cf89c629617084b1b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181908)) **GitLab Enterprise Edition**
- [Log Duo Chat M2000 Error Code](https://gitlab.com/gitlab-org/gitlab/-/commit/f180046f9efe4fd1927cbb91addfd32d69bca031) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181374)) **GitLab Enterprise Edition**
- [Support custom pipcompile lockfile in DS latest template](https://gitlab.com/gitlab-org/gitlab/-/commit/681405f7aee3b098a571904577567445b403bd01) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182159)) **GitLab Enterprise Edition**
- [Change keyFields for ScanExecution type](https://gitlab.com/gitlab-org/gitlab/-/commit/4c3ee50cdbb218ca5c528c06d6f36ebec4b687fc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181964)) **GitLab Enterprise Edition**
- [Remove work_items_alpha flag from Move button](https://gitlab.com/gitlab-org/gitlab/-/commit/0f978d4f7e339e41cb1a5879deecfb17febdb8ac) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182203))
- [Add minor UI changes for Severity Override](https://gitlab.com/gitlab-org/gitlab/-/commit/bfc92587714e9657eb40e056a4d3c6a7d6abbbfc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181504)) **GitLab Enterprise Edition**
- [Move Troubleshoot button inside the sticky footer](https://gitlab.com/gitlab-org/gitlab/-/commit/24712bb718b5662492fccf6055dcdeae545246c4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182161))
- [Update allow/deny list payload](https://gitlab.com/gitlab-org/gitlab/-/commit/864f1a10c388122cf9216c1e4c665f2a41cfb3b0) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181803)) **GitLab Enterprise Edition**
- [Remove the `snoozed_todos_sort_order` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/ac94d0496961302f66f4ac54c68b2cc3b215d627) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181569))
- [Static reachability job process only DS artifacts](https://gitlab.com/gitlab-org/gitlab/-/commit/2e31ea086cfccd5821e4d2cf20b091e999c1e8c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182146))
- [Add minimum override role to CI/CD settings mutation](https://gitlab.com/gitlab-org/gitlab/-/commit/6b5df91c72490ebf6e3ce8c0d81ed2b273a6b814) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/174598))
- [Disable group ascendency validation on Direct Transfer](https://gitlab.com/gitlab-org/gitlab/-/commit/62406aa03a2a89cfbe737a02498172965919d65d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181804))
- [Redesign the action buttons for manual jobs to improve usability](https://gitlab.com/gitlab-org/gitlab/-/commit/8788ba4dd38f3b037f085ba665dca68da3f9e933) by @shakahwath.hussain ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176368))
- [Model registry: Clarify buttons and titles](https://gitlab.com/gitlab-org/gitlab/-/commit/abf269dfe1f4934159d30287d4c68ab2f08c6cdf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181667))
- [Update repository limit notifications](https://gitlab.com/gitlab-org/gitlab/-/commit/d616887c8433614bf46589297bd434844967a201) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180779)) **GitLab Enterprise Edition**
- [Enable `ensure_pipeline_policy_pre_stage_complete` by default](https://gitlab.com/gitlab-org/gitlab/-/commit/96a26299aedbeee75aa91a46d2a31714e4ad4dde) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182081)) **GitLab Enterprise Edition**
- [Disable remove user button for last owners](https://gitlab.com/gitlab-org/gitlab/-/commit/bcc2a5de1434dc14af0666c8d16e277544c4ab7d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181706))
- [Allow Duo Chat to be resizable on self-managed](https://gitlab.com/gitlab-org/gitlab/-/commit/4bc8783dfa525925fb4d02bfa59d4eb5aef8c03b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182008)) **GitLab Enterprise Edition**
- [DB migration to add Milestone widget to Epic work item type](https://gitlab.com/gitlab-org/gitlab/-/commit/6dc651b7964b668bab5bf802bfd2865eac6d0a60) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180857))
- [Add zoekt index watermark level update callback](https://gitlab.com/gitlab-org/gitlab/-/commit/99e74190a8de611665e2bc53305717e09d31dc63) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181056)) **GitLab Enterprise Edition**
- [Remove the `pat_ip` derisk feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/e5e5dc5a1a1df71e08f03eb15a874880f2a063a5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178297))
- [Fix vulnerability autoresolve flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/8f104fb74fe0395c8f0bccdc9fd4fe73418e51c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181850)) **GitLab Enterprise Edition**
- [Fix: Enhance error handling for expired relation export keys](https://gitlab.com/gitlab-org/gitlab/-/commit/1f33e7ad1000bf370345ef452dcf89a4eb8e9e96) by @guptapratibha26 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180802))
- [Improve error handling when creating new directory](https://gitlab.com/gitlab-org/gitlab/-/commit/3a2dc8755ae5724af24ac3d5c08b137dd9077625) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181766))
- [Add ai active context connection model](https://gitlab.com/gitlab-org/gitlab/-/commit/20ffcf455d6416152dabc185a711c06bb1eb7985) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181400)) **GitLab Enterprise Edition**
- [Change project export download rate limit](https://gitlab.com/gitlab-org/gitlab/-/commit/111898b836da5fb2b11e5ad6d236f61e43d63983) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181822))
- [Update Duo Pro usage button to Purchase seats](https://gitlab.com/gitlab-org/gitlab/-/commit/96223f384f943cec325236044c52c31285530160) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181198))
- [Show badge for multiple licenses and tooltip for unknown licenses](https://gitlab.com/gitlab-org/gitlab/-/commit/bedc31cdda02002aa6b759a0b2f99be0603bcd3f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181109)) **GitLab Enterprise Edition**
- [Add animation to a menu section chevron](https://gitlab.com/gitlab-org/gitlab/-/commit/559870d1035469987698b183812ee2f24b1b5c0c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/174872))
- [Make the Troubleshoot button in the Job Log app sticky](https://gitlab.com/gitlab-org/gitlab/-/commit/8ab43ed407e9802f0b8782e48cf81819b9fb2225) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181565))
- [Set new host URL params when initializing Web IDE](https://gitlab.com/gitlab-org/gitlab/-/commit/4b0d2f3d5da8c26e5c0938cbab983e53a029b1bd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180050))
- [Fix Style/FormatString offenses](https://gitlab.com/gitlab-org/gitlab/-/commit/7794ffa690251e1693a8c274dd9e83c56fe160ba) by @JonstonChan ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178810))
- [Readd 422 error context to omniauth error page](https://gitlab.com/gitlab-org/gitlab/-/commit/4e5756c7c67cda1ddfbb9e671584a94a6d4754ef) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180272))
### Removed (28 changes)
- [Remove all *_tab ff and mark migration as noop](https://gitlab.com/gitlab-org/gitlab/-/commit/6d39c9ed199d759ee0bfeb47edff26ce7a6731f4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184734)) **GitLab Enterprise Edition**
- [Removal of non Claude 3 Model](https://gitlab.com/gitlab-org/gitlab/-/commit/b54d187639389b1d5769f70f6275e0bd4ded1373) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184545)) **GitLab Enterprise Edition**
- [BBM for removing orphaned notes](https://gitlab.com/gitlab-org/gitlab/-/commit/765cbfc79aa7d02c6fc3119cf72fde4d7b713cec) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180624))
- [Removed feature flag extended_expiry_webhook_execution_setting](https://gitlab.com/gitlab-org/gitlab/-/commit/969c5b6c9aad0481e0bc08ba98d43c572c90bbc6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184300))
- [Remove note on commit real-time update on MR](https://gitlab.com/gitlab-org/gitlab/-/commit/505145665f4d839c36ef697299217fc67816c6af) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184138))
- [Clean up `blob_repository_vue_header_app` flag](https://gitlab.com/gitlab-org/gitlab/-/commit/ea324a8af683f6f7492beccfa5135a7e0b0b455a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183259))
- [Cleanup Claude 3.5 Haiku feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/8a0c9c47d30b2068b0939a2e6def188a19f934b9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184065)) **GitLab Enterprise Edition**
- [Delete the `zoekt_cache_search_responses` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/daf7dbe21fd620026e52d1a2dcb7f3fa9db58e5d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183217))
- [Remove broken foreign key fk_a2141b1522_p](https://gitlab.com/gitlab-org/gitlab/-/commit/8f2a98491b3f40aaeb4a8dcc48c4a9cdcdc82064) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183638))
- [Remove unused feature flag and partially completed code](https://gitlab.com/gitlab-org/gitlab/-/commit/037bde32ecb4d09c468418843dcfd4bd983b2e20) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182334))
- [Delete increased concurrency indexing ff](https://gitlab.com/gitlab-org/gitlab/-/commit/8b8835c716e3c8f2de08bdb58f218a9f55b3553a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183211))
- [Remove redundant code from new pipeline page](https://gitlab.com/gitlab-org/gitlab/-/commit/cc4d772df7ac3f066367698e2858ecf5c5f25983) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182475))
- [Remove unused feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/c2b836e7496cd44e46ee3fc6a0b681c8e1b89634) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183168))
- [Remove confidence columns from vulnerabilities](https://gitlab.com/gitlab-org/gitlab/-/commit/1b5ca4b70ec67878056c4b6a20d6b9595b1d182e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182637))
- [Delete the `zoekt_reallocation_task` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/06a4e04e0766cc886bb2851880c5caf39850bdbc) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182901))
- [Delete the `zoekt_scheduling_worker` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/3e83080edc1d00ce4941bb5e7d99b0fba3f64801) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182854))
- [Delete the `zoekt_replica_state_updates` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/86666f9a3e92547cad804f9fd94b4d87343ca318) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182853))
- [Removing use_typhoeus_elasticsearch_adapter flag](https://gitlab.com/gitlab-org/gitlab/-/commit/de12601a214b480862d82a6551356dfaeae5df40) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182284)) **GitLab Enterprise Edition**
- [Delete the `zoekt_random_force_reindexing` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/4bc693c8b00a5d1b2d2127dd644d12a81e9dd5f9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182555))
- [Delete the `zoekt_internal_api_register_nodes` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/5acf245b53f22d6fbf7a2a3a48ffd9ab24621f37) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182552))
- [Drop geo_event_log.repositories_changed_event_id column](https://gitlab.com/gitlab-org/gitlab/-/commit/076e72c9c49b1918944025dc56afdc0628e7e929) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182462))
- [Remove DB table system hooks and NoStiSystemHooks model](https://gitlab.com/gitlab-org/gitlab/-/commit/263172a41bb0e49daeea14c21e6dd0eae92e90c5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182115))
- [Delete the `pipeline_stage_set_last_modified` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/3a76d872b3704e8123980ee574148f7b7f7ff6ea) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182100))
- [Remove yaml format feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/f093b1c6795693dd09713f75472b87cfd1ebc8bb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181705)) **GitLab Enterprise Edition**
- [Remove ignored AI application settings columns](https://gitlab.com/gitlab-org/gitlab/-/commit/c223ba9a8a34fa163703c0fa00434f3dc6bf35cc) by @crenz ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179175))
- [Remove fetch-arkose-data-exchange-payload feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/2907cbaac718c92ecc5c4571b7c3766826c39868) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181670))
- [Remove custom_ability_read_admin_users feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/201a335f9b22c643bff7314c8effa2acefa874ad) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181571)) **GitLab Enterprise Edition**
- [Remove pass_add_on_name_for_trial_requests feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/1e2bccd193d6dcf06f863b74c3872f7ea3f08b07) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179725))
### Security (18 changes)
- [Fix ruby-saml gemspec](https://gitlab.com/gitlab-org/gitlab/-/commit/c2c5be905c6c6989373e6c5d098293ee2c5f2811)
- [Mask unencoded userinfo in project mirror errors](https://gitlab.com/gitlab-org/gitlab/-/commit/08ae64432f8ea3a57d4f1f731fed435a34087f76)
- [approval_rules name is unbounded](https://gitlab.com/gitlab-org/gitlab/-/commit/57a03b551b4c1442a17368b0a99a6173fcec387e)
- [Vendor GraphQL gem](https://gitlab.com/gitlab-org/gitlab/-/commit/163192bd96554bfc1e57a87b722a13c936753357)
- [Ruby-SAML updates](https://gitlab.com/gitlab-org/gitlab/-/commit/4d45b6fa090a6d4a879eb04d9e156eaecddd26c0)
- [Limit preview size](https://gitlab.com/gitlab-org/gitlab/-/commit/10b827df7c47db18d805f361d82d78f570eb0898)
- [Prevent custom role to activate group members](https://gitlab.com/gitlab-org/gitlab/-/commit/6ee484f51bf9ca4b554fd996e808d9c0a1082e61)
- [Filter out internal notes if the recipient do not have access](https://gitlab.com/gitlab-org/gitlab/-/commit/1ccf3302c55f26b50772709588d1e37ddfb10438)
- [Maintainer can inject shell code in Google integration configurations that...](https://gitlab.com/gitlab-org/gitlab/-/commit/649d3dea98eb12d185791d022f04c39eb4ff4fd4)
- [Revert "Merge branch 'security-private-artifacts-jobs-api' into 'master'"](https://gitlab.com/gitlab-org/gitlab/-/commit/82064a60dccb41503704b7b103662fa47d9604b0)
- [Bump KAS version](https://gitlab.com/gitlab-org/gitlab/-/commit/f0c1092e0b6b76ac7305e872a706bff2b83bc27a)
- [Use stricter CSP values in the packages dependency proxy](https://gitlab.com/gitlab-org/gitlab/-/commit/1801feb9cee23ee0e40b4118f92b85c0a16ade78)
- [Escape work item dropdown items and restrict HTML tags](https://gitlab.com/gitlab-org/gitlab/-/commit/c8b9fff5b661fc66476d45a96372e7fd5477a000)
- [Fix access to read code review analytics in private projects](https://gitlab.com/gitlab-org/gitlab/-/commit/3e82c62c208678269aee11038662e8b4cbf70c54)
- [Increase minimum role in SPP to read policy yaml](https://gitlab.com/gitlab-org/gitlab/-/commit/8006df30b1661af00c010c7507962c72fcfcc3fa)
- [Check user access for artifacts in Jobs API endpoint](https://gitlab.com/gitlab-org/gitlab/-/commit/ae8cd6c91e3e5c4fd2645182e902f4d7d9a059d8)
- [Resolve "Enterprise User with disabled PATs can still use PATs"](https://gitlab.com/gitlab-org/gitlab/-/commit/5567f530d5145142dcbd9eeafaa21ce8356ea5a9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181669)) **GitLab Enterprise Edition**
- [Resolve "Enterprise User with disabled PATs can still create PATs"](https://gitlab.com/gitlab-org/gitlab/-/commit/a5484070e64511211bce9f6076635361938e2b03) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181661)) **GitLab Enterprise Edition**
### Performance (12 changes)
- [Improve User#verified_emails when emails are preloaded](https://gitlab.com/gitlab-org/gitlab/-/commit/21c9c55cba38e58d825ddb75277fe5efffcc191c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184663))
- [Set the patch_id outside of the DB TXN](https://gitlab.com/gitlab-org/gitlab/-/commit/2f4a3e2f5eebe23d6f277de789ffa0cdb5c41a1d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179734))
- [Fix backend filtering in RTE autocomplete](https://gitlab.com/gitlab-org/gitlab/-/commit/c7b0872098ba9a3e3974ba913ed5f86e4df4c7d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183637))
- [Model: Improve performance of with_version_count scope](https://gitlab.com/gitlab-org/gitlab/-/commit/6a82a69352bc9f2079cc15ebadb200a6145307aa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183031))
- [Update the authentication codeowners yml & script](https://gitlab.com/gitlab-org/gitlab/-/commit/ec85af3ebb68c73de6838e5e6881a67ce53f207e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178264))
- [Improve query performance for all_projects_pages_domains query](https://gitlab.com/gitlab-org/gitlab/-/commit/787589188a8a493cd15631cc21af9333c7663aef) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182897)) **GitLab Enterprise Edition**
- [Enable ci_merge_request_variables_preload and remove the FF](https://gitlab.com/gitlab-org/gitlab/-/commit/803f8812bd94e381bc9703a4eaa7da628da6ee8e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182252))
- [Prevent N+1 queries when fetching issue references](https://gitlab.com/gitlab-org/gitlab/-/commit/b8e8954f33d6e2bca470161a17a6574d80034ecb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182233))
- [Optimize build.execute_hooks when creating pipeline](https://gitlab.com/gitlab-org/gitlab/-/commit/3213e2e4bc384cbee052ecadfbeef5faaaed7e17) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182074))
- [Validate p_ci_pipeline_variables#project_id constraint](https://gitlab.com/gitlab-org/gitlab/-/commit/0337ecbd1e3ebaffa46d2a0c8755f0f479e29153) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180066))
- [Deliver reassignment mails later](https://gitlab.com/gitlab-org/gitlab/-/commit/84ed112184b3aa05897472f67f50e26ff9738fc9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181826))
- [Enable bitbucket_import_resumable_worker flag](https://gitlab.com/gitlab-org/gitlab/-/commit/e91cf215414b44559710a9f473526650eda91679) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181647))
### Other (194 changes)
- [Add NOT NULL on ml_candidate_metrics.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/31aefa505b8e64330eb8db7119a7de5e5b90272e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184431))
- [Add NOT NULL on ml_candidate_params.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/3d32c3f1fbae958cdb56c3410fbb61d474f312b7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184432))
- [Regenerate RuboCop TODO files](https://gitlab.com/gitlab-org/gitlab/-/commit/34e391840a30714cc639abac909d9ad79d58f09b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184766))
- [Add and backfill project_id for merge_request_context_commit_diff_files](https://gitlab.com/gitlab-org/gitlab/-/commit/49a59903299a998d3e3aa6fcc8f917516dcfa384) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183935))
- [Add compliance control status transition events and metrics](https://gitlab.com/gitlab-org/gitlab/-/commit/1c3565339b78cff53f7cc40603dedec6f66b078e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183256)) **GitLab Enterprise Edition**
- [Add NOT NULL on ci_build_trace_chunks.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/719454739f9bd4be3b0a5f829cd848aab0c16f9a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183976))
- [Documenting Cells configuration for OmniBus and Helm Charts](https://gitlab.com/gitlab-org/gitlab/-/commit/98830eb3b96587647db39a0a48774e35c302767a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180957))
- [Improve documentation access token API](https://gitlab.com/gitlab-org/gitlab/-/commit/ab0baf261c3861b95ad53e8008ffa57cd08bdfde) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184291))
- [Regenerate RuboCop TODO files](https://gitlab.com/gitlab-org/gitlab/-/commit/1513d44c30d0adefd16f414040b3aeb22df00f90) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183188))
- [Model registry: Simplify table mechanism](https://gitlab.com/gitlab-org/gitlab/-/commit/83de5babd1f2280f6f9cacf7c36ffffb9e26a186) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184031))
- [Add and backfill project_id for packages_nuget_dependency_link_metadata](https://gitlab.com/gitlab-org/gitlab/-/commit/7ae94045c8f36be77c7199028df8a1b1ea53e5ba) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184610))
- [Add NOT NULL for sharding key on packages_package_files](https://gitlab.com/gitlab-org/gitlab/-/commit/12f461033ac48f9a51c124a2162aeb5327625b6e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184630))
- [Add NOT NULL for sharding key on incident_management_oncall_rotations](https://gitlab.com/gitlab-org/gitlab/-/commit/793d6b8f03b7b8be59f8619a18debdcd78b4cb88) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184622))
- [Sync translations from crowdin (2025-03-14)](https://gitlab.com/gitlab-org/gitlab/-/commit/7e8edbc6510143d8a01eca2c05453283833f4315) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184615))
- [Add sequence to partitioned runner tables](https://gitlab.com/gitlab-org/gitlab/-/commit/3889fe2e32946d647fe721f2dd82aa67fdc5644f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183817))
- [Remove Gitlab::Redis::ClusterSessions post migration](https://gitlab.com/gitlab-org/gitlab/-/commit/dad64361c6b56ec1f4dd3ec2033f74b47ff5d3c2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184562))
- [Add NOT NULL on ci_builds_runner_session.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/8ca1bd48a443e69bdb0f7d8e78d5c04df0f22ead) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183977))
- [Add NOT NULL constraint on ci_unit_test_failures.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/24cc5df25fb46d675a38c142efa631dae68453c3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182507))
- [Add NOT NULL constraint on packages_dependency_links.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/41c3220cc4261eac7a1df63cd48ec6f562b5cbe1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182510))
- [Migrate HTTP instance audit event destinations](https://gitlab.com/gitlab-org/gitlab/-/commit/7d19d209c72089be675034093286dd4e6f394163) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184035)) **GitLab Enterprise Edition**
- [Skip saving pipeline config when using inputs](https://gitlab.com/gitlab-org/gitlab/-/commit/e8af953ebc6ddedf3df806694625f5dcf31b447c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184318))
- [Add & backfill sharding keys for snippet_user_mentions](https://gitlab.com/gitlab-org/gitlab/-/commit/114308c19e8ebf0e6d6f97bfcb969701c6172707) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180836))
- [Add & backfill sharding keys for snippet_statistics](https://gitlab.com/gitlab-org/gitlab/-/commit/4f30c94fba6bc2068ce33ad64dd6b90e17ad7bfa) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183124))
- [Add & backfill sharding keys for snippet_repositories](https://gitlab.com/gitlab-org/gitlab/-/commit/bbcb0efba3bc4c7b6fa577fa14c6c89721255aef) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175410))
- [No-op 20250307080100 migration and retry in 20250307080101](https://gitlab.com/gitlab-org/gitlab/-/commit/f60155196640decafdf40d185c2d4bb7a758cf52) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184439))
- [Add ProjectsWithComplianceFrameworks metric](https://gitlab.com/gitlab-org/gitlab/-/commit/a056fce989d95e9c324c6fdd3a06b172a93bd01a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183422)) **GitLab Enterprise Edition**
- [Add compliance requirement metrics for controls and policies](https://gitlab.com/gitlab-org/gitlab/-/commit/f5dd408a36e4391b554c17382658f4d49131e014) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183382)) **GitLab Enterprise Edition**
- [Sync translations from crowdin (2025-03-13)](https://gitlab.com/gitlab-org/gitlab/-/commit/59d23b74f074baf95a4d64249a788c0674e41919) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184470))
- [Remove Gitlab::Sessions::RedisStore as session store](https://gitlab.com/gitlab-org/gitlab/-/commit/b9c288656b9e40f699462ced6a5225888ec2f087) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181637))
- [Remove update_merge_request_worker_sticky feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/d48f58a5d02537aa44e2fa752c471ae15e10a98a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184411))
- [test: Add missing feature categories for tests related to system access](https://gitlab.com/gitlab-org/gitlab/-/commit/ec53d463bf176db2350a85713bd11e41ea87e4ce) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/176700)) **GitLab Enterprise Edition**
- [Sync translations from crowdin (2025-03-12)](https://gitlab.com/gitlab-org/gitlab/-/commit/3fe80a44d1b019acea6600a575d2815522a65548) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184036))
- [Finalize migration BackfillMembersRequestAcceptedAt](https://gitlab.com/gitlab-org/gitlab/-/commit/0187d67271e58fd710180e5faaab1f9fb7531e37) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184105))
- [Add internal event tracking to placeholder reassignment](https://gitlab.com/gitlab-org/gitlab/-/commit/0244f146f8fb5794a545685d391afc86ce68d59a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182679))
- [Enable reassignment throttling feature](https://gitlab.com/gitlab-org/gitlab/-/commit/cf25daf2d4444f1f0a621a48a53a95b99e004991) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184131))
- [Replace ci_runner_machines with partitioned table](https://gitlab.com/gitlab-org/gitlab/-/commit/5680b0559d160a214e72ad23dfb2c38e7a7a4706) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182859))
- [Finalize migration BackfillMilestoneReleasesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/9b0a98b5985cb66cab0ce731115b17a1ab6c3967) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184106))
- [Remove redundant validate in BulkImport::Entity](https://gitlab.com/gitlab-org/gitlab/-/commit/f9e4a8ae23165520a44882e17bdcbe1231ad2441) by @n.h.long.9697 ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182760))
- [Improving Cells validation message](https://gitlab.com/gitlab-org/gitlab/-/commit/a7127cc046b94832eb4d835debf800c92e264d91) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184040))
- [Finalize migration BackfillIncidentManagementEscalationRulesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/cff739e1dfd123693cf7d18bb74484ad013b7dfb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183765))
- [Add and backfill project_id for deployment_merge_requests](https://gitlab.com/gitlab-org/gitlab/-/commit/577d1817d5424403700b709fb27d086153ba714f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183738))
- [Add and backfill wiki_page_slugs for namespace_id](https://gitlab.com/gitlab-org/gitlab/-/commit/60acb9075de7b0101bfc4a89f0e0d7accbec26b3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183332))
- [Remove Gitlab::Redis::ClusterSessions post migration](https://gitlab.com/gitlab-org/gitlab/-/commit/9d143551abc59e6a0b30d4af42af96c3e876dac5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181631))
- [Finalize BackfillIncMgmtTimelineEventTagLinksProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/61bed0e11899a199c01095e59046834b32260d92) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183908))
- [Finalize migration RerunEpicDatesToWorkItemDatesSourcesSync](https://gitlab.com/gitlab-org/gitlab/-/commit/d55563e12754a5aa85eb18aa8cc6cc871fdb6342) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183282))
- [Remove bulk_create_scan_result_policies Feature Flag](https://gitlab.com/gitlab-org/gitlab/-/commit/6558e1637d19ab0bdee0b5c494e9acb56c37fb6a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183509)) **GitLab Enterprise Edition**
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/60445f0f5ef1c52460e85dec9257113edd26badd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183923))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/f9e0c3fe1aa6e74eebbb473ab2cad86509065583) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184119))
- [Populate redirect_routes.namespace_id on save](https://gitlab.com/gitlab-org/gitlab/-/commit/b258d82c870660dbd251af5a5e7fc6e29eef722a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183974))
- [Add FK constraint and index on merge_request_user_mentions.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/21634826da4ff0ee4d3400ae6a519d5480257694) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183971))
- [Fix merged MRs that reverted to "closed" state](https://gitlab.com/gitlab-org/gitlab/-/commit/ea4ef3c3809ae45a71be0b8fd97f46b3ae0b789a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181021))
- [Remove existing users from onboarding if they have group saml](https://gitlab.com/gitlab-org/gitlab/-/commit/81605ddb9c114dba8a6030fa728cf06b6b0f8575) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183559))
- [Fix Style/SendWithLiteralMethodName offenses](https://gitlab.com/gitlab-org/gitlab/-/commit/7a47fc425ded8d3f51274b0ff069710655b2e0ca) by @albertoroldanq ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179585)) **GitLab Enterprise Edition**
- [Remove the `mr_approvers_filter_hidden_users` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/275476b7757ed7665b6b5f8293773eb1d3142327) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183058))
- [Add and backfill project_id for approval_merge_request_rules_approved_ap](https://gitlab.com/gitlab-org/gitlab/-/commit/880a4f383dafaf9bf80088aa005e133f17657a5c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183352))
- [Replace ci_runners with partitioned table](https://gitlab.com/gitlab-org/gitlab/-/commit/21cbc3beac1b4c58eb47a0b2c2a791100f3ec124) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183508))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/8abda5c1de7f6556f0dd4c23a856a339fcea8f3c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183628))
- [Add and backfill project_id for approval_merge_request_rules_users](https://gitlab.com/gitlab-org/gitlab/-/commit/f683b5501f484b294bc22fc8acb4d397312bbc48) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183354))
- [refactor: Add oauth_login_counter before request phase middleware](https://gitlab.com/gitlab-org/gitlab/-/commit/9788d7d1f3502027cf474f697859ce1a38f774a9) by @gerardo-navarro ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177720))
- [Finalize migration BackfillCiSecureFileStatesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/0f0499f55fb0dd86819daf179cc65ca5586f137e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181727))
- [Finalize migration BackfillIncidentManagementOncallRotationsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/9d8a6e53c97108433caf92fcdd93ad2427f2e8a9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183766))
- [Finalize migration BackfillDastSiteProfilesBuildsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/49960c402969bd5aa2d56778e7d4ef11711631fe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183452))
- [Finalize migration to backfill namespace_id in policy rule schedules](https://gitlab.com/gitlab-org/gitlab/-/commit/ccaffa6a8e7908f3ee13541b513acaf247a99961) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183280))
- [Finalize BackfillApprovalProjectRulesProtectedBranchesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/23b71c4faf18a88099a60620d1285c0b61876e91) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183451))
- [Add CountFrameworksWithRequirementsMetric](https://gitlab.com/gitlab-org/gitlab/-/commit/bbb8bb5eaac6575034ba865fbca77f0be0c5347c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183414)) **GitLab Enterprise Edition**
- [Add and backfill project_id for packages_debian_project_component_files](https://gitlab.com/gitlab-org/gitlab/-/commit/773bf078489ae099410dbe3e929bf2793a007746) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183806))
- [Rename remote development namespace cluster agent mapping table](https://gitlab.com/gitlab-org/gitlab/-/commit/b6c3b59f2a95317f93df1db680fbf065abeadb30) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181926)) **GitLab Enterprise Edition**
- [Add NOT NULL constraint on packages_debian_project_components.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/67e6453223fb1a1b6fbe9650c0ec05e54babb696) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182509))
- [Cleans up authentication_logs_migration_for_allowlist feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/5664ef2019c354fb2eaf15d9c3ff211258de39a4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183773))
- [Create ClickHouse table to store group traversal namespaces paths](https://gitlab.com/gitlab-org/gitlab/-/commit/93eeeb09c78e953d3587f4577d2c6ada4d4caaf2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182164))
- [Add namespace_id column to redirect_routes](https://gitlab.com/gitlab-org/gitlab/-/commit/133f4815bcfd064c3d4ed34164d18b66744c2d15) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183002))
- [Add performance bar to GraphQL explorer](https://gitlab.com/gitlab-org/gitlab/-/commit/57190ec595dcf60febe30b83deb8685c430adcae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/171948))
- [Validate not null constraint on projects.project_namespace_id column](https://gitlab.com/gitlab-org/gitlab/-/commit/595684382c459d18bccd0f3444fd53a2065f4412) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183649))
- [Refactor Cells configuration](https://gitlab.com/gitlab-org/gitlab/-/commit/1dd42ed25234e1be37273ad4399d5db4501bfda3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181708))
- [Add and backfill namespace_id for incident_management_pending_issue_esca](https://gitlab.com/gitlab-org/gitlab/-/commit/d7b8feaf1b544a8a342c9937189f74fbd7ddd4ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183047))
- [Remove shared_namespace_locks feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/79b86d8e467ac2a7292a7e0b484d1c76003f5abd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183624))
- [Use occurrence id to fetch dependency graph](https://gitlab.com/gitlab-org/gitlab/-/commit/4b42d50e7ad8b20fd974042949aabbca0797477b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183625)) **GitLab Enterprise Edition**
- [Finalize migration BackfillCiBuildTraceMetadataProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/2673238b6d419b4eba095409874c325011b4b23e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182192))
- [Backfill onboarding_status_setup_for_company from user_preferences](https://gitlab.com/gitlab-org/gitlab/-/commit/b071a20a528b307bc84905604c3de6e46029a99d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180602))
- [Add approval_policy_rule_id to scan_result_policies](https://gitlab.com/gitlab-org/gitlab/-/commit/a79788d08fdc1f319da981a4dbf8a016044c2476) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182418)) **GitLab Enterprise Edition**
- [Remove broken FK between builds and pipelines](https://gitlab.com/gitlab-org/gitlab/-/commit/214d2295825675a79262f5c7e6aa42daa31d54ae) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/174115))
- [Move Import file removal to a cron job](https://gitlab.com/gitlab-org/gitlab/-/commit/1d6c03f0b2047a6bb9f69035f68028911c549063) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182101))
- [Remove ci_runner_manager_runtime_features feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/2b5b8d8b5aa36ce8ae32381d5bca5afc5bb3db8e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183500))
- [Finalize BackfillSecurityOrchestrationPolicyRuleSchedulesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/77d6f49595b87fcaf6534c741e1b04f735d80f84) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183281))
- [Finalize Batched Background Migration](https://gitlab.com/gitlab-org/gitlab/-/commit/63460747ade74fac657a198f1ba118644daa6649) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182653))
- [Remove groups/discovers_helper.rb](https://gitlab.com/gitlab-org/gitlab/-/commit/0a893e67ca9a85f2dac582e86e16732ab2467e99) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182779)) **GitLab Enterprise Edition**
- [Reindex work items to index notes data](https://gitlab.com/gitlab-org/gitlab/-/commit/c2cb179046c0fc700b9bd4e2d27fcd8824bb7ca2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182950)) **GitLab Enterprise Edition**
- [Replace ci_runners with partitioned table](https://gitlab.com/gitlab-org/gitlab/-/commit/93cf156a339a7e14815600a92d1329430842eb55) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182549))
- [Add and ensure presence of resource_mileston_events.namespace_id](https://gitlab.com/gitlab-org/gitlab/-/commit/f7a9511c8e3455e0b9c7219718d440f24ca5b82a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181868))
- [Add ability to manage experimental features for security policies](https://gitlab.com/gitlab-org/gitlab/-/commit/5b2f637b31e942f79731e5d5042265fa5d17bd0b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182484))
- [Add index on approvals.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/b1edb2fc3ba2a3d7a1ac4f1b4b572a941fb1876e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182066))
- [Add NOT NULL on ci_pipeline_schedule_variables.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/63c118d28f7d0c4653365219ed1ca1f175253121) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182681))
- [Add and backfill project_id for push_event_payloads](https://gitlab.com/gitlab-org/gitlab/-/commit/f03f3991fa283cdc1216032c028a2e9651503d46) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183123))
- [Finalize protected_environment_deploy_access_levels backfill](https://gitlab.com/gitlab-org/gitlab/-/commit/2d5e8328b7b7071b1781091af90d5e4bf6db9bda) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183279))
- [Validate NOT NULL on approval_merge_request_rules sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/6e98f72a64120a0700df81b63bd8c3e569e19133) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180907))
- [Add and backfill project_id for scan_result_policies](https://gitlab.com/gitlab-org/gitlab/-/commit/ecc5b7abfd71962f8e6d2ee4ea04d6714dda4f48) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183125))
- [Minor improvements to the performance bar](https://gitlab.com/gitlab-org/gitlab/-/commit/a45c755ba147f735a076ec0e780ce5406bfefeb2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181397))
- [Finalize migration BackfillProtectedTagCreateAccessLevelsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/e7824f9ab214f3c7e6f840bceffc4bd83bb5eccd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181208))
- [Remove dead code around recaptcha_on_top_level_group_creation feature](https://gitlab.com/gitlab-org/gitlab/-/commit/64a32f0674c13f333c5cea96b1bb796efca850b1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183174))
- [Finalize migration BackfillMlCandidateParamsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/f52900d7b38399494433fc148be672d576d1de1e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183109))
- [Finalize migration MakeSecurityPolicyBotsPrivate](https://gitlab.com/gitlab-org/gitlab/-/commit/1d8014071f93ee3b942952b72dd7085d31f44f08) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182962))
- [Finalize protected_environment_deploy_access_levels backfill](https://gitlab.com/gitlab-org/gitlab/-/commit/0242462664281a7470b6bd66e24aff5fbce9a6ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183110))
- [Move Import file removal to a cron job](https://gitlab.com/gitlab-org/gitlab/-/commit/e4a7ff58142e84458a3f18e838de333c2ab9891c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181784))
- [Finalize migration BackfillReservedStorageBytes](https://gitlab.com/gitlab-org/gitlab/-/commit/446f6068b41b0bc819f2a392931bec463912622c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182189))
- [Store project namespace traversal paths on ClickHouse](https://gitlab.com/gitlab-org/gitlab/-/commit/cfd2482073576de3332749d8effac5085491b59e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183053))
- [Introduce `Vulnerabilities::ArchiveExport` model](https://gitlab.com/gitlab-org/gitlab/-/commit/fa145e30591667582b14f1d1b32776aeaa89a3ac) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182290))
- [Reindex Elasticsearch merge request to update integer with long type](https://gitlab.com/gitlab-org/gitlab/-/commit/28c969e902362b492225b6f4dde9519febfbc10e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182255)) **GitLab Enterprise Edition**
- [Reindex Elasticsearch user index to update integer with long type](https://gitlab.com/gitlab-org/gitlab/-/commit/94eee10017dd8e418eb5c55eb393c481c570ead7) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182733)) **GitLab Enterprise Edition**
- [Reindex Elasticsearch note index to update integer with long type](https://gitlab.com/gitlab-org/gitlab/-/commit/f1d971c86bbf29b1570f9053912495739cd01e53) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182727)) **GitLab Enterprise Edition**
- [Finalize "generate commit message" migration to AI Gateway](https://gitlab.com/gitlab-org/gitlab/-/commit/a70658e227b2cca454cb26a1814d96bef4261414) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182969))
- [Finalize migration BackfillCiBuildsRunnerSessionProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/0b08c2dec0ebf6b469870b8991c0c50e73942d7a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181723))
- [Finalize migration BackfillMlCandidateMetricsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/f4c506f3a2dfb67fc8c07662cb3bcd3fc4a69e2d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182963))
- [Finalize migration BackfillVulnerabilityOccurrenceIdentifiersProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/43ace000ca708a9a960ae988e141efe4e1fd7efd) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182654))
- [fix(rubocop): Fix Performance/MapCompact offenses in app/models/ci](https://gitlab.com/gitlab-org/gitlab/-/commit/6d9cae74b9ed8e5624a7337140790548c246196f) by @thelooter ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182956))
- [Remove kubernetes_agent_protected_branches feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/2280141eebab910158a344951cda78586086c6e2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182895))
- [Remove feature flag pat_organization_filter](https://gitlab.com/gitlab-org/gitlab/-/commit/f42e8601404015866abc046fa007213c0c65965d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182700))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/ae18647f643704cf2f6499f419657cd04c8e96e9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182673))
- [Finalize migration BackfillEpicIssuesNamespaceId](https://gitlab.com/gitlab-org/gitlab/-/commit/2a1fbf479b636c5120a0dd5da996be85f3c6553d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181719))
- [Finalize migration FixNamespaceIdForWorkItemParentLinks](https://gitlab.com/gitlab-org/gitlab/-/commit/709b7692ef46039fcb7b070452e379b306fea145) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182656))
- [Fix any bad sharding_key_id values on project runners](https://gitlab.com/gitlab-org/gitlab/-/commit/b612a0ad4c82d5cea8c3150ff0e905b766dba52f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182527))
- [Update work_item_type_custom_fields FK](https://gitlab.com/gitlab-org/gitlab/-/commit/c0e5b9b6a88fe42dd340bf52f58f0aecff705618) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182051))
- [Fix Style/SymbolProc offenses](https://gitlab.com/gitlab-org/gitlab/-/commit/9b31b6baeaaf314685c4db110d1fab87137d102d) by @barton.tomas ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181311))
- [Introduce data retention guidelines](https://gitlab.com/gitlab-org/gitlab/-/commit/23b9659db568b77e904904c2867678adbc485c97) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178455))
- [Add NOT NULL on vulnerability_state_transitions.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/1342a12bf73ab1563caf9a50032445531dffcc46) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182698))
- [Finalize migration BackfillErrorTrackingErrorEventsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/5f59c6f57262511849ebe59ddf2c59d18ac8f383) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181720))
- [Save runner runtime features to runner manager](https://gitlab.com/gitlab-org/gitlab/-/commit/e6e0813759ff8742c2588d177b88234227643506) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181817))
- [Validate NOT NULL constraint on packages_build_infos.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/bef629ebe02c776886e60bc68c86e0c4945df568) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182526))
- [Validate NOT NULL constraint on merge_request_reviewers.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/37ccc8b5902a7eb24ab73f3f2566b93d1c1d4c16) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182524))
- [Add NOT NULL constraint on evidences.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/00b2cc0f4e3c24ba40dc42fb72ebd63424445982) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182508))
- [Add NOT NULL constraint on packages_maven_metadata.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/34ba8b3e62d8edbcd68e2feebef08835f2ba47b8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182511))
- [Add and backfill namespace_id for issue_assignees](https://gitlab.com/gitlab-org/gitlab/-/commit/ef77f05e872bed20da94544321182e10886f0f0c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/174106))
- [Finalize migration BackfillCiPipelineScheduleVariablesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/a42d96684acb006b4a063db76787b079ba3baab6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181725))
- [Remove correct_work_item_type_id from work item index](https://gitlab.com/gitlab-org/gitlab/-/commit/0a4d85e57d8a517352dc310766612f65d93e98d9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182551)) **GitLab Enterprise Edition**
- [Replace client lib with pure HTTP implementation](https://gitlab.com/gitlab-org/gitlab/-/commit/e5bbaf93c43c83fafcda8c33f5ef36de46ff1759) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182567))
- [Add new Elastic commit indexer worker](https://gitlab.com/gitlab-org/gitlab/-/commit/7e93d41685abe15dee084588f2a0116e845a0c98) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182114)) **GitLab Enterprise Edition**
- [Enable virtual_registry_maven_cleanup_new_worker_class by default](https://gitlab.com/gitlab-org/gitlab/-/commit/2bd137bcf385496fcecbda4eb5ca13192eab70ca) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182560))
- [Remove security widget findings FF](https://gitlab.com/gitlab-org/gitlab/-/commit/951b74877df8075bfb226d25fa6c59ddf331c9ee) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182541)) **GitLab Enterprise Edition**
- [Remove show_diff_if_head_sha_commit_is_missing flag](https://gitlab.com/gitlab-org/gitlab/-/commit/18512914ed74fce2ba2e2ec80a6117a2a4f0577b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182473))
- [Creates event trigger to alter range of new sequences](https://gitlab.com/gitlab-org/gitlab/-/commit/e51a48ba87ecbc70d2c65976e320773f78445045) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181115))
- [Add the new state deleted in Zoekt::Repository model](https://gitlab.com/gitlab-org/gitlab/-/commit/130f7b5e27c367a177c3e396e2c2bee1cc05557e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182402)) **GitLab Enterprise Edition**
- [Remove `global_file_size_check` feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/fa8667b80dda3cb3ed44e755350f4ab041124783) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173546))
- [Remove reference to taggings table in deduplicate_tags rake task](https://gitlab.com/gitlab-org/gitlab/-/commit/9f0c508f50e4a1aef2f138bb54598f54e4d6b72f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182412))
- [Regenerate RuboCop TODO files](https://gitlab.com/gitlab-org/gitlab/-/commit/11ae1fa569bcd1fb28067bf7783c65395fe4e789) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182408))
- [Cleanup security_policy_custom_roles feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/4a482bbc33a50ab16f01cb97fadc4fce861b533d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181530)) **GitLab Enterprise Edition**
- [Finalize migration BackfillMergeRequestUserMentionsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/7d9d3d2c63248e538d7b61887018f1d4a5964882) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181880))
- [Validate NOT NULL on merge_request_blocks sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/917a705a30218442626274a9a6357a5dadf3ca52) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180913))
- [Remove feature flag `policies_always_override_project_ci`](https://gitlab.com/gitlab-org/gitlab/-/commit/e257a9ab9abbfb4c2d8063cb157a83f57083ae9e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182001)) **GitLab Enterprise Edition**
- [Finalize Batched Background Migration](https://gitlab.com/gitlab-org/gitlab/-/commit/44b224d018493b6edb7709829996f7fff6c34f97) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182188))
- [Finalize migration BackfillEvidencesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/f7e005bbb6dae8a5a54952afa898255b5e1f8902) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181721))
- [Finalize migration BackfillCiBuildTraceChunksProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/4ebba95792c93a88c2e4a8272b3ed8e3595dd0e5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182191))
- [Finalize migration BackfillCiBuildPendingStatesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/a078e50c90c13218f744954c02347f9efa9477cb) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182190))
- [Add tables/model for targeted messages](https://gitlab.com/gitlab-org/gitlab/-/commit/65a84e0299508cb21ae7b6e3005fbfadd92809d8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179303))
- [Remove ai_commit_reader_for_chat flag](https://gitlab.com/gitlab-org/gitlab/-/commit/cb549de5bdda28c27cf091ee46e5671cf6c7c053) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181555)) **GitLab Enterprise Edition**
- [Add and backfill group_id for packages_debian_group_component_files](https://gitlab.com/gitlab-org/gitlab/-/commit/8831e8e773a144d62789c57b2214119aec2fed2c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182117))
- [Add and backfill project_id for project_relation_export_uploads](https://gitlab.com/gitlab-org/gitlab/-/commit/c5d70a305c577138d6d56302d60efc475a1c9ebe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182116))
- [Add NOT NULL constraint on packages_debian_group_components.group_id](https://gitlab.com/gitlab-org/gitlab/-/commit/41410bb73a81cd0eeac8015352e418174cd47247) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181064))
- [Release vulnerability report identifier filter for group level](https://gitlab.com/gitlab-org/gitlab/-/commit/022bbec4123ec5d75d52e6887c16c0e7b92078d4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182084)) **GitLab Enterprise Edition**
- [Finalize migration FixSyncedEpicWorkItemParentLinks](https://gitlab.com/gitlab-org/gitlab/-/commit/ee62a87c75df8be99e1d0c39faccf55b3c7aae4c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181330))
- [Validate NOT NULL on project_relation_exports sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/83472208a7c3e9cead4fe9ad3bd3c7dcfe83130e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180914))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/65082c9a54186e0a4e93a9385c27bd14d5493221) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182057))
- [Validate NOT NULL on draft_notes sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/96c9c3d3b0804a90b8ac55aad7e6275f03d8491f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180909))
- [Finalize migration AlterWebhookDeletedAuditEvent](https://gitlab.com/gitlab-org/gitlab/-/commit/6adbc44d84adb7c1674107904bac2ce700fc524c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181480))
- [Finalize migration BackfillCiResourcesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/8dbde447f2810fc89d81bee928b15cead1e0d179) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181726))
- [Refactor approvals widget](https://gitlab.com/gitlab-org/gitlab/-/commit/f684e7be723f58344ff96249e5895083f5fb9d87) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178957)) **GitLab Enterprise Edition**
- [Remove Elasticsearch settings from application settings](https://gitlab.com/gitlab-org/gitlab/-/commit/95418b5ea732f2a6231ea2247ba91cbd00b0d24e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181660))
- [Remove unused ClickHouse table ci_failed_pipelines_counts_by_namespace](https://gitlab.com/gitlab-org/gitlab/-/commit/1d308570d9f40b634931244284b5ed2afa6b0b9f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182019))
- [Validate NOT NULL on status_check_responses sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/9ea39e80542b6b24e37beab0d116d2353013eb31) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180701))
- [Validate NOT NULL on vulnerability_finding_links sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/80472e5665b50192db1c2dd89142c959d3a35e40) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180689))
- [Finalize migration NullifyBuildsAutoCanceledById](https://gitlab.com/gitlab-org/gitlab/-/commit/e9e3a23bd6de3670ec2f89147a28d72c618301f9) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181732))
- [Finalize migration BackfillCiTriggerRequestsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/775a69f8fb60e26f6c223c2c29eaad35cafd25b3) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181729))
- [Finalize migration DeleteOrphanedPipelineVariableRecords](https://gitlab.com/gitlab-org/gitlab/-/commit/eb8c59eb0aca189f4c9ba30dca3804b2e2ea8769) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181730))
- [Finalize migration BackfillCiBuildNeedsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/ff678d0f38fe270d298d3e45ccf5250a947d68cf) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181722))
- [Reindex work items for type id alignment](https://gitlab.com/gitlab-org/gitlab/-/commit/5df7fbe7e36914f295983efabc7e42afd5ce7c63) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181790)) **GitLab Enterprise Edition**
- [Finalize migration BackfillCiUnitTestFailuresProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/928f7d0dfeeb581c6488838fedb5c34986ca10c5) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181728))
- [Finalize migration BackfillPackagesPackageFilesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/11ed1d8ac4ebe9ed6550e1277bebc25f57365a2a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181882))
- [Finalize migration BackfillVulnerabilityStateTransitionsProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/e578dec947e6092be8e3b8bfd2a2c8ddc885ac51) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181203))
- [Remove ElasticIndexingControlWorker job instances](https://gitlab.com/gitlab-org/gitlab/-/commit/e48ffffd972ca76c738cb7beb938c2ea8e34ab60) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181668))
- [Change routes.namespace_id from LFK to regular foreign key](https://gitlab.com/gitlab-org/gitlab/-/commit/9a75bbf1cdd6eea1532e8deda641db683b59e531) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181772))
- [Finalize migration BackfillVulnerabilityExternalIssueLinksProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/84e34ecdf8fb4b7e174b59390dfdb5deae5ad338) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181209))
- [Remove concurrency_limit_process_commit_worker feature flag](https://gitlab.com/gitlab-org/gitlab/-/commit/0d19797675118823b66844c18a8939fbb8b3b39e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181758))
- [Add NOT NULL constraint on merge_request_reviewers.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/b8045ea96420397aeccc721315a9b74d7a0dea9f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181081))
- [Use the pipeline creation meta data rather than project.ci?](https://gitlab.com/gitlab-org/gitlab/-/commit/a5cb7724df7dfb75862c248b314d269626c1b2e4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181745))
- [Validate NOT NULL on merge_request_assignees sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/a517000bab7e91b063f7edd37609af4e17500d6a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180912))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/0244921f55a133eb8dd57e17c212edb6e62cc2e4) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181491))
- [Update maven virtual registry cache entries table](https://gitlab.com/gitlab-org/gitlab/-/commit/fae2f9df5189040d8790d7c98c37c1dd21828d04) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181707))
- [Re-enqueue LimitNamespaceVisibilityByOrganizationVisibility migration](https://gitlab.com/gitlab-org/gitlab/-/commit/4f536c2bd45495263e6f5706117245307f58e148) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181640))
- [Add NOT NULL constraint on merge_requests_closing_issues.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/b61c2e1c39dec7a91d43f7ef2a12fdc769fee767) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181082))
- [Finalize migration BackfillPackagesMavenMetadataProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/d27b6ead984e72424569109176e998a5c7bdce5f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181207))
- [Add NOT NULL constraint on vulnerability_merge_request_links.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/ef7913273b9a45cce654fbadb46e06524c59550a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181080))
- [Add NOT NULL constraint on vulnerability_issue_links.project_id](https://gitlab.com/gitlab-org/gitlab/-/commit/c34add13294a3d6f1e22c9747685cb712da9b1c8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/181079))
- [Validate NOT NULL on epic_user_mentions sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/661448171c0c5f2ac9dd8984f406db19d7169ba1) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180910))
- [Validate NOT NULL on issue_links sharding key](https://gitlab.com/gitlab-org/gitlab/-/commit/88d10656deca31b2af41b3fcb20f5c56aa88af7e) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180911))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/998d8028213da6bf0c3c1c08301797c8b3395c28) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180234))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/8ae69a3765cfb7561db95e43faa30cc60fac6444) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177662))
## 17.9.2 (2025-03-11)
### Fixed (3 changes)

View File

@ -17,6 +17,7 @@ import {
DraggableItemTypes,
listIssuablesQueries,
ListType,
WIP_WEIGHT,
} from 'ee_else_ce/boards/constants';
import { DETAIL_VIEW_QUERY_PARAM_NAME } from '~/work_items/constants';
import {
@ -186,16 +187,42 @@ export default {
boardListItems() {
return this.currentList?.[`${this.issuableType}s`].nodes || [];
},
beforeCutLine() {
beforeIssueCutLine() {
return this.boardItemsSizeExceedsMax
? this.boardListItems.slice(0, this.list.maxIssueCount)
: this.boardListItems;
},
afterCutLine() {
afterIssueCutLine() {
return this.boardItemsSizeExceedsMax
? this.boardListItems.slice(this.list.maxIssueCount)
: [];
},
weightCutOffIndex() {
let sumOfWeight = 0;
const cutoffIndex = this.boardListItems.findIndex((item) => {
sumOfWeight += item.weight;
return sumOfWeight > this.list.maxIssueWeight;
});
return cutoffIndex;
},
beforeWeightCutLine() {
return this.weightCutOffIndex === -1
? this.boardListItems
: this.boardListItems.slice(0, this.weightCutOffIndex);
},
afterWeightCutLine() {
return this.weightCutOffIndex === -1 ? [] : this.boardListItems.slice(this.weightCutOffIndex);
},
beforeCutLine() {
return this.list.limitMetric === WIP_WEIGHT
? this.beforeWeightCutLine
: this.beforeIssueCutLine;
},
afterCutLine() {
return this.list.limitMetric === WIP_WEIGHT
? this.afterWeightCutLine
: this.afterIssueCutLine;
},
listQueryVariables() {
return {
fullPath: this.fullPath,
@ -209,6 +236,9 @@ export default {
listItemsCount() {
return this.isEpicBoard ? this.list.metadata.epicsCount : this.boardList?.issuesCount;
},
listItemsWeight() {
return this.isEpicBoard ? 0 : Number(this.boardList?.totalIssueWeight ?? 0);
},
paginatedIssueText() {
return sprintf(__('Showing %{pageSize} of %{total} %{issuableType}'), {
pageSize: this.boardListItems.length,
@ -217,13 +247,21 @@ export default {
});
},
wipLimitText() {
return sprintf(__('Work in progress limit: %{wipLimit}'), {
wipLimit: this.list.maxIssueCount,
});
const wipLimit = this.list.maxIssueCount || this.list.maxIssueWeight;
if (this.list.limitMetric === WIP_WEIGHT) {
return sprintf(s__('Boards|Work in progress limit: %{wipLimit} weight'), { wipLimit });
}
return sprintf(__('Work in progress limit: %{wipLimit} items'), { wipLimit });
},
boardItemsSizeExceedsMax() {
return this.list.maxIssueCount > 0 && this.listItemsCount > this.list.maxIssueCount;
},
boardItemsWeightExceedsMax() {
return this.list.maxIssueWeight > 0 && this.listItemsWeight > this.list.maxIssueWeight;
},
boardLimitExceeded() {
return this.boardItemsSizeExceedsMax || this.boardItemsWeightExceedsMax;
},
hasNextPage() {
return this.currentList?.[`${this.issuableType}s`].pageInfo?.hasNextPage;
},
@ -686,7 +724,7 @@ export default {
:data-board="list.id"
:data-board-type="list.listType"
:class="{
'gl-rounded-bl-base gl-rounded-br-base gl-bg-red-50': boardItemsSizeExceedsMax,
'gl-rounded-bl-base gl-rounded-br-base gl-bg-red-50': boardLimitExceeded,
'gl-overflow-hidden': disableScrollingWhenMutationInProgress,
'gl-overflow-y-auto': !disableScrollingWhenMutationInProgress,
'list-empty': !listItemsCount,
@ -724,7 +762,7 @@ export default {
@appear="onReachingListBottom"
/>
</board-card>
<board-cut-line v-if="boardItemsSizeExceedsMax" :cut-line-text="wipLimitText" />
<board-cut-line v-if="boardLimitExceeded" :cut-line-text="wipLimitText" />
<board-card
v-for="(item, index) in afterCutLine"
ref="issue"

View File

@ -194,7 +194,7 @@ export default {
);
},
totalIssueWeight() {
return this.boardList?.totalIssueWeight;
return parseInt(this.boardList?.totalIssueWeight, 10);
},
canShowTotalWeight() {
return this.weightFeatureAvailable && !this.isLoading;
@ -460,8 +460,8 @@ export default {
<gl-icon class="gl-mr-2" :name="countIcon" :size="14" />
<item-count
v-if="!isLoading"
:items-size="itemsCount"
:max-issue-count="list.maxIssueCount"
:current-count="itemsCount"
:max-count="list.maxIssueCount"
/>
</span>
<!-- EE start -->
@ -469,7 +469,11 @@ export default {
<gl-tooltip :target="() => $refs.weightTooltip" :title="weightCountToolTip" />
<span ref="weightTooltip" class="gl-ml-3 gl-inline-flex" data-testid="weight">
<gl-icon class="gl-mr-2" name="weight" :size="14" />
{{ totalIssueWeight }}
<item-count
v-if="!isLoading"
:current-count="totalIssueWeight"
:max-count="list.maxIssueWeight"
/>
</span>
</template>
<!-- EE end -->

View File

@ -174,6 +174,8 @@ export default {
<board-settings-sidebar-wip-limit
v-if="isWipLimitsOn"
:max-issue-count="activeList.maxIssueCount"
:max-issue-weight="activeList.maxIssueWeight"
:current-limit-metric="list.limitMetric"
:active-list-id="activeListId"
/>
</template>

View File

@ -1,24 +1,29 @@
<script>
import { GlSprintf } from '@gitlab/ui';
export default {
name: 'IssueCount',
components: {
GlSprintf,
},
props: {
maxIssueCount: {
maxCount: {
type: Number,
required: false,
default: 0,
},
itemsSize: {
currentCount: {
type: Number,
required: false,
required: true,
default: 0,
},
},
computed: {
isMaxLimitSet() {
return this.maxIssueCount !== 0;
return this.maxCount !== 0;
},
issuesExceedMax() {
return this.isMaxLimitSet && this.itemsSize > this.maxIssueCount;
exceedsMax() {
return this.isMaxLimitSet && this.currentCount > this.maxCount;
},
},
};
@ -26,13 +31,13 @@ export default {
<template>
<div class="item-count text-nowrap">
<span :class="{ 'gl-text-red-700': issuesExceedMax }" data-testid="board-items-count">
{{ itemsSize }}
<span :class="{ 'gl-text-red-700': exceedsMax }" data-testid="board-items-count">
{{ currentCount }}
</span>
<span v-if="isMaxLimitSet" class="max-issue-size">
<!-- eslint-disable @gitlab/vue-require-i18n-strings -->
{{ `/ ${maxIssueCount}` }}
<!-- eslint-enable @gitlab/vue-require-i18n-strings -->
<gl-sprintf :message="__('/ %{maxCount}')">
<template #maxCount>{{ maxCount }}</template>
</gl-sprintf>
</span>
</div>
</template>

View File

@ -0,0 +1,36 @@
<script>
export default {
name: 'IssueWeightCount',
props: {
issueWeight: {
type: Number,
required: true,
default: 0,
},
maxIssueWeight: {
type: Number,
required: false,
default: 0,
},
},
computed: {
maxLimitText() {
return this.maxIssueWeight !== 0 ? `/ ${this.maxIssueWeight}` : '';
},
issuesExceedMax() {
return this.maxIssueWeight !== 0 && this.issueWeight > this.maxIssueWeight;
},
},
};
</script>
<template>
<div class="weight-count text-nowrap">
<span :class="{ 'gl-text-red-700': issuesExceedMax }" data-testid="board-weight-count">
{{ issueWeight }}
</span>
<span class="max-issue-size">
{{ maxLimitText }}
</span>
</div>
</template>

View File

@ -216,4 +216,18 @@ export const BOARD_CARD_MOVE_TO_POSITIONS_OPTIONS = [
},
];
export const WIP_ITEMS = 'issue_count';
export const WIP_WEIGHT = 'issue_weights';
export const WIP_CATEGORY_LIST = [
{
value: WIP_ITEMS,
text: s__('Boards|Items'),
},
{
value: WIP_WEIGHT,
text: s__('Boards|Weight'),
},
];
export const GroupByParamType = {};

View File

@ -47,7 +47,7 @@ export default {
coveragePercentage: '',
chartOptions: {
yAxis: {
name: __('Bi-weekly code coverage'),
name: __('Code Coverage in %%'),
type: 'value',
min: 0,
max: 100,

View File

@ -119,7 +119,7 @@ export default {
const { timeSpentTo } = this;
if (timeSpentTo) {
timeSpentTo.setDate(timeSpentTo.getDate() + 1);
timeSpentTo.setHours(23, 59, 59, 999);
}
this.queryVariables = {

View File

@ -17,7 +17,6 @@ import { helpPagePath } from '~/helpers/help_page_helper';
import { TYPENAME_CI_JOB_TOKEN_ACCESSIBLE_GROUP } from '~/graphql_shared/constants';
import CrudComponent from '~/vue_shared/components/crud_component.vue';
import ConfirmActionModal from '~/vue_shared/components/confirm_action_modal.vue';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import inboundRemoveProjectCIJobTokenScopeMutation from '../graphql/mutations/inbound_remove_project_ci_job_token_scope.mutation.graphql';
import inboundRemoveGroupCIJobTokenScopeMutation from '../graphql/mutations/inbound_remove_group_ci_job_token_scope.mutation.graphql';
import inboundUpdateCIJobTokenScopeMutation from '../graphql/mutations/inbound_update_ci_job_token_scope.mutation.graphql';
@ -92,8 +91,7 @@ export default {
directives: {
GlTooltip: GlTooltipDirective,
},
mixins: [glFeatureFlagsMixin()],
inject: ['enforceAllowlist', 'fullPath', 'projectAllowlistLimit'],
inject: ['enforceAllowlist', 'fullPath', 'projectAllowlistLimit', 'isJobTokenPoliciesEnabled'],
apollo: {
authLogCount: {
query: getAuthLogCountQuery,
@ -189,9 +187,6 @@ export default {
this.allowlistLoadingMessage.length > 0
);
},
isJobTokenPoliciesEnabled() {
return this.glFeatures.addPoliciesToCiJobToken;
},
ciJobTokenHelpPage() {
return helpPagePath('ci/jobs/ci_job_token', {
anchor: 'control-job-token-access-to-your-project',

View File

@ -1,15 +1,13 @@
<script>
import { GlFormGroup, GlButton, GlFormInput } from '@gitlab/ui';
import { s__, __ } from '~/locale';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import addNamespaceMutation from '../graphql/mutations/inbound_add_group_or_project_ci_job_token_scope.mutation.graphql';
import editNamespaceMutation from '../graphql/mutations/edit_namespace_job_token_scope.mutation.graphql';
import PoliciesSelector from './policies_selector.vue';
export default {
components: { GlFormGroup, GlButton, GlFormInput, PoliciesSelector },
mixins: [glFeatureFlagsMixin()],
inject: ['fullPath'],
inject: ['fullPath', 'isJobTokenPoliciesEnabled'],
props: {
namespace: {
type: Object,
@ -55,7 +53,7 @@ export default {
const variables = { projectPath: this.fullPath, targetPath: this.targetPath };
if (this.glFeatures.addPoliciesToCiJobToken) {
if (this.isJobTokenPoliciesEnabled) {
variables.defaultPermissions = this.defaultPermissions;
variables.jobTokenPolicies = this.defaultPermissions ? [] : this.jobTokenPolicies;
}
@ -106,7 +104,7 @@ export default {
</gl-form-group>
<policies-selector
v-if="glFeatures.addPoliciesToCiJobToken"
v-if="isJobTokenPoliciesEnabled"
:is-default-permissions-selected="defaultPermissions"
:job-token-policies="jobTokenPolicies"
:disabled="isSaving"

View File

@ -2,6 +2,7 @@ import { GlToast } from '@gitlab/ui';
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createDefaultClient from '~/lib/graphql';
import { parseBoolean } from '~/lib/utils/common_utils';
import TokenAccessApp from './components/token_access_app.vue';
import cacheConfig from './graphql/cache_config';
@ -19,8 +20,13 @@ export const initTokenAccess = (containerId = 'js-ci-token-access-app') => {
return false;
}
const { csvDownloadPath, enforceAllowlist, fullPath, projectAllowlistLimit } =
containerEl.dataset;
const {
csvDownloadPath,
enforceAllowlist,
fullPath,
projectAllowlistLimit,
jobTokenPoliciesEnabled,
} = containerEl.dataset;
return new Vue({
el: containerEl,
@ -31,6 +37,7 @@ export const initTokenAccess = (containerId = 'js-ci-token-access-app') => {
enforceAllowlist: JSON.parse(enforceAllowlist),
fullPath,
projectAllowlistLimit: Number(projectAllowlistLimit),
isJobTokenPoliciesEnabled: parseBoolean(jobTokenPoliciesEnabled),
},
render(createElement) {
return createElement(TokenAccessApp);

View File

@ -18,7 +18,6 @@ module Projects
before_action do
push_frontend_feature_flag(:ci_variables_pages, current_user)
push_frontend_feature_flag(:allow_push_repository_for_job_token, @project)
push_frontend_feature_flag(:add_policies_to_ci_job_token, @project)
push_frontend_ability(ability: :admin_project, resource: @project, user: current_user)
push_frontend_ability(ability: :admin_protected_environments, resource: @project, user: current_user)
end

View File

@ -30,7 +30,7 @@ module Mutations
default_value: [],
experiment: { milestone: '17.5' },
description: 'List of policies added to the CI job token scope. Is ignored if ' \
'`add_policies_to_ci_job_token` feature flag is disabled.'
'job token policies are disabled.'
field :ci_job_token_scope_allowlist_entry,
Types::Ci::JobTokenScope::AllowlistEntryType,
@ -46,7 +46,7 @@ module Mutations
def resolve(project_path:, target_path:, default_permissions:, job_token_policies:)
project = authorized_find!(project_path)
target = find_target_path(target_path)
policies_enabled = Feature.enabled?(:add_policies_to_ci_job_token, project)
policies_enabled = project.job_token_policies_enabled?
# Use default permissions if policies feature isn't enabled.
default = policies_enabled ? default_permissions : true

View File

@ -37,8 +37,8 @@ module Mutations
project = authorized_find!(project_path)
target = find_target_using_path(target_path)
unless Feature.enabled?(:add_policies_to_ci_job_token, project)
raise_resource_not_available_error! '`add_policies_to_ci_job_token` feature flag is disabled.'
unless project.job_token_policies_enabled?
raise_resource_not_available_error! 'job token policies are disabled.'
end
result = ::Ci::JobTokenScope::UpdatePoliciesService

View File

@ -74,11 +74,11 @@ module Types
end
def default_permissions
Feature.enabled?(:add_policies_to_ci_job_token, object.source_project) ? object.default_permissions : true
object.source_project.job_token_policies_enabled? ? object.default_permissions : true
end
def job_token_policies
return unless Feature.enabled?(:add_policies_to_ci_job_token, object.source_project)
return unless object.source_project.job_token_policies_enabled?
object.job_token_policies
end

View File

@ -10,30 +10,8 @@ class ApplicationSetting < ApplicationRecord
ignore_column :pre_receive_secret_detection_enabled, remove_with: '17.9', remove_after: '2025-02-15'
ignore_columns %i[
elasticsearch_aws
elasticsearch_search
elasticsearch_indexing
elasticsearch_username
elasticsearch_aws_region
elasticsearch_aws_access_key
elasticsearch_limit_indexing
elasticsearch_pause_indexing
elasticsearch_requeue_workers
elasticsearch_max_bulk_size_mb
elasticsearch_retry_on_failure
elasticsearch_max_bulk_concurrency
elasticsearch_client_request_timeout
elasticsearch_worker_number_of_shards
elasticsearch_analyzers_smartcn_search
elasticsearch_analyzers_kuromoji_search
elasticsearch_analyzers_smartcn_enabled
elasticsearch_analyzers_kuromoji_enabled
elasticsearch_indexed_field_length_limit
elasticsearch_indexed_file_size_limit_kb
elasticsearch_max_code_indexing_concurrency
security_policy_scheduled_scans_max_concurrency
], remove_with: '17.11', remove_after: '2025-04-17'
INSTANCE_REVIEW_MIN_USERS = 50
GRAFANA_URL_ERROR_MESSAGE = 'Please check your Grafana URL setting in ' \
'Admin area > Settings > Metrics and profiling > Metrics - Grafana'

View File

@ -419,6 +419,12 @@ module Ci
cancel_gracefully?
end
def cancel_gracefully?
return super if Feature.disabled?(:ci_read_runner_manager_features, project)
!!runner_manager&.supports_after_script_on_cancel?
end
def supports_force_cancel?
true
end

View File

@ -4,6 +4,8 @@ module Ci
class Allowlist
include ::Gitlab::Utils::StrongMemoize
delegate :job_token_policies_enabled?, to: :@source_project
def initialize(source_project, direction: :inbound)
@source_project = source_project
@direction = direction
@ -33,8 +35,8 @@ module Ci
end
def add!(target_project, user:, default_permissions: true, policies: [])
job_token_policies = add_policies_to_ci_job_token_enabled ? policies : []
default_permissions = add_policies_to_ci_job_token_enabled ? default_permissions : true
job_token_policies = job_token_policies_enabled? ? policies : []
default_permissions = job_token_policies_enabled? ? default_permissions : true
Ci::JobToken::ProjectScopeLink.create!(
source_project: @source_project,
@ -47,8 +49,8 @@ module Ci
end
def add_group!(target_group, user:, default_permissions: true, policies: [])
job_token_policies = add_policies_to_ci_job_token_enabled ? policies : []
default_permissions = add_policies_to_ci_job_token_enabled ? default_permissions : true
job_token_policies = job_token_policies_enabled? ? policies : []
default_permissions = job_token_policies_enabled? ? default_permissions : true
Ci::JobToken::GroupScopeLink.create!(
source_project: @source_project,
@ -90,7 +92,7 @@ module Ci
def bulk_add_projects!(target_projects, user:, autopopulated: false, policies: [])
now = Time.zone.now
job_token_policies = add_policies_to_ci_job_token_enabled ? policies : []
job_token_policies = job_token_policies_enabled? ? policies : []
projects = target_projects.map do |target_project|
Ci::JobToken::ProjectScopeLink.new(
@ -109,7 +111,7 @@ module Ci
def bulk_add_groups!(target_groups, user:, autopopulated: false, policies: [])
now = Time.zone.now
job_token_policies = add_policies_to_ci_job_token_enabled ? policies : []
job_token_policies = job_token_policies_enabled? ? policies : []
groups = target_groups.map do |target_group|
Ci::JobToken::GroupScopeLink.new(
@ -127,11 +129,6 @@ module Ci
private
def add_policies_to_ci_job_token_enabled
Feature.enabled?(:add_policies_to_ci_job_token, @source_project)
end
strong_memoize_attr :add_policies_to_ci_job_token_enabled
def group_links_for_target(target_project)
target_group_ids = target_project.parent_groups.pluck(:id)
group_links.where(target_group_id: target_group_ids).order(

View File

@ -37,10 +37,10 @@ module Ci
def policies_allowed?(accessed_project, policies)
return true if self_referential?(accessed_project)
# We capture policies even if the FF is disabled, allowlists are disabled or the project is not allowlisted
# We capture policies even if job token policies or allowlists are disabled, or the project is not allowlisted
Ci::JobToken::Authorization.capture_job_token_policies(policies) if policies.present?
return true unless Feature.enabled?(:add_policies_to_ci_job_token, accessed_project) # the FF is disabled
return true unless accessed_project.job_token_policies_enabled?
return true unless accessed_project.ci_inbound_job_token_scope_enabled? # allowlists are disabled
return false unless inbound_accessible?(accessed_project) # the current project is not allowlisted

View File

@ -165,6 +165,10 @@ module Ci
end
end
def supports_after_script_on_cancel?
!!runtime_features['cancel_gracefully']
end
private
def persist_cached_data?

View File

@ -3485,6 +3485,11 @@ class Project < ApplicationRecord
end
end
def job_token_policies_enabled?
Feature.enabled?(:add_policies_to_ci_job_token, self)
end
strong_memoize_attr :job_token_policies_enabled?
private
def with_redis(&block)

View File

@ -6,7 +6,7 @@ module Ci
include EditScopeValidations
def execute(target, default_permissions, policies)
return unless Feature.enabled?(:add_policies_to_ci_job_token, project)
return unless project.job_token_policies_enabled?
validate_target_exists!(target)
validate_permissions!(target)

View File

@ -339,6 +339,7 @@ module Ci
end
def persist_runtime_features(build, params)
return if Feature.enabled?(:ci_read_runner_manager_features, build.project)
return unless params.dig(:info, :features, :cancel_gracefully)
build.set_cancel_gracefully

View File

@ -4,5 +4,6 @@
csv_download_path: export_job_token_authorizations_namespace_project_settings_ci_cd_path(@project.namespace, @project),
enforce_allowlist: Gitlab::CurrentSettings.enforce_ci_inbound_job_token_scope_enabled?.to_s,
project_allowlist_limit: Ci::JobToken::ProjectScopeLink::PROJECT_LINK_DIRECTIONAL_LIMIT,
job_token_policies_enabled: @project.job_token_policies_enabled?.to_s
}
}

View File

@ -0,0 +1,9 @@
---
name: ci_read_runner_manager_features
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/519966
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184327
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/524630
milestone: '17.11'
group: group::ci platform
type: gitlab_com_derisk
default_enabled: false

View File

@ -0,0 +1,28 @@
# frozen_string_literal: true
class RemoveLeftoverRoutes < Gitlab::Database::Migration[2.2]
disable_ddl_transaction!
restrict_gitlab_migration gitlab_schema: :gitlab_main
milestone '17.11'
class DeletedRecord < MigrationRecord
self.table_name = 'loose_foreign_keys_deleted_records'
include EachBatch
end
class Route < MigrationRecord
end
def up
DeletedRecord
.where(fully_qualified_table_name: 'public.namespaces', status: 1)
.each_batch(column: :id) do |records|
Route.where(namespace_id: records.pluck(:primary_key_value)).delete_all
end
end
def down
# no-op
end
end

View File

@ -0,0 +1,16 @@
# frozen_string_literal: true
class PreparesRouteNamespaceIdFkValidation < Gitlab::Database::Migration[2.2]
milestone '17.11'
FK_NAME = :fk_679ff8213d
def up
# FK to be validated synchronously in https://gitlab.com/gitlab-org/gitlab/-/issues/525273
prepare_async_foreign_key_validation :routes, :namespace_id, name: FK_NAME
end
def down
unprepare_async_foreign_key_validation :routes, :namespace_id, name: FK_NAME
end
end

View File

@ -0,0 +1 @@
9a288f76312fc978f1f024d36fbc510b4e4362653eb032b57d1d4512c183f788

View File

@ -0,0 +1 @@
cfe4f8b92d3c234918132ba444183ac43081e9fd3bec628e29ff063efddc9af1

View File

@ -2,6 +2,7 @@
stage: none
group: unassigned
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
description: Manage your GitLab instance and configure features in the UI.
title: GitLab Admin area
---

View File

@ -2,6 +2,7 @@
stage: Plan
group: Optimize
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
description: Enable and configure ClickHouse for data analytics in GitLab.
title: Use ClickHouse for analytics reports
---

View File

@ -2,6 +2,7 @@
stage: Plan
group: Optimize
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
description: Monitor DevSecOps adoption in your GitLab instance, track feature usage, and get insights into team performance.
title: DevOps adoption by instance
---

View File

@ -125,9 +125,17 @@ Prerequisites:
### Configure the feature to use a self-hosted model
Configure the GitLab Duo feature to send queries to the configured self-hosted model:
Configure the GitLab Duo feature and sub-feature to send queries to the configured self-hosted model:
1. On the left sidebar, at the bottom, select **Admin**.
1. Select **GitLab Duo Self-Hosted**.
1. Select the **AI-powered features** tab.
1. For the feature you want to configure, from the dropdown list, choose the self-hosted model you want to use. For example, `Mistral`.
1. For the feature and sub-feature you want to configure, from the dropdown list, choose the self-hosted model you want to use.
For example, for the the code generation sub-feature under GitLab Duo Code Suggestions, you can select **claude sonnet on bedrock (Claude 3)**.
![GitLab Duo Self-Hosted Feature Configuration](../img/gitlab_duo_self_hosted_feature_configuration_v17_10.png)
#### GitLab Duo Chat sub-feature fall back configuration
When configuring GitLab Duo Chat sub-features, if you do not select a specific self-hosted model for a sub-feature, that sub-feature automatically falls back to using the self-hosted model configured for **General Chat**. This ensures all Chat functionality works even if you have not explicitly configured each sub-feature with its own self-hosted model.

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -19681,29 +19681,6 @@ The edge type for [`WorkItemType`](#workitemtype).
| <a id="workitemtypeedgecursor"></a>`cursor` | [`String!`](#string) | A cursor for use in pagination. |
| <a id="workitemtypeedgenode"></a>`node` | [`WorkItemType`](#workitemtype) | The item at the end of the edge. |
#### `WorkItemWidgetStatusConnection`
The connection type for [`WorkItemWidgetStatus`](#workitemwidgetstatus).
##### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="workitemwidgetstatusconnectionedges"></a>`edges` | [`[WorkItemWidgetStatusEdge]`](#workitemwidgetstatusedge) | A list of edges. |
| <a id="workitemwidgetstatusconnectionnodes"></a>`nodes` | [`[WorkItemWidgetStatus]`](#workitemwidgetstatus) | A list of nodes. |
| <a id="workitemwidgetstatusconnectionpageinfo"></a>`pageInfo` | [`PageInfo!`](#pageinfo) | Information to aid in pagination. |
#### `WorkItemWidgetStatusEdge`
The edge type for [`WorkItemWidgetStatus`](#workitemwidgetstatus).
##### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="workitemwidgetstatusedgecursor"></a>`cursor` | [`String!`](#string) | A cursor for use in pagination. |
| <a id="workitemwidgetstatusedgenode"></a>`node` | [`WorkItemWidgetStatus`](#workitemwidgetstatus) | The item at the end of the edge. |
#### `WorkspaceConnection`
The connection type for [`Workspace`](#workspace).
@ -26800,7 +26777,6 @@ GPG signature for a signed commit.
| <a id="groupadditionalpurchasedstoragesize"></a>`additionalPurchasedStorageSize` | [`Float`](#float) | Additional storage purchased for the root namespace in bytes. |
| <a id="groupaiusagedata"></a>`aiUsageData` {{< icon name="warning-solid" >}} | [`AiUsageData`](#aiusagedata) | **Introduced** in GitLab 17.5. **Status**: Experiment. AI-related data. |
| <a id="groupallowstalerunnerpruning"></a>`allowStaleRunnerPruning` | [`Boolean!`](#boolean) | Indicates whether to regularly prune stale group runners. Defaults to false. |
| <a id="groupallowedstatuses"></a>`allowedStatuses` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusConnection`](#workitemwidgetstatusconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. Allowed statuses for the group. |
| <a id="groupamazons3configurations"></a>`amazonS3Configurations` | [`AmazonS3ConfigurationTypeConnection`](#amazons3configurationtypeconnection) | Amazon S3 configurations that receive audit events belonging to the group. (see [Connections](#connections)) |
| <a id="groupautodevopsenabled"></a>`autoDevopsEnabled` | [`Boolean`](#boolean) | Indicates whether Auto DevOps is enabled for all projects within the group. |
| <a id="groupavatarurl"></a>`avatarUrl` | [`String`](#string) | Avatar URL of the group. |
@ -32160,7 +32136,6 @@ Product analytics events for a specific month and year.
| <a id="namespaceactualrepositorysizelimit"></a>`actualRepositorySizeLimit` | [`Float`](#float) | Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. |
| <a id="namespaceactualsizelimit"></a>`actualSizeLimit` | [`Float`](#float) | The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. |
| <a id="namespaceadditionalpurchasedstoragesize"></a>`additionalPurchasedStorageSize` | [`Float`](#float) | Additional storage purchased for the root namespace in bytes. |
| <a id="namespaceallowedstatuses"></a>`allowedStatuses` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusConnection`](#workitemwidgetstatusconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. Allowed statuses for the namespace. |
| <a id="namespaceavatarurl"></a>`avatarUrl` | [`String`](#string) | URL to avatar image file of the namespace. |
| <a id="namespacecicdsettings"></a>`ciCdSettings` {{< icon name="warning-solid" >}} | [`CiCdSettings`](#cicdsettings) | **Introduced** in GitLab 17.9. **Status**: Experiment. Namespace CI/CD settings for the namespace. |
| <a id="namespacecontainslockedprojects"></a>`containsLockedProjects` | [`Boolean`](#boolean) | Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. |
@ -34021,7 +33996,6 @@ Project-level settings for product analytics provider.
| <a id="projectaiusagedata"></a>`aiUsageData` {{< icon name="warning-solid" >}} | [`AiUsageData`](#aiusagedata) | **Introduced** in GitLab 17.5. **Status**: Experiment. AI-related data. |
| <a id="projectaixrayreports"></a>`aiXrayReports` {{< icon name="warning-solid" >}} | [`AiXrayReportConnection!`](#aixrayreportconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. X-ray reports of the project. |
| <a id="projectallowmergeonskippedpipeline"></a>`allowMergeOnSkippedPipeline` | [`Boolean`](#boolean) | If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. |
| <a id="projectallowedstatuses"></a>`allowedStatuses` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusConnection`](#workitemwidgetstatusconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. Allowed statuses for the project. |
| <a id="projectallowsmultiplemergerequestassignees"></a>`allowsMultipleMergeRequestAssignees` | [`Boolean!`](#boolean) | Project allows assigning multiple users to a merge request. |
| <a id="projectallowsmultiplemergerequestreviewers"></a>`allowsMultipleMergeRequestReviewers` | [`Boolean!`](#boolean) | Project allows assigning multiple reviewers to a merge request. |
| <a id="projectapifuzzingciconfiguration"></a>`apiFuzzingCiConfiguration` | [`ApiFuzzingCiConfiguration`](#apifuzzingciconfiguration) | API fuzzing configuration for the project. |
@ -40277,6 +40251,20 @@ Represents total number of work items for the represented states.
| <a id="workitemstatecountstypeclosed"></a>`closed` | [`Int`](#int) | Number of work items with state CLOSED for the project or group. |
| <a id="workitemstatecountstypeopened"></a>`opened` | [`Int`](#int) | Number of work items with state OPENED for the project or group. |
### `WorkItemStatus`
Represents status.
#### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="workitemstatuscolor"></a>`color` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 17.11. **Status**: Experiment. Color of the status. |
| <a id="workitemstatusiconname"></a>`iconName` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 17.11. **Status**: Experiment. Icon name of the status. |
| <a id="workitemstatusid"></a>`id` {{< icon name="warning-solid" >}} | [`GlobalID`](#globalid) | **Introduced** in GitLab 17.11. **Status**: Experiment. ID of the status. |
| <a id="workitemstatusname"></a>`name` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 17.11. **Status**: Experiment. Name of the status. |
| <a id="workitemstatusposition"></a>`position` {{< icon name="warning-solid" >}} | [`Int`](#int) | **Introduced** in GitLab 17.11. **Status**: Experiment. Position of the status within its category. |
### `WorkItemTextFieldValue`
#### Fields
@ -40496,7 +40484,7 @@ Represents a Status widget definition.
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="workitemwidgetdefinitionstatusallowedstatuses"></a>`allowedStatuses` {{< icon name="warning-solid" >}} | [`WorkItemWidgetStatusConnection`](#workitemwidgetstatusconnection) | **Introduced** in GitLab 17.8. **Status**: Experiment. Allowed statuses for the work item type. |
| <a id="workitemwidgetdefinitionstatusallowedstatuses"></a>`allowedStatuses` {{< icon name="warning-solid" >}} | [`[WorkItemStatus!]`](#workitemstatus) | **Introduced** in GitLab 17.8. **Status**: Experiment. Allowed statuses for the work item type. |
| <a id="workitemwidgetdefinitionstatustype"></a>`type` | [`WorkItemWidgetType!`](#workitemwidgettype) | Widget type. |
### `WorkItemWidgetDefinitionWeight`
@ -40828,11 +40816,7 @@ Represents status widget.
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="workitemwidgetstatuscolor"></a>`color` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 17.10. **Status**: Experiment. Color of the status. |
| <a id="workitemwidgetstatusiconname"></a>`iconName` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 17.8. **Status**: Experiment. Icon name of the status. |
| <a id="workitemwidgetstatusid"></a>`id` {{< icon name="warning-solid" >}} | [`GlobalID`](#globalid) | **Introduced** in GitLab 17.8. **Status**: Experiment. ID of the status. |
| <a id="workitemwidgetstatusname"></a>`name` {{< icon name="warning-solid" >}} | [`String`](#string) | **Introduced** in GitLab 17.8. **Status**: Experiment. Name of the status. |
| <a id="workitemwidgetstatusposition"></a>`position` {{< icon name="warning-solid" >}} | [`Int`](#int) | **Introduced** in GitLab 17.10. **Status**: Experiment. Position of the status within its category. |
| <a id="workitemwidgetstatusstatus"></a>`status` {{< icon name="warning-solid" >}} | [`WorkItemStatus`](#workitemstatus) | **Introduced** in GitLab 17.11. **Status**: Experiment. Status assigned to work item. |
| <a id="workitemwidgetstatustype"></a>`type` | [`WorkItemWidgetType`](#workitemwidgettype) | Widget type. |
### `WorkItemWidgetTestReports`

View File

@ -26,7 +26,13 @@ This guide helps non-Python developers get started with Python quickly and effic
curl --silent --show-error --location "https://install.python-poetry.org" | python3 -
```
- Make sure to ready the Poetry installation [guide](https://python-poetry.org/docs/) for full installation details
- Poetry can also be installed with Mise:
```shell
mise install poetry
```
- Make sure to read the Poetry installation [guide](https://python-poetry.org/docs/) for full installation details
- Once installed, create a new Python project with Poetry:

View File

@ -27,19 +27,17 @@ GitLab is [transparent](https://handbook.gitlab.com/handbook/values/#transparenc
As GitLab Duo features mature, the documentation will be updated to clearly state
how and where you can access these features.
## Implementing GitLab Duo
## GitLab Duo language models
You can implement GitLab Duo in the following ways:
The language models that are the source for GitLab Duo depend on where you're using it.
- On GitLab.com, use the default GitLab AI vendor models and the cloud-based AI
gateway that is hosted by GitLab.
- On GitLab Self-Managed:
- On GitLab.com: GitLab hosts the models and connects to them through the cloud-based AI gateway.
- On GitLab Self-Managed, there are two options:
- [Use the default option of GitLab AI vendor models and the cloud-based AI gateway that is hosted by GitLab](setup.md).
- Use [GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md)
to self-host the AI gateway and language models. You can use GitLab AI vendor models or a
supported language model. This provides full control over your data and
security. GitLab Duo Code Suggestions and Chat are supported.
- **GitLab** can [host the models and the cloud-based AI gateway](setup.md).
- **Your organization** can [use GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md),
which means you host the AI gateway and language models. You can use GitLab AI vendor models
or the other supported language models.
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://youtu.be/TQoO3sFnb28?si=w_gFAYLYIzPEbhEl)
<!-- Video published on 2025-02-20 -->

View File

@ -7,6 +7,8 @@ require_relative '../config/environment'
require_relative 'helpers/groups'
require_relative 'helpers/milestones'
require_relative 'helpers/git_diff_parser'
require_relative 'helpers/ai_editor'
require_relative 'prompts/remove_feature_flags'
module Keeps
# This is an implementation of a ::Gitlab::Housekeeper::Keep. This keep will locate any feature flag definition file
@ -20,12 +22,14 @@ module Keeps
# ```
class DeleteOldFeatureFlags < ::Gitlab::Housekeeper::Keep
CUTOFF_MILESTONE_OLD = 12
Error = Class.new(StandardError)
GREP_IGNORE = [
'locale/',
'db/structure.sql'
].freeze
ROLLOUT_ISSUE_URL_REGEX = %r{\Ahttps://gitlab\.com/(?<project_path>.*)/-/issues/(?<issue_iid>\d+)\z}
API_ISSUE_URL = "https://gitlab.com/api/v4/projects/%<project_path>s/issues/%<issue_iid>s"
API_ISSUE_DISCUSSIONS_URL = "https://gitlab.com/api/v4/projects/%<project_path>s/issues/%<issue_iid>s/notes?per_page=100"
FEATURE_FLAG_LOG_ISSUES_URL = "https://gitlab.com/gitlab-com/gl-infra/feature-flag-log/-/issues/?search=%<feature_flag_name>s&sort=created_date&state=all&label_name%%5B%%5D=host%%3A%%3Agitlab.com"
def each_change
@ -38,37 +42,54 @@ module Keeps
private
def prepare_change(feature_flag)
def can_remove_ff?(feature_flag, identifiers, latest_feature_flag_status)
if feature_flag.milestone.nil?
@logger.puts "#{feature_flag.name} has no milestone set!"
return
return false
end
return unless milestones_helper.before_cuttoff?(
milestone: feature_flag.milestone,
milestones_ago: CUTOFF_MILESTONE_OLD)
unless milestones_helper.before_cuttoff?(milestone: feature_flag.milestone, milestones_ago: CUTOFF_MILESTONE_OLD)
@logger.puts "#{feature_flag.name} cannot be removed as it is after the cutoff."
return false
end
change = ::Gitlab::Housekeeper::Change.new
change.changelog_type = 'removed'
change.title = "Delete the `#{feature_flag.name}` feature flag"
change.identifiers = [self.class.name.demodulize, feature_flag.name]
unless matches_filter_identifiers?(identifiers)
@logger.puts "#{feature_flag.name} cannot be removed as it is not matching passed filter."
return false
end
FileUtils.rm(feature_flag.path)
if feature_flag.default_enabled
@logger.puts "#{feature_flag.name} is default enabled moving to remove directly."
return true
end
change.changed_files = [feature_flag.path]
if feature_flag_rollout_issue_url(feature_flag) == "(missing URL)"
@logger.puts "#{feature_flag.name} cannot be removed as it is not having a rollout issue."
return false
end
apply_patch_and_cleanup(feature_flag, change)
if latest_feature_flag_status.nil?
@logger.puts "#{feature_flag.name} cannot be removed as we cannot get the status from the rollout issue."
return false
end
# rubocop:disable Gitlab/DocumentationLinks/HardcodedUrl -- Not running inside rails application
change.description = <<~MARKDOWN
if latest_feature_flag_status == :conditional
@logger.puts "#{feature_flag.name} cannot be removed as it is partially rolled out."
return false
end
true
end
# rubocop:disable Gitlab/DocumentationLinks/HardcodedUrl -- Not running inside rails application
def build_description(feature_flag, latest_feature_flag_status)
<<~MARKDOWN
This feature flag was introduced in #{feature_flag.milestone}, which is more than #{CUTOFF_MILESTONE_OLD} milestones ago.
As part of our process we want to ensure [feature flags don't stay too long in the codebase](https://docs.gitlab.com/ee/development/feature_flags/#types-of-feature-flags).
Rollout issue: #{feature_flag_rollout_issue_url(feature_flag)}
#{feature_flag_default_enabled_note(feature_flag.default_enabled)}
<details><summary>Remaining mentions of the feature flag (click to expand)</summary>
```
@ -77,14 +98,45 @@ module Keeps
</details>
**Currently the feature flag is `#{latest_feature_flag_status}` on production**
It is possible that this MR will still need some changes to remove references to the feature flag in the code.
At the moment the `gitlab-housekeeper` is not always capable of removing all references so you must check the diff and pipeline failures to confirm if there are any issues.
It is the responsibility of ~"#{feature_flag.group}" to push those changes to this branch.
If they are already removing this feature flag in another merge request then they can just close this merge request.
You can also see the status of the rollout by checking #{feature_flag_rollout_issue_url(feature_flag)} and #{format(FEATURE_FLAG_LOG_ISSUES_URL, feature_flag_name: feature_flag.name)}.
## TODO for the reviewers before merging this MR
- [ ] See the status of the rollout by checking #{feature_flag_rollout_issue_url(feature_flag)}, #{format(FEATURE_FLAG_LOG_ISSUES_URL, feature_flag_name: feature_flag.name)}
- [ ] Verify the feature flag status via chatops by running `/chatops run feature get #{feature_flag.name}`.
- [ ] [Search for references to `#{feature_flag.name.split('_').map(&:capitalize).join}` in frontnd part of code](https://gitlab.com/search?project_id=278964&scope=blobs&search=#{feature_flag.name.split('_').map(&:capitalize).join}&regex=false)
- [ ] [Search for references to `#{feature_flag.name}` in code](https://gitlab.com/search?project_id=278964&scope=blobs&search=#{feature_flag.name}&regex=false)
- [ ] Check if we need to remove any Gem or other related code by looking at the changes in #{feature_flag.introduced_by_url}
MARKDOWN
# rubocop:enable Gitlab/DocumentationLinks/HardcodedUrl
end
# rubocop:enable Gitlab/DocumentationLinks/HardcodedUrl
def prepare_change(feature_flag)
identifiers = [self.class.name.demodulize, feature_flag.name]
latest_feature_flag_status = get_latest_feature_flag_status(feature_flag)
return unless can_remove_ff?(feature_flag, identifiers, latest_feature_flag_status)
change = ::Gitlab::Housekeeper::Change.new
change.changelog_type = 'removed'
change.title = "Delete the `#{feature_flag.name}` feature flag"
change.identifiers = identifiers
FileUtils.rm(feature_flag.path)
change.changed_files = [feature_flag.path]
applied = apply_patch_or_ask_ai(feature_flag, change)
unless applied
@logger.puts "#{feature_flag.name} aborting because change not applied."
change.abort!
return change
end
change.description = build_description(feature_flag, latest_feature_flag_status)
change.labels = [
'maintenance::removal',
@ -103,20 +155,6 @@ module Keeps
change
end
def feature_flag_default_enabled_note(feature_flag_default_enabled)
if feature_flag_default_enabled
<<~NOTE
The feature flag is enabled by default. Unless it's disabled on GitLab.com, you should keep the feature-flag
code branch, otherwise, keep the other branch.
NOTE
else
<<~NOTE
The feature flag isn't enabled by default. If it's enabled on GitLab.com, you should keep the feature-flag
code branch, otherwise, keep the other branch.
NOTE
end
end
def feature_flag_grep(feature_flag_name)
Gitlab::Housekeeper::Shell.execute(
'git',
@ -132,24 +170,50 @@ module Keeps
# git grep returns error status if nothing is found
end
def apply_patch_and_cleanup(feature_flag, change)
return unless patch_exists?(feature_flag)
def ai_patch(feature_flag, change)
files_mentioning_feature_flag(feature_flag.name).each do |file|
flag_enabled = get_latest_feature_flag_status(feature_flag) == :enabled
user_message = remove_feature_flag_prompts.fetch(feature_flag, file, flag_enabled)
return false unless user_message
applied = ai_helper.ask_for_and_apply_patch(user_message, file)
return false unless applied
unless ::Gitlab::Housekeeper::Shell.rubocop_autocorrect(file)
@logger.puts "#{feature_flag.name} aborting because autocorrect failed for file #{file}"
change.abort!
return change
end
change.changed_files << file
end
end
def apply_patch_or_ask_ai(feature_flag, change)
return apply_patch(feature_flag, change) if patch_exists?(feature_flag)
ai_patch(feature_flag, change)
end
def apply_patch(feature_flag, change)
change.changed_files << patch_path(feature_flag)
change.changed_files += extract_changed_files_from_patch(feature_flag)
apply_patch(feature_flag)
begin
Gitlab::Housekeeper::Shell.execute('git', 'apply', patch_path(feature_flag))
rescue ::Gitlab::Housekeeper::Shell::Error
return false
end
FileUtils.rm(patch_path(feature_flag))
true
end
def patch_exists?(feature_flag)
File.file?(patch_path(feature_flag))
end
def apply_patch(feature_flag)
Gitlab::Housekeeper::Shell.execute('git', 'apply', patch_path(feature_flag))
end
def patch_path(feature_flag)
feature_flag.path.sub(/.yml$/, '.patch')
end
@ -167,16 +231,18 @@ module Keeps
return unless rollout_issue && rollout_issue[:assignees]
rollout_issue[:assignees]
rollout_issue[:assignees].pluck(:username) # rubocop:disable CodeReuse/ActiveRecord -- We need to collect the usernames from array of hashes.
end
def get_rollout_issue(rollout_issue_url)
matches = ROLLOUT_ISSUE_URL_REGEX.match(rollout_issue_url)
return unless matches
response = Gitlab::HTTP_V2.try_get( # rubocop:disable Gitlab/HttpV2 -- Not running inside rails application
# rubocop:disable Gitlab/HttpV2 -- Not running inside rails application
response = Gitlab::HTTP_V2.try_get(
format(API_ISSUE_URL, project_path: CGI.escape(matches[:project_path]), issue_iid: matches[:issue_iid])
)
# rubocop:enable Gitlab/HttpV2
unless (200..299).cover?(response.code)
raise Error,
@ -186,16 +252,67 @@ module Keeps
Gitlab::Json.parse(response.body, symbolize_names: true)
end
def each_feature_flag
all_feature_flag_files.map do |f|
yield(
Feature::Definition.new(f, YAML.safe_load_file(f, permitted_classes: [Symbol], symbolize_names: true))
)
def get_latest_feature_flag_status(feature_flag)
return :enabled if feature_flag.default_enabled
rollout_issue_url = feature_flag_rollout_issue_url(feature_flag)
matches = ROLLOUT_ISSUE_URL_REGEX.match(rollout_issue_url)
return unless matches
# rubocop:disable Gitlab/HttpV2 -- Not running inside rails application
response = Gitlab::HTTP_V2.try_get(
format(API_ISSUE_DISCUSSIONS_URL, project_path: CGI.escape(matches[:project_path]),
issue_iid: matches[:issue_iid]), { headers: { 'Private-Token' => ENV.fetch('HOUSEKEEPER_GITLAB_API_TOKEN') } }
)
# rubocop:enable Gitlab/HttpV2
unless (200..299).cover?(response.code)
raise Error, "Failed with response code: #{response.code} and body:\n#{response.body}"
end
parse_latest_feature_flag_status(Gitlab::Json.parse(response.body, symbolize_names: true))
end
def parse_latest_feature_flag_status(notes)
# Filter notes by cogbot and gprd mentions
cogbot_notes = notes.select do |note|
note[:author][:username] == 'cogbot' && !note[:system] && note[:body].include?('on **gprd**')
end
return if cogbot_notes.empty?
# Get latest note
latest_note = cogbot_notes.max_by { |note| Time.parse(note[:created_at]) }
message = latest_note[:body]
case message
when /set to `false`/ then :disabled
when /scoped to/ then :conditional
when /set to `true`/ then :enabled
end
end
def each_feature_flag
all_feature_flag_files.map do |f|
feature_definition = Feature::Definition.new(f,
YAML.safe_load_file(f, permitted_classes: [Symbol], symbolize_names: true))
next unless global_search_flag?(feature_definition)
yield(feature_definition)
end
end
def global_search_flag?(feature_flag)
feature_flag.group == 'group::global search'
end
def all_feature_flag_files
Dir.glob("{,ee/}config/feature_flags/{development,gitlab_com_derisk}/*.yml")
Dir.glob("{,ee/}config/feature_flags/{development,gitlab_com_derisk,ops,beta}/*.yml")
end
def remove_feature_flag_prompts
@remove_feature_flag_prompts ||= ::Keeps::Prompts::RemoveFeatureFlags.new(@logger)
end
def groups_helper
@ -209,5 +326,24 @@ module Keeps
def git_diff_parser_helper
@git_diff_parser_helper ||= ::Keeps::Helpers::GitDiffParser.new
end
def ai_helper
::Keeps::Helpers::AiEditor.new
end
def files_mentioning_feature_flag(feature_flag_name)
files = Gitlab::Housekeeper::Shell.execute(
'git',
'grep',
'--name-only',
'-i',
"feature.*#{feature_flag_name}",
'--',
*(GREP_IGNORE.map { |path| ":^#{path}" })
)
return [] unless files
files.split("\n")
end
end
end

View File

@ -0,0 +1,89 @@
# frozen_string_literal: true
module Keeps
module Helpers
class AiEditor
START_OLD_CODE = '<old_code>'
END_OLD_CODE = '</old_code>'
START_NEW_CODE = '<new_code>'
END_NEW_CODE = '</new_code>'
PATCH_SYSTEM_MESSAGE = File.read(File.expand_path('patch_system_message.md', __dir__))
AI_MODEL = 'claude-3-7-sonnet-20250219'
ANTHROPIC_API = 'https://api.anthropic.com/v1/messages'
attr_reader :model, :token
def initialize(model: AI_MODEL, token: nil)
@model = model
@token = token || ENV['ANTHROPIC_API_KEY']
raise ArgumentError, 'Anthropic API token is required' if @token.blank?
end
def ask_for_and_apply_patch(user_message, file)
user_message += <<~MARKDOWN
<source_code>
#{File.read(file)}
</source_code>
MARKDOWN
puts user_message
response = request(PATCH_SYSTEM_MESSAGE, user_message)
data = Gitlab::Json.parse(response.body)
text = data.dig('content', 0, 'text')
apply_patch(file, text)
end
private
def apply_patch(file, ai_response)
return false if ai_response.empty?
fixed_code = File.read(file)
changes = extract_changes_from_blocks(ai_response)
return false if changes.empty?
changes.each do |change|
old_code, new_code = change
return false if old_code.nil? || new_code.nil?
fixed_code.gsub!(old_code.lstrip, new_code.lstrip)
end
File.write(file, fixed_code)
true
end
def extract_changes_from_blocks(llm_patch)
old_code_regex = /(?<=#{Regexp.escape(START_OLD_CODE)}).*?(?=#{Regexp.escape(END_OLD_CODE)})/mo
old_code_match_data = llm_patch.scan(old_code_regex)
new_code_regex = /(?<=#{Regexp.escape(START_NEW_CODE)}).*?(?=#{Regexp.escape(END_NEW_CODE)})/mo
new_code_match_data = llm_patch.scan(new_code_regex)
old_code_match_data.zip(new_code_match_data)
end
def request(system, message)
::HTTParty.post(
ANTHROPIC_API,
headers: {
'x-api-key' => token
},
body: {
system: system,
model: model,
max_tokens: 4096,
messages: [
{ role: 'user', content: message }
]
}.to_json,
read_timeout: 60
)
end
end
end
end

View File

@ -15,6 +15,10 @@ module Keeps
milestones[current_milestone_index + milestones_ago].version
end
def next_milestone
milestones[current_milestone_index.pred].version
end
def upcoming_milestones
milestones.select { |milestone| Date.parse(milestone.date).future? }.reverse
end

View File

@ -0,0 +1,26 @@
Your job is to update code. The user will provide you with the code inside of <source_code> tags as well as instructions about what you need to change in the code.
Present your solution in the following format:
<fixed_code>
<old_code>
[Include the exact section of code plus 2 lines above and 2 lines below for context]
</old_code>
<new_code>
[Include the updated code snippet, plus 2 lines above and 2 lines below for context - that needs to be same lines as for <old_code>]
</new_code>
</fixed_code>
1. If there are multiple changes needed, repeat the <old_code> and <new_code> structure for each fix.
2. Ensure that your fixes address the specific user request without changing any other functionality of the code.
3. Include all changes that are necessary to make the <new_code> parts work.
4. If you need to add new lines of code as part of your fix, include them in the <new_code> section and adjust the context lines accordingly.
5. If you need to remove lines of code as part of your fix, omit them from the <new_code> section and adjust the context lines accordingly.
Remember to maintain the structure and formatting of the original code as much as possible, only making changes necessary to address the user's request.
Provide your complete response, including all fixes, within a single set of <fixed_code> tags.

View File

@ -0,0 +1,93 @@
# frozen_string_literal: true
module Keeps
module Prompts
class RemoveFeatureFlags
attr_reader :logger
def initialize(logger)
@logger = logger
end
def fetch(feature_flag, file, flag_enabled)
if file.end_with?('_spec.rb')
prompt_rspec(feature_flag, file, flag_enabled)
elsif file.end_with?('.rb')
prompt_ruby(feature_flag, file, flag_enabled)
elsif file.end_with?('.md')
prompt_markdown(feature_flag, file)
else
logger.puts("Unexpected file extension in #{file} referencing feature flag #{feature_flag.name}. Skipping.")
end
end
private
def milestones_helper
@milestones_helper ||= ::Keeps::Helpers::Milestones.new
end
def prompt_shared(feature_flag, file, flag_enabled)
if flag_enabled
<<~MARKDOWN
Your job is to remove old feature flags from code. The feature flag has already been enabled and any references to it should be removed and any dead code paths that are only used when the feature flag is disabled should also be removed.
The feature flag is called `#{feature_flag.name}`.
The code below is in a file named `#{file}` and the code may contain references to the feature flag. It's possible this code does not contain explicit reference the feature flag. In that case make no changes.
Once you are done with the changes make sure to run rubocop as well and reformat the code also remove any dead code and unreachable code that you see after the refactoring.
MARKDOWN
else
<<~MARKDOWN
Your job is to remove old feature flags from code. The feature flag has been disabled and any references to it should be removed and any dead code paths that are only used when the feature flag is enabled should also be removed.
The feature flag is called `#{feature_flag.name}`.
The code below is in a file named `#{file}` and the code may contain references to the feature flag. It's possible this code does not contain explicit reference the feature flag. In that case make no changes.
Once you are done with the changes make sure to run rubocop as well and reformat the code also remove any dead code and unreachable code that you see after the refactoring.
MARKDOWN
end
end
def prompt_ruby(feature_flag, file, flag_enabled)
<<~MARKDOWN
#{prompt_shared(feature_flag, file, flag_enabled)}
Feature flags are checked using `Feature.enabled?(:#{feature_flag.name})` and stubbed in tests using `stub_feature_flag(#{feature_flag.name}: false)`. If you see code that does not use the feature flag you should return the code unchanged exactly as it was.
#{ruby_feature_flag_instructions(feature_flag, flag_enabled)}
MARKDOWN
end
def ruby_feature_flag_instructions(feature_flag, flag_enabled)
<<~MARKDOWN
If you see a branch of logic with `if Feature.enabled?(:#{feature_flag.name})` you should simplify the logic assuming the check returns `#{flag_enabled}`. If you find a method that is returning `Feature.enabled?(:#{feature_flag.name})` then you should return `#{flag_enabled}` instead. You may also see `Feature.disabled?(:#{feature_flag.name})` and this is just the opposite of `enabled?` and you should assume this is always returning `#{!flag_enabled}`.
MARKDOWN
end
def prompt_rspec(feature_flag, file, flag_enabled)
<<~MARKDOWN
#{prompt_ruby(feature_flag, file, flag_enabled)}
#{rspec_instructions(flag_enabled)}
MARKDOWN
end
def rspec_instructions(flag_enabled)
<<~MARKDOWN
Branches of tests that have stubbed the feature flag as #{!flag_enabled ? 'enabled' : 'disabled'} should be entirely removed. Pay close attention to the stubbed feature flag values to ensure you remove all redundant test coverage. Note that all feature flags are enabled by default in specs so you can assume branches without `stub_feature_flag` are behaving as though it is enabled. And if you find any branches of code that are calling `stub_feature_flag` for this feature flag and setting it to `true` you should simply remove the call to `stub_feature_flag` as it is redundant#{flag_enabled ? '' : ' also remove those blocks where the feature flag is enabled'}. You are likely to find whole rspec `context` blocks with the feature flag disabled. Be sure to #{flag_enabled ? 'delete' : 'keep'} the entire context block in that case.
MARKDOWN
end
def prompt_markdown(feature_flag, file)
<<~MARKDOWN
#{prompt_shared(feature_flag, file, true)}
When updating the markdown history notes you should not remove history notes that refer to the feature flag but instead just add a new history note. History notes start with `>- `. For this feature flag if you see existing history notes then you can add exactly this history note:
```
> - [Generally available](#{feature_flag.rollout_issue_url}) in GitLab #{milestones_helper.next_milestone}. Feature flag `#{feature_flag.name}` removed.
```
Other markdown references that refer to this feature flag, aside from history notes, can just be removed.
MARKDOWN
end
end
end
end

View File

@ -1869,6 +1869,9 @@ msgstr ""
msgid "/"
msgstr ""
msgid "/ %{maxCount}"
msgstr ""
msgid "/day"
msgstr ""
@ -9331,9 +9334,6 @@ msgstr ""
msgid "BeyondIdentity|Verify that GPG keys are authorized by Beyond Identity Authenticator."
msgstr ""
msgid "Bi-weekly code coverage"
msgstr ""
msgid "Billable users"
msgstr ""
@ -10180,6 +10180,9 @@ msgstr ""
msgid "Boards|Failed to delete board. Please try again."
msgstr ""
msgid "Boards|Items"
msgstr ""
msgid "Boards|Load more epics"
msgstr ""
@ -10210,6 +10213,12 @@ msgstr ""
msgid "Boards|Switch board"
msgstr ""
msgid "Boards|Weight"
msgstr ""
msgid "Boards|Work in progress limit: %{wipLimit} weight"
msgstr ""
msgid "Bold (%{modifierKey}B)"
msgstr ""
@ -14090,6 +14099,9 @@ msgstr ""
msgid "Code"
msgstr ""
msgid "Code Coverage in %%"
msgstr ""
msgid "Code Coverage: %{coveragePercentage}%{percentSymbol}"
msgstr ""
@ -23091,9 +23103,6 @@ msgstr ""
msgid "Enter new AWS Secret Access Key"
msgstr ""
msgid "Enter number of issues"
msgstr ""
msgid "Enter one or more user ID separated by commas"
msgstr ""
@ -32429,9 +32438,17 @@ msgstr ""
msgid "Italic text"
msgstr ""
msgid "Item - %d"
msgid_plural "Items - %d"
msgstr[0] ""
msgstr[1] ""
msgid "Item with ID: %{id} cannot be added. You don't have permission to perform this action."
msgstr ""
msgid "Items"
msgstr ""
msgid "Items are already linked"
msgstr ""
@ -65923,6 +65940,9 @@ msgstr ""
msgid "Weight %{weight}"
msgstr ""
msgid "Weight - %{maxIssueWeight}"
msgstr ""
msgid "Welcome back! Your account had been deactivated due to inactivity but is now reactivated."
msgstr ""
@ -66377,7 +66397,7 @@ msgstr ""
msgid "Work in progress limit"
msgstr ""
msgid "Work in progress limit: %{wipLimit}"
msgid "Work in progress limit: %{wipLimit} items"
msgstr ""
msgid "Work item %{work_item_reference} has already been added to parent %{parent_reference}."

View File

@ -45,5 +45,9 @@ FactoryBot.define do
trait :created_within_stale_deadline do
created_at { 0.001.seconds.after(Ci::RunnerManager.stale_deadline) }
end
trait :with_cancelable_feature do
runtime_features { { 'cancel_gracefully' => true } }
end
end
end

View File

@ -24,13 +24,16 @@ export default function createComponent({
BoardCard,
},
mountOptions = {},
issuesCount,
issuesCount = undefined,
totalIssueWeight = undefined,
} = {}) {
Vue.use(VueApollo);
const queryVariables = totalIssueWeight !== undefined ? { totalIssueWeight } : { issuesCount };
const fakeApollo = createMockApollo(
[
[listQuery, jest.fn().mockResolvedValue(boardListQueryResponse({ issuesCount }))],
[listQuery, jest.fn().mockResolvedValue(boardListQueryResponse(queryVariables))],
...apolloQueryHandlers,
],
apolloResolvers,
@ -41,10 +44,20 @@ export default function createComponent({
...listProps,
};
if (!Object.prototype.hasOwnProperty.call(listProps, 'issuesCount')) {
if (
!Object.prototype.hasOwnProperty.call(listProps, 'issuesCount') &&
totalIssueWeight === undefined
) {
list.issuesCount = 1;
}
if (
!Object.prototype.hasOwnProperty.call(listProps, 'totalIssueWeight') &&
issuesCount === undefined
) {
list.totalIssueWeight = 0;
}
const component = shallowMount(BoardList, {
apolloProvider: fakeApollo,
propsData: {

View File

@ -1,7 +1,7 @@
import { GlIntersectionObserver } from '@gitlab/ui';
import Draggable from 'vuedraggable';
import { nextTick } from 'vue';
import { DraggableItemTypes, ListType } from 'ee_else_ce/boards/constants';
import { DraggableItemTypes, ListType, WIP_ITEMS, WIP_WEIGHT } from 'ee_else_ce/boards/constants';
import { DETAIL_VIEW_QUERY_PARAM_NAME } from '~/work_items/constants';
import { useFakeRequestAnimationFrame } from 'helpers/fake_request_animation_frame';
import waitForPromises from 'helpers/wait_for_promises';
@ -29,7 +29,7 @@ describe('Board list component', () => {
const findBoardListCount = () => wrapper.find('.board-list-count');
const findBoardCardButtons = () => wrapper.findAll('button.board-card-button');
const maxIssueCountWarningClass = '.gl-bg-red-50';
const maxIssueWeightOrCountWarningClass = '.gl-bg-red-50';
const triggerInfiniteScroll = () => findIntersectionObserver().vm.$emit('appear');
@ -157,7 +157,7 @@ describe('Board list component', () => {
await waitForPromises();
});
it('sets background to warning color', () => {
const block = wrapper.find(maxIssueCountWarningClass);
const block = wrapper.find(maxIssueWeightOrCountWarningClass);
expect(block.exists()).toBe(true);
expect(block.attributes('class').split(' ')).toEqual(
@ -167,7 +167,7 @@ describe('Board list component', () => {
it('shows cut line', () => {
const cutline = wrapper.findComponent(BoardCutLine);
expect(cutline.exists()).toBe(true);
expect(cutline.props('cutLineText')).toEqual('Work in progress limit: 2');
expect(cutline.props('cutLineText')).toEqual('Work in progress limit: 2 items');
});
});
@ -177,7 +177,7 @@ describe('Board list component', () => {
await waitForPromises();
});
it('does not sets background to warning color', () => {
expect(wrapper.find(maxIssueCountWarningClass).exists()).toBe(false);
expect(wrapper.find(maxIssueWeightOrCountWarningClass).exists()).toBe(false);
});
it('does not show cut line', () => {
expect(wrapper.findComponent(BoardCutLine).exists()).toBe(false);
@ -190,14 +190,13 @@ describe('Board list component', () => {
await waitForPromises();
});
it('does not sets background to warning color', () => {
expect(wrapper.find(maxIssueCountWarningClass).exists()).toBe(false);
expect(wrapper.find(maxIssueWeightOrCountWarningClass).exists()).toBe(false);
});
it('does not show cut line', () => {
expect(wrapper.findComponent(BoardCutLine).exists()).toBe(false);
});
});
});
describe('drag & drop issue', () => {
describe('when dragging is allowed', () => {
beforeEach(() => {
@ -402,4 +401,29 @@ describe('Board list component', () => {
});
});
});
describe('when handling Weight vs Items in the wipLimitText', () => {
it('displays weight-based WIP limit when limitMetric is WIP_WEIGHT', () => {
wrapper = createComponent({
listProps: {
maxIssueWeight: 5,
maxIssueCount: 0,
limitMetric: WIP_WEIGHT,
},
});
expect(wrapper.vm.wipLimitText).toBe('Work in progress limit: 5 weight');
});
it('displays item-based WIP limit when limitMetric is WIP_ITEMS', () => {
wrapper = createComponent({
listProps: {
maxIssueWeight: 0,
maxIssueCount: 3,
limitMetric: WIP_ITEMS,
},
});
expect(wrapper.vm.wipLimitText).toBe('Work in progress limit: 3 items');
});
});
});

View File

@ -1,75 +1,84 @@
import { GlSprintf } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import IssueCount from '~/boards/components/item_count.vue';
describe('IssueCount', () => {
let wrapper;
let maxIssueCount;
let itemsSize;
let maxCount;
let currentCount;
const createComponent = (props) => {
wrapper = shallowMount(IssueCount, { propsData: props });
};
const findGlSprintf = () => wrapper.findComponent(GlSprintf);
afterEach(() => {
maxIssueCount = 0;
itemsSize = 0;
maxCount = 0;
currentCount = 0;
});
describe('when maxIssueCount is zero', () => {
describe('when maxCount is zero', () => {
beforeEach(() => {
itemsSize = 3;
currentCount = 3;
createComponent({ maxIssueCount: 0, itemsSize });
createComponent({ maxCount: 0, currentCount });
});
it('contains issueSize in the template', () => {
expect(wrapper.find('[data-testid="board-items-count"]').text()).toEqual(String(itemsSize));
it('contains currentCount in the template', () => {
expect(wrapper.find('[data-testid="board-items-count"]').text()).toEqual(
String(currentCount),
);
});
it('does not contains maxIssueCount in the template', () => {
it('does not contains maxCount in the template', () => {
expect(wrapper.find('.max-issue-size').exists()).toBe(false);
});
});
describe('when maxIssueCount is greater than zero', () => {
describe('when maxCount is greater than zero', () => {
beforeEach(() => {
maxIssueCount = 2;
itemsSize = 1;
maxCount = 2;
currentCount = 1;
createComponent({ maxIssueCount, itemsSize });
createComponent({ maxCount, currentCount });
});
it('contains issueSize in the template', () => {
expect(wrapper.find('[data-testid="board-items-count"]').text()).toEqual(String(itemsSize));
expect(wrapper.find('[data-testid="board-items-count"]').text()).toEqual(
String(currentCount),
);
});
it('contains maxIssueCount in the template', () => {
expect(wrapper.find('.max-issue-size').text()).toContain(String(maxIssueCount));
it('contains maxCount in the template', () => {
expect(findGlSprintf().attributes('message')).toContain(`/ %{maxCount}`);
});
it('does not have red text when issueSize is less than maxIssueCount', () => {
it('does not have red text when issueSize is less than maxCount', () => {
expect(wrapper.classes('.gl-text-red-700')).toBe(false);
});
});
describe('when issueSize is greater than maxIssueCount', () => {
describe('when issueSize is greater than maxCount', () => {
beforeEach(() => {
itemsSize = 3;
maxIssueCount = 2;
currentCount = 3;
maxCount = 2;
createComponent({ maxIssueCount, itemsSize });
createComponent({ maxCount, currentCount });
});
it('contains issueSize in the template', () => {
expect(wrapper.find('[data-testid="board-items-count"]').text()).toEqual(String(itemsSize));
expect(wrapper.find('[data-testid="board-items-count"]').text()).toEqual(
String(currentCount),
);
});
it('contains maxIssueCount in the template', () => {
expect(wrapper.find('.max-issue-size').text()).toContain(String(maxIssueCount));
it('contains maxCount in the template', () => {
expect(findGlSprintf().attributes('message')).toContain(`/ %{maxCount}`);
});
it('has red text', () => {
expect(wrapper.find('.gl-text-red-700').text()).toEqual(String(itemsSize));
expect(wrapper.find('.gl-text-red-700').text()).toEqual(String(currentCount));
});
});
});

View File

@ -0,0 +1,63 @@
import { shallowMount } from '@vue/test-utils';
import IssueWeightCount from '~/boards/components/weight_count.vue';
describe('IssueWeightCount Component', () => {
let wrapper;
const createComponent = (props = {}) => {
wrapper = shallowMount(IssueWeightCount, {
propsData: {
...props,
},
});
};
it('renders issue weight correctly', () => {
createComponent({ issueWeight: 5 });
expect(wrapper.text()).toContain('5');
});
it('renders max issue weight when set', () => {
createComponent({ issueWeight: 5, maxIssueWeight: 10 });
expect(wrapper.text()).toContain('/ 10');
});
it('does not render max issue weight when it is 0', () => {
createComponent({ issueWeight: 5, maxIssueWeight: 0 });
expect(wrapper.text()).not.toContain('/');
});
it('applies red text class when issue weight exceeds max issue weight', () => {
createComponent({ issueWeight: 15, maxIssueWeight: 10 });
expect(wrapper.find('[data-testid="board-weight-count"]').classes()).toContain(
'gl-text-red-700',
);
});
it('does not apply red text class when issue weight is within max limit', () => {
createComponent({ issueWeight: 8, maxIssueWeight: 10 });
expect(wrapper.find('[data-testid="board-weight-count"]').classes()).not.toContain(
'gl-text-red-700',
);
});
it('computes maxLimitText correctly', () => {
createComponent({ maxIssueWeight: 10 });
expect(wrapper.vm.maxLimitText).toBe('/ 10');
});
it('returns an empty string when maxIssueWeight is 0', () => {
createComponent({ maxIssueWeight: 0 });
expect(wrapper.vm.maxLimitText).toBe('');
});
it('computes issuesExceedMax correctly when exceeding max weight', () => {
createComponent({ issueWeight: 12, maxIssueWeight: 10 });
expect(wrapper.vm.issuesExceedMax).toBe(true);
});
it('computes issuesExceedMax correctly when within max weight', () => {
createComponent({ issueWeight: 8, maxIssueWeight: 10 });
expect(wrapper.vm.issuesExceedMax).toBe(false);
});
});

View File

@ -540,6 +540,8 @@ export const mockList = {
loading: false,
issuesCount: 1,
maxIssueCount: 0,
maxIssueWeight: 0,
limitMetric: 'issue_count',
metadata: {
epicsCount: 1,
},
@ -587,6 +589,8 @@ export const mockLabelList = {
loading: false,
issuesCount: 0,
maxIssueCount: 0,
maxIssueWeight: 0,
limitMetric: 'issue_count',
__typename: 'BoardList',
};

View File

@ -128,7 +128,7 @@ describe('Timelogs app', () => {
);
// should be 1 day ahead of the initial To Date value
expect(`${wrapper.vm.queryVariables.endTime}`).toEqual(
'Wed Mar 29 2023 00:00:00 GMT+0000 (Greenwich Mean Time)',
'Tue Mar 28 2023 23:59:59 GMT+0000 (Greenwich Mean Time)',
);
expect(createAlert).not.toHaveBeenCalled();

View File

@ -113,7 +113,7 @@ describe('TokenAccess component', () => {
const createComponent = (
requestHandlers,
{
addPoliciesToCiJobToken = false,
isJobTokenPoliciesEnabled = false,
enforceAllowlist = false,
projectAllowlistLimit = 2,
stubs = {},
@ -125,7 +125,7 @@ describe('TokenAccess component', () => {
fullPath: projectPath,
enforceAllowlist,
projectAllowlistLimit,
glFeatures: { addPoliciesToCiJobToken },
isJobTokenPoliciesEnabled,
},
apolloProvider: createMockApollo(requestHandlers),
mocks: {
@ -908,12 +908,12 @@ describe('TokenAccess component', () => {
});
describe.each`
addPoliciesToCiJobToken | oldQueryCallCount | newQueryCallCount
${true} | ${0} | ${1}
${false} | ${1} | ${0}
isJobTokenPoliciesEnabled | oldQueryCallCount | newQueryCallCount
${true} | ${0} | ${1}
${false} | ${1} | ${0}
`(
'when addPoliciesToCiJobToken feature flag is $addPoliciesToCiJobToken',
({ addPoliciesToCiJobToken, oldQueryCallCount, newQueryCallCount }) => {
'when isJobTokenPoliciesEnabled is $isJobTokenPoliciesEnabled',
({ isJobTokenPoliciesEnabled, oldQueryCallCount, newQueryCallCount }) => {
const oldQueryHandler = jest.fn();
const newQueryHandler = jest.fn();
@ -923,7 +923,7 @@ describe('TokenAccess component', () => {
[inboundGetGroupsAndProjectsWithCIJobTokenScopeQuery, oldQueryHandler],
[getCiJobTokenScopeAllowlistQuery, newQueryHandler],
],
{ addPoliciesToCiJobToken },
{ isJobTokenPoliciesEnabled },
);
});

View File

@ -23,7 +23,7 @@ describe('Namespace form component', () => {
namespace,
addMutationHandler = defaultAddMutationHandler,
editMutationHandler = defaultEditMutationHandler,
addPoliciesToCiJobToken = true,
isJobTokenPoliciesEnabled = true,
} = {}) => {
wrapper = shallowMountExtended(NamespaceForm, {
apolloProvider: createMockApollo([
@ -31,7 +31,7 @@ describe('Namespace form component', () => {
[editNamespaceMutation, editMutationHandler],
]),
propsData: { namespace },
provide: { fullPath: 'full/path', glFeatures: { addPoliciesToCiJobToken } },
provide: { fullPath: 'full/path', isJobTokenPoliciesEnabled },
stubs: {
GlFormInput: stubComponent(GlFormInput, {
props: ['autofocus', 'disabled', 'state', 'placeholder'],
@ -236,8 +236,8 @@ describe('Namespace form component', () => {
});
});
describe('when the addPoliciesToCiJobToken feature flag is disabled', () => {
beforeEach(() => createWrapper({ addPoliciesToCiJobToken: false }));
describe('when isJobTokenPoliciesEnabled is false', () => {
beforeEach(() => createWrapper({ isJobTokenPoliciesEnabled: false }));
it('does not show permissions selector', () => {
expect(findPoliciesSelector().exists()).toBe(false);

View File

@ -7,7 +7,7 @@ RSpec.describe Keeps::DeleteOldFeatureFlags, feature_category: :tooling do
let(:groups) do
{
foo: {
label: 'group::foo',
label: 'group::global search',
backend_engineers: ['@john_doe']
}
}
@ -22,14 +22,14 @@ RSpec.describe Keeps::DeleteOldFeatureFlags, feature_category: :tooling do
File.write(file_path, {
name: feature_flag_name,
milestone: feature_flag_milestone,
group: groups.dig(:foo, :label)
rollout_issue: 'issue_url',
group: groups.dig(:foo, :label),
default_enabled: true
}.to_yaml)
file_path.to_s
end
let(:feature_flag_patch_path) { feature_flag_file.sub(/.yml$/, '.patch') }
let(:milestones_helper) { instance_double(Keeps::Helpers::Milestones) }
subject(:keep) { described_class.new }
@ -39,57 +39,205 @@ RSpec.describe Keeps::DeleteOldFeatureFlags, feature_category: :tooling do
allow(keep).to receive(:all_feature_flag_files).and_return([feature_flag_file])
allow(keep).to receive(:milestones_helper).and_return(milestones_helper)
allow(keep).to receive(:can_remove_ff?).and_return(true)
allow(milestones_helper)
.to receive(:before_cuttoff?).with(milestone: feature_flag_milestone, milestones_ago: 12)
.and_return(true)
File.write(feature_flag_patch_path, <<~DIFF)
diff --git a/foobar.txt b/foobar.txt
index 2ef267e25bd6..0fecdb8e98f3 100644
--- a/foobar.txt
+++ b/foobar.txt
@@ -1 +1 @@
-some content
+some content updated
DIFF
end
after do
FileUtils.rm_rf(tmp_dir)
end
describe '#can_remove_ff?' do
let(:feature_flag) do
instance_double(
Feature::Definition,
name: feature_flag_name,
milestone: feature_flag_milestone,
rollout_issue_url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/123',
default_enabled: false,
group: groups.dig(:foo, :label),
path: feature_flag_file
)
end
let(:identifiers) { ['DeleteOldFeatureFlags', feature_flag_name] }
before do
# Unstub can_remove_ff? for these tests
allow(keep).to receive(:can_remove_ff?).and_call_original
allow(keep).to receive(:logger).and_return(double.as_null_object)
allow(keep).to receive(:matches_filter_identifiers?).and_return(true)
allow(keep).to receive(:feature_flag_rollout_issue_url).and_return(feature_flag.rollout_issue_url)
allow(keep).to receive(:get_latest_feature_flag_status).and_return(:enabled)
end
context 'when milestone is nil' do
let(:feature_flag) do
instance_double(
Feature::Definition,
name: feature_flag_name,
milestone: nil,
rollout_issue_url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/123',
default_enabled: false,
group: groups.dig(:foo, :label),
path: feature_flag_file
)
end
it 'returns false' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, :enabled)).to be false
end
end
context 'when milestone is after cutoff' do
before do
allow(milestones_helper)
.to receive(:before_cuttoff?).with(milestone: feature_flag_milestone, milestones_ago: 12)
.and_return(false)
end
it 'returns false' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, :enabled)).to be false
end
end
context 'when feature flag does not match filter identifiers' do
before do
allow(keep).to receive(:matches_filter_identifiers?).and_return(false)
end
it 'returns false' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, :enabled)).to be false
end
end
context 'when feature flag is default enabled' do
let(:feature_flag) do
instance_double(
Feature::Definition,
name: feature_flag_name,
milestone: feature_flag_milestone,
rollout_issue_url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/123',
default_enabled: true,
group: groups.dig(:foo, :label),
path: feature_flag_file
)
end
it 'returns true' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, :enabled)).to be true
end
end
context 'when feature flag is missing rollout issue URL' do
before do
allow(keep).to receive(:feature_flag_rollout_issue_url).and_return('(missing URL)')
end
it 'returns false' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, :enabled)).to be false
end
end
context 'when latest feature flag status is nil' do
it 'returns false' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, nil)).to be false
end
end
context 'when latest feature flag status is conditional' do
it 'returns false' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, :conditional)).to be false
end
end
context 'when all conditions are met' do
it 'returns true' do
expect(keep.send(:can_remove_ff?, feature_flag, identifiers, :enabled)).to be true
end
end
end
describe '#each_change' do
let(:expected_change) { instance_double(Gitlab::Housekeeper::Change) }
before do
allow(keep).to receive(:can_remove_ff?).and_return(true)
end
it 'returns a Gitlab::Housekeeper::Change', :aggregate_failures do
expect(Gitlab::Housekeeper::Shell).to receive(:execute).with(
'git', 'grep', '--heading', '--line-number', '--break',
feature_flag_name, '--', ':^locale/', ':^db/structure.sql'
)
context 'when we use ai to get the patch' do
let(:expected_change) { instance_double(Gitlab::Housekeeper::Change) }
let(:ai_helper) { instance_double(Keeps::Helpers::AiEditor) }
expect(FileUtils).to receive(:rm).with(feature_flag_file)
expect(Gitlab::Housekeeper::Shell).to receive(:execute).with(
'git', 'apply', feature_flag_patch_path
)
expect(FileUtils).to receive(:rm).with(feature_flag_patch_path)
before do
allow(keep).to receive(:ai_helper).and_return(ai_helper)
allow(keep).to receive(:ask_for_and_apply_patch).and_return(true)
end
actual_changes = keep.each_change(&:itself)
it 'returns a Gitlab::Housekeeper::Change', :aggregate_failures do
expect(Gitlab::Housekeeper::Shell).to receive(:execute).with(
'git', 'grep', '--name-only', '-i', "feature.*#{feature_flag_name}", '--', ':^locale/', ':^db/structure.sql'
)
expect(Gitlab::Housekeeper::Shell).to receive(:execute).with(
'git', 'grep', '--heading', '--line-number', '--break',
feature_flag_name, '--', ':^locale/', ':^db/structure.sql'
)
expect(FileUtils).to receive(:rm).with(feature_flag_file)
expect(actual_changes.size).to eq(1)
actual_changes = keep.each_change(&:itself)
actual_change = actual_changes.first
expect(actual_change).to be_a(Gitlab::Housekeeper::Change)
expect(actual_change.changelog_type).to eq('removed')
expect(actual_change.title).to eq("Delete the `#{feature_flag_name}` feature flag")
expect(actual_change.identifiers).to eq([described_class.name.demodulize, feature_flag_name])
expect(actual_change.changed_files).to contain_exactly(
feature_flag_file,
feature_flag_patch_path,
'foobar.txt'
)
expect(actual_change.reviewers).to eq(['@john_doe'])
expect(actual_change.labels).to eq(['maintenance::removal', 'feature flag', groups.dig(:foo, :label)])
expect(actual_changes.size).to eq(1)
actual_change = actual_changes.first
expect(actual_change).to be_a(Gitlab::Housekeeper::Change)
expect(actual_change.changelog_type).to eq('removed')
expect(actual_change.title).to eq("Delete the `#{feature_flag_name}` feature flag")
expect(actual_change.identifiers).to match_array([described_class.name.demodulize, feature_flag_name])
expect(actual_change.reviewers).to match_array(['@john_doe'])
expect(actual_change.labels).to match_array(['maintenance::removal', 'feature flag', groups.dig(:foo, :label)])
expect(actual_change.changed_files).to match_array([feature_flag_file])
end
end
context 'when we have feature flag patch path present' do
let(:expected_change) { instance_double(Gitlab::Housekeeper::Change) }
let(:feature_flag_patch_path) { feature_flag_file.sub(/.yml$/, '.patch') }
before do
File.write(feature_flag_patch_path, <<~DIFF)
diff --git a/foobar.txt b/foobar.txt
index 2ef267e25bd6..0fecdb8e98f3 100644
--- a/foobar.txt
+++ b/foobar.txt
@@ -1 +1 @@
-some content
+some content updated
DIFF
end
it 'returns a Gitlab::Housekeeper::Change', :aggregate_failures do
expect(Gitlab::Housekeeper::Shell).to receive(:execute).with(
'git', 'grep', '--heading', '--line-number', '--break',
feature_flag_name, '--', ':^locale/', ':^db/structure.sql'
)
expect(FileUtils).to receive(:rm).with(feature_flag_file)
expect(Gitlab::Housekeeper::Shell).to receive(:execute).with('git', 'apply', feature_flag_patch_path)
expect(FileUtils).to receive(:rm).with(feature_flag_patch_path)
actual_changes = keep.each_change(&:itself)
expect(actual_changes.size).to eq(1)
actual_change = actual_changes.first
expect(actual_change).to be_a(Gitlab::Housekeeper::Change)
expect(actual_change.changelog_type).to eq('removed')
expect(actual_change.title).to eq("Delete the `#{feature_flag_name}` feature flag")
expect(actual_change.identifiers).to match_array([described_class.name.demodulize, feature_flag_name])
expect(actual_change.changed_files).to match_array([feature_flag_file, feature_flag_patch_path, 'foobar.txt'])
expect(actual_change.reviewers).to match_array(['@john_doe'])
expect(actual_change.labels).to match_array(['maintenance::removal', 'feature flag', groups.dig(:foo, :label)])
end
end
end
end

View File

@ -103,6 +103,12 @@ RSpec.describe Keeps::Helpers::Milestones, feature_category: :tooling do
end
end
describe '#next_milestone' do
subject { described_class.new.next_milestone }
it { is_expected.to eq('16.10') }
end
describe '#before_cuttoff?' do
let(:milestone) { '16.9' }

View File

@ -0,0 +1,142 @@
# frozen_string_literal: true
require 'spec_helper'
require './keeps/prompts/remove_feature_flags'
require './keeps/helpers/milestones'
RSpec.describe ::Keeps::Prompts::RemoveFeatureFlags, feature_category: :global_search do
let(:logger) do
Object.new.tap do |obj|
def obj.puts(message)
# Just a stub to capture the message
message
end
end
end
let(:feature_flag) { Struct.new(:name, :rollout_issue_url).new('test_feature_flag', 'https://gitlab.com/issue/123') }
let(:milestones_helper) { instance_double(::Keeps::Helpers::Milestones, next_milestone: '15.0') }
describe '#fetch' do
subject(:remove_feature_flags) { described_class.new(logger) }
before do
allow_next_instance_of(described_class) do |instance|
allow(instance).to receive(:milestones_helper).and_return(milestones_helper)
end
end
context 'when flag is enabled' do
let(:flag_enabled) { true }
context 'with Ruby spec files' do
let(:file) { 'path/to/file_spec.rb' }
it 'returns the RSpec prompt for enabled flags' do
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to include('Your job is to remove old feature flags from code')
expect(result).to include('feature flag is called `test_feature_flag`')
expect(result).to include(
'Branches of tests that have stubbed the feature flag as disabled should be entirely removed'
)
end
end
context 'with Ruby files' do
let(:file) { 'path/to/file.rb' }
let(:logic_text) do
'If you see a branch of logic with `if Feature.enabled?(:test_feature_flag)` ' \
'you should simplify the logic assuming the check returns `true`'
end
it 'returns the Ruby prompt for enabled flags' do
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to include('Your job is to remove old feature flags from code')
expect(result).to include('feature flag is called `test_feature_flag`')
expect(result).to include(logic_text)
end
end
context 'with Markdown files' do
let(:file) { 'path/to/file.md' }
it 'returns the Markdown prompt for enabled flags' do
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to include('Your job is to remove old feature flags from code')
expect(result).to include('feature flag is called `test_feature_flag`')
expect(result).to include('When updating the markdown history notes you should not remove history notes')
end
end
context 'with unsupported file types' do
let(:file) { 'path/to/file.js' }
it 'logs a warning and returns nil' do
expect(logger).to receive(:puts).with(/Unexpected file extension/)
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to be_nil
end
end
end
context 'when flag is disabled' do
let(:flag_enabled) { false }
context 'with Ruby spec files' do
let(:file) { 'path/to/file_spec.rb' }
it 'returns the RSpec prompt for disabled flags' do
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to include('Your job is to remove old feature flags from code')
expect(result).to include('feature flag is called `test_feature_flag`')
expect(result).to include('The feature flag has been disabled')
expect(result).to include('Be sure to keep the entire context block in that case')
end
end
context 'with Ruby files' do
let(:file) { 'path/to/file.rb' }
let(:logic_text) do
'If you see a branch of logic with `if Feature.enabled?(:test_feature_flag)` ' \
'you should simplify the logic assuming the check returns `false`'
end
it 'returns the Ruby prompt for disabled flags' do
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to include('Your job is to remove old feature flags from code')
expect(result).to include('feature flag is called `test_feature_flag`')
expect(result).to include('The feature flag has been disabled')
expect(result).to include(logic_text)
end
end
context 'with Markdown files' do
let(:file) { 'path/to/file.md' }
it 'returns the Markdown prompt for markdown files' do
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to include('Your job is to remove old feature flags from code')
expect(result).to include('feature flag is called `test_feature_flag`')
# Even though flag is disabled, the markdown prompt uses the same logic as enabled
expect(result).to include('The feature flag has already been enabled')
end
end
context 'with unsupported file types' do
let(:file) { 'path/to/file.js' }
it 'logs a warning and returns nil' do
expect(logger).to receive(:puts).with(/Unexpected file extension/)
result = remove_feature_flags.fetch(feature_flag, file, flag_enabled)
expect(result).to be_nil
end
end
end
end
end

View File

@ -347,9 +347,11 @@ RSpec.describe API::Helpers, feature_category: :shared do
find_project!
end
context 'when the `add_policies_to_ci_job_token` feature flag is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow_next_found_instance_of(Project) do |project|
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
end
it { is_expected.to eq project }

View File

@ -0,0 +1,76 @@
# frozen_string_literal: true
require 'spec_helper'
require_migration!
RSpec.describe RemoveLeftoverRoutes, :migration, feature_category: :groups_and_projects do
let(:deleted_records) { table(:loose_foreign_keys_deleted_records) }
let(:routes) { table(:routes) }
let(:namespaces) { table(:namespaces) }
let(:organizations) { table(:organizations) }
let(:organization_1) { table(:organizations).create!(name: 'Organization 1', path: 'organization-1') }
let!(:namespace_1) do
namespaces.create!(name: 'Namespace 1', path: 'namespace-1', organization_id: organization_1.id)
end
let!(:namespace_2) do
namespaces.create!(name: 'Namespace 2', path: 'namespace-2', organization_id: organization_1.id)
end
let!(:namespace_3) do
namespaces.create!(name: 'Namespace 3', path: 'namespace-3', organization_id: organization_1.id)
end
let!(:routes_1) do
routes.create!(source_id: namespace_1.id, namespace_id: namespace_1.id, source_type: 'Namespace',
name: namespace_1.name, path: namespace_1.path)
end
let!(:routes_2) do
routes.create!(source_id: namespace_2.id, namespace_id: namespace_2.id, source_type: 'Namespace',
name: namespace_2.name, path: namespace_2.path)
end
let!(:routes_3) do
routes.create!(source_id: namespace_3.id, namespace_id: namespace_3.id, source_type: 'Namespace',
name: namespace_3.name, path: namespace_3.path)
end
before do
deleted_records.create!(fully_qualified_table_name: 'public.namespaces', primary_key_value: namespace_1.id,
status: 1)
# Ignore status 2
deleted_records.create!(fully_qualified_table_name: 'public.namespaces', primary_key_value: namespace_3.id,
status: 2)
end
it 'removes routes for deleted namespaces' do
migrate!
expect(routes.where(id: routes_1.id).exists?).to be(false)
expect(routes.where(id: routes_2.id).exists?).to be(true)
expect(routes.where(id: routes_3.id).exists?).to be(true)
end
it 'does not remove routes for non-deleted namespaces' do
migrate!
expect(routes.find_by(source_id: namespace_2.id)).to be_present
end
it 'handles empty deleted records' do
deleted_records.delete_all
expect { migrate! }.not_to raise_error
expect(routes.count).to eq(3)
end
it 'handles empty routes table' do
routes.delete_all
expect { migrate! }.not_to raise_error
expect(routes.count).to eq(0)
end
end

View File

@ -186,6 +186,10 @@ RSpec.describe Ci::BuildMetadata, feature_category: :continuous_integration do
end
describe 'set_cancel_gracefully' do
before do
stub_feature_flags(ci_read_runner_manager_features: false)
end
it 'sets cancel_gracefully' do
job.set_cancel_gracefully

View File

@ -5795,9 +5795,7 @@ RSpec.describe Ci::Build, feature_category: :continuous_integration, factory_def
context 'when the builds runner supports canceling' do
include_context 'when canceling support'
it 'returns true' do
expect(job.supports_canceling?).to be true
end
specify { expect(job.supports_canceling?).to be true }
end
end
@ -5806,13 +5804,16 @@ RSpec.describe Ci::Build, feature_category: :continuous_integration, factory_def
context 'when the builds runner supports canceling' do
include_context 'when canceling support'
it 'returns true' do
expect(job.supports_force_cancel?).to be true
end
specify { expect(job.supports_force_cancel?).to be true }
end
end
describe '#runtime_runner_features' do
before do
stub_feature_flags(ci_read_runner_manager_features: false)
end
subject do
build.save!
build.reload.cancel_gracefully?

View File

@ -100,9 +100,9 @@ RSpec.describe Ci::JobToken::Allowlist, feature_category: :continuous_integratio
expect(project_link.job_token_policies).to eq(policies)
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(source_project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'adds the project scope link but with empty job token policies' do
@ -152,9 +152,9 @@ RSpec.describe Ci::JobToken::Allowlist, feature_category: :continuous_integratio
expect(group_link.job_token_policies).to eq(policies)
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(source_project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'adds the group scope link but with empty job token policies' do
@ -328,9 +328,9 @@ RSpec.describe Ci::JobToken::Allowlist, feature_category: :continuous_integratio
expect(project_link.job_token_policies).to eq(policies)
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(source_project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'adds the project scope link but with empty job token policies' do
@ -372,9 +372,9 @@ RSpec.describe Ci::JobToken::Allowlist, feature_category: :continuous_integratio
expect(group_link.autopopulated).to be true
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(source_project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'adds the group scope link but with empty job token policies' do

View File

@ -311,9 +311,9 @@ RSpec.describe Ci::JobToken::Scope, feature_category: :continuous_integration, f
it_behaves_like 'capturing job token policies'
end
context 'when the `add_policies_to_ci_job_token` flag is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(accessed_project).to receive(:job_token_policies_enabled?).and_return(false)
end
it { is_expected.to be(true) }

View File

@ -689,4 +689,18 @@ RSpec.describe Ci::RunnerManager, feature_category: :fleet_visibility, type: :mo
it { is_expected.to contain_exactly existing_build }
end
end
describe '#supports_after_script_on_cancel?' do
let(:runner_manager) { build_stubbed(:ci_runner_machine) }
subject { runner_manager.supports_after_script_on_cancel? }
it { is_expected.to be false }
context 'when the feature is available' do
let(:runner_manager) { build_stubbed(:ci_runner_machine, :with_cancelable_feature) }
it { is_expected.to be true }
end
end
end

View File

@ -1361,14 +1361,14 @@ RSpec.describe API::Ci::Pipelines, feature_category: :continuous_integration do
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['status']).to eq('canceling')
end
end
context 'when cancel_gracefully is not supported by the runner' do
it 'cancels builds', :sidekiq_inline do
post api("/projects/#{project.id}/pipelines/#{pipeline.id}/cancel", user)
context 'when cancel_gracefully is not supported by the runner' do
it 'cancels builds', :sidekiq_inline do
post api("/projects/#{project.id}/pipelines/#{pipeline.id}/cancel", user)
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['status']).to eq('canceled')
end
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['status']).to eq('canceled')
end
end
end

View File

@ -18,7 +18,7 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state, feature_catego
let_it_be(:project) { create(:project, namespace: group, shared_runners_enabled: false) }
let_it_be(:pipeline) { create(:ci_pipeline, project: project, ref: 'master') }
let_it_be(:runner) { create(:ci_runner, :project, projects: [project]) }
let_it_be(:runner_manager) { create(:ci_runner_machine, runner: runner) }
let_it_be_with_reload(:runner_manager) { create(:ci_runner_machine, runner: runner) }
let_it_be(:user) { create(:user) }
describe 'PUT /api/v4/jobs/:id' do
@ -255,9 +255,28 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state, feature_catego
end
end
context 'when job is canceling and the FF disabled' do
before do
stub_feature_flags(ci_read_runner_manager_features: false)
job.set_cancel_gracefully
job.cancel!
end
it 'returns :ok with the job status' do
update_job(state: 'running')
job.reload
expect(response).to have_gitlab_http_status(:ok)
expect(response.header['Job-Status']).to eq 'canceling'
expect(job).to be_canceling
end
end
context 'when job is canceling' do
before do
job.set_cancel_gracefully
attributes = attributes_for(:ci_runner_machine, :with_cancelable_feature).slice(:runtime_features)
runner_manager.update!(attributes)
job.cancel!
end

View File

@ -176,9 +176,11 @@ RSpec.describe 'Querying CI_JOB_TOKEN allowlist for a project', feature_category
expect(allowlist['projectsAllowlist']).to eq(expected_projects_allowlist)
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow_next_found_instance_of(Project) do |project|
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
end
it 'returns job token policies as null', :aggregate_failures do

View File

@ -111,13 +111,15 @@ RSpec.describe 'CiJobTokenScopeUpdatePolicies', feature_category: :continuous_in
end
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow_next_found_instance_of(Project) do |project|
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
end
it_behaves_like 'a mutation that returns top-level errors',
errors: ["`add_policies_to_ci_job_token` feature flag is disabled."]
errors: ['job token policies are disabled.']
end
end
end
@ -190,13 +192,15 @@ RSpec.describe 'CiJobTokenScopeUpdatePolicies', feature_category: :continuous_in
end
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow_next_found_instance_of(Project) do |project|
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
end
it_behaves_like 'a mutation that returns top-level errors',
errors: ["`add_policies_to_ci_job_token` feature flag is disabled."]
errors: ['job token policies are disabled.']
end
end
end

View File

@ -25,9 +25,9 @@ RSpec.describe Ci::JobTokenScope::AddGroupService, feature_category: :continuous
expect(group_link.job_token_policies).to eq(policies)
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'adds the group to the scope without the policies', :aggregate_failures do

View File

@ -24,9 +24,9 @@ RSpec.describe Ci::JobTokenScope::AddProjectService, feature_category: :continuo
expect(project_link.job_token_policies).to eq(policies)
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'adds the project to the scope but without the policies', :aggregate_failures do

View File

@ -112,9 +112,9 @@ RSpec.describe Ci::JobTokenScope::UpdatePoliciesService, feature_category: :cont
expect(project_link.job_token_policies).to eq(%w[read_containers read_packages])
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'does not update the policies' do
@ -168,9 +168,9 @@ RSpec.describe Ci::JobTokenScope::UpdatePoliciesService, feature_category: :cont
expect(group_link.job_token_policies).to eq(%w[read_containers read_packages])
end
context 'when feature-flag `add_policies_to_ci_job_token` is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
it 'does not update the policies' do

View File

@ -585,6 +585,7 @@ module Ci
subject { build_on(project_runner, params: params) }
it 'persists the feature to build metadata' do
stub_feature_flags(ci_read_runner_manager_features: false)
subject
expect(pending_job.reload.cancel_gracefully?).to be true

View File

@ -84,9 +84,11 @@ RSpec.shared_examples 'enforcing job token policies' do |policies, expected_succ
it { is_expected.to have_gitlab_http_status(expected_success_status) }
end
context 'when the `add_policies_to_ci_job_token` feature flag is disabled' do
context 'when job token policies are disabled' do
before do
stub_feature_flags(add_policies_to_ci_job_token: false)
allow_next_found_instance_of(Project) do |project|
allow(project).to receive(:job_token_policies_enabled?).and_return(false)
end
end
it { is_expected.to have_gitlab_http_status(expected_success_status) }

View File

@ -27,8 +27,10 @@ RSpec.shared_examples 'a job with artifacts and trace' do |result_is_array: true
end
RSpec.shared_context 'when canceling support' do
let_it_be(:runner_manager) { create(:ci_runner_machine, :with_cancelable_feature) }
before do
job.metadata.set_cancel_gracefully
job.save!
create(:ci_runner_machine_build, build: job, runner_manager: runner_manager)
job.reload_runner_manager
end
end