Hassan Abedi 5f8c9f11ad WIP
2026-06-04 14:59:54 +02:00

138 lines
4.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 {
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 {
label = "Storage and Transaction"
style = "dashed"
color = "#4CAF50"
fontcolor = "#388E3C"
margin = 14
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">
<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]
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
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"]
}