178bf0436c
Rebase reconciliation with main's JSON-allowlist decoding (#109423): the two remaining readers that consulted config.extra before the env var now follow the per-profile precedence rule (explicit scoped env → the profile's YAML → default), and ignored_threads still decodes a JSON-string list after the read. The Matrix blank-YAML test asserted YAML-over-env, the old precedence #108440's review flagged; it now pins the contract: explicit env beats YAML, a blank env value is unset (YAML applies), YAML beats the default, and an explicit empty list is a real "no rooms" value.