Dependency Graph With a Cycle (Graphviz DOT)
The cyclic plugin graph as DOT, with the three cycle edges highlighted. Graphviz renders it happily, which is exactly why a topological sort must be the thing that rejects it. Every package, version, hash and licence is fictional — the tree describes nothing real.
// SAMPLE — fictional supply-chain data. Every package, registry, version, hash, licence, advisory identifier and signature in this document is invented. The cycle below is deliberate.
digraph plugin_cycle {
rankdir=LR;
node [shape=box, style=rounded, fontname="Helvetica"];
graph [label="SAMPLE cyclic plugin dependencies", labelloc=t];
"@orchard-example/gateway" -> "example-plugin-a";
"example-plugin-a" -> "example-plugin-b" [color="#c62828", penwidth=2];
"example-plugin-b" -> "example-plugin-c" [color="#c62828", penwidth=2];
"example-plugin-c" -> "example-plugin-a" [color="#c62828", penwidth=2];
"example-plugin-c" -> "example-logger";
// a -> b -> c -> a is a true cycle; a topological sort must fail here.
}
Specifications
- Seed
- 51200
- Sample Only
- true
- Format
- Graphviz DOT
- Type
- digraph
- Nodes
- 5
- Edges
- 5
- Cycles
- 1
- Line Endings
- LF
Testing contract
Expected to recover- Scenario
- Run a topological sort over a graph parsed from DOT.
- Expected result
- Sort fails with a cycle error naming example-plugin-a, -b and -c, while rendering the same file to SVG still succeeds.
What is a .dot file?
A DOT file is a Graphviz graph described in the DOT language — nodes, edges, and attributes as plain text — which Graphviz lays out and renders to an image. It is a standard way to define directed and undirected graphs as code.
How to use this file
Use an example DOT file to test Graphviz rendering, DOT parsing, and DOT-to-SVG/PNG conversion.
How to use this file for testing
“Dependency Graph With a Cycle (Graphviz DOT)” is a deterministic Novus Examples fixture for Graph data, Error handling, Conversion testing. Node/edge datasets in GraphML and GEXF (directed and undirected, with attributes and weights) — for testing network importers, layout tools, and graph converters.
Documented properties for this file: seed 51200 · 5 nodes · 5 edges · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
SBOM, lockfile, provenance, and advisory fixtures describe the same fabricated component tree across formats, so a converter or scanner can be diffed against a known answer. Every package name, version, hash, and advisory ID is invented — never treat a finding here as real.
Related files
- txtcargo tree OutputCargo's tree output, which writes versions with a leading `v` and marks already-shown subtrees with `(*)` — close enough to npm's tree to fool a parser, different enough to break one. Every package, version, hash and licence is fictional — the tree describes nothing real.

- graphmlDependency Graph (GraphML)The dependency graph in GraphML, with typed attribute keys for node version, licence and depth and for edge range — the interchange format graph databases and analysis tools import. Every package, version, hash and licence is fictional — the tree describes nothing real.

- mmdDependency Graph (Mermaid Flowchart)The dependency graph as Mermaid, for embedding in Markdown documentation — labelled edges carry the declared range and a classDef highlights the two diamond joins. Every package, version, hash and licence is fictional — the tree describes nothing real.

- jsonDependency Graph With Diamond Dependencies (JSON)An explicit node/edge dependency graph with in-degree, out-degree and depth precomputed, plus a diamonds array naming the two shared nodes and their parents — the reference answer for any graph builder run against the SBOMs and lockfiles here. Every package, version, hash and licence is fictional — the tree describes nothing real.

- dotDependency Graph With Diamonds (Graphviz DOT)The same diamond graph as Graphviz DOT, with edge labels carrying the declared semver range and the two diamond joins filled — renderable to SVG and diffable against the JSON twin. Every package, version, hash and licence is fictional — the tree describes nothing real.

- txtgo mod graph Edge List`go mod graph` output: a flat edge list, one `parent@version child@version` pair per line with no indentation at all — the simplest graph serialisation in this category and the easiest to diff. Every package, version, hash and licence is fictional — the tree describes nothing real.

Generated by generation/supply_chain.py. Free for any use, no attribution required — license.