From ed272b1eca3792aad37586832c7c1e3e5568dc18 Mon Sep 17 00:00:00 2001
From: Dave Long <dave@longwaveconsulting.com>
Date: Fri, 11 Oct 2024 22:41:18 +0100
Subject: [PATCH 01/15] Deprecate not specifying orderby in config schema.

---
 core/lib/Drupal/Core/Config/StorableConfigBase.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/core/lib/Drupal/Core/Config/StorableConfigBase.php b/core/lib/Drupal/Core/Config/StorableConfigBase.php
index 750f8f4f5e5a..230d6216f750 100644
--- a/core/lib/Drupal/Core/Config/StorableConfigBase.php
+++ b/core/lib/Drupal/Core/Config/StorableConfigBase.php
@@ -288,6 +288,8 @@ protected function castValue($key, $value) {
               sort($value);
               break;
 
+            default:
+              @trigger_error("Not specifying orderby for the config sequence {$this->getName()}:$key is deprecated in drupal:11.1.0 and will throw an exception in drupal:12.0.0. See https://www.drupal.org/node/7654321", E_USER_DEPRECATED);
           }
         }
       }
-- 
GitLab


From 1b54eb3a466ec7356fb3bf8dd38d8a1b942c04f8 Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 17:09:07 -0700
Subject: [PATCH 02/15] Update via a script, lets see if it fixes anything.

---
 core/config/schema/core.data_types.schema.yml   | 17 +++++++++++++++++
 core/config/schema/core.entity.schema.yml       |  6 ++++++
 core/config/schema/core.extension.schema.yml    |  2 ++
 core/config/schema/core.menu.schema.yml         |  1 +
 .../block/config/schema/block.schema.yml        |  1 +
 .../config/schema/ckeditor5.schema.yml          |  6 ++++++
 .../ckeditor5_plugin_elements_subset.schema.yml |  1 +
 .../config_schema_deprecated_test.schema.yml    |  1 +
 .../config/schema/config_schema_test.schema.yml |  8 ++++++++
 .../config/schema/config_test.schema.yml        |  5 +++++
 .../schema/config_translation_test.schema.yml   |  1 +
 .../contact/config/schema/contact.schema.yml    |  1 +
 .../config/schema/content_moderation.schema.yml |  2 ++
 .../schema/content_translation.schema.yml       |  2 ++
 .../config/schema/contextual.views.schema.yml   |  1 +
 .../field/config/schema/field.schema.yml        |  2 ++
 .../filter/config/schema/filter.schema.yml      |  2 ++
 .../config/schema/filter_test.schema.yml        |  1 +
 .../image/config/schema/image.schema.yml        |  1 +
 .../language/config/schema/language.schema.yml  |  9 +++++++++
 .../config/schema/layout_builder.schema.yml     |  3 +++
 .../schema/layout_builder_test.schema.yml       |  1 +
 core/modules/link/config/schema/link.schema.yml |  2 ++
 .../media/config/schema/media.schema.yml        |  4 ++++
 .../config/schema/media_library.schema.yml      |  1 +
 .../schema/media_library_test_widget.schema.yml |  1 +
 .../menu_ui/config/schema/menu_ui.schema.yml    |  1 +
 .../config/schema/migrate_drupal.schema.yml     |  2 ++
 .../config/schema/navigation.schema.yml         |  1 +
 .../node/config/schema/node.views.schema.yml    |  1 +
 .../options/config/schema/options.schema.yml    |  3 +++
 .../config/schema/responsive_image.schema.yml   |  2 ++
 core/modules/rest/config/schema/rest.schema.yml |  5 +++++
 .../rest/config/schema/rest.views.schema.yml    |  3 +++
 .../system/config/schema/system.schema.yml      |  2 ++
 .../config/schema/condition_test.schema.yml     |  1 +
 .../config/schema/entity_test_update.schema.yml |  1 +
 .../config/schema/form_test.schema.yml          |  1 +
 .../schema/test_theme_settings.schema.yml       |  2 ++
 .../config/schema/test_theme_theme.schema.yml   |  1 +
 .../config/schema/taxonomy.views.schema.yml     |  5 +++++
 core/modules/text/config/schema/text.schema.yml |  3 +++
 .../update/config/schema/update.schema.yml      |  1 +
 .../config/schema/update.source.schema.yml      |  1 +
 .../config/schema/update_test.schema.yml        |  4 ++++
 core/modules/user/config/schema/user.schema.yml |  2 ++
 .../user/config/schema/user.views.schema.yml    |  2 ++
 .../schema/views.argument_validator.schema.yml  |  2 ++
 .../config/schema/views.data_types.schema.yml   | 16 ++++++++++++++++
 .../config/schema/views.display.schema.yml      |  2 ++
 .../schema/views.entity_reference.schema.yml    |  1 +
 .../views/config/schema/views.field.schema.yml  |  2 ++
 .../views/config/schema/views.filter.schema.yml |  4 ++++
 .../views/config/schema/views.query.schema.yml  |  1 +
 .../views/config/schema/views.row.schema.yml    |  1 +
 .../views/config/schema/views.schema.yml        |  5 +++++
 .../views/config/schema/views.style.schema.yml  |  3 +++
 .../schema/views_test_data.views.schema.yml     |  1 +
 .../config/schema/workflows.schema.yml          |  1 +
 .../config/schema/workflow_type_test.schema.yml |  5 +++++
 60 files changed, 170 insertions(+)

diff --git a/core/config/schema/core.data_types.schema.yml b/core/config/schema/core.data_types.schema.yml
index b7798d0373d7..4528c1fcb805 100644
--- a/core/config/schema/core.data_types.schema.yml
+++ b/core/config/schema/core.data_types.schema.yml
@@ -54,6 +54,7 @@ mapping:
     # By default, allow the explicitly listed mapping keys, and require their
     # presence unless `requiredKey: false` is specified.
     ValidKeys: '<infer>'
+orderby: key
 sequence:
   label: Sequence
   class: '\Drupal\Core\Config\Schema\Sequence'
@@ -257,6 +258,7 @@ filter:
 action_configuration_default:
   type: sequence
   label: 'Action configuration'
+  orderby: key
   sequence:
     type: string
 
@@ -324,6 +326,7 @@ theme_settings:
       requiredKey: false
       type: sequence
       label: 'Third party settings'
+      orderby: key
       sequence:
         type: theme_settings.third_party.[%key]
 
@@ -338,6 +341,7 @@ route:
     route_params:
       type: sequence
       label: 'Route Params'
+      orderby: key
       sequence:
         type: string
         label: 'Param'
@@ -351,6 +355,7 @@ config_dependencies_base:
       requiredKey: false
       type: sequence
       label: 'Configuration entity dependencies'
+      orderby: key
       sequence:
         type: string
         constraints:
@@ -361,6 +366,7 @@ config_dependencies_base:
       requiredKey: false
       type: sequence
       label: 'Content entity dependencies'
+      orderby: key
       sequence:
         type: string
     module:
@@ -368,6 +374,7 @@ config_dependencies_base:
       requiredKey: false
       type: sequence
       label: 'Module dependencies'
+      orderby: key
       sequence:
         type: string
         constraints:
@@ -379,6 +386,7 @@ config_dependencies_base:
       requiredKey: false
       type: sequence
       label: 'Theme dependencies'
+      orderby: key
       sequence:
         type: string
         constraints:
@@ -420,6 +428,7 @@ config_entity:
       requiredKey: false
       type: sequence
       label: 'Third party settings'
+      orderby: key
       sequence:
         type: '[%parent.%parent.%type].third_party.[%key]'
     _core:
@@ -458,6 +467,7 @@ block_settings:
       requiredKey: false
       type: sequence
       label: 'Context assignments'
+      orderby: key
       sequence:
         type: string
 
@@ -480,6 +490,7 @@ condition.plugin:
     context_mapping:
       type: sequence
       label: 'Context assignments'
+      orderby: key
       sequence:
         type: string
 
@@ -488,6 +499,7 @@ condition.plugin.entity_bundle:*:
   mapping:
     bundles:
       type: sequence
+      orderby: key
       sequence:
         type: string
 
@@ -517,6 +529,7 @@ layout_plugin.settings:
     context_mapping:
       type: sequence
       label: 'Context assignments'
+      orderby: key
       sequence:
         type: string
 
@@ -563,6 +576,7 @@ field_config_base:
     default_value:
       type: sequence
       label: 'Default values'
+      orderby: key
       sequence:
         type: field.value.[%parent.%parent.field_type]
         label: 'Default value'
@@ -811,6 +825,7 @@ field.value.boolean:
 field.field_settings.email:
   type: mapping
   label: 'Email settings'
+  orderby: key
   sequence:
     type: string
     label: 'Setting'
@@ -986,6 +1001,7 @@ entity_reference_selection.default:
       type: sequence
       label: 'types'
       nullable: true
+      orderby: key
       sequence:
         type: string
         label: 'Bundle'
@@ -1058,6 +1074,7 @@ mailer_dsn:
 mailer_dsn.options.*:
   type: sequence
   label: 'Options'
+  orderby: key
   sequence:
     type: string
     label: Option
diff --git a/core/config/schema/core.entity.schema.yml b/core/config/schema/core.entity.schema.yml
index 2934ca7fee0c..645d5d935207 100644
--- a/core/config/schema/core.entity.schema.yml
+++ b/core/config/schema/core.entity.schema.yml
@@ -62,11 +62,13 @@ core.entity_view_display.*.*.*:
     content:
       type: sequence
       label: 'Field formatters'
+      orderby: key
       sequence:
         type: field_formatter.entity_view_display
     hidden:
       type: sequence
       label: 'Field display setting'
+      orderby: key
       sequence:
         type: boolean
         label: 'Value'
@@ -94,6 +96,7 @@ field_formatter:
       requiredKey: false
       type: sequence
       label: 'Third party settings'
