digraph GeologQueryEngineNarrow { 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(backend-neutral 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_execution { label = "Execution Layer" style = "dashed" color = "#4CAF50" fontcolor = "#388E3C" margin = 18 query_translation [label = "IR to Backend Translation", fillcolor = "#E8F5E9", color = "#4CAF50"] } subgraph cluster_backends { label = "Backend Implementations" style = "rounded" color = "#666666" fontcolor = "#333333" bgcolor = "#FAFAFA" margin = 20 subgraph cluster_inmemory { label = "In-Memory Backend" style = "dashed" color = "#FF9800" fontcolor = "#F57C00" margin = 14 inmem_rel [label = "Relation Translation", fillcolor = "#FFF3E0", color = "#FF9800"] inmem_laws [label = "Law / Chase Translation", fillcolor = "#FFF3E0", color = "#FF9800"] inmem_qe [label = "In-Memory Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"] inmem_db [label = "In-Memory DB", fillcolor = "#ECEFF1", color = "#607D8B"] } subgraph cluster_postgres { label = "Postgres Backend" style = "dashed" color = "#FF9800" fontcolor = "#F57C00" margin = 14 pg_schema [label = "IR to Schema", fillcolor = "#FFF3E0", color = "#FF9800"] pg_queries [label = "IR to SQL Queries", fillcolor = "#FFF3E0", color = "#FF9800"] pg_qe [label = "Postgres Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"] pg_db [label = "Postgres DB", fillcolor = "#ECEFF1", color = "#607D8B"] } subgraph cluster_rust { label = "Rust Backend" style = "dashed" color = "#FF9800" fontcolor = "#F57C00" margin = 14 ffi [label = "FFI Haskell to Rust\n(IR marshalling)", fillcolor = "#FFF3E0", color = "#FF9800"] rust_rel [label = "Relation Translation", fillcolor = "#FFF3E0", color = "#FF9800"] rust_laws [label = "Law / Chase Translation", fillcolor = "#FFF3E0", color = "#FF9800"] rust_qe [label = "Rust Query Engine", fillcolor = "#FFF3E0", color = "#FF9800"] 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 -> query_translation [color = "#4CAF50", label = "compile IR"] query_translation -> inmem_rel [color = "#FF9800"] query_translation -> inmem_laws [color = "#FF9800"] query_translation -> pg_schema [color = "#FF9800"] query_translation -> pg_queries [color = "#FF9800"] query_translation -> ffi [color = "#FF9800"] inmem_rel -> inmem_qe [color = "#FF9800"] inmem_laws -> inmem_qe [color = "#FF9800"] inmem_qe -> inmem_db [color = "#607D8B"] pg_schema -> pg_db [color = "#607D8B"] pg_queries -> pg_qe [color = "#FF9800"] pg_qe -> pg_db [color = "#607D8B"] ffi -> rust_rel [color = "#FF9800"] ffi -> rust_laws [color = "#FF9800"] rust_rel -> rust_qe [color = "#FF9800"] rust_laws -> rust_qe [color = "#FF9800"] rust_qe -> rust_store [color = "#607D8B"] }