Skip to content

xdot parity dashboard

Differential survey of graphviz-ts render(g, 'xdot') vs the native dot -Txdot oracle over the 759 SVG-conformant corpus items, sorted by input size. Semantic comparison (draw-op streams at ±0.01, colors/fonts canonicalized — see test/golden/compare-xdot.ts). Regenerate: npx tsx test/corpus/xdot-walk.ts --survey && npx tsx test/corpus/xdot-dashboard.ts.

Summary

  • Oracle: dot 15.1.0 · corpus: ~/git/graphviz/tests
  • Walked (conformant SVG set): 761
  • xdot-conformant: 761 (100.0%)
  • diverged (tracked, will-fix): 0 · accepted (documented, won't-fix): 0
  • port-error: 0 · timeout: 0 · oracle-error: 0 (excluded from scoring)

xdot-conformant (761)

Port xdot is conformant with the oracle: every draw-op stream matches op-for-op with numeric payloads within ±0.01 and canonicalized colors/fonts/text equal.

Conformant ids (761) are omitted for brevity — the full roster is in xdot-parity.json.

Tracked diverged (0) — worst-first

idsizemaxΔ#diffsfirstDiff

Diverged buckets — by (object · attr · shape)

(none)

Accepted divergences (0) — documented, not chased

Irreducible C quirks (font-metric ULP, platform libm) recorded in test/corpus/accepted-divergences-xdot.json. Each is referenced in the mission decision journal with its mechanism.

idopClassdeltarationale
2108cluster:bb / edge:pos [numeric]10fp-contract at a %.5g 5-sig-fig rounding boundary. The SVG cluster polygons match native EXACTLY (e.g. cluster_SITE_47 = 8,-774611 8,-838185 in both), and the root SVG height is identical (870643). The xdot bb/pos are %.5g-formatted; a sub-ULP layout FP difference tips a value that lands exactly on a 5-sig-fig boundary (838185) to round 838190 (native) vs 838180 (port). Not layout, not emission logic - irreducible float rounding. A8 class.
2475_2cluster:bb [numeric]10Same %.5g-boundary fp-contract as 2108. SVG cluster polygons match native exactly; only the %.5g-truncated xdot bb attribute differs at the 5-sig-fig rounding boundary. Irreducible. A8 class.
2095_1edge:pos [numeric]0.1Two edge pos coords differ by one unit in the last %.5g place (7518.2 vs 7518.3). SVG matches; the divergence is a %.5g last-place rounding of a value on the boundary from a sub-ULP layout FP difference. Irreducible. A8 class. (Also perf-slow: surveys as timeout; renders these 2 fp diffs when given time.)
linux.i386-b29edge:pos (self-loop) [numeric]0.1Self-loop spline pos differs by one unit in the last %.5g place (1475.2 vs 1475.3). hypot/ULP class (Apple libm), matching the 2368/hub-fanin A3 findings - the self-loop control point is computed via hypot whose last bit differs from glibc, amplified by %.5g at the boundary. Irreducible. A3/A8 class.

port-error (0)

idpathmessage

timeout (0)

idpathmessage

oracle-error (0) — excluded from scoring

idpathmessage