diff --git a/Gemfile b/Gemfile
index a202b13e78ffb16153436f5ed2551e63b4223812..d3c7f6c95a7d735424cf401119ba6661f5c88b54 100644
--- a/Gemfile
+++ b/Gemfile
@@ -30,7 +30,7 @@ gem 'bundler-checksum', '~> 0.1.0', path: 'vendor/gems/bundler-checksum', requir
 # See https://docs.gitlab.com/ee/development/gemfile.html#upgrade-rails for guidelines when upgrading Rails
 
 if next?
-  gem 'rails', '~> 7.1.3.4', feature_category: :shared
+  gem 'rails', '~> 7.1.4', feature_category: :shared
 else
   gem 'rails', '~> 7.0.8.4', feature_category: :shared
 end
diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum
index c32d221c8de07430cbcdf1781c61ab4667e6b409..05633f04e50d450791c50161f3934ec46b416e05 100644
--- a/Gemfile.next.checksum
+++ b/Gemfile.next.checksum
@@ -2,19 +2,19 @@
 {"name":"CFPropertyList","version":"3.0.5","platform":"ruby","checksum":"a78551cd4768d78ebca98488c27e33652ef818be64697a54676d34e6434674a4"},
 {"name":"RedCloth","version":"4.3.3","platform":"ruby","checksum":"d941b8ac96e2730d2d9326d97dda9fcf64cb73532b3f902d91c18970c5f4632d"},
 {"name":"acme-client","version":"2.0.18","platform":"ruby","checksum":"3feab341926ffc16eb65babe51ba4dad8180c13e21e774871344e0b3502ef275"},
-{"name":"actioncable","version":"7.1.3.4","platform":"ruby","checksum":"787ba8651caaa93d5c161f0d1110105300974be65e89483071146fc42d4bd310"},
-{"name":"actionmailbox","version":"7.1.3.4","platform":"ruby","checksum":"a3fd3019a44597e49ae18b4ed5c68e0f21c1d1b389bbcc10be357e205a83cad0"},
-{"name":"actionmailer","version":"7.1.3.4","platform":"ruby","checksum":"1f196096740587b08ef935db8a672971f448cadb8299e3d9a7bc24088a2a0351"},
-{"name":"actionpack","version":"7.1.3.4","platform":"ruby","checksum":"dcafc71bec6a975c3984a1ed8e698e2f9afeeb441c838766c16c29633705edd2"},
-{"name":"actiontext","version":"7.1.3.4","platform":"ruby","checksum":"84964dae95a3c99819d42641084f21e28de502fcefa6efb9df3805d6c439b784"},
-{"name":"actionview","version":"7.1.3.4","platform":"ruby","checksum":"41fcf5242dec11e100a0ba3d3717612c6534e8571c8a290a5b2a950aa58b615b"},
-{"name":"activejob","version":"7.1.3.4","platform":"ruby","checksum":"3f8aeef0fdfb2dd65f9a663828dbcc8ca187e70ef0c5a773c5fe4dd67e040f62"},
-{"name":"activemodel","version":"7.1.3.4","platform":"ruby","checksum":"f4c838ea76dfca8967e433ac89603342ae20b65dd61366e62f07120a08e1ad72"},
-{"name":"activerecord","version":"7.1.3.4","platform":"ruby","checksum":"784eeca4d6f23391d445552d6675a47c594555361c3b042108d29f0c7b9230f2"},
+{"name":"actioncable","version":"7.1.4","platform":"ruby","checksum":"8443dfe12129cf6d7c93b16a5f0be83bf0d3f686875d7ff5e1110c884c3e8fbc"},
+{"name":"actionmailbox","version":"7.1.4","platform":"ruby","checksum":"30be3b404290ef19c477aab19ee48cbcb6b409cc3f377f732c7b907998e6f36f"},
+{"name":"actionmailer","version":"7.1.4","platform":"ruby","checksum":"eae396a3f2de43c54f1d267ecc2e4593a0122f20e321dbee5c96ffcbbdfa4b25"},
+{"name":"actionpack","version":"7.1.4","platform":"ruby","checksum":"f5f8879debbf0b1a73dcc60f91c975b7bed7ff87c873b5fa794acaa1f3b7e230"},
+{"name":"actiontext","version":"7.1.4","platform":"ruby","checksum":"5d07bfe0d50cec80f55f71526aa67bbcc401f0ea6dcb611687119294b0da9b92"},
+{"name":"actionview","version":"7.1.4","platform":"ruby","checksum":"c02bf0665edbfaf1616b41aad0ce8919820005226d4e78e56a998b6b32593953"},
+{"name":"activejob","version":"7.1.4","platform":"ruby","checksum":"65f65a552aeb33f444fb57b9dc75ecc01693ef13ae410591c7a5f7763c3c0bf6"},
+{"name":"activemodel","version":"7.1.4","platform":"ruby","checksum":"188d055afdd07d2f037d23403c939618ea0d7fa518a7de1b76324c2876d410b6"},
+{"name":"activerecord","version":"7.1.4","platform":"ruby","checksum":"836d6dac137ec5bb71e7ab943f6eca97917c8a2968fa466b38920f4812642cdd"},
 {"name":"activerecord-explain-analyze","version":"0.1.0","platform":"ruby","checksum":"5debb11fe23f35b91953a80677d80ba9284ee737fd9d148c1d7603ce45217f7b"},
-{"name":"activestorage","version":"7.1.3.4","platform":"ruby","checksum":"f2020ea0a77e105e480a9a15251c91d615eecb4b28a1a80968d6fb6a5dcb0a2e"},
-{"name":"activesupport","version":"7.1.3.4","platform":"ruby","checksum":"455bbc43d82e5ba20daa25f0888b80c9f7e2d80ca0cc96cea3e6acfec3e40309"},
-{"name":"addressable","version":"2.8.1","platform":"ruby","checksum":"bc724a176ef02118c8a3ed6b5c04c39cf59209607ffcce77b91d0261dbadedfa"},
+{"name":"activestorage","version":"7.1.4","platform":"ruby","checksum":"23ebbb59fb9563f035ffa18d30b6bbc3a5d3f5cda004d19765f594db24f70b46"},
+{"name":"activesupport","version":"7.1.4","platform":"ruby","checksum":"3a8e1a7ce5541ab2ffefaa390c40c89d7f54273dc671ed429614953cffd8a232"},
+{"name":"addressable","version":"2.8.7","platform":"ruby","checksum":"462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232"},
 {"name":"aes_key_wrap","version":"1.1.0","platform":"ruby","checksum":"b935f4756b37375895db45669e79dfcdc0f7901e12d4e08974d5540c8e0776a5"},
 {"name":"akismet","version":"3.0.0","platform":"ruby","checksum":"74991b8e3d3257eeea996b47069abb8da2006c84a144255123e8dffd1c86b230"},
 {"name":"aliyun-sdk","version":"0.8.0","platform":"ruby","checksum":"65915d3f9b528082253d1f9ad0e4d13d6b552933fe49251c68c6915cd4d75b9d"},
@@ -34,10 +34,10 @@
 {"name":"awesome_print","version":"1.9.2","platform":"ruby","checksum":"e99b32b704acff16d768b3468680793ced40bfdc4537eb07e06a4be11133786e"},
 {"name":"awrence","version":"1.2.1","platform":"ruby","checksum":"dd1d214c12a91f449d1ef81d7ee3babc2816944e450752e7522c65521872483e"},
 {"name":"aws-eventstream","version":"1.3.0","platform":"ruby","checksum":"f1434cc03ab2248756eb02cfa45e900e59a061d7fbdc4a9fd82a5dd23d796d3f"},
-{"name":"aws-partitions","version":"1.969.0","platform":"ruby","checksum":"62778eea02fcc77a862441a6e1bd4d0e15927ce499323e8cb793ad9c45c899be"},
+{"name":"aws-partitions","version":"1.877.0","platform":"ruby","checksum":"9552ed7bbd3700ed1eeb0121c160ceaf64fa5dbaff5a1ff5fe6fd8481ecd9cfd"},
 {"name":"aws-sdk-cloudformation","version":"1.41.0","platform":"ruby","checksum":"31e47539719734413671edf9b1a31f8673fbf9688549f50c41affabbcb1c6b26"},
