Skip to content

sfdp parity dashboard

Differential survey of graphviz-ts sfdp xdot output vs the native dot -K sfdp -Txdot oracle over the dot-track SVG-conformant corpus set (semantic draw-op comparison at ±0.01 — see test/golden/compare-xdot.ts; per docs/conformance.md, not byte equality). Regenerate: npx tsx test/corpus/engine-walk.ts sfdp && npx tsx test/corpus/parity-report.ts.

Summary

  • Surveyed: 762 (generated 2026-07-17T15:52:41.936Z)
  • pass: 518 (68.0%) · diverged (tracked): 52 · accepted (documented, won't-fix): 0 · accepted (A1-drift class): 184
  • oracle-error: 7 · port-error: 1 · timeout: 0

Accepted deltas (0) — documented, not chased

Deliberate, root-caused differences we have chosen not to make conformant. Source of truth: test/corpus/accepted-divergences-engines.json; rationale in Known divergences. Excluded from the diverged table below.

(none in this corpus)

Accepted class: A1-drift — computed, not enumerated

Membership is computed at report time from the injection-attribution harness output (D2) — every diverged id whose native pre-routing position exonerates it (verdict: drift-exonerated) is subtracted from the Diverged table below and counted in Summary; an id that starts passing outright leaves the class silently on the next report regen.

Diverged (52)

idsize#diffsfirstDiff
2475_2641284305599[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 14372 vs 14375.01
1652240391114202[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 955.45 vs 958.43
2095_110508355782[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 3321.65 vs 3295.8
linux.x86-root_circo31316835482[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1096.38 vs 1105.16
linux.x86-root_twopi28790735482[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1096.38 vs 1105.16
247073435820258[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 9388.23 vs 7898.3
linux.i386-b2913675312108[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1523.56 vs 1473.78
graphs-b296293112087[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1468.26 vs 1420.3
share-b106923018679[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 2090.2 vs 1783.03
graphs-b106489338626[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 2089.31 vs 1781.01
linux.i386-b106920058619[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 2089.88 vs 1782.23
209548656014[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 509.02 vs 508.15
windows-pgram110013095[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1020 vs 981
graphs-pgram26143070[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1009.6 vs 937.6
share-pgram109423047[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1002 vs 962
linux.i386-crazy104331708[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1204.87 vs 1207.88
windows-crazy104331697[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1206.55 vs 1209.57
share-crazy104331690[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1204.02 vs 1207.03
graphs-crazy55561657[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1048.62 vs 1051.14
graphs-lsunix114561191[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 533.89 vs 535.59
graphs-lsunix214561191[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 533.89 vs 535.59
graphs-lsunix314651191[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 533.89 vs 535.59
graphs-unix14331191[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 533.89 vs 535.59
share-unix66031191[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 533.89 vs 535.59
windows-unix66031191[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 533.89 vs 535.59
nshare-arrows_dot72351136[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 474.65 vs 486.24
graphs-trapeziumlr1484971[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 876.66 vs 892.52
share-trapeziumlr7233971[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 946.42 vs 964.29
windows-trapeziumlr7229971[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 946.12 vs 963.98
24763653687[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1753.09 vs 1749.03
graphs-size1706677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
graphs-unix21719677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
graphs-unix2k1719677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
graphs-weight1720677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
share-unix27421677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
share-unix2k7421677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
windows-unix27421677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
windows-unix2k7421677edge:1 BSD->2 BSD#0 _draw_ edge:1 BSD->2 BSD#0/_draw_/op[1].unfilled_bezier[1]: 534.77 vs 535.28
18551335665[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 592.32 vs 595.62
14362599601[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 1833.4 vs 1973.4
linux.x86-rankdir_dot12792463edge:2.8 BSD->2.9 BSD#0 _draw_ edge:2.8 BSD->2.9 BSD#0/_draw_/op[1].unfilled_bezier[0]: 1844.07 vs 1843.47
linux.x86-rankdir_dot112673463edge:2.8 BSD->2.9 BSD#0 _draw_ edge:2.8 BSD->2.9 BSD#0/_draw_/op[1].unfilled_bezier[0]: 1844.07 vs 1843.47
linux.x86-rankdir_dot212815463edge:2.8 BSD->2.9 BSD#0 _draw_ edge:2.8 BSD->2.9 BSD#0/_draw_/op[1].unfilled_bezier[0]: 1844.07 vs 1843.47
nshare-rankdir_dot12803449edge:2.8 BSD->2.9 BSD#0 _draw_ edge:2.8 BSD->2.9 BSD#0/_draw_/op[1].unfilled_bezier[0]: 1897.17 vs 1896.56
nshare-rankdir_dot112675449edge:2.8 BSD->2.9 BSD#0 _draw_ edge:2.8 BSD->2.9 BSD#0/_draw_/op[1].unfilled_bezier[0]: 1897.17 vs 1896.56
nshare-rankdir_dot212795449edge:2.8 BSD->2.9 BSD#0 _draw_ edge:2.8 BSD->2.9 BSD#0/_draw_/op[1].unfilled_bezier[0]: 1897.17 vs 1896.56
4211978200edge:0->3#0 _draw_ edge:0->3#0/_draw_[opCount]: 3 vs 6
2521_1106260edge:TL 1 event 2->TL 1 event 3#0 _draw_ edge:TL 1 event 2->TL 1 event 3#0/_draw_/op[1].unfilled_bezier[5]: 120.17 vs 120.76
21687057[graph] _draw_ [graph]/_draw_/op[2].filled_polygon[3]: 48.58 vs 42.27
241_057820edge:1->2#0 _draw_ edge:1->2#0/_draw_/op[1].unfilled_bezier[ptCount]: 8 vs 20
218439318edge:x21->x22#0 _draw_ edge:x21->x22#0/_draw_/op[1].unfilled_bezier[0]: 271.17 vs 240.17
263917018edge:i->j#0 _draw_ edge:i->j#0/_draw_/op[1].unfilled_bezier[1]: 84 vs 51

Errors and timeouts (8)

idstatusmessage
1879oracle-errorCommand failed: /Users/scottseely/git/graphviz/build/cmd/dot/dot -K sfdp -Txdot /Users/scottseely/git/graphviz/tests/1879.dot
2108oracle-errorspawnSync /Users/scottseely/git/graphviz/build/cmd/dot/dot ETIMEDOUT
2222oracle-errorspawnSync /Users/scottseely/git/graphviz/build/cmd/dot/dot ETIMEDOUT
2516oracle-errorCommand failed: /Users/scottseely/git/graphviz/build/cmd/dot/dot -K sfdp -Txdot /Users/scottseely/git/graphviz/tests/2516.dot
2619oracle-errorCommand failed: /Users/scottseely/git/graphviz/build/cmd/dot/dot -K sfdp -Txdot /Users/scottseely/git/graphviz/tests/2619.dot
2619_1oracle-errorCommand failed: /Users/scottseely/git/graphviz/build/cmd/dot/dot -K sfdp -Txdot /Users/scottseely/git/graphviz/tests/2619_1.dot
2619_2oracle-errorCommand failed: /Users/scottseely/git/graphviz/build/cmd/dot/dot -K sfdp -Txdot /Users/scottseely/git/graphviz/tests/2619_2.dot
2556port-errorarmPow: argument outside the ported normal-finite fast path

oracle errors: 7 native-crash (documented, excluded) / 0 timeout-flake (excluded this run, note to retry) Passing ids (518) are omitted for brevity — the full roster is in parity-sfdp.json.