+      orderby: key
       sequence:
         type: field.formatter.third_party.[%key]
 
@@ -132,6 +135,7 @@ core.entity_form_display.*.*.*:
     content:
       type: sequence
       label: 'Field widgets'
+      orderby: key
       sequence:
         type: mapping
         label: 'Field widget'
@@ -158,11 +162,13 @@ core.entity_form_display.*.*.*:
             requiredKey: false
             type: sequence
             label: 'Third party settings'
+            orderby: key
             sequence:
               type: field.widget.third_party.[%key]
     hidden:
       type: sequence
       label: 'Hidden'
+      orderby: key
       sequence:
         type: boolean
         label: 'Component'
diff --git a/core/config/schema/core.extension.schema.yml b/core/config/schema/core.extension.schema.yml
index 19f52db5a3f4..e10a7caa5c8d 100644
--- a/core/config/schema/core.extension.schema.yml
+++ b/core/config/schema/core.extension.schema.yml
@@ -5,12 +5,14 @@ core.extension:
     module:
       type: sequence
       label: 'Enabled modules'
+      orderby: key
       sequence:
         type: integer
         label: 'Weight'
     theme:
       type: sequence
       label: 'Installed themes'
+      orderby: key
       sequence:
         type: integer
         label: 'Weight'
diff --git a/core/config/schema/core.menu.schema.yml b/core/config/schema/core.menu.schema.yml
index bf2bb195274e..1b4b6a2ec028 100644
--- a/core/config/schema/core.menu.schema.yml
+++ b/core/config/schema/core.menu.schema.yml
@@ -5,6 +5,7 @@ core.menu.static_menu_link_overrides:
     definitions:
       type: sequence
       label: Definitions
+      orderby: key
       sequence:
         type: mapping
         label: Definition
diff --git a/core/modules/block/config/schema/block.schema.yml b/core/modules/block/config/schema/block.schema.yml
index 9c28c0b37232..6532d303482c 100644
--- a/core/modules/block/config/schema/block.schema.yml
+++ b/core/modules/block/config/schema/block.schema.yml
@@ -53,6 +53,7 @@ block.block.*:
     visibility:
       type: sequence
       label: 'Visibility Conditions'
+      orderby: key
       sequence:
         type: condition.plugin.[id]
         label: 'Visibility Condition'
diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
index 683444948410..2073cbd5968f 100644
--- a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
+++ b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
@@ -12,6 +12,7 @@ editor.settings.ckeditor5:
           type: sequence
           orderby: ~
           label: 'Items'
+          orderby: key
           sequence:
             type: ckeditor5.toolbar_item
             label: 'Button'
@@ -67,6 +68,7 @@ ckeditor5.plugin.ckeditor5_heading:
       constraints:
         NotBlank:
           message: "Enable at least one heading, otherwise disable the Heading plugin."
+      orderby: key
       sequence:
         type: string
         label: 'Heading type'
@@ -98,6 +100,7 @@ ckeditor5.plugin.ckeditor5_sourceEditing:
       type: sequence
       orderby: ~
       label: 'Allowed Tags'
+      orderby: key
       sequence:
         type: ckeditor5.element
         label: 'Allowed Tag'
@@ -119,6 +122,7 @@ ckeditor5.plugin.ckeditor5_alignment:
       constraints:
         NotBlank:
           message: "Enable at least one alignment, otherwise disable the Alignment button."
+      orderby: key
       sequence:
         type: string
         label: 'Alignment type'
@@ -185,6 +189,7 @@ ckeditor5.plugin.ckeditor5_codeBlock:
           message: "Enable at least one language, otherwise disable the Code Block plugin."
         UniqueLabelInList:
           labelKey: label
+      orderby: key
       sequence:
         type: mapping
         label: 'Language'
@@ -212,6 +217,7 @@ ckeditor5.plugin.ckeditor5_style:
           message: "Enable at least one style, otherwise disable the Style plugin."
         UniqueLabelInList:
           labelKey: label
+      orderby: key
       sequence:
         type: mapping
         label: 'Style'
diff --git a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml
index 3a861e26a5be..ee9fb49790f1 100644
--- a/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml
+++ b/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_elements_subset/config/schema/ckeditor5_plugin_elements_subset.schema.yml
@@ -5,6 +5,7 @@ ckeditor5.plugin.ckeditor5_plugin_elements_subset_sneakySuperset:
     configured_subset:
       type: sequence
       label: 'Allowed Tags'
+      orderby: key
       sequence:
         type: ckeditor5.element
         label: 'Allowed Tag'
diff --git a/core/modules/config/tests/config_schema_deprecated_test/config/schema/config_schema_deprecated_test.schema.yml b/core/modules/config/tests/config_schema_deprecated_test/config/schema/config_schema_deprecated_test.schema.yml
index 40359e418c48..55f9d08c71bf 100644
--- a/core/modules/config/tests/config_schema_deprecated_test/config/schema/config_schema_deprecated_test.schema.yml
+++ b/core/modules/config/tests/config_schema_deprecated_test/config/schema/config_schema_deprecated_test.schema.yml
@@ -9,5 +9,6 @@ config_schema_deprecated_test.settings:
           type: string
         products:
           type: sequence
+          orderby: key
           sequence:
             type: string
diff --git a/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml b/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml
index f56d4365858d..ac456f220034 100644
--- a/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml
+++ b/core/modules/config/tests/config_schema_test/config/schema/config_schema_test.schema.yml
@@ -115,8 +115,10 @@ config_schema_test.schema_data_types:
       mapping:
         string:
           type: string
+    orderby: key
     sequence:
       type: sequence
+      orderby: key
       sequence:
         type: boolean
 
@@ -146,10 +148,12 @@ config_schema_test.plugin_types:
   mapping:
     tests:
       type: sequence
+      orderby: key
       sequence:
         type: test.plugin_types.[plugin_id]
     test_with_parents:
       type: sequence
+      orderby: key
       sequence:
         type: mapping
         mapping:
@@ -214,6 +218,7 @@ wrapping.config_schema_test.plugin_types:
   mapping:
     tests:
       type: sequence
+      orderby: key
       sequence:
         type: wrapping.test.plugin_types.[plugin_id]
 
@@ -234,6 +239,7 @@ wrapping.config_schema_test.double_brackets:
   mapping:
     tests:
       type: sequence
+      orderby: key
       sequence:
         type: wrapping.test.double_brackets.[another_key]
 
@@ -271,6 +277,7 @@ wrapping.config_schema_test.other_double_brackets:
   mapping:
     tests:
       type: sequence
+      orderby: key
       sequence:
         type: wrapping.test.other_double_brackets.[id]
 
@@ -308,6 +315,7 @@ config_schema_test.schema_sequence_sort:
         type: string
     no_sort:
       type: sequence
+      orderby: key
       sequence:
         type: string
     complex_sort_value:
diff --git a/core/modules/config/tests/config_test/config/schema/config_test.schema.yml b/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
index 871ed6326ce1..c850bc575fc3 100644
--- a/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
+++ b/core/modules/config/tests/config_test/config/schema/config_test.schema.yml
@@ -54,9 +54,11 @@ config_test.query.*:
     array:
       type: sequence
       label: 'Array level 1'
+      orderby: key
       sequence:
         type: sequence
         label: 'Array level 2'
+        orderby: key
         sequence:
           type: integer
           label: 'Value'
@@ -71,6 +73,7 @@ config_test.types:
     array:
       type: sequence
       label: 'Array'
+      orderby: key
       sequence:
         type: string
         label: 'Item'
@@ -113,6 +116,7 @@ config_test.types:
       type: sequence
       label: 'Nullable array'
       nullable: true
+      orderby: key
       sequence:
         type: string
         label: 'Item'
@@ -290,6 +294,7 @@ config_test.validation:
       constraints:
         Callback:
           callback: [\Drupal\config_test\ConfigValidation, validateSequence]
+      orderby: key
       sequence:
         type: string
         constraints:
diff --git a/core/modules/config_translation/tests/modules/config_translation_test/config/schema/config_translation_test.schema.yml b/core/modules/config_translation/tests/modules/config_translation_test/config/schema/config_translation_test.schema.yml
index b79260115a10..7b8bdb4d2034 100644
--- a/core/modules/config_translation/tests/modules/config_translation_test/config/schema/config_translation_test.schema.yml
+++ b/core/modules/config_translation/tests/modules/config_translation_test/config/schema/config_translation_test.schema.yml
@@ -16,5 +16,6 @@ config_translation_test.content:
     animals:
       type: sequence
       label: 'Animals'
+      orderby: key
       sequence:
         type: label
diff --git a/core/modules/contact/config/schema/contact.schema.yml b/core/modules/contact/config/schema/contact.schema.yml
index 4617e47e7603..6414599d83f5 100644
--- a/core/modules/contact/config/schema/contact.schema.yml
+++ b/core/modules/contact/config/schema/contact.schema.yml
@@ -18,6 +18,7 @@ contact.form.*:
     recipients:
       type: sequence
       label: 'Recipients'
+      orderby: key
       sequence:
         type: email
         label: 'Email address'
diff --git a/core/modules/content_moderation/config/schema/content_moderation.schema.yml b/core/modules/content_moderation/config/schema/content_moderation.schema.yml
index 7b14efbe4927..1413bbd587b8 100644
--- a/core/modules/content_moderation/config/schema/content_moderation.schema.yml
+++ b/core/modules/content_moderation/config/schema/content_moderation.schema.yml
@@ -27,9 +27,11 @@ workflow.type_settings.content_moderation:
     entity_types:
       type: sequence
       label: 'Entity types'
+      orderby: key
       sequence:
         type: sequence
         label: 'Bundles'
+        orderby: key
         sequence:
           type: string
           label: 'Bundle ID'
