138 lines
4.7 KiB
Plaintext
Raw Normal View History

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)"
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 {
2026-06-04 12:47:47 +02:00
label = "Storage and Transaction"
style = "dashed"
color = "#4CAF50"
fontcolor = "#388E3C"
margin = 14
2026-06-04 12:47:47 +02:00
build_store [label = "GeomergeStorage::from_theory\n(Store::try_from_theory)", fillcolor = "#E8F5E9", color = "#4CAF50"]
transact [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
2026-06-04 12:47:47 +02:00
<tr><td align="center"><b>add_paths_data (tx.insert ×7)</b></td></tr>
<tr><td align="left" balign="left">• insert Graphs rows</td></tr>
<tr><td align="left" balign="left">• insert G0, G1 rows</td></tr>
<tr><td align="left" balign="left">• insert G.V vertices</td></tr>
<tr><td align="left" balign="left">• insert G.E edge</td></tr>
<tr><td align="left" balign="left">• pending RowIds reused as FKs</td></tr>
</table>>, fillcolor = "#E8F5E9", color = "#4CAF50", shape = box]
2026-06-04 12:47:47 +02:00
commit [label = <<table border="0" cellborder="0" cellspacing="0" cellpadding="4">
<tr><td align="center"><b>tx.commit()</b></td></tr>
<tr><td align="left" balign="left">• law validation</td></tr>
<tr><td align="left" balign="left">• CommittedTx resolves pending RowIds</td></tr>
</table>>, fillcolor = "#E8F5E9", color = "#4CAF50", shape = box]
assert_edge [label = "assert_edge_was_stored\n(storage.scan(G.E))", 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
2026-06-04 12:47:47 +02:00
transact -> commit [color = "#4CAF50"]
commit -> 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"]
}