@startuml skinparam backgroundColor #FFFFFF skinparam defaultFontName Arial skinparam defaultFontSize 14 skinparam shadowing false top to bottom direction title Tessera — implemented components (principal runtime flows) component "shell\nwindows / tabs / developer tools" as Shell component "runtime/api\nHTTP + queue" as API component "runtime/api/worker\nserial VM ownership" as Worker component "bridge/ui_bridge\ntypes / native calls / refresh" as Bridge component "model\nobjects / mounts / bindings" as Model component "render\nlayout / paint / hit / raster" as Render component "Aster\nfrontend / compiler / core" as Aster component "runtime/io_tasks\nplain-data completion" as IO database "NamespaceState\nowned document + frame values" as State Shell --> API : serialized input / Console API --> Worker : bounded BuildRequest queue Worker --> Aster : compile / execute Worker --> Bridge : install / refresh / dispatch Bridge <--> Model : managed graph + dependencies Bridge --> Render : derive frame Worker --> State : validate epoch + publish State --> Shell : immutable snapshot Shell --> Render : compose chrome + rasterize Worker <--> IO : request / completion note bottom of Model Directory groups are not separate crates. Imports still cross groups; this is not an exhaustive or acyclic import graph. end note @enduml