diff --git a/core/modules/content_translation/config/schema/content_translation.schema.yml b/core/modules/content_translation/config/schema/content_translation.schema.yml
index 73676724bd70..89935c70debe 100644
--- a/core/modules/content_translation/config/schema/content_translation.schema.yml
+++ b/core/modules/content_translation/config/schema/content_translation.schema.yml
@@ -7,6 +7,7 @@ field.field.*.*.*.third_party.content_translation:
     translation_sync:
       type: sequence
       label: 'Field properties for which to synchronize translations'
+      orderby: key
       sequence:
         type: string
         label: 'Field column for which to synchronize translations'
@@ -21,6 +22,7 @@ language.content_settings.*.*.third_party.content_translation:
     bundle_settings:
       type: sequence
       label: 'Content translation bundle settings'
+      orderby: key
       sequence:
         type: string
         label: 'Bundle settings values'
diff --git a/core/modules/contextual/config/schema/contextual.views.schema.yml b/core/modules/contextual/config/schema/contextual.views.schema.yml
index 4be573c1a549..255c4823380f 100644
--- a/core/modules/contextual/config/schema/contextual.views.schema.yml
+++ b/core/modules/contextual/config/schema/contextual.views.schema.yml
@@ -7,6 +7,7 @@ views.field.contextual_links:
     fields:
       type: sequence
       label: 'Fields'
+      orderby: key
       sequence:
         type: string
         label: 'Link'
diff --git a/core/modules/field/config/schema/field.schema.yml b/core/modules/field/config/schema/field.schema.yml
index cdd1d4bab05c..3d0d0f4f76a3 100644
--- a/core/modules/field/config/schema/field.schema.yml
+++ b/core/modules/field/config/schema/field.schema.yml
@@ -51,9 +51,11 @@ field.storage.*.*:
     indexes:
       type: sequence
       label: 'Indexes'
+      orderby: key
       sequence:
         type: sequence
         label: 'Indexes'
+        orderby: key
         sequence:
           type: ignore
           label: 'Index'
diff --git a/core/modules/filter/config/schema/filter.schema.yml b/core/modules/filter/config/schema/filter.schema.yml
index 6f57fb413dc3..76e83f4f51c6 100644
--- a/core/modules/filter/config/schema/filter.schema.yml
+++ b/core/modules/filter/config/schema/filter.schema.yml
@@ -40,6 +40,7 @@ filter.format.*:
     roles:
       type: sequence
       label: 'Roles'
+      orderby: key
       sequence:
         type: string
         label: 'Role'
@@ -47,6 +48,7 @@ filter.format.*:
       type: sequence
       orderby: key
       label: 'Enabled filters'
+      orderby: key
       sequence:
         type: filter
 
diff --git a/core/modules/filter/tests/filter_test/config/schema/filter_test.schema.yml b/core/modules/filter/tests/filter_test/config/schema/filter_test.schema.yml
index 51dc5e61b4d8..5913311fc508 100644
--- a/core/modules/filter/tests/filter_test/config/schema/filter_test.schema.yml
+++ b/core/modules/filter/tests/filter_test/config/schema/filter_test.schema.yml
@@ -11,6 +11,7 @@ filter_settings.filter_test_restrict_tags_and_attributes:
         allowed:
           type: sequence
           label: 'Allowed tags and attributes'
+          orderby: key
           sequence:
             type: ignore
             label: 'Tag and optionally list of attributes'
diff --git a/core/modules/image/config/schema/image.schema.yml b/core/modules/image/config/schema/image.schema.yml
index f805caa378ca..9ae6420791ed 100644
--- a/core/modules/image/config/schema/image.schema.yml
+++ b/core/modules/image/config/schema/image.schema.yml
@@ -13,6 +13,7 @@ image.style.*:
       label: 'Label'
     effects:
       type: sequence
+      orderby: key
       sequence:
         type: mapping
         mapping:
diff --git a/core/modules/language/config/schema/language.schema.yml b/core/modules/language/config/schema/language.schema.yml
index f7ddf9f08584..08265ed5d0ad 100644
--- a/core/modules/language/config/schema/language.schema.yml
+++ b/core/modules/language/config/schema/language.schema.yml
@@ -7,12 +7,14 @@ language_type_negotiation:
     enabled:
       type: sequence
       label: 'Enabled negotiators'
+      orderby: key
       sequence:
         type: integer
         label: Weight
     method_weights:
       type: sequence
       label: 'Negotiator weights'
+      orderby: key
       sequence:
         type: integer
         label: Weight
@@ -24,18 +26,21 @@ language.types:
     all:
       type: sequence
       label: 'All language types'
+      orderby: key
       sequence:
         type: string
         label: 'Language type'
     configurable:
       type: sequence
       label: 'Configurable language types'
+      orderby: key
       sequence:
         type: string
         label: 'Language type'
     negotiation:
       type: sequence
       label: 'Language negotiation per type settings'
+      orderby: key
       sequence:
         type: language_type_negotiation
         label: 'Language negotiation per type setting'
@@ -61,12 +66,14 @@ language.negotiation:
         prefixes:
           type: sequence
           label: 'Path prefix configuration'
+          orderby: key
           sequence:
             type: string
             label: 'Path prefix'
         domains:
           type: sequence
           label: 'Domain configuration'
+          orderby: key
           sequence:
             type: string
             label: 'Domain'
@@ -80,6 +87,7 @@ language.mappings:
   mapping:
     map:
       type: sequence
+      orderby: key
       sequence:
         type: string
         label: 'Language'
@@ -155,5 +163,6 @@ condition.plugin.language:
   mapping:
     langcodes:
       type: sequence
+      orderby: key
       sequence:
         type: langcode
diff --git a/core/modules/layout_builder/config/schema/layout_builder.schema.yml b/core/modules/layout_builder/config/schema/layout_builder.schema.yml
index 0bab48dfbb5e..4bb7b61a8ded 100644
--- a/core/modules/layout_builder/config/schema/layout_builder.schema.yml
+++ b/core/modules/layout_builder/config/schema/layout_builder.schema.yml
@@ -10,6 +10,7 @@ core.entity_view_display.*.*.*.third_party.layout_builder:
       label: 'Allow a customized layout'
     sections:
       type: sequence
+      orderby: key
       sequence:
         type: layout_builder.section
 
@@ -30,11 +31,13 @@ layout_builder.section:
     components:
       type: sequence
       label: 'Components'
+      orderby: key
       sequence:
         type: layout_builder.component
     third_party_settings:
       type: sequence
       label: 'Third party settings'
+      orderby: key
       sequence:
         type: '[%parent.%parent.%type].third_party.[%key]'
 
diff --git a/core/modules/layout_builder/tests/modules/layout_builder_test/config/schema/layout_builder_test.schema.yml b/core/modules/layout_builder/tests/modules/layout_builder_test/config/schema/layout_builder_test.schema.yml
index 75050837faa7..aad39abdab31 100644
--- a/core/modules/layout_builder/tests/modules/layout_builder_test/config/schema/layout_builder_test.schema.yml
+++ b/core/modules/layout_builder/tests/modules/layout_builder_test/config/schema/layout_builder_test.schema.yml
@@ -3,5 +3,6 @@ layout_builder_test.test_simple_config.*:
   mapping:
     sections:
       type: sequence
+      orderby: key
       sequence:
         type: layout_builder.section
diff --git a/core/modules/link/config/schema/link.schema.yml b/core/modules/link/config/schema/link.schema.yml
index e3a1ffab98e5..a3741ba1054c 100644
--- a/core/modules/link/config/schema/link.schema.yml
+++ b/core/modules/link/config/schema/link.schema.yml
@@ -72,6 +72,7 @@ field.value.link:
         query:
           type: sequence
           label: 'URL query key value pairs'
+          orderby: key
           sequence:
             type: string
         fragment:
@@ -86,5 +87,6 @@ field.value.link:
         attributes:
           type: sequence
           label: 'Link attributes'
+          orderby: key
           sequence:
             type: string
diff --git a/core/modules/media/config/schema/media.schema.yml b/core/modules/media/config/schema/media.schema.yml
index 4311b11049c6..66272c11ed26 100644
--- a/core/modules/media/config/schema/media.schema.yml
+++ b/core/modules/media/config/schema/media.schema.yml
@@ -52,6 +52,7 @@ media.type.*:
     field_map:
       type: sequence
       label: 'Field map'
+      orderby: key
       sequence:
         type: string
 
@@ -111,6 +112,7 @@ media.source.oembed:*:
     providers:
       type: sequence
       label: 'Allowed oEmbed providers'
+      orderby: key
       sequence:
         type: string
         label: 'Provider name'
@@ -132,12 +134,14 @@ filter_settings.media_embed:
     allowed_view_modes:
       type: sequence
       label: 'View modes selectable in the "Edit media" dialog'
+      orderby: key
       sequence:
         type: string
         label: 'View mode'
     allowed_media_types:
       type: sequence
       label: 'Media types selectable in the Media Library'
+      orderby: key
       sequence:
         type: string
         label: 'Media type'
diff --git a/core/modules/media_library/config/schema/media_library.schema.yml b/core/modules/media_library/config/schema/media_library.schema.yml
index 312f4ab60718..65f0b333b4f7 100644
--- a/core/modules/media_library/config/schema/media_library.schema.yml
+++ b/core/modules/media_library/config/schema/media_library.schema.yml
@@ -5,6 +5,7 @@ field.widget.settings.media_library_widget:
     media_types:
       type: sequence
       label: 'Allowed media types, in display order'
+      orderby: key
       sequence:
         type: string
         label: 'Media type ID'
