useful-notes/scratches/query-engine-broad.dot

131 lines
4.0 KiB
Plaintext

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 = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
<tr><td align="center"><b>Shared Query Engine</b></td></tr>
<tr><td align="left" balign="left">• user queries</td></tr>
<tr><td align="left" balign="left">• law checking</td></tr>
<tr><td align="left" balign="left">• chase / fixpoint steps</td></tr>
<tr><td align="left" balign="left">• planning / rewriting</td></tr>
</table>>, 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"]
}