49 lines
1.6 KiB
Plaintext
49 lines
1.6 KiB
Plaintext
@startuml
|
|
title A/B preparation and activation
|
|
skinparam shadowing false
|
|
skinparam monochrome true
|
|
participant "OTA manager" as Manager
|
|
participant Installer
|
|
database "Slot B" as B
|
|
database "OTA progress" as Progress
|
|
participant "Boot control" as Boot
|
|
|
|
note over Manager, Boot
|
|
A is confirmed. B is inactive. No earlier trial is pending.
|
|
One installer owns B. A and shared data are preserved.
|
|
end note
|
|
Manager -> Progress : Save intent: release and target B
|
|
Manager -> Installer : Prepare B
|
|
Installer -> B : Write release
|
|
Installer -> B : Complete required storage operations
|
|
Installer -> B : Read and verify installed contents
|
|
Installer --> Manager : Verified expected release
|
|
note over Manager, Boot
|
|
Reset before activation: boot A.
|
|
Inspect B and verify again before a new activation request.
|
|
end note
|
|
Manager -> Progress : Save prepared release B
|
|
Manager -> Boot : Save trial request for B
|
|
Boot -> Boot : Persist target and attempt limit
|
|
note right of Boot
|
|
Interrupted state write:
|
|
read valid old or new state,
|
|
or enter defined recovery.
|
|
end note
|
|
Boot --> Manager : Trial request saved
|
|
note over Manager, Boot
|
|
Reset here: boot control may start B.
|
|
Old OTA progress must not cause a rewrite or fresh attempts.
|
|
end note
|
|
Manager -> Progress : Save trial-requested result
|
|
Manager -> Boot : Restart into trial
|
|
ref over Manager, Boot
|
|
Existing A/B trial boot, checks, and confirmation diagram
|
|
end ref
|
|
legend bottom
|
|
Success path only. Any error stops forward progress and requires state inspection.
|
|
Arrows assume completed durable operations under the platform storage contract.
|
|
A saved trial request is not confirmation.
|
|
endlegend
|
|
@enduml
|