diff --git a/core/modules/media_library/tests/modules/media_library_test_widget/config/schema/media_library_test_widget.schema.yml b/core/modules/media_library/tests/modules/media_library_test_widget/config/schema/media_library_test_widget.schema.yml
index 81186253e1ae..5b084954ca52 100644
--- a/core/modules/media_library/tests/modules/media_library_test_widget/config/schema/media_library_test_widget.schema.yml
+++ b/core/modules/media_library/tests/modules/media_library_test_widget/config/schema/media_library_test_widget.schema.yml
@@ -5,6 +5,7 @@ field.widget.settings.media_library_inception_widget:
     media_types:
       type: sequence
       label: 'Allowed media types, in display order'
+      orderby: key
       sequence:
         type: string
         label: 'Media type ID'
diff --git a/core/modules/menu_ui/config/schema/menu_ui.schema.yml b/core/modules/menu_ui/config/schema/menu_ui.schema.yml
index 0ec16221aad4..eb8d0579ce42 100644
--- a/core/modules/menu_ui/config/schema/menu_ui.schema.yml
+++ b/core/modules/menu_ui/config/schema/menu_ui.schema.yml
@@ -17,6 +17,7 @@ node.type.*.third_party.menu_ui:
     available_menus:
       type: sequence
       label: 'Available menus'
+      orderby: key
       sequence:
         type: string
         label: 'Menu machine name'
diff --git a/core/modules/migrate_drupal/config/schema/migrate_drupal.schema.yml b/core/modules/migrate_drupal/config/schema/migrate_drupal.schema.yml
index 1b09e06ce604..897dc6d4a618 100644
--- a/core/modules/migrate_drupal/config/schema/migrate_drupal.schema.yml
+++ b/core/modules/migrate_drupal/config/schema/migrate_drupal.schema.yml
@@ -5,12 +5,14 @@ migrate_drupal.settings:
     enforce_source_module_tags:
       type: sequence
       label: 'source_module enforcement tags'
+      orderby: key
       sequence:
         type: string
         label: 'Tag'
     follow_up_migration_tags:
       type: sequence
       label: 'Follow-up migration tags'
+      orderby: key
       sequence:
         type: string
         label: 'Tag'
diff --git a/core/modules/navigation/config/schema/navigation.schema.yml b/core/modules/navigation/config/schema/navigation.schema.yml
index 0d898740431d..2712dc2cccde 100644
--- a/core/modules/navigation/config/schema/navigation.schema.yml
+++ b/core/modules/navigation/config/schema/navigation.schema.yml
@@ -60,6 +60,7 @@ navigation.block_layout:
   mapping:
     sections:
       type: sequence
+      orderby: key
       sequence:
         type: layout_builder.section
 
diff --git a/core/modules/node/config/schema/node.views.schema.yml b/core/modules/node/config/schema/node.views.schema.yml
index 1f5f714ee74f..1283d232ff6f 100644
--- a/core/modules/node/config/schema/node.views.schema.yml
+++ b/core/modules/node/config/schema/node.views.schema.yml
@@ -120,6 +120,7 @@ views.filter.node_uid_revision:
     value:
       type: sequence
       label: 'Values'
+      orderby: key
       sequence:
         type: string
         label: 'Value'
diff --git a/core/modules/options/config/schema/options.schema.yml b/core/modules/options/config/schema/options.schema.yml
index 87323eb1d456..59733cb3126b 100644
--- a/core/modules/options/config/schema/options.schema.yml
+++ b/core/modules/options/config/schema/options.schema.yml
@@ -9,6 +9,7 @@ field.storage_settings.list_integer:
     allowed_values:
       type: sequence
       label: 'Allowed values list'
+      orderby: key
       sequence:
         type: mapping
         label: 'Allowed value with label'
@@ -40,6 +41,7 @@ field.storage_settings.list_float:
     allowed_values:
       type: sequence
       label: 'Allowed values list'
+      orderby: key
       sequence:
         type: mapping
         label: 'Allowed value with label'
@@ -71,6 +73,7 @@ field.storage_settings.list_string:
     allowed_values:
       type: sequence
       label: 'Allowed values list'
+      orderby: key
       sequence:
         type: mapping
         label: 'Allowed value with label'
diff --git a/core/modules/responsive_image/config/schema/responsive_image.schema.yml b/core/modules/responsive_image/config/schema/responsive_image.schema.yml
index d72fda2007dc..0413b53178ac 100644
--- a/core/modules/responsive_image/config/schema/responsive_image.schema.yml
+++ b/core/modules/responsive_image/config/schema/responsive_image.schema.yml
@@ -13,6 +13,7 @@ responsive_image.styles.*:
     image_style_mappings:
       type: sequence
       label: 'Image style mappings'
+      orderby: key
       sequence:
         type: mapping
         label: 'Image style mapping'
@@ -53,6 +54,7 @@ responsive_image.image_mapping_type.sizes:
     sizes_image_styles:
       type: sequence
       label: 'Image styles to be used when using the ''sizes'' attribute'
+      orderby: key
       sequence:
         type: string
         label: 'Image style'
diff --git a/core/modules/rest/config/schema/rest.schema.yml b/core/modules/rest/config/schema/rest.schema.yml
index f7b3b8a8e7e0..37fe0083a817 100644
--- a/core/modules/rest/config/schema/rest.schema.yml
+++ b/core/modules/rest/config/schema/rest.schema.yml
@@ -37,18 +37,21 @@ rest_resource.resource:
     methods:
       type: sequence
       label: 'Supported methods'
+      orderby: key
       sequence:
         type: string
         label: 'HTTP method'
     formats:
       type: sequence
       label: 'Supported formats'
+      orderby: key
       sequence:
         type: string
         label: 'Format'
     authentication:
       type: sequence
       label: 'Supported authentication providers'
+      orderby: key
       sequence:
         type: string
         label: 'Authentication provider'
@@ -59,12 +62,14 @@ rest_request:
     supported_formats:
       type: sequence
       label: 'Supported format'
+      orderby: key
       sequence:
         type: string
         label: 'Format'
     supported_auth:
       type: sequence
       label: 'Supported authentication'
+      orderby: key
       sequence:
         type: string
         label: 'Authentication'
diff --git a/core/modules/rest/config/schema/rest.views.schema.yml b/core/modules/rest/config/schema/rest.views.schema.yml
index 040187acfdb3..20b91c3e3b07 100644
--- a/core/modules/rest/config/schema/rest.views.schema.yml
+++ b/core/modules/rest/config/schema/rest.views.schema.yml
@@ -7,6 +7,7 @@ views.display.rest_export:
     auth:
       type: sequence
       label: 'Authentication'
+      orderby: key
       sequence:
         type: string
         label: 'Authentication Provider'
@@ -18,6 +19,7 @@ views.row.data_field:
     field_options:
       type: sequence
       label: 'Options'
+      orderby: key
       sequence:
         type: mapping
         label: 'Row'
@@ -36,6 +38,7 @@ views.style.serializer:
     formats:
       type: sequence
       label: 'Formats'
+      orderby: key
       sequence:
         type: string
         label: 'Format'
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index 0c7cfac313c3..b63527a2aa8b 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -386,6 +386,7 @@ system.mail:
     interface:
       type: sequence
       label: 'Interfaces'
+      orderby: key
       sequence:
         type: string
         label: 'Interface'
@@ -473,6 +474,7 @@ condition.plugin.response_status:
   mapping:
     status_codes:
       type: sequence
+      orderby: key
       sequence:
         type: integer
 
diff --git a/core/modules/system/tests/modules/condition_test/config/schema/condition_test.schema.yml b/core/modules/system/tests/modules/condition_test/config/schema/condition_test.schema.yml
index 3a9ef23bb984..16189dd4eb13 100644
--- a/core/modules/system/tests/modules/condition_test/config/schema/condition_test.schema.yml
+++ b/core/modules/system/tests/modules/condition_test/config/schema/condition_test.schema.yml
@@ -5,6 +5,7 @@ condition_test.settings:
     visibility:
       type: sequence
       label: Visibility conditions
+      orderby: key
       sequence:
         type: condition.plugin.[id]
         label: Visibility condition
diff --git a/core/modules/system/tests/modules/entity_test_update/config/schema/entity_test_update.schema.yml b/core/modules/system/tests/modules/entity_test_update/config/schema/entity_test_update.schema.yml
index 5c604575e6ee..386fdd0cb223 100644
--- a/core/modules/system/tests/modules/entity_test_update/config/schema/entity_test_update.schema.yml
+++ b/core/modules/system/tests/modules/entity_test_update/config/schema/entity_test_update.schema.yml
@@ -4,6 +4,7 @@ field.value.multi_value_test:
   mapping:
     value1:
       type: sequence
+      orderby: key
       sequence:
         type: string
         label: 'First value'
diff --git a/core/modules/system/tests/modules/form_test/config/schema/form_test.schema.yml b/core/modules/system/tests/modules/form_test/config/schema/form_test.schema.yml
index 4eedbf1ddda9..0f071d09af24 100644
--- a/core/modules/system/tests/modules/form_test/config/schema/form_test.schema.yml
+++ b/core/modules/system/tests/modules/form_test/config/schema/form_test.schema.yml
@@ -8,6 +8,7 @@ form_test.object:
     favorite_fruits:
       type: sequence
       label: 'Favorite fruits'
+      orderby: key
       sequence:
         type: required_label
         label: 'Fruit'
diff --git a/core/modules/system/tests/themes/test_theme_settings/config/schema/test_theme_settings.schema.yml b/core/modules/system/tests/themes/test_theme_settings/config/schema/test_theme_settings.schema.yml
index 482577f2d1e2..20bf64841960 100644
--- a/core/modules/system/tests/themes/test_theme_settings/config/schema/test_theme_settings.schema.yml
+++ b/core/modules/system/tests/themes/test_theme_settings/config/schema/test_theme_settings.schema.yml
@@ -7,12 +7,14 @@ test_theme_settings.settings:
     custom_logo:
       type: sequence
       label: 'Custom logo'
+      orderby: key
       sequence:
         type: integer
         label: 'fids'
     multi_file:
       type: sequence
       label: 'Multiple file field with all file extensions'