-{"name":"aws-sdk-core","version":"3.202.1","platform":"ruby","checksum":"02b52503c0793fc2ed7eac8d9527879a7ece07dc0a9046bd82514aadceb14291"},
-{"name":"aws-sdk-kms","version":"1.88.0","platform":"ruby","checksum":"13588d90df1eece81f6d79bd304b3857dc3168e7ea75c933b3b835cfe8a0e309"},
+{"name":"aws-sdk-core","version":"3.202.2","platform":"ruby","checksum":"732a51d71938db90aab5dcb6fe9c86f023c0b431b350b324ecff16efcc667092"},
+{"name":"aws-sdk-kms","version":"1.76.0","platform":"ruby","checksum":"e7f75013cba9ba357144f66bbc600631c192e2cda9dd572794be239654e2cf49"},
 {"name":"aws-sdk-s3","version":"1.159.0","platform":"ruby","checksum":"406ba75c68890938350aa573df1c3f878dd7781a59ba1ddc0953968a70725e98"},
 {"name":"aws-sigv4","version":"1.9.1","platform":"ruby","checksum":"7753e320c39f80f82f9e0883b30de0e7b99e756adbaedc80c50b6ad59d49c379"},
 {"name":"axe-core-api","version":"4.9.1","platform":"ruby","checksum":"9ea7ac16bfee1cb3545345d210878aa8cccfb41b493e00fe1faab79af4d9fed8"},
@@ -131,7 +131,7 @@
 {"name":"doorkeeper-openid_connect","version":"1.8.7","platform":"ruby","checksum":"71edaf33118deefe25674ba3f8280c32835f057351f70e9beb222c0fd6b8e786"},
 {"name":"dotenv","version":"2.7.6","platform":"ruby","checksum":"2451ed5e8e43776d7a787e51d6f8903b98e446146c7ad143d5678cc2c409d547"},
 {"name":"drb","version":"2.2.1","platform":"ruby","checksum":"e9d472bf785f558b96b25358bae115646da0dbfd45107ad858b0bc0d935cb340"},
-{"name":"dry-cli","version":"1.1.0","platform":"ruby","checksum":"08301cc1176a7ce797d7595d6f54f5a796f04d8590a86ae9dba1176752899da1"},
+{"name":"dry-cli","version":"1.0.0","platform":"ruby","checksum":"28ead169f872954dd08910eb8ead59cf86cd18b4aab321e8eeefe945749569f0"},
 {"name":"dry-core","version":"1.0.1","platform":"ruby","checksum":"f32f4245e0f54e787f3708584ed8f7545aaf8dd99072e36f169312468ec5450d"},
 {"name":"dry-inflector","version":"1.0.0","platform":"ruby","checksum":"6ad22361ca2d6f3f001ae3037ffcfea01163f644280d13a9195d3c3a94dd1626"},
 {"name":"dry-logic","version":"1.5.0","platform":"ruby","checksum":"99ed2180f1970c3d8247004f277a01dffbe8e82cf6680de9c7209312d86cd416"},
@@ -161,7 +161,7 @@
 {"name":"extended-markdown-filter","version":"0.7.0","platform":"ruby","checksum":"c8eeef7409fbae18c6b407cd3e4eeb5d25c35cb08fe1ac06f375df3db2d4f138"},
 {"name":"factory_bot","version":"6.4.5","platform":"ruby","checksum":"d71dd29bc95f0ec2bf27e3dd9b1b4d557bd534caca744663cb7db4bacf3198be"},
 {"name":"factory_bot_rails","version":"6.4.3","platform":"ruby","checksum":"ea73ceac1c0ff3dc11fff390bf2ea8a2604066525ed8ecd3b3bc2c267226dcc8"},
-{"name":"faraday","version":"2.10.1","platform":"ruby","checksum":"6bc9fba3f6191684449d94215195b2c43e2a07bd40b321d245881450923d9a80"},
+{"name":"faraday","version":"2.11.0","platform":"ruby","checksum":"e6ead2c9aa1304107d3bb342e9f930cf7e649a71e3ec1e782c3256672f19ed02"},
 {"name":"faraday-follow_redirects","version":"0.3.0","platform":"ruby","checksum":"d92d975635e2c7fe525dd494fcd4b9bb7f0a4a0ec0d5f4c15c729530fdb807f9"},
 {"name":"faraday-http-cache","version":"2.5.0","platform":"ruby","checksum":"64b7366d66e508e1c3dd855ebb20ce9da429330e412a23d9ebbc0a7a7b227463"},
 {"name":"faraday-multipart","version":"1.0.4","platform":"ruby","checksum":"9012021ab57790f7d712f590b48d5f948b19b43cfa11ca83e6459f06090b0725"},
@@ -320,7 +320,7 @@
 {"name":"httpclient","version":"2.8.3","platform":"ruby","checksum":"2951e4991214464c3e92107e46438527d23048e634f3aee91c719e0bdfaebda6"},
 {"name":"i18n","version":"1.14.4","platform":"ruby","checksum":"c7deedead0866ea9102975a4eab7968f53de50793a0c211a37808f75dd187551"},
 {"name":"i18n_data","version":"0.13.1","platform":"ruby","checksum":"e5aa99b09a69b463bb0443fc1f9540351a49f3d1541c5e91316bafa035c63f66"},
-{"name":"icalendar","version":"2.10.1","platform":"ruby","checksum":"1f3108bb95c89e03d418ac95b2fd6182c0b5d112bbe757cf6e23e3282a3f710e"},
+{"name":"icalendar","version":"2.10.2","platform":"ruby","checksum":"d70ecdca4219ad6af220d8cb6aa78170f1931c6e56be45fdf0e077060a555608"},
 {"name":"ice_cube","version":"0.16.4","platform":"ruby","checksum":"da117e5de24bdc33931be629f9b55048641924442c7e9b72fedc05e5592531b7"},
 {"name":"ice_nine","version":"0.11.2","platform":"ruby","checksum":"5d506a7d2723d5592dc121b9928e4931742730131f22a1a37649df1c1e2e63db"},
 {"name":"imagen","version":"0.1.8","platform":"ruby","checksum":"fde7b727d4fe79c6bb5ac46c1f7184bf87a6d54df54d712ad2be039d2f93a162"},
@@ -355,7 +355,7 @@
 {"name":"kramdown-parser-gfm","version":"1.1.0","platform":"ruby","checksum":"fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729"},
 {"name":"kubeclient","version":"4.11.0","platform":"ruby","checksum":"4985fcd749fb8c364a668a8350a49821647f03aa52d9ee6cbc582beb8e883fcc"},
 {"name":"language_server-protocol","version":"3.17.0.3","platform":"ruby","checksum":"3d5c58c02f44a20d972957a9febe386d7e7468ab3900ce6bd2b563dd910c6b3f"},
-{"name":"launchy","version":"2.5.0","platform":"ruby","checksum":"954243c4255920982ce682f89a42e76372dba94770bf09c23a523e204bdebef5"},
+{"name":"launchy","version":"2.5.2","platform":"ruby","checksum":"8aa0441655aec5514008e1d04892c2de3ba57bd337afb984568da091121a241b"},
 {"name":"lefthook","version":"1.7.14","platform":"ruby","checksum":"955c18c4dabaf92f82f085bcbf5955015853fe306f20c73343509ecd3d1bc236"},
 {"name":"letter_opener","version":"1.10.0","platform":"ruby","checksum":"2ff33f2e3b5c3c26d1959be54b395c086ca6d44826e8bf41a14ff96fdf1bdbb2"},
 {"name":"letter_opener_web","version":"3.0.0","platform":"ruby","checksum":"3f391efe0e8b9b24becfab5537dfb17a5cf5eb532038f947daab58cb4b749860"},
@@ -391,7 +391,7 @@
 {"name":"mixlib-shellout","version":"3.2.7","platform":"ruby","checksum":"46f6d1f9c77e689a443081c5cac336203343f0f2224db06b80d39ae4cd797c7e"},
 {"name":"mixlib-shellout","version":"3.2.7","platform":"universal-mingw32","checksum":"4d7bea07e347cc8de2b4bc22f4d8f84d7bb8165cf900d26b532d0d9fa4928a19"},
 {"name":"mixlib-shellout","version":"3.2.7","platform":"x64-mingw-ucrt","checksum":"de01743f678b66c275ea5f40749cde6c056651d1bb6d320711779394d2eec654"},
