@startuml
title PCS Sync - Capture Snapshot And Refresh Status

actor Engineer
participant "PCS TIA Sync Tool" as Gui
participant "pcs sync snapshot tia" as Snapshot
participant "TIA Portal" as TIA
participant "TIA Snapshot\n.pcs/sync/tia-snapshot/latest" as TiaSnapshot
participant "pcs sync status --json" as Status
database "Base Snapshot\n.pcs/sync/base-hashes.json" as Base
participant "Repository\n tia/exports" as Repo

Engineer -> Gui : Capture TIA Snapshot
Gui -> Snapshot : project path, PLC name
Snapshot -> TIA : attach to open project\nor open through Openness
TIA --> Snapshot : generated .scl / .db / .udt sources
Snapshot -> TiaSnapshot : replace latest snapshot
Snapshot --> Gui : snapshot captured

Engineer -> Gui : Refresh Status
Gui -> Status : request JSON decision model
Status -> Repo : hash normalized repo sources
Status -> TiaSnapshot : hash normalized TIA snapshot
Status -> Base : read last aligned hashes
Status --> Gui : clean / safe candidates /\nreview / baseline candidates
Gui --> Engineer : update table, counters, diff readiness

@enduml
