osage json parity dashboard
Differential survey of @knowvah/dot-engine osage json output vs the native dot -K osage 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 osage && npx tsx test/corpus/parity-report.ts.
Summary
- Surveyed: 762
- pass: 750 (98.4%) · diverged (tracked): 0 · accepted (documented, won't-fix): 12
- errors (oracle/port/timeout, excluded from scoring): 0
Diverged (0)
(none)
Accepted (12) — documented, not chased
| id | #diffs | firstDiff | reason |
|---|---|---|---|
1221 | 1 | [parse]/oracle | oracle bug (A4): native -Kosage -Tjson emits bare inf/nan tokens (invalid JSON) for degenerate cluster draw coordinates; the document is unparseable so no comparison is possible. Port emits finite, valid JSON. Journal 2026-07-24. |
1332 | 1 | [parse]/oracle | oracle bug (A4): native -Kosage -Tjson emits bare inf/nan tokens (invalid JSON) for degenerate cluster draw coordinates; the document is unparseable so no comparison is possible. Port emits finite, valid JSON. Journal 2026-07-24. |
1652 | 4 | edge:Op_1091->Op_1092#0/_ldraw_/op[2].T[0] | layout drift inherited from the osage 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. |
1855 | 110 | edge:16->1#0/_draw_/op[1].b[0] | layout drift inherited from the osage 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. |
2721 | 1 | [parse]/oracle | oracle bug (A4): native -Kosage -Tjson emits bare inf/nan tokens (invalid JSON) for degenerate cluster draw coordinates; the document is unparseable so no comparison is possible. Port emits finite, valid JSON. Journal 2026-07-24. |
graphs-polypoly | 24 | node:9000/_draw_/op[1].p[0] | layout drift inherited from the osage 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-b29 | 3 | edge:Node14663->Node14649#0/_ldraw_/op[2].T[0] | layout drift inherited from the osage 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 | 3 | edge:Node14663->Node14649#0/_ldraw_/op[2].T[0] | layout drift inherited from the osage 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-polypoly | 12 | node:9002/_draw_/op[1].p[0] | layout drift inherited from the osage 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-polypoly | 12 | node:9002/_draw_/op[1].p[0] | layout drift inherited from the osage 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 (0)
(none)
Passing ids (750) are omitted for brevity — the full roster is in json-parity-osage.json.