43 lines
1.8 KiB
Plaintext
43 lines
1.8 KiB
Plaintext
@startuml
|
|
title A/B installation and restart decisions
|
|
skinparam shadowing false
|
|
skinparam monochrome true
|
|
state "A confirmed\nB inactive; no pending trial" as Idle
|
|
state "Intent saved\nWriting B" as Writing
|
|
state "B fully written\nNot yet verified" as Written
|
|
state "B verified\nPrepared state saved" as Prepared
|
|
state "Trial request saved\nOTA progress may still be old" as Requested
|
|
state "Inspect saved boot state\nand target release" as Inspect
|
|
state "Separate recovery policy" as Recovery
|
|
state "Trial boot lifecycle\nSee existing trial boot diagram" as Trial
|
|
|
|
[*] --> Idle
|
|
Idle --> Writing : save release and target
|
|
Writing --> Written : complete storage writes
|
|
Written --> Prepared : verify expected contents; save prepared state
|
|
Prepared --> Requested : boot control saves trial request
|
|
Requested --> Trial : restart; consume attempt through boot control
|
|
Writing --> Inspect : restart
|
|
Written --> Inspect : restart
|
|
Prepared --> Inspect : restart
|
|
Requested --> Inspect : restart before entering trial lifecycle
|
|
Inspect --> Writing : A selected; B incomplete\nrestart preparation under policy
|
|
Inspect --> Prepared : A selected; B complete\nverify again; save prepared state
|
|
Inspect --> Requested : saved B trial found\nrepair progress; preserve attempt count
|
|
Inspect --> Recovery : no valid boot state
|
|
Written --> Idle : verification fails; abandon B
|
|
Recovery --> [*]
|
|
Trial --> [*]
|
|
|
|
note right of Inspect
|
|
Read boot state before writing B.
|
|
Never infer confirmation from progress.
|
|
A saved boot request wins over old progress.
|
|
end note
|
|
legend bottom
|
|
One A-to-B installation. No shared data migration or shared boot update.
|
|
Writes assume the platform's durability and record validation contract.
|
|
Trial outcomes and later updates belong to the trial boot lifecycle.
|
|
endlegend
|
|
@enduml
|