+      orderby: key
       sequence:
         type: integer
         label: 'fids'
diff --git a/core/modules/system/tests/themes/test_theme_theme/config/schema/test_theme_theme.schema.yml b/core/modules/system/tests/themes/test_theme_theme/config/schema/test_theme_theme.schema.yml
index fcd044edd78b..04e4a8c07449 100644
--- a/core/modules/system/tests/themes/test_theme_theme/config/schema/test_theme_theme.schema.yml
+++ b/core/modules/system/tests/themes/test_theme_theme/config/schema/test_theme_theme.schema.yml
@@ -7,6 +7,7 @@ test_theme_theme.settings:
     custom_logo:
       type: sequence
       label: 'Custom logo'
+      orderby: key
       sequence:
         type: integer
         label: 'fids'
diff --git a/core/modules/taxonomy/config/schema/taxonomy.views.schema.yml b/core/modules/taxonomy/config/schema/taxonomy.views.schema.yml
index 9ec97581852b..eaeea8252ba2 100644
--- a/core/modules/taxonomy/config/schema/taxonomy.views.schema.yml
+++ b/core/modules/taxonomy/config/schema/taxonomy.views.schema.yml
@@ -56,6 +56,7 @@ views.argument_validator.taxonomy_term_name:
     vids:
       type: sequence
       label: 'Vocabularies'
+      orderby: key
       sequence:
         type: string
         label: 'Vocabulary'
@@ -79,6 +80,7 @@ views.argument_default.taxonomy_tid:
     vids:
       type: sequence
       label: 'Vocabularies'
+      orderby: key
       sequence:
         type: string
         label: 'Vocabulary'
@@ -112,6 +114,7 @@ views.field.taxonomy_index_tid:
     vids:
       type: sequence
       label: 'Vocabularies'
+      orderby: key
       sequence:
         type: string
         label: 'Vocabulary'
@@ -138,6 +141,7 @@ views.filter.taxonomy_index_tid:
     value:
       type: sequence
       label: 'Values'
+      orderby: key
       sequence:
         type: integer
         label: 'Value'
@@ -157,6 +161,7 @@ views.relationship.node_term_data:
     vids:
       type: sequence
       label: 'Vocabularies'
+      orderby: key
       sequence:
         type: string
         label: 'Vocabulary'
diff --git a/core/modules/text/config/schema/text.schema.yml b/core/modules/text/config/schema/text.schema.yml
index 8b08b109d466..a0a77e9030ef 100644
--- a/core/modules/text/config/schema/text.schema.yml
+++ b/core/modules/text/config/schema/text.schema.yml
@@ -29,6 +29,7 @@ field.field_settings.text:
     allowed_formats:
       type: sequence
       label: 'Allowed text formats'
+      orderby: key
       sequence:
         type: string
 
@@ -54,6 +55,7 @@ field.field_settings.text_long:
     allowed_formats:
       type: sequence
       label: 'Allowed text formats'
+      orderby: key
       sequence:
         type: string
 
@@ -83,6 +85,7 @@ field.field_settings.text_with_summary:
     allowed_formats:
       type: sequence
       label: 'Allowed text formats'
+      orderby: key
       sequence:
         type: string
 
diff --git a/core/modules/update/config/schema/update.schema.yml b/core/modules/update/config/schema/update.schema.yml
index 9344316517b1..fc257a5672bc 100644
--- a/core/modules/update/config/schema/update.schema.yml
+++ b/core/modules/update/config/schema/update.schema.yml
@@ -47,6 +47,7 @@ update.settings:
         emails:
           type: sequence
           label: 'Email addresses to notify when updates are available'
+          orderby: key
           sequence:
             type: email
             label: 'Email'
diff --git a/core/modules/update/config/schema/update.source.schema.yml b/core/modules/update/config/schema/update.source.schema.yml
index 02777ac809e5..4d997fa656fc 100644
--- a/core/modules/update/config/schema/update.source.schema.yml
+++ b/core/modules/update/config/schema/update.source.schema.yml
@@ -7,6 +7,7 @@ migrate.source.update_settings:
     variables:
       type: sequence
       label: 'Variables'
+      orderby: key
       sequence:
         type: string
         label: 'Variable'
diff --git a/core/modules/update/tests/modules/update_test/config/schema/update_test.schema.yml b/core/modules/update/tests/modules/update_test/config/schema/update_test.schema.yml
index c14e7985eb01..314c6551437b 100644
--- a/core/modules/update/tests/modules/update_test/config/schema/update_test.schema.yml
+++ b/core/modules/update/tests/modules/update_test/config/schema/update_test.schema.yml
@@ -7,15 +7,18 @@ update_test.settings:
     system_info:
       type: sequence
       label: 'System info'
+      orderby: key
       sequence:
         type: sequence
         label: 'Items'
+        orderby: key
         sequence:
           type: string
           label: 'Item'
     update_status:
       type: sequence
       label: 'Update status'
+      orderby: key
       sequence:
         type: mapping
         label: 'Module'
@@ -26,6 +29,7 @@ update_test.settings:
     xml_map:
       type: sequence
       label: 'XML map'
+      orderby: key
       sequence:
         type: string
         label: 'Value'
diff --git a/core/modules/user/config/schema/user.schema.yml b/core/modules/user/config/schema/user.schema.yml
index 699d0ee6fc5d..cffc6d92f94e 100644
--- a/core/modules/user/config/schema/user.schema.yml
+++ b/core/modules/user/config/schema/user.schema.yml
@@ -188,6 +188,7 @@ condition.plugin.user_role:
   mapping:
     roles:
       type: sequence
+      orderby: key
       sequence:
         type: string
 
@@ -206,6 +207,7 @@ entity_reference_selection.default:user:
         role:
           type: sequence
           label: 'Restrict to the selected roles'
+          orderby: key
           sequence:
             type: string
             label: 'Role'
diff --git a/core/modules/user/config/schema/user.views.schema.yml b/core/modules/user/config/schema/user.views.schema.yml
index 55bc61fb511c..737010ed0bce 100644
--- a/core/modules/user/config/schema/user.views.schema.yml
+++ b/core/modules/user/config/schema/user.views.schema.yml
@@ -15,6 +15,7 @@ views.access.role:
     role:
       type: sequence
       label: 'List of roles'
+      orderby: key
       sequence:
         type: string
         label: 'Role'
@@ -37,6 +38,7 @@ views.argument_validator.entity:user:
     roles:
       type: sequence
       label: 'Restrict to the selected roles'
+      orderby: key
       sequence:
         type: string
         label: 'Role'
diff --git a/core/modules/views/config/schema/views.argument_validator.schema.yml b/core/modules/views/config/schema/views.argument_validator.schema.yml
index fc149dd32d2b..9d5eec0960a2 100644
--- a/core/modules/views/config/schema/views.argument_validator.schema.yml
+++ b/core/modules/views/config/schema/views.argument_validator.schema.yml
@@ -3,6 +3,7 @@
 views.argument_validator.none:
   type: sequence
   label: 'Basic validation'
+  orderby: key
   sequence:
     type: string
 
@@ -24,6 +25,7 @@ views.argument_validator_entity:
     bundles:
       type: sequence
       label: 'Bundles'
+      orderby: key
       sequence:
         type: string
         label: 'Bundle'
diff --git a/core/modules/views/config/schema/views.data_types.schema.yml b/core/modules/views/config/schema/views.data_types.schema.yml
index 3495ce93fa2b..3d43c2160944 100644
--- a/core/modules/views/config/schema/views.data_types.schema.yml
+++ b/core/modules/views/config/schema/views.data_types.schema.yml
@@ -16,6 +16,7 @@ views_display:
     fields:
       type: sequence
       label: 'Fields'
+      orderby: key
       sequence:
         type: views.field.[plugin_id]
     pager:
@@ -62,21 +63,25 @@ views_display:
     empty:
       type: sequence
       label: 'No results behavior'
+      orderby: key
       sequence:
         type: views.area.[plugin_id]
     sorts:
       type: sequence
       label: 'Sorts'
+      orderby: key
       sequence:
         type: views.sort.[plugin_id]
     arguments:
       type: sequence
       label: 'Arguments'
+      orderby: key
       sequence:
         type: views.argument.[plugin_id]
     filters:
       type: sequence
       label: 'Filters'
+      orderby: key
       sequence:
         type: views.filter.[plugin_id]
     filter_groups:
@@ -89,6 +94,7 @@ views_display:
         groups:
           type: sequence
           label: 'Groups'
+          orderby: key
           sequence:
             type: string
             label: 'Operator'
@@ -220,6 +226,7 @@ views_display:
     relationships:
       type: sequence
       label: 'Relationships'
+      orderby: key
       sequence:
         type: views.relationship.[plugin_id]
     css_class:
@@ -255,11 +262,13 @@ views_display:
     header:
       type: sequence
       label: 'Header'
+      orderby: key
       sequence:
         type: views.area.[plugin_id]
     footer:
       type: sequence
       label: 'Footer'
+      orderby: key
       sequence:
         type: views.area.[plugin_id]
     display_comment:
@@ -277,6 +286,7 @@ views_display:
     display_extenders:
       type: sequence
       label: 'Display extenders'
+      orderby: key
       sequence:
         type: views.display_extender.[%key]
 
@@ -701,6 +711,7 @@ views_style:
     grouping:
       type: sequence
       label: 'Grouping field number %i'
+      orderby: key
       sequence:
         type: mapping
         label: 'Field'
@@ -764,6 +775,7 @@ views_filter:
         operator_list:
           type: sequence
           label: 'List of available operators'
+          orderby: key
           sequence:
             type: string
             label: 'Operator'
@@ -782,6 +794,7 @@ views_filter:
         remember_roles:
           type: sequence
           label: 'User roles'
+          orderby: key
           sequence:
             type: string
             label: 'Role'
