v4.1.1 — one shared-value discovery everywhere
Maintenance release, no behaviour change.
LocaleCompletenessResolverno longer carries its own copy of the "which embedded properties are shared" discovery. It takesSharedValueSynchronizerin place ofAttributeHelper(second constructor argument) and derives the properties it must not inspect fromsharedProperties()-- the same discoverytmi:translation:sync-sharedand the flush-time propagation use, so the three cannot disagree. Same exclusions as before: shared columns, whole shared embeddables, shared inner properties including class-level sharing minus#[EmptyOnTranslate]overrides. Only relevant if you construct the resolver yourself; the service definition is updated (UPGRADING, "Behavioural Changes (4.1)" § 3).AttributeHelper::isEmbeddableShared()'s docblock names its real caller.
Quality gate at the tag: 730 tests, 6,723 assertions, 100 % line coverage (1,957 lines), PHPStan level max with 0 errors.