neato json parity dashboard
Differential survey of @knowvah/dot-engine neato json output vs the native dot -K neato oracle (test/corpus/json-walk.ts), semantic comparison per docs/conformance.md (±0.01 deterministic tolerance, ±0.5 for the iterative engines). Regenerate: npx tsx test/corpus/json-walk.ts neato && npx tsx test/corpus/parity-report.ts.
Summary
- Surveyed: 762
- pass: 687 (90.2%) · diverged (tracked): 0 · accepted (documented, won't-fix): 73
- errors (oracle/port/timeout, excluded from scoring): 2
Diverged (0)
(none)
Accepted (73) — documented, not chased
| id | #diffs | firstDiff | reason |
|---|---|---|---|
1332 | 1049 | edge:c5381->c5382#0/_draw_/op[1].b[5] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
1436 | 385 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
1447 | 98 | edge:0x00400ba6->0x00400b68#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
1652 | 58 | edge:Op_10->Op_35#0/_ldraw_/op[2].T[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
1949 | 151 | [graph]/_draw_/op[2].P[4] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
1990 | 17 | edge:0⋯7 ❰A❱->0⋯1 'a'#0/_draw_/op[1].b[ptCount] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2095 | 7323 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2095_1 | 35525 | [graph]/_draw_/op[2].P[4] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2183 | 22 | edge:c->m#0/_draw_/op[2].b[5] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2193 | 1085 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2239 | 1862 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2242 | 658 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2343 | 2 | edge:node802->node6132#0/_draw_/op[2].b[7] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
241_0 | 13 | edge:1->6#0/_draw_/op[1].b[ptCount] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2475_2 | 283014 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
2619_2 | 8 | edge:I57->F7#0/_draw_/op[2].b[0] | A1 drift + degenerate-clip amplification (diagnosed 2026-07-24): all 6 node positions differ only 0.13-0.18pt (within the 0.5 iterative bar); the sole over-bar values are 4 x-coords of ONE sub-point-long stub spline (I57->F7 between overlapping nodes), where clipping a near-zero-length bezier amplifies the in-bar endpoint drift to 0.81pt. Spline shape matches modulo the clip start; no port stage implicated. |
2620 | 2 | edge:visualcron_skat_pere_archive_reciept_org->visualcron#0/_draw_/op[1].b[6] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-b15 | 8 | edge:FaceBack->JumpVertical#0/_draw_/op[1].b[4] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-b81 | 5348 | [graph]/_draw_/op[2].P[4] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-clust1 | 42 | cluster:cluster_c1/_draw_/op[1].p[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-grammar | 38 | edge:n10->n11#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-grdshapes | 439 | edge:n15->n16#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-Helvetica | 275 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-jcctree | 113 | edge:DEF2->ID2#0/_draw_/op[1].b[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-mode | 474 | edge:ccsfpr2_0_1t_99->359100#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-p | 2 | edge:sleep->swap#0/_draw_/op[1].b[7] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-sl_box | 2 | edge:node82->node86#0/_draw_/op[1].b[7] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-sl_box_dbl | 2 | edge:node82->node86#0/_draw_/op[1].b[7] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-sr_box | 2 | edge:node62->node63#0/_draw_/op[1].b[7] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-sr_box_dbl | 2 | edge:node62->node63#0/_draw_/op[1].b[7] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-Symbol | 296 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
graphs-url | 8 | cluster:cluster0/_draw_/op[2].P[4] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
linux.i386-b102 | 234 | edge:Node103->Node79#0/_draw_/op[2].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
linux.x86-arrows_dot | 118 | edge:Z->H#0/_draw_/op[1].b[ptCount] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
linux.x86-rankdir_dot1 | 32 | edge:4.1 BSD->8th Edition#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
linux.x86-rankdir_dot2 | 35 | edge:4.2 BSD->Ultrix-32#0/_draw_/op[1].b[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
linux.x86-root_circo | 31581 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
linux.x86-root_twopi | 32621 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
macosx-arrows_dot | 118 | edge:Z->H#0/_draw_/op[1].b[ptCount] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-arrows_dot | 118 | edge:Z->H#0/_draw_/op[1].b[ptCount] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-dotsplines_dot | 23 | edge:7th Edition->Ultrix-11#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-dotsplines_dot1 | 23 | edge:7th Edition->Ultrix-11#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-overlap_neato1 | 14 | edge:Almgren->vd#0/_draw_/op[1].b[4] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-rankdir_dot | 36 | edge:3 BSD->4 BSD#0/_draw_/op[1].b[5] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-rankdir_dot1 | 47 | edge:32V->3 BSD#0/_draw_/op[1].b[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-root_circo | 22549 | edge:1->189E#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-root_twopi | 32798 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
nshare-weight_dot | 36 | edge:7th Edition->UniPlus+#0/_draw_/op[1].b[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-b102 | 243 | edge:Node103->Node79#0/_draw_/op[2].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-b29 | 425 | edge:Node14650->Node14649#0/_ldraw_/op[2].T[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-clust1 | 43 | cluster:cluster_c1/_draw_/op[1].p[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-crazy | 61 | edge:7th Edition->8th Edition#0/_draw_/op[1].b[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-fig6 | 46 | edge:2->18#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-grammar | 79 | edge:n31->n32#0/_hdraw_/op[3].P[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-KW91 | 2 | edge:Act_3->Ext_2#0/_draw_/op[1].b[7] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-Latin1 | 1 | node:a/label | Input is Latin-1 with NO charset declaration, so the bytes are invalid UTF-8. Native dot's -Tjson then emits a MIXED-ENCODING document: attribute values (e.g. node label) are echoed as RAW Latin-1 bytes (0xe1 0xe2 ... unconverted), while the DRAWN label text (ldraw T op, via make_label) is UTF-8 (0xc3 0xa1 ...). No single decode reads both halves correctly: Latin-1 recovers the attribute but mojibakes the text, UTF-8 does the reverse (and the attribute bytes are not valid UTF-8). The port decodes the input once (utils.c latin1ToUTF8 fallback) and is internally consistent valid UTF-8 on BOTH surfaces, so it cannot reproduce the oracle's split encoding. A4 class: the oracle output is an encoding bug; the port declines to emit invalid/mixed-encoding JSON. The DECLARED charset=latin1 case (graphs-Latin1/b60) IS handled via the stoj double-encode fix; only the UNDECLARED-charset case is irreducible. |
share-newarrows | 56 | edge:Z->H#0/_draw_/op[1].b[ptCount] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-ngk10_4 | 75 | edge:14->18#0/_draw_/op[1].b[2] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-pgram | 2073 | edge:Parallelogram->A#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
share-trapeziumlr | 1818 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-b102 | 66 | edge:Node109->Node79#0/_draw_/op[2].b[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-b29 | 357 | edge:Node14650->Node14649#0/_ldraw_/op[2].T[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-clust1 | 43 | cluster:cluster_c1/_draw_/op[1].p[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-crazy | 79 | edge:7th Edition->8th Edition#0/_draw_/op[1].b[1] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-fig6 | 46 | edge:2->18#0/_draw_/op[1].b[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-Latin1 | 1 | node:a/label | Identical mechanism to share-Latin1: undeclared-charset Latin-1 input makes native -Tjson emit raw-Latin-1 attribute bytes alongside UTF-8 drawn text (mixed, invalid). The port's consistent-UTF-8 output cannot match both halves. A4 class. |
windows-newarrows | 56 | edge:Z->H#0/_draw_/op[1].b[ptCount] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-ngk10_4 | 75 | edge:14->18#0/_draw_/op[1].b[2] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-pgram | 2833 | [graph]/_draw_/op[2].P[4] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-shells | 14 | edge:Thompson->Mashey#0/_draw_/op[1].b[5] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-train11 | 2 | edge:st10->st0#0/_ldraw_/op[2].T[0] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-trapeziumlr | 1777 | [graph]/_draw_/op[2].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
windows-viewfile | 5 | edge:printf->write#0/_hdraw_/op[3].P[3] | layout drift inherited from the neato xdot engine track: id diverged there with the documented accepted mechanism (iterative drift / engine tail classes, engine registry + decision journal); json re-emits the same layout. Journal 2026-07-24. |
Errors and timeouts (2)
| id | message |
|---|---|
2108 | |
2222 | oracle exit null |
Passing ids (687) are omitted for brevity — the full roster is in json-parity-neato.json.