-{"name":"mize","version":"0.6.0","platform":"ruby","checksum":"3f1a0f52cb5c158e43e93a6dd3be896d9c7dd345d76eb1bd9f26088681db2363"},
+{"name":"mize","version":"0.4.1","platform":"ruby","checksum":"55bcba0cf001cbff5a647a18172c4a885061ceec586395fb08ecbb98d039f627"},
 {"name":"msgpack","version":"1.5.4","platform":"java","checksum":"05b3bd16a65dddc64c878634b7ecb9cd613569ca3dd6e480d7295626a0a3f562"},
 {"name":"msgpack","version":"1.5.4","platform":"ruby","checksum":"a53db320fba40f58c07c5b66ed9fd4d73cbe8eba4cb28fe9e3218444341a4e09"},
 {"name":"multi_json","version":"1.14.1","platform":"ruby","checksum":"d971296c0eacea289d31e4a7ab7ac5eda97262c62bbc8c110de4f5e36425c577"},
@@ -451,37 +451,38 @@
 {"name":"omniauth_openid_connect","version":"0.8.0","platform":"ruby","checksum":"1f2f3890386e2a742221cee0d2e903b78d874e6fab9ea3bfa31c1462f4793d25"},
 {"name":"open4","version":"1.3.4","platform":"ruby","checksum":"a1df037310624ecc1ea1d81264b11c83e96d0c3c1c6043108d37d396dcd0f4b1"},
 {"name":"openid_connect","version":"2.3.0","platform":"ruby","checksum":"0dbb9cefeb11e0a65e706349266355bbbb060382ae138fc9e199ab1aa622744c"},
-{"name":"openssl","version":"3.1.0","platform":"ruby","checksum":"e3a01279e918a7a5cf741db69b124864878b1a9783b1f2d34854bc1d444ac430"},
+{"name":"openssl","version":"3.2.0","platform":"java","checksum":"9a1c870b4175ee90bcd233b5041a5ca8072f5f5f06d404ab3c786aa31daffa02"},
+{"name":"openssl","version":"3.2.0","platform":"ruby","checksum":"3c4bb8760977b4becd2819c6c2569bcf5c6f48b32b9f7a4ce1fd37f996378d14"},
 {"name":"openssl-signature_algorithm","version":"1.3.0","platform":"ruby","checksum":"a3b40b5e8276162d4a6e50c7c97cdaf1446f9b2c3946a6fa2c14628e0c957e80"},
 {"name":"opentelemetry-api","version":"1.2.5","platform":"ruby","checksum":"ab3d9a0566cd2ee068ade40e840bc973383ab8568e693c0c5712f0c789122cc9"},
 {"name":"opentelemetry-common","version":"0.21.0","platform":"ruby","checksum":"fe891a44583a20bc3217b324aec76d066504494951682d391cfd57d40cd01c98"},
-{"name":"opentelemetry-exporter-otlp","version":"0.27.0","platform":"ruby","checksum":"0050cf6ade97186ee3176cd8c44087b70cb739c3c624dbfc7c33097a3a189e4c"},
+{"name":"opentelemetry-exporter-otlp","version":"0.28.1","platform":"ruby","checksum":"5b64f0cdf87643e7581b2983d5cd79df688378f95a19cca42be9cd559c8a5169"},
 {"name":"opentelemetry-helpers-sql-obfuscation","version":"0.1.0","platform":"ruby","checksum":"bc6ef1373dbcf979647091b3bfc99d7b6fb9669f74c3ae184f58b48adfc8d432"},
 {"name":"opentelemetry-instrumentation-action_mailer","version":"0.1.0","platform":"ruby","checksum":"52fe3400bb9051d079a2aed0858fc2d98c677bfb66d163e3b438b67c795dd1a9"},
 {"name":"opentelemetry-instrumentation-action_pack","version":"0.9.0","platform":"ruby","checksum":"c5df8472afc9cdbfc1425d9af7816b9cfc1a1a69b86621f1fc624974bd9acb9a"},
-{"name":"opentelemetry-instrumentation-action_view","version":"0.7.0","platform":"ruby","checksum":"bc7c714be0b4bb76843085c29ecc9465e65cb7fe6722e34c71629e44f8c3cb75"},
-{"name":"opentelemetry-instrumentation-active_job","version":"0.7.1","platform":"ruby","checksum":"da24806c9d92fe580db42638f6c763fe1324ff90aa147d45d4247f8052c68089"},
-{"name":"opentelemetry-instrumentation-active_record","version":"0.7.2","platform":"ruby","checksum":"d3c1eb0ef74fc73a5bb46e0faf0a761c5cf38616cc6a29b4de967d575b684e72"},
-{"name":"opentelemetry-instrumentation-active_support","version":"0.5.1","platform":"ruby","checksum":"03898327e8284410b8935a3d3b980bda56e2063eb5a7d30acf75487dd6934a66"},
-{"name":"opentelemetry-instrumentation-aws_sdk","version":"0.5.2","platform":"ruby","checksum":"b9d62afe3eac5d552eea6f0108fcd297fc35d5b4073bf8ef9d8ad3ed410337a4"},
+{"name":"opentelemetry-instrumentation-action_view","version":"0.7.2","platform":"ruby","checksum":"30f2da1547afd78e2193f16e1cf6d53d9a06650a1ac29b4bda2f1b2d41a3119f"},
+{"name":"opentelemetry-instrumentation-active_job","version":"0.7.7","platform":"ruby","checksum":"5db8820afd43e44d383705c0919249f11082f4472c96c341fc17b8954677aaa8"},
+{"name":"opentelemetry-instrumentation-active_record","version":"0.7.4","platform":"ruby","checksum":"7dd72e74c846130641fc001eb9bd90775a2153501349a7a429f2ed5eb38900bb"},
+{"name":"opentelemetry-instrumentation-active_support","version":"0.6.0","platform":"ruby","checksum":"4fe71e2be21135c4a6eb8086998c508deec50080900829fb695ee01b93b507e0"},
+{"name":"opentelemetry-instrumentation-aws_sdk","version":"0.5.4","platform":"ruby","checksum":"1805dac273baf70252568423f2005c98afbff4f385aeea9eb423fd48952cb3bb"},
 {"name":"opentelemetry-instrumentation-base","version":"0.22.3","platform":"ruby","checksum":"f61c434f0406cdc878bc188f67e644f94dba4be553d2fd21b2d1faa82731605f"},
