03 · Refresh — only the latest generation

03 · Refresh — only the latest generation A sequence diagram generated by Archify. refresh() → generation 1 startRefresh(1), asynchronous refresh() → generation 2 Snapshot 1 complete stale → startRefresh(2) Snapshot 2 complete and current complete → models + ready Triggers · Hardware / UI · Sequence participant Triggers Hardware / UI USBDeviceManager · Main Queue · Sequence participant USBDeviceManager Main Queue USBDeviceDiscovery · Serial utility queue · Sequence participant USBDeviceDiscovery Serial utility queue SwiftUI · Observes @Published · Sequence participant SwiftUI Observes @Published Legend request return async trace

One USB job in flight

  • • Further requests only increase latestGeneration.
  • • After completion, the newest job starts directly.

Triggers have their own paths

  • • Wake / session: HardwareRefreshCoordinator, 350 ms.
  • • USB monitor directly; manual refresh also covers Bluetooth / power / LAN.

Publication is a second gate

  • • A current generation alone is insufficient: isComplete is required.
  • • On errors, the last complete snapshot remains.