Issue #3593940: Type no_bundle_entity_type_settings as config_object so...
Problem
scheduler.no_bundle_entity_type_settings.* is typed as scheduler_third_party_settings, which is type: mapping. That mapping type is for third-party settings nested inside a host config entity (node.type.*.third_party.scheduler and friends), so it has no _core or langcode keys — those exist only on the config_object base type.
scheduler.no_bundle_entity_type_settings.{entity_type_id} is a standalone, top-level config object. Because its schema is a bare mapping, a module cannot ship defaults via config/install. ConfigInstaller always writes _core.default_config_hash, and with strict config schema checking on (every kernel and functional test) that throws:
Schema errors for scheduler.no_bundle_entity_type_settings.my_entity:_core missing schemaIntegrators are forced to create the config programmatically in hook_install() to dodge the installer.
Fix
Type the standalone object as config_object so it inherits _core/langcode, while reusing the existing scheduler keys via a YAML anchor on the scheduler_third_party_settings mapping (the same anchor approach Scheduler used before #3585333). No key duplication.
Test
A dedicated scheduler_no_bundle_config_test module ships config/install/scheduler.no_bundle_entity_type_settings.scheduler_test_no_bundle.yml. The new testNoBundleSettingsShippedAsDefaultConfig() enables that module and installs its config through ConfigInstaller under strict schema checking — the path that throws today. Confirmed it fails with _core missing schema before the schema change and passes after.
The config lives in its own module rather than in scheduler_no_bundle_test on purpose: shipping it in the shared test module globally enabled scheduling for the non-revisionable test entity, which surfaced an unrelated failure in SchedulerQueryTagsTest. Isolating it keeps this change scoped to the schema fix.
Note: a separate latent bug
Enabling scheduling on the non-revisionable scheduler_test_no_bundle entity makes SchedulerManager build a publish/unpublish query that joins {entity}_field_revision (for publish_on/unpublish_on/langcode), which does not exist for a non-revisionable entity:
Unknown column 'scheduler_test_no_bundle_field_revision.publish_on' in 'where clause'This is out of scope here and likely deserves its own issue — either skip the revision join when the entity type is not revisionable, or document that bundleless Scheduler support requires a revisionable entity.
AI usage disclosure
This change was prepared with the assistance of Claude (Anthropic). AI helped draft the schema change, the regression test, and this description. All changes were reviewed and verified locally by the author before submission.
Closes #3593940