Audit finding
SettingsCoordinator.Commit publishes Changed synchronously. Components that initiate their own commits currently suppress the resulting callback with separate Boolean flags:
RuntimeCoordinator._committingSettings;
ConfigurationForm._committingGridValue;
VisualProfileManagerForm._committingLocalChange.
Each caller then performs its own explicit post-commit refresh or runtime action. The behavior depends on synchronous event timing and repeats the same reentrancy pattern in multiple presentation/runtime components.
Target state
Represent the origin and intended follow-up of a settings change explicitly. Suitable small designs include:
- typed
SettingsChangedEventArgs containing a change origin/transaction identifier; or
- one authoritative commit result flow in which local callers do not also react to their own generic event.
Do not introduce a general event bus.
Acceptance criteria
Audit finding
SettingsCoordinator.CommitpublishesChangedsynchronously. Components that initiate their own commits currently suppress the resulting callback with separate Boolean flags:RuntimeCoordinator._committingSettings;ConfigurationForm._committingGridValue;VisualProfileManagerForm._committingLocalChange.Each caller then performs its own explicit post-commit refresh or runtime action. The behavior depends on synchronous event timing and repeats the same reentrancy pattern in multiple presentation/runtime components.
Target state
Represent the origin and intended follow-up of a settings change explicitly. Suitable small designs include:
SettingsChangedEventArgscontaining a change origin/transaction identifier; orDo not introduce a general event bus.
Acceptance criteria
_committing*suppression flags are removed or reduced to one scoped mechanism owned by the settings transaction boundary.