Skip to content

sfdp parity dashboard

Differential survey of @knowvah/dot-engine 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: 910 (generated 2026-07-31T00:23:37.832Z)
  • pass: 619 (68.0%) · diverged (tracked): 0 · accepted (documented, won't-fix): 5 · accepted (A1-drift class): 285
  • oracle-error: 0 · port-error: 0 · timeout: 1

Accepted deltas (5) — 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.

id#diffsclassboundref
187917606A1up to 7.6kpt (whole-layout basin)plans/decision-journal.md 2026-07-24 T5: sfdp chaos regime, same family as fdp 1879
2619_1100A10.7-1.3pt on 6 nodesplans/decision-journal.md 2026-07-24 T5: sfdp spring drift regime
255654A6degenerate NaN layout: repulsiveforce=100 drives the spring-electrical solver to NaN in BOTH engines (the native oracle emits all-nan positions). Residual 54 diffs are NaN-garbage serialization only - C rounds NaN->int (bb -4.295e9 vs port 0) and suppresses NaN-spline edge draws (port emits them). No real layout exists on either side. The armPow throw + bezierClip NaN-hang that previously blocked rendering are fixed (C-faithful, NaN-only).known-divergences.md#a6b-degenerate-nan-layout
241_020A9flat-edge ptCount 14 vs 8 (3->2); same CDT/hypot tie as twopi/circo 241_0 (corridor succeeds N-pt vs plain fallback); findMaxDev hypot ULPknown-divergences.md#a9-sfdp-fp-ties
42200A9CDT cocircular incircle tie: opCount 5 vs 9 (0->3), ptCount 32 vs 26 (3->7); multispline corridor flip. fma+robust-incircle applied; residual is V8-vs-Apple-libm sin/hypot 1-ULP in the predicate inputknown-divergences.md#a9-sfdp-fp-ties

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 (0)

(none)

Errors and timeouts (1)

idstatusmessage
2222timeoutran 3600016ms, exceeded 3600000ms budget

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