131 lines
4.0 KiB
Plaintext
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"]
|
||
|
|
}
|