@startuml hnote across: Retrieve Resources driftctl -> IACSupplier: Resource() IACSupplier --> driftctl: stateResources []Resource driftctl -> RemoteSupplier: Resource() RemoteSupplier --> driftctl: remoteResources []Resource hnote across: Run Middlewares driftctl --> driftctl: List Middlewares loop on each middleware driftctl -> Middleware: Execute(remoteResources, stateResources) Middleware --> driftctl: remoteResources, stateResources []Resource end hnote across: Run Filters driftctl -> FilterEngine: Run(remoteResources) FilterEngine --> driftctl: remoteResources []Resource driftctl -> FilterEngine: Run(stateResources) FilterEngine --> driftctl: stateResources []Resource hnote across: Analyze driftctl -> Analyzer: Analyze(remoteResources, stateResources) Analyzer --> driftctl: Analyze @enduml