Class Architecture Map

conceptual families with class inheritance and Rust composition called out explicitly

Class Architecture Map conceptual families with class inheritance and Rust composition called out explicitly Class Architecture Map conceptual families with class inheritance and Rust composition called out explicitly Core VM lineage Wrappers and specialized companions Commands, paging, and notification adapters ComponentVMBase lifecycle state machine hub + dispatcher protected hooks ComponentVM<M> modeled leaf VM extends modeled base IComponentVM<M> CompositeVM children list Current slot select_component GroupVM peer children no Current batch updates AggregateVM1..6 fixed arity Component1..6 accessors heterogeneous slots HierarchicalVM recursive nodes Parent / Depth / Path tree change messages IComponentVM<M> name / hint / model selection + lifecycle ForwardingComponentVM wraps IComponentVM<M> default delegation override selected members ICompositeVM<VM> IList surface + Current child selection helpers ForwardingCompositeVM wraps ICompositeVM<VM> forwards Current + iteration subclass overrides stay surgical DiscriminatorVM ActiveKey modal precedence stack single-active slot FormVM snapshot + IsDirty approve_async + errors validation-aware flow Approve / Deny ICommand pair approve: async launch deny reverts Model Persister + validation persister / snapshotter validators + equality hub messages on deny NotificationVM lifespan / opacity DismissCommand auto-resolve at expiry ConfirmationVM ApproveCommand RejectCommand no auto-resolve at expiry ICommand CanExecute / Execute CanExecuteChanged RelayCommand implements ICommand predicate + task trigger + manual requery DecoratorCommand single inner command pre/post actions extra gate ConfirmationDecoratorCommand confirm delegate gate errors observable fire-and-forget + async entry ModeledCrudCommands CreateNew / UpdateCurrent DeleteCurrent + confirm selection-trigger requery IPageable page size / page count current page navigation PagedComposition implements IPageable wraps iterable source current page slice TokenPagedComposition forward-only fetch_next load_more + refresh items accumulator + token INotificationHub Post / Resolve Pending stream NullNotificationHub ConfirmHelper make_confirm awaits Post/Resolve flow async bool delegate Confirm delegate () -> Task<bool> Approve -> proceed Assertion PagedComposition and TokenPagedComposition are composition/paging primitives, not CompositeVM subclasses. Use them beside CompositeVM or a filtered source; they do not alter the container hierarchy. Reading hint Helper boxes make interface and delegate endpoints explicit so wraps/decorates/adapts stay literal. Class extends applies to class-based flavors; Rust composes the same families from ComponentCore and NotificationVm fields. class extends class extends class extends class extends class extends implements implements wraps wraps owns owns class extends implements decorates decorates owns implements adapts Relationship legend extends implements owns wraps decorates adapts

Lineage

  • In C#/Python/TypeScript/Swift, core VM families extend ComponentVMBase; Rust composes them from ComponentCore.
  • 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 in OO flavors; Rust owns a NotificationVm field for the same conceptual specialization.

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.