@@ -819,12 +832,14 @@ views_filter:
         default_group_multiple:
           type: sequence
           label: 'Defaults'
+          orderby: key
           sequence:
             type: integer
             label: 'Default'
         group_items:
           type: sequence
           label: 'Group items'
+          orderby: key
           sequence:
             type: views.filter.group_item.[%parent.%parent.%parent.plugin_id]
             label: 'Group item'
@@ -918,6 +933,7 @@ views_field_bulk_form:
     selected_actions:
       type: sequence
       label: 'Available actions'
+      orderby: key
       sequence:
         type: string
         label: 'Action'
diff --git a/core/modules/views/config/schema/views.display.schema.yml b/core/modules/views/config/schema/views.display.schema.yml
index d4af22527010..d18012560940 100644
--- a/core/modules/views/config/schema/views.display.schema.yml
+++ b/core/modules/views/config/schema/views.display.schema.yml
@@ -104,6 +104,7 @@ views.display.feed:
     displays:
       type: sequence
       label: 'The feed icon will be available only to the selected displays.'
+      orderby: key
       sequence:
         type: string
         label: 'Display'
@@ -119,6 +120,7 @@ views.display.attachment:
     displays:
       type: sequence
       label: 'Attach to'
+      orderby: key
       sequence:
         type: string
         label: 'Display'
diff --git a/core/modules/views/config/schema/views.entity_reference.schema.yml b/core/modules/views/config/schema/views.entity_reference.schema.yml
index f13645ab4320..d5f3fde521ea 100644
--- a/core/modules/views/config/schema/views.entity_reference.schema.yml
+++ b/core/modules/views/config/schema/views.entity_reference.schema.yml
@@ -17,6 +17,7 @@ entity_reference_selection.views:
         arguments:
           type: sequence
           label: 'View arguments'
+          orderby: key
           sequence:
             type: string
             label: 'Argument'
diff --git a/core/modules/views/config/schema/views.field.schema.yml b/core/modules/views/config/schema/views.field.schema.yml
index 4f47cb6141e7..9a8135a558de 100644
--- a/core/modules/views/config/schema/views.field.schema.yml
+++ b/core/modules/views/config/schema/views.field.schema.yml
@@ -74,6 +74,7 @@ views.field.links:
     fields:
       type: sequence
       label: 'Fields'
+      orderby: key
       sequence:
         type: string
         label: 'Field'
@@ -238,6 +239,7 @@ views.field.field:
     group_columns:
       type: sequence
       label: 'Group by columns'
+      orderby: key
       sequence:
         type: string
         label: 'Column'
diff --git a/core/modules/views/config/schema/views.filter.schema.yml b/core/modules/views/config/schema/views.filter.schema.yml
index 6eb22b82f996..0372eeb9015b 100644
--- a/core/modules/views/config/schema/views.filter.schema.yml
+++ b/core/modules/views/config/schema/views.filter.schema.yml
@@ -27,6 +27,7 @@ views.filter.combine:
     fields:
       type: sequence
       label: 'Fields'
+      orderby: key
       sequence:
         type: string
         label: 'Field'
@@ -45,6 +46,7 @@ views.filter.in_operator:
     value:
       type: sequence
       label: 'Values'
+      orderby: key
       sequence:
         type: string
         label: 'Value'
@@ -58,6 +60,7 @@ views.filter.in_operator:
     group_info:
       mapping:
         group_items:
+          orderby: key
           sequence:
             type: views.filter.group_item.in_operator
             label: 'Group item'
@@ -206,6 +209,7 @@ views.filter.date:
 views.filter_value.in_operator:
   type: sequence
   label: 'Values'
+  orderby: key
   sequence:
     type: string
     label: 'Value'
diff --git a/core/modules/views/config/schema/views.query.schema.yml b/core/modules/views/config/schema/views.query.schema.yml
index 2f030fbcf35d..03cf24fa1167 100644
--- a/core/modules/views/config/schema/views.query.schema.yml
+++ b/core/modules/views/config/schema/views.query.schema.yml
@@ -19,6 +19,7 @@ views.query.views_query:
     query_tags:
       type: sequence
       label: 'Query Tags'
+      orderby: key
       sequence:
         type: string
         label: 'Tag'
diff --git a/core/modules/views/config/schema/views.row.schema.yml b/core/modules/views/config/schema/views.row.schema.yml
index 3eae0c935496..9d5fda32cede 100644
--- a/core/modules/views/config/schema/views.row.schema.yml
+++ b/core/modules/views/config/schema/views.row.schema.yml
@@ -17,6 +17,7 @@ views.row.fields:
     inline:
       type: sequence
       label: 'Inline'
+      orderby: key
       sequence:
         type: string
         label: 'Inline'
diff --git a/core/modules/views/config/schema/views.schema.yml b/core/modules/views/config/schema/views.schema.yml
index 8ddd73931f2c..cad1cf167933 100644
--- a/core/modules/views/config/schema/views.schema.yml
+++ b/core/modules/views/config/schema/views.schema.yml
@@ -7,6 +7,7 @@ views.settings:
     display_extenders:
       type: sequence
       label: 'Display extenders'
+      orderby: key
       sequence:
         type: string
         label: 'Display extender'
@@ -58,6 +59,7 @@ views.settings:
     field_rewrite_elements:
       type: sequence
       label: 'Field rewrite elements'
+      orderby: key
       sequence:
         type: string
         label: 'Element'
@@ -95,6 +97,7 @@ views.view.*:
     display:
       type: sequence
       label: 'Displays'
+      orderby: key
       sequence:
         type: mapping
         label: 'Display settings'
@@ -126,11 +129,13 @@ views.view.*:
               contexts:
                 type: sequence
                 label: 'Cache contexts'
+                orderby: key
                 sequence:
                   type: string
               tags:
                 type: sequence
                 label: 'Cache tags'
+                orderby: key
                 sequence:
                   type: string
               # Deprecated.
diff --git a/core/modules/views/config/schema/views.style.schema.yml b/core/modules/views/config/schema/views.style.schema.yml
index 11fca4295da4..2ee6c2e6d7a4 100644
--- a/core/modules/views/config/schema/views.style.schema.yml
+++ b/core/modules/views/config/schema/views.style.schema.yml
@@ -72,6 +72,7 @@ views.style.table:
     columns:
       type: sequence
       label: 'Columns'
+      orderby: key
       sequence:
         type: string
         label: 'Columns name'
@@ -81,6 +82,7 @@ views.style.table:
     info:
       type: sequence
       label: 'Columns info'
+      orderby: key
       sequence:
         type: mapping
         label:  'Column info'
@@ -168,6 +170,7 @@ views.style.entity_reference:
     search_fields:
       type: sequence
       label: 'Search fields'
+      orderby: key
       sequence:
         type: string
         label: 'Search field'
diff --git a/core/modules/views/tests/modules/views_test_data/config/schema/views_test_data.views.schema.yml b/core/modules/views/tests/modules/views_test_data/config/schema/views_test_data.views.schema.yml
index 40119a45c670..bf5ffff6958a 100644
--- a/core/modules/views/tests/modules/views_test_data/config/schema/views_test_data.views.schema.yml
+++ b/core/modules/views/tests/modules/views_test_data/config/schema/views_test_data.views.schema.yml
@@ -17,6 +17,7 @@ views.style.mapping_test:
         numeric_field:
           type: sequence
           label: 'Numeric fields'
+          orderby: key
           sequence:
             type: string
             label: 'Numeric field'
diff --git a/core/modules/workflows/config/schema/workflows.schema.yml b/core/modules/workflows/config/schema/workflows.schema.yml
index fb0197ff8f20..a1f3cf573b39 100644
--- a/core/modules/workflows/config/schema/workflows.schema.yml
+++ b/core/modules/workflows/config/schema/workflows.schema.yml
@@ -39,6 +39,7 @@ workflows.transition:
     from:
       type: sequence
       label: 'From state IDs'
+      orderby: key
       sequence:
         type: string
         label: 'From state ID'
diff --git a/core/modules/workflows/tests/modules/workflow_type_test/config/schema/workflow_type_test.schema.yml b/core/modules/workflows/tests/modules/workflow_type_test/config/schema/workflow_type_test.schema.yml
index d2c1525f4864..77466d9075ca 100644
--- a/core/modules/workflows/tests/modules/workflow_type_test/config/schema/workflow_type_test.schema.yml
+++ b/core/modules/workflows/tests/modules/workflow_type_test/config/schema/workflow_type_test.schema.yml
@@ -4,10 +4,12 @@ workflow_type_test.ignore_schema:
   mapping:
     states:
       type: sequence
+      orderby: key
       sequence:
         type: ignore
     transitions:
       type: sequence
+      orderby: key
       sequence:
         type: ignore
 
@@ -49,12 +51,14 @@ workflow.type_settings.workflow_type_complex_test:
     states:
       type: sequence
       label: 'States'
+      orderby: key
       sequence:
         type: workflows.state.complex_test_state
         label: 'States'
     transitions:
       type: sequence
       label: 'Transitions'
+      orderby: key
       sequence:
         label: 'Transitions'
         type: workflows.state.complex_test_transition
@@ -66,6 +70,7 @@ workflow.type_settings.predefined_states_workflow_test_type:
     transitions:
       type: sequence
       label: 'Transitions'
+      orderby: key
       sequence:
         label: 'Transitions'
         type: workflows.transition
-- 
GitLab


From 1fab71748f9eb8823d60c7e5b5fcda05402c430c Mon Sep 17 00:00:00 2001
From: Chris Green <42483-trackleft2@users.noreply.drupalcode.org>
Date: Thu, 20 Mar 2025 00:11:06 +0000
Subject: [PATCH 03/15] This is a mistake.

---
 core/config/schema/core.data_types.schema.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/core/config/schema/core.data_types.schema.yml b/core/config/schema/core.data_types.schema.yml
