Problem / Motivation
There is a sequence of thought that resulted in this ticket:
I've noticed that the Acquia Connector module sets a config value on the index at options.overridden_by_acquia_search. See https://git.drupalcode.org/project/acquia_connector/blob/287c8745350393a....
Acquia Connector has since changed to use State API, but it prompted the question: why doesn't this throw a schema violation since "overridden_by_acquia_search" isn't a valid option if you observe the config schema: https://git.drupalcode.org/project/search_api/blob/8.x-1.x/config/schema...
The Index config entity doesn't do any validation in the setOption method, but I assumed the config schema would still be run to validate at some point? See https://git.drupalcode.org/project/search_api/blob/8.x-1.x/src/Entity/In....
And, the reason this is important for Config Ignore is that I noticed that when running "drush config-status" I would see the state was overridden even though I had this line in my config ignore:
search_api.index.acquia_search_index:options.overridden_by_acquia_search
All that to say, is config ignore unable to detect the null case? i.e. the case where the config key at "search_api.index.acquia_search_index:options.overridden_by_acquia_search" is NOT in the datbase, but is in the exported config.
Proposed Resolution
First, create a failing test like so:
Given a config key NOT in the database, but is in the code (e.g. search_api.index.acquia_search_index:options.overridden_by_acquia_search)
When you ignore the config key
Then config import (or config status) does not result in a change to the config key
And, as I'm writing this I'm wondering if the issue is in config status and not config import. I'll try to update this later to confirm.