Skip to content
Novus Examples
dot740 B

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.

Preview — first 15 linesdot
// 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.

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