index 4528c1fcb805..c3e4432f605c 100644
--- a/core/config/schema/core.data_types.schema.yml
+++ b/core/config/schema/core.data_types.schema.yml
@@ -54,7 +54,6 @@ mapping:
     # By default, allow the explicitly listed mapping keys, and require their
     # presence unless `requiredKey: false` is specified.
     ValidKeys: '<infer>'
-orderby: key
 sequence:
   label: Sequence
   class: '\Drupal\Core\Config\Schema\Sequence'
-- 
GitLab


From f729fc3287a6cee2da639d599dc64628a25a6fc6 Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 17:15:02 -0700
Subject: [PATCH 04/15] Remove some duplicate keys

---
 core/modules/ckeditor5/config/schema/ckeditor5.schema.yml | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
index 2073cbd5968f..683444948410 100644
--- a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
+++ b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
@@ -12,7 +12,6 @@ editor.settings.ckeditor5:
           type: sequence
           orderby: ~
           label: 'Items'
-          orderby: key
           sequence:
             type: ckeditor5.toolbar_item
             label: 'Button'
@@ -68,7 +67,6 @@ ckeditor5.plugin.ckeditor5_heading:
       constraints:
         NotBlank:
           message: "Enable at least one heading, otherwise disable the Heading plugin."
-      orderby: key
       sequence:
         type: string
         label: 'Heading type'
@@ -100,7 +98,6 @@ ckeditor5.plugin.ckeditor5_sourceEditing:
       type: sequence
       orderby: ~
       label: 'Allowed Tags'
-      orderby: key
       sequence:
         type: ckeditor5.element
         label: 'Allowed Tag'
@@ -122,7 +119,6 @@ ckeditor5.plugin.ckeditor5_alignment:
       constraints:
         NotBlank:
           message: "Enable at least one alignment, otherwise disable the Alignment button."
-      orderby: key
       sequence:
         type: string
         label: 'Alignment type'
@@ -189,7 +185,6 @@ ckeditor5.plugin.ckeditor5_codeBlock:
           message: "Enable at least one language, otherwise disable the Code Block plugin."
         UniqueLabelInList:
           labelKey: label
-      orderby: key
       sequence:
         type: mapping
         label: 'Language'
@@ -217,7 +212,6 @@ ckeditor5.plugin.ckeditor5_style:
           message: "Enable at least one style, otherwise disable the Style plugin."
         UniqueLabelInList:
           labelKey: label
-      orderby: key
       sequence:
         type: mapping
         label: 'Style'
-- 
GitLab


From 94ab9541af13c9a85967a7941b9cac0a7bbd6f6c Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 17:26:55 -0700
Subject: [PATCH 05/15] Remove some duplicate keys

---
 core/modules/filter/config/schema/filter.schema.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/core/modules/filter/config/schema/filter.schema.yml b/core/modules/filter/config/schema/filter.schema.yml
index 76e83f4f51c6..9c266596ea21 100644
--- a/core/modules/filter/config/schema/filter.schema.yml
+++ b/core/modules/filter/config/schema/filter.schema.yml
@@ -46,7 +46,6 @@ filter.format.*:
         label: 'Role'
     filters:
       type: sequence
-      orderby: key
       label: 'Enabled filters'
       orderby: key
       sequence:
-- 
GitLab


From 91ed16314576979e36cfd9aef1b4d3b34ef59c33 Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 17:41:38 -0700
Subject: [PATCH 06/15] Update schema

---
 core/modules/views/config/schema/views.cache.schema.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/core/modules/views/config/schema/views.cache.schema.yml b/core/modules/views/config/schema/views.cache.schema.yml
index 89d094164a17..98427edaf073 100644
--- a/core/modules/views/config/schema/views.cache.schema.yml
+++ b/core/modules/views/config/schema/views.cache.schema.yml
@@ -7,6 +7,7 @@ views.cache.none:
     options:
       type: sequence
       label: 'Options'
+      orderby: value
 
 views.cache.tag:
   type: views_cache
@@ -15,6 +16,7 @@ views.cache.tag:
     options:
       type: sequence
       label: 'Options'
+      orderby: value
 
 views.cache.time:
   type: views_cache
-- 
GitLab


From 276346131923f52a8f75a05fa37f311c42a8b74c Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 18:03:20 -0700
Subject: [PATCH 07/15] Try out an experiment

---
 core/modules/image/config/schema/image.schema.yml   | 2 ++
 core/modules/search/config/schema/search.schema.yml | 1 +
 2 files changed, 3 insertions(+)

diff --git a/core/modules/image/config/schema/image.schema.yml b/core/modules/image/config/schema/image.schema.yml
index 9ae6420791ed..554ff02740f7 100644
--- a/core/modules/image/config/schema/image.schema.yml
+++ b/core/modules/image/config/schema/image.schema.yml
@@ -29,6 +29,7 @@ image.style.*:
             type: weight
           data:
             type: image.effect.[%parent.id]
+            orderby: key
 
 image.effect.*:
   type: mapping
@@ -82,6 +83,7 @@ image.effect.image_scale:
 # The image desaturate effect has no settings.
 image.effect.image_desaturate:
   type: sequence
+  orderby: key
 
 image.effect.image_scale_and_crop:
   type: image_size
diff --git a/core/modules/search/config/schema/search.schema.yml b/core/modules/search/config/schema/search.schema.yml
index 4dc4d53e0574..fb9192627e52 100644
--- a/core/modules/search/config/schema/search.schema.yml
+++ b/core/modules/search/config/schema/search.schema.yml
@@ -113,6 +113,7 @@ search.page.*:
           interface: 'Drupal\search\Plugin\SearchInterface'
     configuration:
       type: search.plugin.[%parent.plugin]
+      orderby: key
 
 block.settings.search_form_block:
   type: block_settings
-- 
GitLab


From 0cab10c441597d742e974c21fc8db64a83023d87 Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 18:41:19 -0700
Subject: [PATCH 08/15] Update ckeditor config

---
 .../ckeditor5/config/schema/ckeditor5.schema.yml       | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
index 683444948410..57cf6c611793 100644
--- a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
+++ b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
@@ -10,8 +10,8 @@ editor.settings.ckeditor5:
       mapping:
         items:
           type: sequence
-          orderby: ~
           label: 'Items'
+          orderby: value
           sequence:
             type: ckeditor5.toolbar_item
             label: 'Button'
@@ -62,11 +62,11 @@ ckeditor5.plugin.ckeditor5_heading:
   mapping:
     enabled_headings:
       type: sequence
-      orderby: value
       label: 'Enabled Headings'
       constraints:
         NotBlank:
           message: "Enable at least one heading, otherwise disable the Heading plugin."
+      orderby: value
       sequence:
         type: string
         label: 'Heading type'
@@ -96,7 +96,7 @@ ckeditor5.plugin.ckeditor5_sourceEditing:
   mapping:
     allowed_tags:
       type: sequence
-      orderby: ~
+      orderby: value
       label: 'Allowed Tags'
       sequence:
         type: ckeditor5.element
@@ -178,13 +178,13 @@ ckeditor5.plugin.ckeditor5_codeBlock:
   mapping:
     languages:
       type: sequence
-      orderby: ~
       label: 'Languages'
       constraints:
         NotBlank:
           message: "Enable at least one language, otherwise disable the Code Block plugin."
         UniqueLabelInList:
           labelKey: label
+      orderby: key
       sequence:
         type: mapping
         label: 'Language'
@@ -205,7 +205,7 @@ ckeditor5.plugin.ckeditor5_style:
   mapping:
     styles:
       type: sequence
-      orderby: ~
+      orderby: key
       label: 'Styles'
       constraints:
         NotBlank:
-- 
GitLab


From 52483a57e1740991a59a0a55cce8f3caceed69d5 Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 20:25:22 -0700
Subject: [PATCH 09/15] update tests

---
 .../tests/src/Kernel/FieldApiDataTest.php      | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/core/modules/views/tests/src/Kernel/FieldApiDataTest.php b/core/modules/views/tests/src/Kernel/FieldApiDataTest.php
index e0ea1b9a55cb..406cd5fbb339 100644
--- a/core/modules/views/tests/src/Kernel/FieldApiDataTest.php
+++ b/core/modules/views/tests/src/Kernel/FieldApiDataTest.php
@@ -338,14 +338,14 @@ public function testEntityFieldFilter(): void {
         'nid' => $node1->id(),
         'langcode' => 'es',
       ],
-      [
-        'nid' => $node1->id(),
-        'langcode' => 'fr',
-      ],
       [
         'nid' => $node2->id(),
         'langcode' => 'es',
       ],
