[META] Implement complete coverage of validatable config schema across plugins and entities
>>> [!note] Migrated issue <!-- Drupal.org comment --> <!-- Migrated from issue #3508150. --> Reported by: [michaellander](https://www.drupal.org/user/636494) >>> <h3 id="summary-problem-motivation">Problem/Motivation</h3> <p><a href="https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-schemametadata" title="Configuration schema">Configuration schema</a> and <a href="https://www.drupal.org/node/3404425" title="validatable constraints">validatable constraints</a> are incomplete or missing for configuration entities and plugin types, particularly Actions, Conditions, and Events. Without a complete schema, exported configurations lack proper validation, making it difficult to ensure data integrity across Drupal&rsquo;s configuration system. This can lead to unexpected errors, inconsistencies in how configurations are stored and interpreted, and difficulty in debugging issues related to missing or incorrect configurations.</p> <p>By implementing full coverage of configuration schema definitions, we can improve validation, enhance developer experience by providing clearer API expectations, and reduce the risk of invalid configurations being stored or exported. This will make configurations more predictable, enforceable, and resilient across different environments.</p> <h4 id="summary-steps-reproduce">Steps to reproduce</h4> <p>The easiest way is to use the <a href="https://www.drupal.org/project/config_inspector" title="Configuration Inspector">Configuration Inspector</a> module to verify config schema is defined.</p> <h3 id="summary-proposed-resolution">Proposed resolution</h3> <p>We should break this out into multiple subtasks(either by entity type/plugin type, or by module). With over 1000+ plugins that require schema coverage, a fully manual approach is less than ideal. Instead, we should aim to automate schema extraction, leveraging tools and AI to analyze existing configurations/annotations/attributes and generate missing schema definitions.</p> <h3 id="summary-remaining-tasks">Remaining tasks</h3> <ul> <li>We should first get ECA core in a good place. <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/eca/-/work_items/3446331" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/eca/-/work_items/3446331</a></span></li> <li>Submodules: <ul> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3509481" title="Status: Closed (fixed)">#3509481: ECA Content: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510735" title="Status: Closed (fixed)">#3510735: ECA Access: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510736" title="Status: Closed (fixed)">#3510736: ECA Base: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510737" title="Status: Closed (fixed)">#3510737: ECA Cache: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510738" title="Status: Closed (fixed)">#3510738: ECA Config: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510739" title="Status: Closed (fixed)">#3510739: ECA Endpoint: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510740" title="Status: Closed (fixed)">#3510740: ECA File: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510741" title="Status: Closed (fixed)">#3510741: ECA Form: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510742" title="Status: Closed (fixed)">#3510742: ECA Language: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510743" title="Status: Closed (fixed)">#3510743: ECA Log: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510746" title="Status: Closed (fixed)">#3510746: ECA Migrate: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510747" title="Status: Closed (fixed)">#3510747: ECA Miscellaneous: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510748" title="Status: Closed (fixed)">#3510748: ECA Project Browser: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510749" title="Status: Closed (fixed)">#3510749: ECA Queue: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510751" title="Status: Closed (fixed)">#3510751: ECA Render: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510752" title="Status: Closed (fixed)">#3510752: ECA User: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510753" title="Status: Closed (fixed)">#3510753: ECA Views: Config schema/validation</a></span></li> <li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/eca/issues/3510754" title="Status: Closed (fixed)">#3510754: ECA Workflow: Config schema/validation</a></span></li> </ul> </li> <li>@todo: Create task for constraint callbacks for token/value combos and render/string values</li> </ul> <p>Currently do not have tasks for <code>eca_development</code> and <code>eca_modeller_bpmn</code>, as they don't appear to define any config. <code>eca_ui</code> is TBD as it appears to overlap with config defined in ECA core.</p> <h3 id="summary-api-changes">API changes</h3> <p>With the introduction of new configuration schema definitions, the way configurations are validated and exported will improve. While no breaking changes are expected, developers may notice that previously unvalidated configurations now require adjustments to conform to the enforced schema structures. Custom plugins and configurations should be tested against the updated validation rules to ensure compatibility.</p> <h3 id="summary-data-model-changes">Data model changes</h3> <p>The enhancements to configuration schema definitions will primarily impact how configurations are validated and structured in storage and export processes. There will be no fundamental changes to how data is stored, but configurations that previously contained unstructured or invalid data may now trigger validation errors. Developers should review and update any configurations that do not comply with the new schema definitions.</p>
issue