The IR supersedes both intermediate designs (requirements D6, D7):
station/tools/docgen and the graph model that briefly lived in graphgen.
Shipping them beside atlas2/docgen would mean two graph models, which is the
thing the architecture argues against.
Carried across rather than lost:
- style/extract.py and tokens.py, the offline theme harvester (R31). Rewritten
to emit a *theme* — a slot-to-hex binding — rather than a whole style file,
since what harvesting recovers is which colour a slot should be, not what a
kind should look like.
- graphgen/README.md, rewritten for what graphgen actually is now: the
schema explorer. It fixes the blank station-index entry at run.py:304.
Two bugs found while doing it:
- Canvas and ink are the two lightness extremes, not the two most common
values. In a Graphviz SVG every label carries a fill, so the ink outnumbers
the canvas 87 to 43 and the old rule produced a theme whose text was
invisible against its own background.
- A name defined in both branches of an if/else produced a duplicate id, which
failed validation on docgen's own source. Disambiguated by line.
108 lines
5.9 KiB
Plaintext
108 lines
5.9 KiB
Plaintext
digraph system_overview {
|
|
bgcolor="#ffffff"
|
|
rankdir=TB
|
|
splines="ortho"
|
|
nodesep="0.55"
|
|
ranksep="0.7"
|
|
pad="0.3"
|
|
fontname="Arial"
|
|
label="Soleprint — System Overview"
|
|
labelloc=t
|
|
fontsize="14"
|
|
fontcolor="#1f2933"
|
|
compound=true
|
|
|
|
node [shape="box" style="filled,rounded" fillcolor="#ffffff" color="#9aa5b1" penwidth="1" fontname="Arial" fontsize="10" fontcolor="#1f2933" margin="0.25,0.14" height="0.5"]
|
|
edge [color="#9aa5b1" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9" fontcolor="#616e7c"]
|
|
|
|
subgraph cluster_core {
|
|
label="Soleprint Hub"
|
|
style="rounded,dashed"
|
|
color="#3a7dff"
|
|
bgcolor="#d6e4ff"
|
|
fontcolor="#616e7c"
|
|
fontname="Arial"
|
|
hub [label="soleprint
|
|
core coordinator
|
|
port 12000" shape="box" style="filled,rounded" fillcolor="#d6e4ff" color="#3a7dff" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
}
|
|
|
|
subgraph cluster_artery {
|
|
label="Artery — Todo lo vital"
|
|
style="rounded,dashed"
|
|
color="#c0392b"
|
|
bgcolor="#fdeaea"
|
|
fontcolor="#616e7c"
|
|
fontname="Arial"
|
|
veins [label="Veins
|
|
stateless connectors" shape="box" style="filled,rounded" fillcolor="#fdeaea" color="#c0392b" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
shunts [label="Shunts
|
|
mock connectors" shape="box" style="filled,rounded" fillcolor="#fdeaea" color="#c0392b" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
pulses [label="Pulses
|
|
composed flows" shape="box" style="filled,rounded" fillcolor="#fdeaea" color="#c0392b" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
}
|
|
|
|
subgraph cluster_atlas {
|
|
label="Atlas — Documentación accionable"
|
|
style="rounded,dashed"
|
|
color="#1a7f45"
|
|
bgcolor="#e6f5ec"
|
|
fontcolor="#616e7c"
|
|
fontname="Arial"
|
|
books [label="Books
|
|
documentation" shape="box" style="filled,rounded" fillcolor="#e6f5ec" color="#1a7f45" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
templates [label="Templates
|
|
patterns" shape="box" style="filled,rounded" fillcolor="#e6f5ec" color="#1a7f45" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
}
|
|
|
|
subgraph cluster_station {
|
|
label="Station — Centro de control"
|
|
style="rounded,dashed"
|
|
color="#2b5fd9"
|
|
bgcolor="#e8effd"
|
|
fontcolor="#616e7c"
|
|
fontname="Arial"
|
|
tools [label="Tools
|
|
tester · datagen · modelgen" shape="box" style="filled,rounded" fillcolor="#e8effd" color="#2b5fd9" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
monitors [label="Monitors
|
|
databrowse" shape="box" style="filled,rounded" fillcolor="#e8effd" color="#2b5fd9" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
}
|
|
|
|
subgraph cluster_external {
|
|
label="External APIs"
|
|
style="rounded,dashed"
|
|
color="#cbd2d9"
|
|
bgcolor="#f5f7fa"
|
|
fontcolor="#616e7c"
|
|
fontname="Arial"
|
|
jira [label="Jira" shape="box" style="filled,rounded" fillcolor="#ffffff" color="#9aa5b1" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
google [label="Google" shape="box" style="filled,rounded" fillcolor="#ffffff" color="#9aa5b1" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
slack [label="Slack" shape="box" style="filled,rounded" fillcolor="#ffffff" color="#9aa5b1" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
}
|
|
|
|
subgraph cluster_managed {
|
|
label="Managed App"
|
|
style="rounded,dashed"
|
|
color="#cbd2d9"
|
|
bgcolor="#f5f7fa"
|
|
fontcolor="#616e7c"
|
|
fontname="Arial"
|
|
app_fe [label="Frontend" shape="box" style="filled,rounded" fillcolor="#ffffff" color="#9aa5b1" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
app_be [label="Backend" shape="box" style="filled,rounded" fillcolor="#ffffff" color="#9aa5b1" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
app_db [label="Database" shape="cylinder" style="filled,rounded" fillcolor="#ffffff" color="#9aa5b1" fontcolor="#1f2933" penwidth="1" fontname="Arial" fontsize="10" margin="0.25,0.14" height="0.5"]
|
|
}
|
|
|
|
|
|
hub -> veins [xlabel="routes" color="#c0392b" fontcolor="#c0392b" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9"]
|
|
hub -> books [xlabel="routes" color="#1a7f45" fontcolor="#1a7f45" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9"]
|
|
hub -> tools [xlabel="routes" color="#2b5fd9" fontcolor="#2b5fd9" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9"]
|
|
veins -> jira [xlabel="API" color="#9aa5b1" fontcolor="#616e7c" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9"]
|
|
veins -> google [xlabel="OAuth" color="#9aa5b1" fontcolor="#616e7c" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9"]
|
|
veins -> slack [xlabel="API" color="#9aa5b1" fontcolor="#616e7c" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9"]
|
|
veins -> pulses [xlabel="compose" color="#9aa5b1" fontcolor="#616e7c" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9"]
|
|
tools -> app_be [xlabel="test" color="#9aa5b1" fontcolor="#616e7c" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9" style="dashed"]
|
|
monitors -> app_db [xlabel="browse" color="#9aa5b1" fontcolor="#616e7c" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9" style="dashed"]
|
|
hub -> app_fe [xlabel="sidebar
|
|
injection" color="#3a7dff" fontcolor="#3a7dff" penwidth="1" arrowhead="normal" arrowsize="0.7" fontname="Arial" fontsize="9" style="dashed"]
|
|
}
|