digraph GeologQueryEngineBroad { fontname = "Helvetica,Arial,sans-serif" layout = dot rankdir = LR ranksep = 0.9; nodesep = 0.7; splines = true; compound = true; bgcolor = "white" node [ fontname = "Helvetica,Arial,sans-serif", shape = box, style = "filled,rounded", color = "#555555", fillcolor = "white", penwidth = 1.5 ] edge [ fontname = "Helvetica,Arial,sans-serif", color = "#333333", fontsize = 9, fontcolor = "#555555", labeldistance = 2.0, penwidth = 1.2 ] subgraph cluster_frontend { label = "Geolog Front End" style = "rounded" color = "#666666" fontcolor = "#333333" bgcolor = "#FAFAFA" margin = 20 subgraph cluster_language { label = "Language Pipeline" style = "dashed" color = "#9C27B0" fontcolor = "#7B1FA2" margin = 14 concrete [label = "Concrete Syntax", fillcolor = "#F3E5F5", color = "#9C27B0"] parser [label = "Parser", fillcolor = "#F3E5F5", color = "#9C27B0"] abstract [label = "Abstract Syntax", fillcolor = "#F3E5F5", color = "#9C27B0"] elaborator [label = "Elaborator", fillcolor = "#F3E5F5", color = "#9C27B0"] typed [label = "Elaborated Syntax\n(with types)", fillcolor = "#F3E5F5", color = "#9C27B0"] lowering [label = "Lowering", fillcolor = "#F3E5F5", color = "#9C27B0"] ir [label = "Intermediate Representation\n(shared execution contract)", fillcolor = "#F3E5F5", color = "#9C27B0"] } subgraph cluster_tools { label = "Developer Tooling" style = "dashed" color = "#4CAF50" fontcolor = "#388E3C" margin = 14 lsp [label = "LSP\n(parsing + elaboration diagnostics)", fillcolor = "#E8F5E9", color = "#4CAF50"] } } subgraph cluster_runtime { label = "Shared Runtime / Execution Layer" style = "rounded" color = "#666666" fontcolor = "#333333" bgcolor = "#FAFAFA" margin = 20 subgraph cluster_engine { label = "IR Execution Engine" style = "dashed" color = "#4CAF50" fontcolor = "#388E3C" margin = 14 engine [label = <
Shared Query Engine
• user queries
• law checking
• chase / fixpoint steps
• planning / rewriting
>, fillcolor = "#E8F5E9", color = "#4CAF50", shape = box] runtime_ir [label = "Runtime State\n(branches, witnesses,\nequality, provenance)", fillcolor = "#E8F5E9", color = "#4CAF50"] } subgraph cluster_adapters { label = "Backend Adapters" style = "dashed" color = "#FF9800" fontcolor = "#F57C00" margin = 14 inmem_adapter [label = "In-Memory Adapter", fillcolor = "#FFF3E0", color = "#FF9800"] pg_adapter [label = "Postgres Adapter", fillcolor = "#FFF3E0", color = "#FF9800"] rust_adapter [label = "Rust Adapter", fillcolor = "#FFF3E0", color = "#FF9800"] ffi [label = "FFI Haskell to Rust\n(IR marshalling)", fillcolor = "#FFF3E0", color = "#FF9800"] } } subgraph cluster_backends { label = "Execution Targets" style = "dashed" color = "#888888" fontcolor = "#555555" margin = 18 inmem_db [label = "In-Memory DB", fillcolor = "#ECEFF1", color = "#607D8B"] pg_db [label = "Postgres DB", fillcolor = "#ECEFF1", color = "#607D8B"] rust_store [label = "Rust Storage / Query Layer", fillcolor = "#ECEFF1", color = "#607D8B"] } concrete -> parser [color = "#9C27B0"] parser -> abstract [color = "#9C27B0"] abstract -> elaborator [color = "#9C27B0"] elaborator -> typed [color = "#9C27B0"] typed -> lowering [color = "#9C27B0"] lowering -> ir [color = "#9C27B0"] parser -> lsp [style = "dashed", color = "#4CAF50", label = "syntax info"] elaborator -> lsp [style = "dashed", color = "#4CAF50", label = "type info"] ir -> engine [color = "#4CAF50", label = "execute IR"] engine -> runtime_ir [style = "dashed", color = "#4CAF50", label = "maintains"] engine -> inmem_adapter [color = "#FF9800"] engine -> pg_adapter [color = "#FF9800"] engine -> ffi [color = "#FF9800"] ffi -> rust_adapter [color = "#FF9800"] inmem_adapter -> inmem_db [color = "#607D8B"] pg_adapter -> pg_db [color = "#607D8B"] rust_adapter -> rust_store [color = "#607D8B"] }