-{"name":"opentelemetry-instrumentation-concurrent_ruby","version":"0.21.3","platform":"ruby","checksum":"6fb1b550adc3ab6b45b73f038ccae9634ebe15cba28ca6f62c03b9dd7a0ebdf6"},
-{"name":"opentelemetry-instrumentation-ethon","version":"0.21.5","platform":"ruby","checksum":"31c470c3df3f0def1e6335a0e86d9c6a6ef8af16f33efd3a82be2c626351bac0"},
-{"name":"opentelemetry-instrumentation-excon","version":"0.22.2","platform":"ruby","checksum":"171dc5312a3c3610157290cf4ce68d24a35db17e2924ad5122a275f29ba4a146"},
-{"name":"opentelemetry-instrumentation-faraday","version":"0.24.3","platform":"ruby","checksum":"695ae56c873bdebbf560df9b510e130d194e4c851374758bafbc4d1ba9e970a8"},
-{"name":"opentelemetry-instrumentation-grape","version":"0.1.8","platform":"ruby","checksum":"208421bbbe252ad8bf1815fc6b1ae5a5a90df10d2aec124461777aa1cc636330"},
-{"name":"opentelemetry-instrumentation-graphql","version":"0.28.2","platform":"ruby","checksum":"5139d80628e82fc8a419aafc7f7cb936956af301a05614e95940e4af17db8b8e"},
-{"name":"opentelemetry-instrumentation-http","version":"0.23.3","platform":"ruby","checksum":"ceb17217ee7ae10473c029ba49804e18c06a5c6bb8651db0974f3111cdbeccfa"},
-{"name":"opentelemetry-instrumentation-http_client","version":"0.22.5","platform":"ruby","checksum":"6cb3c63cd9268420d76952b073c11e94a9b02696c8257aae1a3dba459ebe0b0d"},
-{"name":"opentelemetry-instrumentation-net_http","version":"0.22.5","platform":"ruby","checksum":"99bd10e03918032ea6e4670c121c8778403e729d343446a5901d1126fcc5f7be"},
-{"name":"opentelemetry-instrumentation-pg","version":"0.27.3","platform":"ruby","checksum":"b689e9c47185729d671669a0f7c206c013d9c8dfc7a355901ec50b12c94e35cd"},
-{"name":"opentelemetry-instrumentation-rack","version":"0.24.4","platform":"ruby","checksum":"be35db05a459a608e2854baea7257daadd37d34fe7a274ff75cb63b5896e82b5"},
-{"name":"opentelemetry-instrumentation-rails","version":"0.30.2","platform":"ruby","checksum":"42ddd023afa551f60ea632712d5125ce8b781eeb8d311a02efc2c62e02613a12"},
+{"name":"opentelemetry-instrumentation-concurrent_ruby","version":"0.21.4","platform":"ruby","checksum":"04efc8114459bbd5d104b559c413aef42e12a1a489e41df2b7b89eb1f88714ce"},
+{"name":"opentelemetry-instrumentation-ethon","version":"0.21.8","platform":"ruby","checksum":"19aa7d60c0339d5d1533da0a3a401a8e8b322f1e6399d016168970923551dee8"},
+{"name":"opentelemetry-instrumentation-excon","version":"0.22.4","platform":"ruby","checksum":"da329fda254c678d07b79ba3da949a639b34fb7b868bbc70dae9cf30e66ee691"},
+{"name":"opentelemetry-instrumentation-faraday","version":"0.24.6","platform":"ruby","checksum":"504b0cf4d70d29c4a13a99fb408ad1a20f2fb72bc964c6ab714d043b99e5e65a"},
+{"name":"opentelemetry-instrumentation-grape","version":"0.2.0","platform":"ruby","checksum":"a1225d7301b7eee8eb98ae1fa90fe879c5a54d3631df731d658863a4fe5517b6"},
+{"name":"opentelemetry-instrumentation-graphql","version":"0.28.4","platform":"ruby","checksum":"c2cfccba8d443733d4a42a0c5c2c301daa34f1b382b0da0166255280c702dc6c"},
+{"name":"opentelemetry-instrumentation-http","version":"0.23.4","platform":"ruby","checksum":"190b401b4a2758fc1ce20fa073f104e68c3152661e05769f5aa95c5dd1a3b916"},
+{"name":"opentelemetry-instrumentation-http_client","version":"0.22.7","platform":"ruby","checksum":"3fdca85a200a0e8b72f02cfb7f609062fc793353a6c2ffee2da8e005f62fce3c"},
+{"name":"opentelemetry-instrumentation-net_http","version":"0.22.7","platform":"ruby","checksum":"c07427ff6b7bed124bf004008be4d3a4aef8865629f7a2c4614c4a8d357246d0"},
+{"name":"opentelemetry-instrumentation-pg","version":"0.28.0","platform":"ruby","checksum":"241de140544ddc70919fffd9ab587a266c7670659283e276dcfecfabea5c61eb"},
+{"name":"opentelemetry-instrumentation-rack","version":"0.24.6","platform":"ruby","checksum":"c0f27bdc8d407bb4d97ead27b6ee72243b86f32f7a6a703f5158fc2e18ebaeb6"},
+{"name":"opentelemetry-instrumentation-rails","version":"0.31.2","platform":"ruby","checksum":"891f20e3123b0ea97f7ede60c2a5415191c5b45f6378ebf03a45289e66d0648a"},
 {"name":"opentelemetry-instrumentation-rake","version":"0.2.2","platform":"ruby","checksum":"fbde8a6aab77c09bf0f94d914dd26dcf2e23ec67e2300f06a1cb8294a97d8020"},
-{"name":"opentelemetry-instrumentation-redis","version":"0.25.5","platform":"ruby","checksum":"d7ce798069539ab25a0d1685837d482eb40d076c642b4b15cecfed56516333d7"},
-{"name":"opentelemetry-instrumentation-sidekiq","version":"0.25.4","platform":"ruby","checksum":"4ce1b2e0952321d504d4c3e0e4fcbd5d090ff1f4de4cb214c6aa79d70ce8a3a3"},
+{"name":"opentelemetry-instrumentation-redis","version":"0.25.7","platform":"ruby","checksum":"2ea0f2d45fe1af0689aeadc08f5b335a2b6d9463de9d855fd25313d3c5b42fe3"},
+{"name":"opentelemetry-instrumentation-sidekiq","version":"0.25.7","platform":"ruby","checksum":"d6a6e2cadddfda0a0b641f9dc918e35a77bfc62bc90b80776f5194bd55e0df31"},
 {"name":"opentelemetry-registry","version":"0.3.0","platform":"ruby","checksum":"116ab6114a706340900718298c126f720e50b1ef3cfdbe5997611ff232fe6822"},
-{"name":"opentelemetry-sdk","version":"1.4.1","platform":"ruby","checksum":"513fa36c9b32dcaaf69f698a8950de4fe58842eb7038a09bc8260fd35f4c4eaa"},
+{"name":"opentelemetry-sdk","version":"1.5.0","platform":"ruby","checksum":"da1027c0def5917c8467ac1f3692b60c054ee91aeb36ee120dfd30c58b3d3b36"},
 {"name":"opentelemetry-semantic_conventions","version":"1.10.0","platform":"ruby","checksum":"13d24c1071736004a6c09113ee9fe163a25daa0defe6ab279a42cac7b92b1b76"},
 {"name":"opentracing","version":"0.5.0","platform":"ruby","checksum":"deb5d7abe6b0e7631d866d8cb5ee7bb9352650a504a32f61591302bc510b9286"},
 {"name":"optimist","version":"3.0.1","platform":"ruby","checksum":"336b753676d6117cad9301fac7e91dab4228f747d4e7179891ad3a163c64e2ed"},
@@ -514,6 +515,7 @@
 {"name":"prometheus-client-mmap","version":"1.1.1","platform":"ruby","checksum":"dd8d11e4ee445d96cc73a9fabeabcc9ead8ac082cc1b86ad26e23d3e7a3fe46d"},
 {"name":"prometheus-client-mmap","version":"1.1.1","platform":"x86_64-darwin","checksum":"fba35372fc7e169f906590d8c40a624091b909491a18a5d91eb30d810a46cd5e"},
 {"name":"prometheus-client-mmap","version":"1.1.1","platform":"x86_64-linux","checksum":"e9e124de97a7cdf0475c0424112321c3de6137df894f96dea8bfd4f4eebc0fec"},
+{"name":"protocol","version":"2.0.0","platform":"ruby","checksum":"dcd7c509e53b8cd6284e965a2e2e71d5291ca9e2d50acfa3d7ee0561c0df16b9"},
 {"name":"pry","version":"0.14.2","platform":"java","checksum":"fd780670977ba04ff7ee32dabd4d02fe4bf02e977afe8809832d5dca1412862e"},
 {"name":"pry","version":"0.14.2","platform":"ruby","checksum":"c4fe54efedaca1d351280b45b8849af363184696fcac1c72e0415f9bdac4334d"},
 {"name":"pry-byebug","version":"3.10.1","platform":"ruby","checksum":"c8f975c32255bfdb29e151f5532130be64ff3d0042dc858d0907e849125581f8"},
@@ -521,7 +523,7 @@
 {"name":"pry-shell","version":"0.6.4","platform":"ruby","checksum":"ad024882d29912b071a7de65ebea538b242d2dc1498c60c7c2352ef94769f208"},
 {"name":"psych","version":"5.1.2","platform":"java","checksum":"1dd68dc609eddbc884e6892e11da942e16f7256bd30ebde9d35449d43043a6fe"},
 {"name":"psych","version":"5.1.2","platform":"ruby","checksum":"337322f58fc2bf24827d2b9bd5ab595f6a72971867d151bb39980060ea40a368"},
-{"name":"public_suffix","version":"5.0.0","platform":"ruby","checksum":"26ee4fbce33ada25eb117ac71f2c24bf4d8b3414ab6b34f05b4708a3e90f1c6b"},
+{"name":"public_suffix","version":"6.0.1","platform":"ruby","checksum":"61d44e1cab5cbbbe5b31068481cf16976dd0dc1b6b07bd95617ef8c5e3e00c6f"},
 {"name":"puma","version":"6.4.0","platform":"java","checksum":"eb27679e9e665882bab85dfa84704b0615b4f77cec46de014f05b90a5ab36cfe"},
 {"name":"puma","version":"6.4.0","platform":"ruby","checksum":"d5dda11362744df9f4694708a62e3cfddf72eba7498c16016ebbb30f106712f9"},
 {"name":"pyu-ruby-sasl","version":"0.0.3.3","platform":"ruby","checksum":"5683a6bc5738db5a1bf5ceddeaf545405fb241b4184dd4f2587e679a7e9497e5"},
