40 lines
1.4 KiB
Plaintext
40 lines
1.4 KiB
Plaintext
@startuml
|
|
skinparam backgroundColor #FFFFFF
|
|
skinparam defaultFontName Arial
|
|
skinparam defaultFontSize 14
|
|
skinparam shadowing false
|
|
title Complete PUT — isolated execution and epoch-checked publication
|
|
actor Client
|
|
participant "api.rs" as API
|
|
queue "BuildRequest queue" as Queue
|
|
participant "api/worker.rs" as Worker
|
|
participant "Aster candidate VM" as VM
|
|
participant UiBridge
|
|
participant NamespaceState as State
|
|
participant TesseraApp as GUI
|
|
Client -> API : PUT /v1/namespaces/app.main/code
|
|
API -> API : validate / assign accepted submission
|
|
API -> Queue : bounded enqueue
|
|
Queue -> Worker : receive request
|
|
Worker -> VM : parse / compile / execute in fresh candidate
|
|
VM -> UiBridge : allocate objects / Pages
|
|
loop incremental refresh slices
|
|
Worker -> UiBridge : bindings / layout / paint / mounts
|
|
UiBridge --> Worker : Pending or native document
|
|
end
|
|
Worker -> State : verify submission epoch
|
|
alt valid and successful
|
|
Worker -> State : commit document + window commands
|
|
Worker -> Worker : candidate becomes active ReplSession
|
|
Worker --> GUI : DocumentUpdated
|
|
Worker --> Client : response + committed revision
|
|
else superseded / failed
|
|
Worker -> Worker : discard candidate; keep valid live owner
|
|
Worker --> Client : 409 / 422 / 500 as applicable
|
|
end
|
|
note over API,Worker
|
|
Worker retains the observed request and responds.
|
|
GUI does not execute the HTTP request or VM.
|
|
end note
|
|
@enduml
|