+      [
+        'nid' => $node1->id(),
+        'langcode' => 'fr',
+      ],
       [
         'nid' => $node2->id(),
         'langcode' => 'fr',
@@ -367,18 +367,18 @@ public function testEntityFieldFilter(): void {
     $view->setDisplay('embed_5');
     $this->executeView($view);
     $expected = [
+      // Why is this one returned?
       [
-        'nid' => $node1->id(),
-        'langcode' => 'es',
+        'nid' => $node2->id(),
+        'langcode' => 'fr',
       ],
       [
-        'nid' => $node2->id(),
+        'nid' => $node1->id(),
         'langcode' => 'es',
       ],
-      // Why is this one returned?
       [
         'nid' => $node2->id(),
-        'langcode' => 'fr',
+        'langcode' => 'es',
       ],
     ];
 
-- 
GitLab


From a70cf7467e913802530835073cc3ffa3e75ae017 Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 21:45:50 -0700
Subject: [PATCH 10/15] update tests

---
 .../ConfigAction/AddItemToToolbarConfigActionTest.php     | 8 ++++----
 core/modules/language/config/schema/language.schema.yml   | 6 +++---
 .../Migrate/d6/MigrateLanguageNegotiationSettingsTest.php | 8 ++++----
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php b/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php
index c4c8b8e953ae..0a613db58ca8 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php
@@ -56,7 +56,7 @@ protected function setUp(): void {
 
     /** @var array{toolbar: array{items: array<int, string>}} $settings */
     $settings = Editor::load('filter_test')?->getSettings();
-    $this->assertSame(['heading', 'bold', 'italic'], $settings['toolbar']['items']);
+    $this->assertSame(['bold', 'heading', 'italic'], $settings['toolbar']['items']);
   }
 
   /**
@@ -66,9 +66,9 @@ protected function setUp(): void {
    *   The items which should be in the editor toolbar, in the expected order.
    *
    * @testWith ["sourceEditing", ["heading", "bold", "italic", "sourceEditing"]]
-   *   [{"item_name": "sourceEditing"}, ["heading", "bold", "italic", "sourceEditing"]]
-   *   [{"item_name": "sourceEditing", "position": 1}, ["heading", "sourceEditing", "bold", "italic"]]
-   *   [{"item_name": "sourceEditing", "position": 1, "replace": true}, ["heading", "sourceEditing", "italic"]]
+   *   [{"item_name": "sourceEditing"}, ["bold", "heading", "italic", "sourceEditing"]]
+   *   [{"item_name": "sourceEditing", "position": 1}, ["bold", "heading", "italic", "sourceEditing"]]
+   *   [{"item_name": "sourceEditing", "position": 1, "replace": true}, ["heading", "italic", "sourceEditing"]]
    */
   public function testAddItemToToolbar(string|array $action, array $expected_toolbar_items): void {
     $recipe = $this->createRecipe([
diff --git a/core/modules/language/config/schema/language.schema.yml b/core/modules/language/config/schema/language.schema.yml
index 08265ed5d0ad..b96d269035ff 100644
--- a/core/modules/language/config/schema/language.schema.yml
+++ b/core/modules/language/config/schema/language.schema.yml
@@ -7,14 +7,14 @@ language_type_negotiation:
     enabled:
       type: sequence
       label: 'Enabled negotiators'
-      orderby: key
+      orderby: value
       sequence:
         type: integer
         label: Weight
     method_weights:
       type: sequence
       label: 'Negotiator weights'
-      orderby: key
+      orderby: value
       sequence:
         type: integer
         label: Weight
@@ -163,6 +163,6 @@ condition.plugin.language:
   mapping:
     langcodes:
       type: sequence
-      orderby: key
+      orderby: value
       sequence:
         type: langcode
diff --git a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php
index aa7ea398fa53..3fb197ee68c8 100644
--- a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php
+++ b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php
@@ -47,8 +47,8 @@ public function testLanguageNegotiationWithDefaultPathPrefix(): void {
     $this->assertSame(['language-interface' => 0], $config->get('negotiation.language_content.enabled'));
     $this->assertSame(['language-url' => 0, 'language-url-fallback' => 1], $config->get('negotiation.language_url.enabled'));
     $expected_language_interface = [
-      'language-url' => 0,
       'language-selected' => 1,
+      'language-url' => 0,
     ];
     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
   }
@@ -118,10 +118,10 @@ public function testLanguageNegotiationWithPathPrefix(): void {
     $this->assertSame(['language-interface' => 0], $config->get('negotiation.language_content.enabled'));
     $this->assertSame(['language-url' => 0, 'language-url-fallback' => 1], $config->get('negotiation.language_url.enabled'));
     $expected_language_interface = [
-      'language-url' => 0,
-      'language-user' => 1,
       'language-browser' => 2,
       'language-selected' => 3,
+      'language-url' => 0,
+      'language-user' => 1,
     ];
     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
   }
@@ -160,8 +160,8 @@ public function testLanguageNegotiationWithDomain(): void {
     $this->assertSame(['language-interface' => 0], $config->get('negotiation.language_content.enabled'));
     $this->assertSame(['language-url' => 0, 'language-url-fallback' => 1], $config->get('negotiation.language_url.enabled'));
     $expected_language_interface = [
-      'language-url' => 0,
       'language-selected' => 1,
+      'language-url' => 0,
     ];
     $this->assertSame($expected_language_interface, $config->get('negotiation.language_interface.enabled'));
   }
-- 
GitLab


From 97e0ea6e1ba3105d505c69608eac0d6de201b84e Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 22:23:00 -0700
Subject: [PATCH 11/15] update tests

---
 .../ConfigAction/AddItemToToolbarConfigActionTest.php  |  4 ++--
 .../views/tests/src/Kernel/FieldApiDataTest.php        | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php b/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php
index 0a613db58ca8..52a23150a310 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/ConfigAction/AddItemToToolbarConfigActionTest.php
@@ -65,10 +65,10 @@ protected function setUp(): void {
    * @param string[] $expected_toolbar_items
    *   The items which should be in the editor toolbar, in the expected order.
    *
-   * @testWith ["sourceEditing", ["heading", "bold", "italic", "sourceEditing"]]
+   * @testWith ["sourceEditing", ["bold", "heading", "italic", "sourceEditing"]]
    *   [{"item_name": "sourceEditing"}, ["bold", "heading", "italic", "sourceEditing"]]
    *   [{"item_name": "sourceEditing", "position": 1}, ["bold", "heading", "italic", "sourceEditing"]]
-   *   [{"item_name": "sourceEditing", "position": 1, "replace": true}, ["heading", "italic", "sourceEditing"]]
+   *   [{"item_name": "sourceEditing", "position": 1, "replace": true}, ["bold", "italic", "sourceEditing"]]
    */
   public function testAddItemToToolbar(string|array $action, array $expected_toolbar_items): void {
     $recipe = $this->createRecipe([
diff --git a/core/modules/views/tests/src/Kernel/FieldApiDataTest.php b/core/modules/views/tests/src/Kernel/FieldApiDataTest.php
index 406cd5fbb339..6cc236197ead 100644
--- a/core/modules/views/tests/src/Kernel/FieldApiDataTest.php
+++ b/core/modules/views/tests/src/Kernel/FieldApiDataTest.php
@@ -367,11 +367,6 @@ public function testEntityFieldFilter(): void {
     $view->setDisplay('embed_5');
     $this->executeView($view);
     $expected = [
-      // Why is this one returned?
-      [
-        'nid' => $node2->id(),
-        'langcode' => 'fr',
-      ],
       [
         'nid' => $node1->id(),
         'langcode' => 'es',
@@ -380,6 +375,11 @@ public function testEntityFieldFilter(): void {
         'nid' => $node2->id(),
         'langcode' => 'es',
       ],
+      // Why is this one returned?
+      [
+        'nid' => $node2->id(),
+        'langcode' => 'fr',
+      ],
     ];
 
     $this->assertIdenticalResultset($view, $expected, $map);
-- 
GitLab


From 55a9a0e578c5d3910860fe53f7e7c4a61d1c049c Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 22:43:48 -0700
Subject: [PATCH 12/15] update tests

---
 core/modules/ckeditor5/config/schema/ckeditor5.schema.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
index 57cf6c611793..a2eb28faa9e1 100644
--- a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
+++ b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
@@ -11,7 +11,7 @@ editor.settings.ckeditor5:
         items:
           type: sequence
           label: 'Items'
-          orderby: value
+          orderby: ~
           sequence:
             type: ckeditor5.toolbar_item
             label: 'Button'
-- 
GitLab


From 2d5fc6ab2fe5f6c14d238612702564844cac16ec Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Wed, 19 Mar 2025 23:05:56 -0700
Subject: [PATCH 13/15] core

---
 core/modules/views/config/schema/views.schema.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/views/config/schema/views.schema.yml b/core/modules/views/config/schema/views.schema.yml
index cad1cf167933..32a67c1c5dc3 100644
--- a/core/modules/views/config/schema/views.schema.yml
+++ b/core/modules/views/config/schema/views.schema.yml
@@ -97,7 +97,7 @@ views.view.*:
     display:
       type: sequence
       label: 'Displays'
-      orderby: key
+      orderby: ~
       sequence:
         type: mapping
         label: 'Display settings'
-- 
GitLab


From 031fee842cd081096211b4a0a94cc7ea71ab5f72 Mon Sep 17 00:00:00 2001
From: Chris Green <42483-trackleft2@users.noreply.drupalcode.org>
Date: Thu, 20 Mar 2025 06:07:37 +0000
Subject: [PATCH 14/15] Apply 1 suggestion(s) to 1 file(s)

---
 core/modules/ckeditor5/config/schema/ckeditor5.schema.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
index a2eb28faa9e1..2d2e790db2f3 100644
--- a/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
+++ b/core/modules/ckeditor5/config/schema/ckeditor5.schema.yml
@@ -184,7 +184,7 @@ ckeditor5.plugin.ckeditor5_codeBlock:
           message: "Enable at least one language, otherwise disable the Code Block plugin."
         UniqueLabelInList:
           labelKey: label
-      orderby: key
+      orderby: value
       sequence:
         type: mapping
         label: 'Language'
-- 
GitLab


From de4546305f1c67b06c5e73a22fe1829a4b057c88 Mon Sep 17 00:00:00 2001
From: Chris Green <chrisgreen@arizona.edu>
Date: Mon, 17 Mar 2025 21:29:27 -0700
Subject: [PATCH 15/15] Order view displays by key

---
 core/modules/views/config/schema/views.schema.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/modules/views/config/schema/views.schema.yml b/core/modules/views/config/schema/views.schema.yml
index 32a67c1c5dc3..47421270ef24 100644
--- a/core/modules/views/config/schema/views.schema.yml
+++ b/core/modules/views/config/schema/views.schema.yml
@@ -97,7 +97,7 @@ views.view.*:
     display:
       type: sequence
       label: 'Displays'
-      orderby: ~
+      orderby:key
       sequence:
         type: mapping
         label: 'Display settings'
-- 
GitLab