@@ -539,12 +541,12 @@
 {"name":"rack-test","version":"2.1.0","platform":"ruby","checksum":"0c61fc61904049d691922ea4bb99e28004ed3f43aa5cfd495024cc345f125dfb"},
 {"name":"rack-timeout","version":"0.7.0","platform":"ruby","checksum":"757337e9793cca999bb73a61fe2a7d4280aa9eefbaf787ce3b98d860749c87d9"},
 {"name":"rackup","version":"1.0.0","platform":"ruby","checksum":"e95e3e1b7f1f54ac3730fa9f1024903cb23e424a901781198d492d32c60079f1"},
-{"name":"rails","version":"7.1.3.4","platform":"ruby","checksum":"3a7fca9df74ee641dc1e89b8302ac6d03f22883de771e786a0e9f3094e5aa6ad"},
+{"name":"rails","version":"7.1.4","platform":"ruby","checksum":"dfcf9e78d26db70320b99958e7ee8957db9cee5969279d449b925cdab18cc51e"},
 {"name":"rails-controller-testing","version":"1.0.5","platform":"ruby","checksum":"741448db59366073e86fc965ba403f881c636b79a2c39a48d0486f2607182e94"},
 {"name":"rails-dom-testing","version":"2.2.0","platform":"ruby","checksum":"e515712e48df1f687a1d7c380fd7b07b8558faa26464474da64183a7426fa93b"},
 {"name":"rails-html-sanitizer","version":"1.6.0","platform":"ruby","checksum":"86e9f19d2e6748890dcc2633c8945ca45baa08a1df9d8c215ce17b3b0afaa4de"},
 {"name":"rails-i18n","version":"7.0.9","platform":"ruby","checksum":"c184db80a7c7bf21c14e0e400fe9e27c4c20312f019aaff5b364a82858dc1369"},
-{"name":"railties","version":"7.1.3.4","platform":"ruby","checksum":"6c6049f3a788669d94f95c7bf6378204ae94098567cc25237e3c73dac4a21afc"},
+{"name":"railties","version":"7.1.4","platform":"ruby","checksum":"54395f2753366699e54417aea67d8b3c0eefd994de2f4152d364a400de634a5a"},
 {"name":"rainbow","version":"3.1.1","platform":"ruby","checksum":"039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a"},
 {"name":"rake","version":"13.0.6","platform":"ruby","checksum":"5ce4bf5037b4196c24ac62834d8db1ce175470391026bd9e557d669beeb19097"},
 {"name":"rb-fsevent","version":"0.11.2","platform":"ruby","checksum":"43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe"},
@@ -578,7 +580,7 @@
 {"name":"regexp_parser","version":"2.6.0","platform":"ruby","checksum":"f163ba463a45ca2f2730e0902f2475bb0eefcd536dfc2f900a86d1e5a7d7a556"},
 {"name":"regexp_property_values","version":"1.0.0","platform":"java","checksum":"5e26782b01241616855c4ee7bb8a62fce9387e484f2d3eaf04f2a0633708222e"},
 {"name":"regexp_property_values","version":"1.0.0","platform":"ruby","checksum":"162499dc0bba1e66d334273a059f207a61981cc8cc69d2ca743594e7886d080f"},
-{"name":"reline","version":"0.5.9","platform":"ruby","checksum":"5d2dd7ed0fd078e79a05e4eaa47dc91b8dacec7358e9e1dd6d9c4636cff7d378"},
+{"name":"reline","version":"0.5.10","platform":"ruby","checksum":"1660c969a792ebd034e6ceee8ca628f3b6698dcdb34f7a282a5edda37b958166"},
 {"name":"representable","version":"3.2.0","platform":"ruby","checksum":"cc29bf7eebc31653586849371a43ffe36c60b54b0a6365b5f7d95ec34d1ebace"},
 {"name":"request_store","version":"1.5.1","platform":"ruby","checksum":"07a204d161590789f2b1d27f9f0eadcdecd6d868cb2f03240250e1bc747df78e"},
 {"name":"responders","version":"3.0.1","platform":"ruby","checksum":"613fe28e498987f4feaa3230aa6313ca4bd5f0563a3da83511b0dd6cd8f47292"},
@@ -616,7 +618,7 @@
 {"name":"rubocop-rails","version":"2.24.1","platform":"ruby","checksum":"03edf766954947468f3686cedb69142fae4f10e2007287f89cc0ea7072eeac19"},
 {"name":"rubocop-rspec","version":"2.27.1","platform":"ruby","checksum":"2f27ce04700be75db65afe83d7993a36e0fafd07ec062222f4b3cc10137a7a9e"},
 {"name":"ruby-fogbugz","version":"0.3.0","platform":"ruby","checksum":"5e04cde474648f498a71cf1e1a7ab42c66b953862fbe224f793ec0a7a1d5f657"},
-{"name":"ruby-lsp","version":"0.17.14","platform":"ruby","checksum":"02ee435f03aaf3f858dc1c1f8a001fbb85887a3291534c054e556340712fb1c9"},
+{"name":"ruby-lsp","version":"0.17.15","platform":"ruby","checksum":"c7c6f1dc793713bfefe2ed818ac3a5e4aae4a44c03978f7cc526b8c5002b7e57"},
 {"name":"ruby-lsp-rails","version":"0.3.13","platform":"ruby","checksum":"689bf2d0961cb73192d3c65c589000b9ed99275cf4abb5fe2c5243e0e42fe7fa"},
 {"name":"ruby-lsp-rspec","version":"0.1.12","platform":"ruby","checksum":"34fe775e27dc4c2f31df901f3d44ee885ed0806b05ba9be0ea564682dd4811e5"},
 {"name":"ruby-magic","version":"0.6.0","platform":"ruby","checksum":"7b2138877b7d23aff812c95564eba6473b74b815ef85beb0eb792e729a2b6101"},
@@ -625,6 +627,7 @@
 {"name":"ruby-saml","version":"1.15.0","platform":"ruby","checksum":"3a9dda2b448310f4f90d5cf0967d4b668530fa7994d2a4d9cbfdfa62e35f76a3"},
 {"name":"ruby-statistics","version":"3.0.0","platform":"ruby","checksum":"610301370346931cb701e3a8d3d3e28eb65681162cae6066c0c11abf20efdc81"},
 {"name":"ruby2_keywords","version":"0.0.5","platform":"ruby","checksum":"ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef"},
+{"name":"ruby_parser","version":"3.21.0","platform":"ruby","checksum":"3842893d2f4602dcd93c0a79d77f9ce8e1ce197d41ac533d8e25c684f8f1c56b"},
 {"name":"rubyntlm","version":"0.6.3","platform":"ruby","checksum":"5b321456dba3130351f7451f8669f1afa83a0d26fd63cdec285b7b88e667102d"},
 {"name":"rubypants","version":"0.2.0","platform":"ruby","checksum":"f07e38eac793655a0323fe91946081052341b9e69807026fcf102346589eedee"},
 {"name":"rubyzip","version":"2.3.2","platform":"ruby","checksum":"3f57e3935dc2255c414484fbf8d673b4909d8a6a57007ed754dde39342d2373f"},
@@ -667,6 +670,7 @@
 {"name":"sentry-rails","version":"5.19.0","platform":"ruby","checksum":"d4ad5323feea8e876f9feb2f50b126a3be3b4f6e137d37c360c31d52b6861995"},
 {"name":"sentry-ruby","version":"5.19.0","platform":"ruby","checksum":"0ddf89f246840a5c50df6c68b8eb59ad23ee4adb4a91187a414bb196cee1838b"},
 {"name":"sentry-sidekiq","version":"5.19.0","platform":"ruby","checksum":"1b16ec4b15b35dcbdd182494d612aae7ec5c923a9ed6814aed1b56103feecb80"},
+{"name":"sexp_processor","version":"4.17.1","platform":"ruby","checksum":"91110946720307f30bf1d549e90d9a529fef40d1fc471c069c8cca7667015da0"},
 {"name":"shellany","version":"0.0.1","platform":"ruby","checksum":"0e127a9132698766d7e752e82cdac8250b6adbd09e6c0a7fbbb6f61964fedee7"},
 {"name":"shoulda-matchers","version":"5.1.0","platform":"ruby","checksum":"a01d20589989e9653ab4a28c67d9db2b82bcf0a2496cf01d5e1a95a4aaaf5b07"},
 {"name":"sidekiq-cron","version":"1.12.0","platform":"ruby","checksum":"6663080a454088bd88773a0da3ae91e554b8a2e8b06cfc629529a83fd1a3096c"},
