The full system architecture: monorepo structure, crate dependency graph, data flow from user input to simulation results.
flowchart LR
subgraph workspace [Rust Workspace]
Common[wowlab-common]
Engine[wowlab-engine]
Node[wowlab-node]
Sentinel[wowlab-sentinel]
Centrifuge[wowlab-centrifuge]
Supa[wowlab-supabase]
CLI[wowlab-cli]
GUI[wowlab-node-gui]
Headless[wowlab-node-headless]
end
Common --> Engine
Common --> Node
Common --> Sentinel
Common --> CLI
Engine --> Node
Centrifuge --> Node
Supa --> Node
Supa --> Sentinel
Centrifuge --> Sentinel
Node --> GUI
Node --> Headless
Engine --> SentinelCrate responsibilities and boundaries, what lives where and why, the common crate as shared foundation, engine as pure simulation with no I/O, node as the distributed worker abstraction, sentinel as the brain.
flowchart LR
Portal -->|submit job| DB[(Supabase)]
DB -->|PG LISTEN| Sentinel
Sentinel -->|assign chunks| DB
Sentinel -->|notify| Centrifugo
Centrifugo -->|event| Node[Worker Node]
Node -->|run sim| Node
Node -->|post results| Sentinel
Sentinel -->|store| DB
DB -->|results| PortalData flow overview, request lifecycle, how a simulation goes from button click to DPS number.
Next steps