Skip to content

Parity overview

Cross-engine conformance summary of @knowvah/dot-engine vs the native Graphviz oracle, one row per track (engine × comparison surface). A report, not a gate. Regenerate: npx tsx test/corpus/parity-report.ts (after refreshing the per-track surveys it reads).

conformant / pass is the ±0.01 deterministic-tolerance verdict per docs/conformance.md — numeric payloads agree within tolerance and non-numeric content is exactly equal — not byte equality. errors = oracle-error + port-error/errored + timeout (excluded from scoring). accepted = documented won't-fix deltas (0 for engines without an acceptance list).

Tracks

tracksurveyedconformant / passdivergedacceptederrorspass %
dot (SVG)7887620161096.7%
dot (xdot)761761000100.0%
dot (json)76175902099.7%
circo (xdot)76275204698.7%
twopi (xdot)762746014297.9%
osage (xdot)76275507099.1%
patchwork (xdot)762762000100.0%
dot (imagemap)76175500699.2%
dot (plain)76275407199.0%
circo (plain)7627310102195.9%
twopi (plain)7627310211095.9%
osage (plain)762747014198.0%
patchwork (plain)76275507099.1%
circo (json)76275006698.4%
twopi (json)762744016297.6%
osage (json)762750012098.4%
patchwork (json)76276002099.7%
circo (imagemap)76275600699.2%
twopi (imagemap)76276000299.7%
osage (imagemap)76276101099.9%
patchwork (imagemap)762762000100.0%

Iterative engines (±0.5 characterization)

neato/fdp/sfdp are iterative force-directed solvers whose results depend on floating-point accumulation (FMA, Math.pow, libm) that JavaScript cannot reproduce bit-for-bit — accepted class A1. These rows are compared at a ±0.5pt tolerance to characterize behavior, not to gate byte-fidelity; do not read their pass % against the deterministic bar above.

tracksurveyedconformant / passdivergedacceptederrorspass %
neato (xdot)762689071290.4%
fdp (xdot)7626090148579.9%
sfdp (xdot)7625270232369.2%
neato (plain)76275307298.8%
fdp (plain)76275007598.4%
sfdp (plain)76275307298.8%
neato (json)762687073290.2%
fdp (json)7626070151479.7%
sfdp (json)7625250235268.9%
neato (imagemap)76275406299.0%
fdp (imagemap)762739018597.0%
sfdp (imagemap)762733027296.2%

Dot output formats (SVG · xdot · json)

How faithfully the port renders each input across all three deterministic dot outputs, joined by id. xdot and json survey the SVG-conformant roster, so this is the intersection (761 inputs); an input is conformant in all three only when every format agrees with the oracle within tolerance.

status across SVG · xdot · jsoncount%
conformant in all three75999.7%
accepted (won't-fix) in ≥1, diverged in none20.3%
diverged / errored in ≥100.0%

Per-format status of the ids not conformant in all three:

idSVGxdotjson
share-Latin1conformantconformantaccepted
windows-Latin1conformantconformantaccepted

Goldens

211 pinned golden inputs (test/golden/manifest.json), by engine:

enginegoldens
dot160
neato8
fdp7
sfdp6
circo8
twopi8
osage7
patchwork7

The golden xdot suite gates these in CI (test/golden/xdot-suite.test.ts).

Per-track dashboards