diff --git a/Gemfile.next.lock b/Gemfile.next.lock
index 44a84f5eefa22537120d6ad84f0a29b5840cb4f0..6cdd4b9d96166a5c65ac6c9c4a6c701a978e86f5 100644
--- a/Gemfile.next.lock
+++ b/Gemfile.next.lock
@@ -218,35 +218,35 @@ GEM
     acme-client (2.0.18)
       faraday (>= 1.0, < 3.0.0)
       faraday-retry (>= 1.0, < 3.0.0)
-    actioncable (7.1.3.4)
-      actionpack (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    actioncable (7.1.4)
+      actionpack (= 7.1.4)
+      activesupport (= 7.1.4)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
       zeitwerk (~> 2.6)
-    actionmailbox (7.1.3.4)
-      actionpack (= 7.1.3.4)
-      activejob (= 7.1.3.4)
-      activerecord (= 7.1.3.4)
-      activestorage (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    actionmailbox (7.1.4)
+      actionpack (= 7.1.4)
+      activejob (= 7.1.4)
+      activerecord (= 7.1.4)
+      activestorage (= 7.1.4)
+      activesupport (= 7.1.4)
       mail (>= 2.7.1)
       net-imap
       net-pop
       net-smtp
-    actionmailer (7.1.3.4)
-      actionpack (= 7.1.3.4)
-      actionview (= 7.1.3.4)
-      activejob (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    actionmailer (7.1.4)
+      actionpack (= 7.1.4)
+      actionview (= 7.1.4)
+      activejob (= 7.1.4)
+      activesupport (= 7.1.4)
       mail (~> 2.5, >= 2.5.4)
       net-imap
       net-pop
       net-smtp
       rails-dom-testing (~> 2.2)
-    actionpack (7.1.3.4)
-      actionview (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    actionpack (7.1.4)
+      actionview (= 7.1.4)
+      activesupport (= 7.1.4)
       nokogiri (>= 1.8.5)
       racc
       rack (>= 2.2.4)
@@ -254,38 +254,38 @@ GEM
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.2)
       rails-html-sanitizer (~> 1.6)
-    actiontext (7.1.3.4)
-      actionpack (= 7.1.3.4)
-      activerecord (= 7.1.3.4)
-      activestorage (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    actiontext (7.1.4)
+      actionpack (= 7.1.4)
+      activerecord (= 7.1.4)
+      activestorage (= 7.1.4)
+      activesupport (= 7.1.4)
       globalid (>= 0.6.0)
       nokogiri (>= 1.8.5)
-    actionview (7.1.3.4)
-      activesupport (= 7.1.3.4)
+    actionview (7.1.4)
+      activesupport (= 7.1.4)
       builder (~> 3.1)
       erubi (~> 1.11)
       rails-dom-testing (~> 2.2)
       rails-html-sanitizer (~> 1.6)
-    activejob (7.1.3.4)
-      activesupport (= 7.1.3.4)
+    activejob (7.1.4)
+      activesupport (= 7.1.4)
       globalid (>= 0.3.6)
-    activemodel (7.1.3.4)
-      activesupport (= 7.1.3.4)
-    activerecord (7.1.3.4)
-      activemodel (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    activemodel (7.1.4)
+      activesupport (= 7.1.4)
+    activerecord (7.1.4)
+      activemodel (= 7.1.4)
+      activesupport (= 7.1.4)
       timeout (>= 0.4.0)
     activerecord-explain-analyze (0.1.0)
       activerecord (>= 4)
       pg
-    activestorage (7.1.3.4)
-      actionpack (= 7.1.3.4)
-      activejob (= 7.1.3.4)
-      activerecord (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    activestorage (7.1.4)
+      actionpack (= 7.1.4)
+      activejob (= 7.1.4)
+      activerecord (= 7.1.4)
+      activesupport (= 7.1.4)
       marcel (~> 1.0)
-    activesupport (7.1.3.4)
+    activesupport (7.1.4)
       base64
       bigdecimal
       concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -295,8 +295,8 @@ GEM
       minitest (>= 5.1)
       mutex_m
       tzinfo (~> 2.0)
-    addressable (2.8.1)
-      public_suffix (>= 2.0.2, < 6.0)
+    addressable (2.8.7)
+      public_suffix (>= 2.0.2, < 7.0)
     aes_key_wrap (1.1.0)
     akismet (3.0.0)
     aliyun-sdk (0.8.0)
@@ -331,18 +331,18 @@ GEM
     awesome_print (1.9.2)
     awrence (1.2.1)
     aws-eventstream (1.3.0)
-    aws-partitions (1.969.0)
+    aws-partitions (1.877.0)
     aws-sdk-cloudformation (1.41.0)
       aws-sdk-core (~> 3, >= 3.99.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-core (3.202.1)
+    aws-sdk-core (3.202.2)
       aws-eventstream (~> 1, >= 1.3.0)
       aws-partitions (~> 1, >= 1.651.0)
       aws-sigv4 (~> 1.9)
       jmespath (~> 1, >= 1.6.1)
-    aws-sdk-kms (1.88.0)
-      aws-sdk-core (~> 3, >= 3.201.0)
-      aws-sigv4 (~> 1.5)
+    aws-sdk-kms (1.76.0)
+      aws-sdk-core (~> 3, >= 3.188.0)
+      aws-sigv4 (~> 1.1)
     aws-sdk-s3 (1.159.0)
       aws-sdk-core (~> 3, >= 3.201.0)
       aws-sdk-kms (~> 1)
@@ -537,7 +537,7 @@ GEM
       jwt (>= 2.5)
     dotenv (2.7.6)
     drb (2.2.1)
-    dry-cli (1.1.0)
+    dry-cli (1.0.0)
     dry-core (1.0.1)
       concurrent-ruby (~> 1.0)
       zeitwerk (~> 2.6)
@@ -596,8 +596,8 @@ GEM
     factory_bot_rails (6.4.3)
       factory_bot (~> 6.4)
       railties (>= 5.0.0)
-    faraday (2.10.1)
-      faraday-net_http (>= 2.0, < 3.2)
+    faraday (2.11.0)
+      faraday-net_http (>= 2.0, < 3.4)
       logger
     faraday-follow_redirects (0.3.0)
       faraday (>= 1, < 3)
@@ -996,7 +996,7 @@ GEM
     i18n (1.14.4)
       concurrent-ruby (~> 1.0)
     i18n_data (0.13.1)
-    icalendar (2.10.1)
+    icalendar (2.10.2)
       ice_cube (~> 0.16)
     ice_cube (0.16.4)
     ice_nine (0.11.2)
@@ -1070,8 +1070,8 @@ GEM
       recursive-open-struct (~> 1.1, >= 1.1.1)
       rest-client (~> 2.0)
     language_server-protocol (3.17.0.3)
-    launchy (2.5.0)
-      addressable (~> 2.7)
+    launchy (2.5.2)
+      addressable (~> 2.8)
     lefthook (1.7.14)
     letter_opener (1.10.0)
       launchy (>= 2.2, < 4)
@@ -1151,7 +1151,8 @@ GEM
     mixlib-log (3.0.9)
     mixlib-shellout (3.2.7)
       chef-utils
-    mize (0.6.0)
+    mize (0.4.1)
+      protocol (~> 2.0)
     msgpack (1.5.4)
     multi_json (1.14.1)
     multi_xml (0.6.0)
@@ -1271,14 +1272,14 @@ GEM
       tzinfo
       validate_url
       webfinger (~> 2.0)
-    openssl (3.1.0)
+    openssl (3.2.0)
     openssl-signature_algorithm (1.3.0)
       openssl (> 2.0)
     opentelemetry-api (1.2.5)
     opentelemetry-common (0.21.0)
       opentelemetry-api (~> 1.0)
-    opentelemetry-exporter-otlp (0.27.0)
-      google-protobuf (~> 3.14)
+    opentelemetry-exporter-otlp (0.28.1)
+      google-protobuf (>= 3.18)
       googleapis-common-protos-types (~> 1.3)
       opentelemetry-api (~> 1.1)
       opentelemetry-common (~> 0.20)
@@ -1294,89 +1295,81 @@ GEM
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
       opentelemetry-instrumentation-rack (~> 0.21)
-    opentelemetry-instrumentation-action_view (0.7.0)
+    opentelemetry-instrumentation-action_view (0.7.2)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-active_support (~> 0.1)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-active_job (0.7.1)
+    opentelemetry-instrumentation-active_job (0.7.7)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-active_record (0.7.2)
+    opentelemetry-instrumentation-active_record (0.7.4)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-active_support (0.5.1)
+    opentelemetry-instrumentation-active_support (0.6.0)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-aws_sdk (0.5.2)
+    opentelemetry-instrumentation-aws_sdk (0.5.4)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
     opentelemetry-instrumentation-base (0.22.3)
       opentelemetry-api (~> 1.0)
       opentelemetry-registry (~> 0.1)
-    opentelemetry-instrumentation-concurrent_ruby (0.21.3)
+    opentelemetry-instrumentation-concurrent_ruby (0.21.4)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-ethon (0.21.5)
+    opentelemetry-instrumentation-ethon (0.21.8)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-excon (0.22.2)
+    opentelemetry-instrumentation-excon (0.22.4)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-faraday (0.24.3)
+    opentelemetry-instrumentation-faraday (0.24.6)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-grape (0.1.8)
+    opentelemetry-instrumentation-grape (0.2.0)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
       opentelemetry-instrumentation-rack (~> 0.21)
-    opentelemetry-instrumentation-graphql (0.28.2)
+    opentelemetry-instrumentation-graphql (0.28.4)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-http (0.23.3)
+    opentelemetry-instrumentation-http (0.23.4)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-http_client (0.22.5)
+    opentelemetry-instrumentation-http_client (0.22.7)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-net_http (0.22.5)
+    opentelemetry-instrumentation-net_http (0.22.7)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-pg (0.27.3)
+    opentelemetry-instrumentation-pg (0.28.0)
       opentelemetry-api (~> 1.0)
       opentelemetry-helpers-sql-obfuscation
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-rack (0.24.4)
+    opentelemetry-instrumentation-rack (0.24.6)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-rails (0.30.2)
+    opentelemetry-instrumentation-rails (0.31.2)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-action_mailer (~> 0.1.0)
       opentelemetry-instrumentation-action_pack (~> 0.9.0)
       opentelemetry-instrumentation-action_view (~> 0.7.0)
       opentelemetry-instrumentation-active_job (~> 0.7.0)
       opentelemetry-instrumentation-active_record (~> 0.7.0)
-      opentelemetry-instrumentation-active_support (~> 0.5.0)
+      opentelemetry-instrumentation-active_support (~> 0.6.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
     opentelemetry-instrumentation-rake (0.2.2)
       opentelemetry-api (~> 1.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-redis (0.25.5)
+    opentelemetry-instrumentation-redis (0.25.7)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
-    opentelemetry-instrumentation-sidekiq (0.25.4)
+    opentelemetry-instrumentation-sidekiq (0.25.7)
       opentelemetry-api (~> 1.0)
-      opentelemetry-common (~> 0.21.0)
       opentelemetry-instrumentation-base (~> 0.22.1)
     opentelemetry-registry (0.3.0)
       opentelemetry-api (~> 1.1)
-    opentelemetry-sdk (1.4.1)
+    opentelemetry-sdk (1.5.0)
       opentelemetry-api (~> 1.1)
       opentelemetry-common (~> 0.20)
       opentelemetry-registry (~> 0.2)
@@ -1445,6 +1438,8 @@ GEM
       unparser
     prometheus-client-mmap (1.1.1)
       rb_sys (~> 0.9.86)
+    protocol (2.0.0)
+      ruby_parser (~> 3.0)
     pry (0.14.2)
       coderay (~> 1.1)
       method_source (~> 1.0)
@@ -1459,7 +1454,7 @@ GEM
       tty-prompt
     psych (5.1.2)
       stringio
-    public_suffix (5.0.0)
+    public_suffix (6.0.1)
     puma (6.4.0)
       nio4r (~> 2.0)
     pyu-ruby-sasl (0.0.3.3)
@@ -1491,20 +1486,20 @@ GEM
     rackup (1.0.0)
       rack (< 3)
       webrick
-    rails (7.1.3.4)
-      actioncable (= 7.1.3.4)
-      actionmailbox (= 7.1.3.4)
-      actionmailer (= 7.1.3.4)
-      actionpack (= 7.1.3.4)
-      actiontext (= 7.1.3.4)
-      actionview (= 7.1.3.4)
-      activejob (= 7.1.3.4)
-      activemodel (= 7.1.3.4)
-      activerecord (= 7.1.3.4)
-      activestorage (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    rails (7.1.4)
+      actioncable (= 7.1.4)
+      actionmailbox (= 7.1.4)
+      actionmailer (= 7.1.4)
+      actionpack (= 7.1.4)
+      actiontext (= 7.1.4)
+      actionview (= 7.1.4)
+      activejob (= 7.1.4)
+      activemodel (= 7.1.4)
+      activerecord (= 7.1.4)
+      activestorage (= 7.1.4)
+      activesupport (= 7.1.4)
       bundler (>= 1.15.0)
-      railties (= 7.1.3.4)
+      railties (= 7.1.4)
     rails-controller-testing (1.0.5)
       actionpack (>= 5.0.1.rc1)
       actionview (>= 5.0.1.rc1)
@@ -1519,9 +1514,9 @@ GEM
     rails-i18n (7.0.9)
       i18n (>= 0.7, < 2)
       railties (>= 6.0.0, < 8)
-    railties (7.1.3.4)
-      actionpack (= 7.1.3.4)
-      activesupport (= 7.1.3.4)
+    railties (7.1.4)
+      actionpack (= 7.1.4)
+      activesupport (= 7.1.4)
       irb
       rackup (>= 1.0.0)
       rake (>= 12.2)
@@ -1570,7 +1565,7 @@ GEM
       redis (>= 4, < 6)
     regexp_parser (2.6.0)
     regexp_property_values (1.0.0)
-    reline (0.5.9)
+    reline (0.5.10)
       io-console (~> 0.5)
     representable (3.2.0)
       declarative (< 0.1.0)
@@ -1677,7 +1672,7 @@ GEM
     ruby-fogbugz (0.3.0)
       crack (~> 0.4)
       multipart-post (~> 2.0)
-    ruby-lsp (0.17.14)
+    ruby-lsp (0.17.15)
       language_server-protocol (~> 3.17.0)
       prism (>= 0.29.0, < 0.31)
       rbs (>= 3, < 4)
@@ -1696,6 +1691,9 @@ GEM
       rexml
     ruby-statistics (3.0.0)
     ruby2_keywords (0.0.5)
+    ruby_parser (3.21.0)
+      racc (~> 1.5)
+      sexp_processor (~> 4.16)
     rubyntlm (0.6.3)
     rubypants (0.2.0)
     rubyzip (2.3.2)
@@ -1736,6 +1734,7 @@ GEM
     sentry-sidekiq (5.19.0)
       sentry-ruby (~> 5.19.0)
       sidekiq (>= 3.0)
+    sexp_processor (4.17.1)
     shellany (0.0.1)
     shoulda-matchers (5.1.0)
       activesupport (>= 5.2.0)
@@ -2253,7 +2252,7 @@ DEPENDENCIES
   rack-oauth2 (~> 2.2.1)
   rack-proxy (~> 0.7.7)
   rack-timeout (~> 0.7.0)
-  rails (~> 7.1.3.4)
+  rails (~> 7.1.4)
   rails-controller-testing
   rails-i18n (~> 7.0, >= 7.0.9)
   rainbow (~> 3.0)
diff --git a/app/models/concerns/partitioned_table.rb b/app/models/concerns/partitioned_table.rb
index 1a358cd282d759a3a5246aeb9b5e4811ec641bb3..79783e0fcc38acafb3b3c90ce5d0e834ad913c14 100644
--- a/app/models/concerns/partitioned_table.rb
+++ b/app/models/concerns/partitioned_table.rb
@@ -31,7 +31,7 @@ def partitioned_by(partitioning_key, strategy:, **kwargs)
     def _returning_columns_for_insert
       auto_populated_columns = []
       auto_populated_columns = super if Gitlab.next_rails?
-      auto_populated_columns + Array(primary_key)
+      (auto_populated_columns + Array(primary_key)).uniq
     end
   end
 end
diff --git a/app/models/concerns/throttled_touch.rb b/app/models/concerns/throttled_touch.rb
index b5682abb229cf855c1f9a245fbecac5df9040bbf..31f41b031a7ed8103942587940cd027e1adc7d2a 100644
--- a/app/models/concerns/throttled_touch.rb
+++ b/app/models/concerns/throttled_touch.rb
@@ -7,6 +7,7 @@ module ThrottledTouch
   TOUCH_INTERVAL = 1.minute
 
   def touch(*args, **kwargs)
-    super if (Time.zone.now - updated_at) > TOUCH_INTERVAL
+    last_updated_at = updated_at_previously_was || updated_at
+    super if (Time.zone.now - last_updated_at) > TOUCH_INTERVAL
   end
 end
diff --git a/config/application.rb b/config/application.rb
index 1dd3eb2b496c51fc1d21e67872cccbe1734a0521..e1bdca17a6b37a941cf28c6f2e5ecd3790410878 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -38,15 +38,14 @@ class Application < Rails::Application
     config.active_record.automatic_scope_inversing = nil # New default is true
     config.active_record.verify_foreign_keys_for_fixtures = nil # New default is true
     config.active_record.partial_inserts = true # New default is false
-    config.active_support.disable_to_s_conversion = false # New default is true
     config.active_support.executor_around_test_case = nil # New default is true
     config.active_support.isolation_level = nil # New default is thread
     config.active_support.key_generator_hash_digest_class = nil # New default is OpenSSL::Digest::SHA256
-    config.active_support.use_rfc4122_namespaced_uuids = nil # New default is true
 
     # Rails 6.1
     config.action_dispatch.cookies_same_site_protection = nil # New default is :lax
     config.action_view.preload_links_header = false
+    ActiveSupport.utc_to_local_returns_utc_offset_times = false
 
     # Rails 5.2
     config.action_dispatch.use_authenticated_cookie_encryption = false
@@ -60,7 +59,6 @@ class Application < Rails::Application
     # Rails 5.0
     config.action_controller.per_form_csrf_tokens = false
     config.action_controller.forgery_protection_origin_check = false
-    ActiveSupport.to_time_preserves_timezone = false
 
     require_dependency Rails.root.join('lib/gitlab')
     require_dependency Rails.root.join('lib/gitlab/action_cable/config')
@@ -91,7 +89,9 @@ class Application < Rails::Application
 
     unless ::Gitlab.next_rails?
       config.active_support.cache_format_version = nil
-      ActiveSupport.utc_to_local_returns_utc_offset_times = false
+      config.active_support.disable_to_s_conversion = false # New default is true
+      config.active_support.use_rfc4122_namespaced_uuids = true
+      ActiveSupport.to_time_preserves_timezone = false
     end
 
     config.exceptions_app = Gitlab::ExceptionsApp.new(Gitlab.jh? ? Rails.root.join('jh/public') : Rails.public_path)
@@ -245,9 +245,6 @@ class Application < Rails::Application
       selectedText
     ]
 
-    # This config option can be removed after Rails 7.1 by https://gitlab.com/gitlab-org/gitlab/-/issues/416270
-    config.active_support.use_rfc4122_namespaced_uuids = true
-
     # Enable escaping HTML in JSON.
     config.active_support.escape_html_entities_in_json = true
 
diff --git a/config/initializers/00_deprecations.rb b/config/initializers/00_deprecations.rb
index 315d319e5b23c041f081210357c776809053edbc..eeed495a2972a05c9a2651c0ed1b027ebbb948ba 100644
--- a/config/initializers/00_deprecations.rb
+++ b/config/initializers/00_deprecations.rb
@@ -19,6 +19,7 @@
 
 ignored_warnings = [
   /`Rails.application.secrets` is deprecated in favor of `Rails.application.credentials`/,
+  /Your `secret_key_base` is configured in `Rails.application.secrets`, which is deprecated in favor of/,
   /Please pass the (coder|class) as a keyword argument/
 ]
 
diff --git a/ee/app/models/ee/note.rb b/ee/app/models/ee/note.rb
index 3190ab17c24ce5564e784ec42bb41c55932efce7..abcb8a998d35ce42143362c000d201f738cb5a9c 100644
--- a/ee/app/models/ee/note.rb
+++ b/ee/app/models/ee/note.rb
@@ -117,7 +117,7 @@ def usage_ping_track_updated_epic_note(user)
     end
 
     def updated_by_or_author
-      last_edited_by || author
+      updated_by || author
     end
 
     private
diff --git a/lib/gitlab/background_migration/backfill_project_id_to_security_scans.rb b/lib/gitlab/background_migration/backfill_project_id_to_security_scans.rb
index 1d705447878cfd737f6c5a38ae5a7fc712d7dac7..43031414ca3a2a80fe3695bba2785c54e7230df5 100644
--- a/lib/gitlab/background_migration/backfill_project_id_to_security_scans.rb
+++ b/lib/gitlab/background_migration/backfill_project_id_to_security_scans.rb
@@ -11,8 +11,11 @@ class Scan < ::Gitlab::Database::SecApplicationRecord
       end
 
       class Build < ::Ci::ApplicationRecord
+        include PartitionedTable
+
         self.table_name = 'p_ci_builds'
         self.inheritance_column = :_type_disabled
+        self.primary_key = :id
       end
 
       def perform
diff --git a/lib/gitlab/import_export/attribute_cleaner.rb b/lib/gitlab/import_export/attribute_cleaner.rb
index 379a734b19cb45072d8fda97873e579931d90cd7..a13aa06708220a3bdc3cc4ec08f0355e6d2fbc1b 100644
--- a/lib/gitlab/import_export/attribute_cleaner.rb
+++ b/lib/gitlab/import_export/attribute_cleaner.rb
@@ -31,6 +31,7 @@ def initialize(relation_hash:, relation_class:, excluded_keys: [])
       end
 
       def clean
+        @relation_class.define_attribute_methods
         @relation_hash.reject do |key, _value|
           prohibited_key?(key) || !@relation_class.attribute_method?(key) || excluded_key?(key)
         end.except('id')
diff --git a/spec/lib/gitlab/import_export/project/relation_factory_spec.rb b/spec/lib/gitlab/import_export/project/relation_factory_spec.rb
index 72dfc76ba494e210d64acac8b189bdc12b6b63d0..9a0721c96ea33cbc22d3b1e4e0691969e0389f16 100644
--- a/spec/lib/gitlab/import_export/project/relation_factory_spec.rb
+++ b/spec/lib/gitlab/import_export/project/relation_factory_spec.rb
@@ -30,6 +30,7 @@
     stub_const('FooModel', Class.new)
     FooModel.class_eval do
       include ActiveModel::Model
+      include ActiveModel::AttributeMethods
 
       def initialize(params = {})
         params.each { |key, value| send("#{key}=", value) }
diff --git a/spec/services/users/migrate_records_to_ghost_user_service_spec.rb b/spec/services/users/migrate_records_to_ghost_user_service_spec.rb
index 9e84e6f6da90303e6209666855c7c6b842a6228c..61b9bfbd01377456a1c02f61b092c31f4a6a1449 100644
--- a/spec/services/users/migrate_records_to_ghost_user_service_spec.rb
+++ b/spec/services/users/migrate_records_to_ghost_user_service_spec.rb
@@ -185,7 +185,11 @@
     context 'for batched nullify' do
       # rubocop:disable Layout/LineLength
       def nullify_in_batches_regexp(table, column, user, batch_size: 100)
-        %r{^UPDATE "#{table}" SET "#{column}" = NULL WHERE "#{table}"."id" IN \(SELECT "#{table}"."id" FROM "#{table}" WHERE "#{table}"."#{column}" = #{user.id} LIMIT #{batch_size}\)}
+        if ::Gitlab.next_rails?
+          %r{^UPDATE "#{table}" SET "#{column}" = NULL WHERE \("#{table}"."id"\) IN \(SELECT "#{table}"."id" FROM "#{table}" WHERE "#{table}"."#{column}" = #{user.id} LIMIT #{batch_size}\)}
+        else
+          %r{^UPDATE "#{table}" SET "#{column}" = NULL WHERE "#{table}"."id" IN \(SELECT "#{table}"."id" FROM "#{table}" WHERE "#{table}"."#{column}" = #{user.id} LIMIT #{batch_size}\)}
+        end
       end
       # rubocop:enable Layout/LineLength
 
diff --git a/spec/support/shared_examples/models/throttled_touch_shared_examples.rb b/spec/support/shared_examples/models/throttled_touch_shared_examples.rb
index e869cbce6ae90877256bf87a4cddcd460abaa758..286130b481da7dc6f4b99d72b6e72c766c04b04a 100644
--- a/spec/support/shared_examples/models/throttled_touch_shared_examples.rb
+++ b/spec/support/shared_examples/models/throttled_touch_shared_examples.rb
@@ -14,7 +14,7 @@
       second_updated_at = Time.zone.now - (ThrottledTouch::TOUCH_INTERVAL * 1.5)
 
       travel_to(first_updated_at) { subject.touch }
-      travel_to(second_updated_at) { subject.touch }
+      travel_to(second_updated_at) { subject.reload.touch }
 
       expect(subject.updated_at).to be_like_time(first_updated_at)
     end