Demo / the semantic graph
One domain, eight perspectives.
A business system is one connected semantic model. The layers people experience as separate artifacts — the domain, the decisions, the policy, the workflow, the interface, the deployment — are views of that one model, and they can be checked against each other because they are stored together.
Everything below is drawn from the compiled artifacts of the support-desk example in this repository. Nothing here is an illustration of what the graph might look like.
8
Perspectives
10
Source files
140
Nodes
232
Connections
The explorer
Pick a layer, then a node.
The row of perspectives is a tablist. Tab reaches it, the arrow keys and Home and End move inside it, and Tab again lands in the drawing, where every node is a button: Enter or Space shows its kind, its declaration file, its connections and its artifact id, and Escape clears the selection.
Each perspective is also a link to its panel: without JavaScript all eight layers stay readable, and with it the row above behaves as a tablist.
What you are looking at
One application, read eight ways
One application, 10 files, 140 nodes and 232 connections. Each perspective below is the same application read through one surface; the counts are the drawing's, not a separate tally.
The ten source files are the nine surfaces plus a second interaction flow (cli.ifml), which declares the command-line views over the same domain. Every one of them is compiled, and every one of them contributes nodes to the same graph.
- support/cli.ifml
- support/support.actor
- support/support.cmmn
- support/support.ddd
- support/support.deploy
- support/support.dmn
- support/support.evt
- support/support.ifml
- support/support.mox
- support/support.uc
The drawing leaves out the 10 file nodes — a file is a container, not a declaration — which leaves 130 nodes. Of the 232 connections, 20 touch a file node and 77 join two different layers (an interface action binding a service operation, say), so the perspectives carry the remaining 135: the ones whose two ends sit in the same layer.
A node id is the graph artifact's id verbatim, so a node selected above can be found with pherolang graph query in the committed artifact. It is not a label invented for this page.
| Perspective | Surface | Nodes | Edges |
|---|---|---|---|
| Domain | Domain model.mox | 20 | 23 |
| Decisions | Decision model.dmn | 10 | 10 |
| Events | Event contract.evt | 8 | 9 |
| Workflows | Application design.ddd | 28 | 29 |
| Authorisation | Authorisation.actor | 9 | 13 |
| Experience | Interaction flow.ifml | 25 | 23 |
| Deployment | Deployment.deploy | 10 | 11 |
| Cases | Case management.cmmn | 20 | 17 |
The same corpus holds 8 import-connected applications, 305 nodes and 463 edges. This page filters to one of them, because a graph of everything would not fit on a screen or in a sentence.
Provenance
Generated, not illustrated
The drawing is a projection of one committed artifact. Regenerate the artifact and the projection, and the numbers on this page change with them.
site/data/graph.json is written by the released pherolang binary running graph build over examples/. The builder is derived post-compile: it never re-reads a source or re-checks a file, so a node in the graph is a node the compiler produced.
The artifact is pinned: examples/artifacts/examples.graph.json is byte-compared in CI against a fresh build of the same tree, so a change to the graph is a change to a committed golden, not a silent drift.
site/scripts/render-graph.mjs then bakes the per-perspective geometry into site/data/support-model.json, which is what this page reads. Detail paths are relative to the repository's examples/ directory.
pherolang graph build examples -o examples.graph.json
diff examples.graph.json examples/artifacts/examples.graph.json # what CI checks
node site/scripts/sync-model.mjs # project it into site/data/The first line is the exact command scripts/check-commands.mjs executes in CI; the diff is the freshness gate. Node kinds, edge kinds, determinism and the query surface are documented in the graph reference.