Class Architecture Map

lineage, wrappers, commands, and paging helpers with relationship endpoints grounded in spec/source

Dark SVG source uses the VMx architecture palette and keeps arrows behind masked component boxes.

Lineage

  • The base-type story is narrow on purpose: the core VM families extend ComponentVMBase, while FormVM and paging helpers do not.
  • CompositeVM, GroupVM, AggregateVM, and HierarchicalVM stay separate container families instead of one mutable mega-type.
  • Forwarding decorators remain wrappers around canonical interfaces, matching chapter 09.

Composition helpers

  • FormVM owns its command pair and persister/validation collaborators rather than inheriting from the component tree.
  • PagedComposition implements IPageable over a wrapped source; TokenPagedComposition owns an accumulator and next-token flow.
  • ConfirmationVM extends NotificationVM because the shipped notifications package and ADR-0031 say it does.

Command and service seams

  • RelayCommand is the plain ICommand implementation; DecoratorCommand and ConfirmationDecoratorCommand layer behavior onto an inner ICommand.
  • ConfirmHelper adapts INotificationHub into the async bool delegate used by confirmation decorators.
  • ModeledCrudCommands packages a command set around selection-driven actions without changing the composite type itself.