Diagramming & graphs
25 notations on one renderer, a NetworkX-tier graph engine and constraint-solved layout.
4 Strong · 5 Solid · 3 Partial · 0 Emerging
Measured against: Graphviz · Mermaid · D2 · NetworkX · Folders: base/graph(opens in a new tab) · For programmers: this area's reference

Rethought from first principles
What Softanza kept from what works, and what it rethought, as the library wrote it down in its design documents and narrations.
The Softanza wayA diagram is a visual language, not a painting: every relation a reader can see in it must be one the graph actually contains.
Kept from the best practice
- Layered drawings follow the classic Sugiyama pipeline: layers, helper nodes on long edges, crossing reduction, coordinates, then edge routing. source(opens in a new tab)
- Graphviz's model is kept: the spacing between nodes is the contract, and the picture's size follows from its content, not the reverse. source(opens in a new tab)
- Mathematical diagrams take Penrose's split: a domain declares types, a substance states the content, a style maps it to shapes, and optimisation finds the layout. source(opens in a new tab)
Rethought
- The author edits meaning and the layout owns all geometry. Dragging a box only suggests an order, because a hand-placed position asserts something the graph cannot back. source(opens in a new tab)
- BPMN, UML, state machines and circuits are declared profiles over one drawing foundation, never separate renderers, because a duplicate renderer had arrived broken. source(opens in a new tab)
- Positions within a layer are solved exactly, by isotonic regression, not a median heuristic. Every layout is deterministic, so a test can check a picture byte for byte. source(opens in a new tab)
- Two lines may run together only where they share an endpoint, because a reader takes merged lines as a shared relation the graph may not have. source(opens in a new tab)
One of the most complete planes in the library: 25 notations all rendered by one engine, over a native deterministic layout engine and a NetworkX-tier graph-algorithm suite; math and molecule diagrams are genuinely constraint-solved via autodiff. The old dot.exe dependency is demoted to an optional viewer — diagram layout is now engine-native. Guarded by ~1,790 assertions.
What a crafter does with it, and what stands out
- 25 notations as data profiles over one renderer
- determinism as a guarantee: bit-identical layout across processes
- constraint-solved layout via autodiff, which no mainstream tool does
- NetworkX-core parity, compiled
What is owed
- meet the dot kill criterion (spline routing, nested clusters)
- live interactivity via the GUI plane
- graph generators & isomorphism
- PDF / PostScript export
The Softanza way, run
What Softanza does differently in this area, shown by code taken from its narrations and guards, and run for this page.
A declared notation that forbids self-links makes the editor refuse one, though no editor code knows that notation; a lawful link passes.
# a notation declared as data: three kinds, a closed vocabulary, and no self-links
oFsm = new stzNotation("fsm51")
oFsm.AddKind("state", "circle")
oFsm.AddKind("final", "doublecircle")
oFsm.AddKind("task", "diamond")
oFsm.Close()
oFsm.Forbid(:SelfLink, "a state cannot transition to itself in fsm51; " +
"model a stay as a guard on departure instead")
StzRegisterNotation(oFsm)
oDm = new stzDiagram("m51")
oDm.SetNotation("fsm51")
oDm.AddNodeXTT("a", "A", [ :type = "state" ])
oDm.AddNodeXTT("b", "B", [ :type = "task" ])
oDm.AddEdge("a", "b")
oDm.ToCanvasXT([ :NodeWidth = 96, :NodeHeight = 36 ])
nDnLog = len(oDm.EditLog())
bDnGot = oDm.Edit(:Link, [ "a", "a" ])
chk("a link the domain forbids is refused at the command",
bDnGot = 0 and len(oDm.EditLog()) = nDnLog)
bDnGot = oDm.Edit(:Link, [ "b", "a" ])
chk("...while a lawful link passes the same gate",
bDnGot = 1 and len(oDm.EditLog()) = nDnLog + 1)ok a link the domain forbids is refused at the command ok ...while a lawful link passes the same gate
run on 2026-10-01 21:17 inside the library at commit 0e72e2e2c; taken from base/test/graphics/gg_adversarial.ring(opens in a new tab)
The articles of this area (12)
- Graphviz DOT Language Guide: Using stzDotCode 2025
- stzGraph: Computational Foundation and Design 2025
- stzGraph: The Art of Connected Thinking 2025
- stzGraph — Modeling Knowledge Through Structure 2025
- Introducing stzOrgChart - The Strategic Organizational Intelligence Platform 2025
- Organizational Intelligence in Action 2025
- What ChatGPT Thinks of the stzGraph Module in the Softanza Library 2025
- ClaudeAI Opinion on stzGraph design 2025
- Softanza stzGraph vs. Modern Graph Ecosystem 2025
- Intelligence in Motion: Graph Planning in Softanza 2025
- stzGraphQuery: Asking Questions to Your Graph 2026
- Rules That See the Whole Picture 2026
The lanes, one by one
Lanes and their notes are quoted as they were read at the source, on Read from the source on 2026-09-16, from a read-only main worktree.

