Skip to content

[SPoA/KISS] Replace settings commit suppression flags with an explicit change flow #116

Description

@KeyffMS

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

  • Local settings commits trigger exactly one intended UI/runtime follow-up.
  • External settings changes still refresh every interested component.
  • The three component-specific _committing* suppression flags are removed or reduced to one scoped mechanism owned by the settings transaction boundary.
  • Event timing requirements are explicit rather than implicit in caller code.
  • Grid failure rollback still restores the last committed row.
  • Profile-manager selection remains stable after create, duplicate, rename, edit and delete.
  • Tests cover local commit, external commit, failure and nested/reentrant callback scenarios.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions