2026-05-29 09:40:01 +02:00
|
|
|
digraph GeomergeDemoWorkflow {
|
|
|
|
|
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_inputs {
|
|
|
|
|
label = "Inputs"
|
|
|
|
|
style = "dashed"
|
|
|
|
|
color = "#888888"
|
|
|
|
|
fontcolor = "#555555"
|
|
|
|
|
margin = 18
|
|
|
|
|
paths_schema [label = "paths.json\n(compiled schema)", fillcolor = "#E8F4FD", color = "#2196F3"]
|
|
|
|
|
fixture_rows [label = "Fixture Rows\n(graphs, vertices, edge)", fillcolor = "#E8F4FD", color = "#2196F3"]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
subgraph cluster_demo {
|
2026-05-29 14:54:24 +02:00
|
|
|
label = "geomerge-demo (run_demo)"
|
2026-05-29 09:40:01 +02:00
|
|
|
style = "rounded"
|
|
|
|
|
color = "#666666"
|
|
|
|
|
fontcolor = "#333333"
|
|
|
|
|
bgcolor = "#FAFAFA"
|
|
|
|
|
margin = 20
|
|
|
|
|
|
|
|
|
|
subgraph cluster_loading {
|
|
|
|
|
label = "Theory Loading"
|
|
|
|
|
style = "dashed"
|
|
|
|
|
color = "#9C27B0"
|
|
|
|
|
fontcolor = "#7B1FA2"
|
|
|
|
|
margin = 14
|
|
|
|
|
load_theory [label = "load_paths_theory\n(serde_json)", fillcolor = "#F3E5F5", color = "#9C27B0"]
|
|
|
|
|
flat_theory [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
|
|
|
|
|
<tr><td align="center"><b>FlatTheory</b></td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• 10 tables</td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• 12 laws</td></tr>
|
|
|
|
|
</table>>, fillcolor = "#F3E5F5", color = "#9C27B0", shape = box]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
subgraph cluster_store {
|
|
|
|
|
label = "Store and Transaction"
|
|
|
|
|
style = "dashed"
|
|
|
|
|
color = "#4CAF50"
|
|
|
|
|
fontcolor = "#388E3C"
|
|
|
|
|
margin = 14
|
|
|
|
|
build_store [label = "Store::try_from_theory", fillcolor = "#E8F5E9", color = "#4CAF50"]
|
|
|
|
|
transact [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
|
|
|
|
|
<tr><td align="center"><b>add_paths_data (transact)</b></td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• append Graphs rows</td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• append G0, G1 rows</td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• append G.V vertices</td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• append G.E edge</td></tr>
|
|
|
|
|
</table>>, fillcolor = "#E8F5E9", color = "#4CAF50", shape = box]
|
|
|
|
|
validate [label = "Law Validation\n(append_row_validated)", fillcolor = "#E8F5E9", color = "#4CAF50"]
|
|
|
|
|
assert_edge [label = "assert_edge_was_stored\n(row count, cells)", fillcolor = "#E8F5E9", color = "#4CAF50"]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
subgraph cluster_persist {
|
|
|
|
|
label = "Persistence Round Trip"
|
|
|
|
|
style = "dashed"
|
|
|
|
|
color = "#FF9800"
|
|
|
|
|
fontcolor = "#F57C00"
|
|
|
|
|
margin = 14
|
|
|
|
|
dump_before [label = "store.dump()\n(before persist)", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
|
|
|
encode [label = "pst::encode_store\n-> bytes", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
|
|
|
decode [label = "pst::decode_store\n-> restored Store", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
|
|
|
compare [label = "dump equality check", fillcolor = "#FFF3E0", color = "#FF9800"]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
subgraph cluster_report {
|
|
|
|
|
label = "Report"
|
|
|
|
|
style = "dashed"
|
|
|
|
|
color = "#888888"
|
|
|
|
|
fontcolor = "#555555"
|
|
|
|
|
margin = 18
|
|
|
|
|
demo_report [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
|
|
|
|
|
<tr><td align="center"><b>DemoReport</b></td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• table_count, law_count</td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• graph, vertex, edge counts</td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• edge endpoints</td></tr>
|
|
|
|
|
<tr><td align="left" balign="left">• persisted_bytes</td></tr>
|
|
|
|
|
</table>>, fillcolor = "#ECEFF1", color = "#607D8B", shape = box]
|
|
|
|
|
stdout [label = "stdout\n(println! lines)", fillcolor = "#ECEFF1", color = "#607D8B"]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Inputs into loading
|
|
|
|
|
paths_schema -> load_theory [label = "include_str!", color = "#2196F3"]
|
|
|
|
|
load_theory -> flat_theory [color = "#9C27B0"]
|
|
|
|
|
|
|
|
|
|
// Loading into store
|
|
|
|
|
flat_theory -> build_store [color = "#9C27B0"]
|
|
|
|
|
build_store -> transact [color = "#4CAF50"]
|
|
|
|
|
fixture_rows -> transact [style = "dashed", color = "#2196F3"]
|
|
|
|
|
|
|
|
|
|
// Transaction internals
|
|
|
|
|
transact -> validate [color = "#4CAF50"]
|
|
|
|
|
validate -> transact [style = "dashed", label = "row ids", color = "#4CAF50"]
|
|
|
|
|
transact -> assert_edge [color = "#4CAF50"]
|
|
|
|
|
|
|
|
|
|
// Into persistence
|
|
|
|
|
assert_edge -> dump_before [color = "#FF9800"]
|
|
|
|
|
dump_before -> encode [color = "#FF9800"]
|
|
|
|
|
encode -> decode [label = "bytes", color = "#FF9800"]
|
|
|
|
|
decode -> compare [color = "#FF9800"]
|
|
|
|
|
dump_before -> compare [style = "dashed", label = "expected", color = "#FF9800"]
|
|
|
|
|
|
|
|
|
|
// Out to report
|
|
|
|
|
compare -> demo_report [color = "#607D8B"]
|
|
|
|
|
flat_theory -> demo_report [style = "dashed", label = "counts", color = "#607D8B"]
|
|
|
|
|
demo_report -> stdout [color = "#607D8B"]
|
|
|
|
|
|
|
|
|
|
}
|