osage plain/plain-ext parity dashboard
Differential survey of @knowvah/dot-engine osage plain/plain-ext output vs the native dot -K osage oracle (test/corpus/plain-walk.ts), semantic comparison per docs/conformance.md (±0.01 deterministic tolerance, ±0.5 for the iterative engines). Regenerate: npx tsx test/corpus/plain-walk.ts osage && npx tsx test/corpus/parity-report.ts.
Summary
- Surveyed: 762
- pass: 747 (98.0%) · diverged (tracked): 0 · accepted (documented, won't-fix): 14
- errors (oracle/port/timeout, excluded from scoring): 1
Diverged (0)
(none)
Accepted (14) — documented, not chased
| id | #diffs | firstDiff | reason |
|---|---|---|---|
1652 | 2 | [edge] Op_1091->Op_1092#0/lx: port=31.483 native=32.39; [edge] Op_2105->Op_2106#0/ly: port=3.4964 native=3.263 | layout geometry inherited from the osage xdot engine track: id already diverged there with an accepted mechanism (engine acceptance registry / decision journal); plain re-emits the same layout. Journal 2026-07-24. |
1855 | 44 | [edge] 16->1#0/point[0].x: port=5.6781 native=5.5283; [edge] 16->1#0/point[0].y: port=3.8014 native=3.6839; [edge] 16->1#0/point[1].x: port=5.4247 native=5.1143; [edge] 16->1#0/point[1].y: port=4.0731 native=3.8148; [edge] 16->1#0/point[2].x: port=4.9612 native=4.4104 | layout geometry inherited from the osage xdot engine track: id already diverged there with an accepted mechanism (engine acceptance registry / decision journal); plain re-emits the same layout. Journal 2026-07-24. |
graphs-b34 | 5 | [node] 7/label: port=montañas native=solid; [node] 7/style: port=solid native=box; [node] 7/shape: port=box native=black; [node] 7/color: port=black native=lightgrey; [node] 7/fillcolor: port=lightgrey native= | oracle bug (A4): canon() use-after-free — output.c:103-108 agstrfree()s the agstrdup-ed refstr before the caller prints it, and _agstrcanon returns that pointer whenever no quoting is needed. Labels whose text is not otherwise pooled (latin1/entity-converted, differs from the raw attr bytes) hit refcnt 0 and are freed; the intervening printdouble allocations reuse the block, so native prints garbage/empty. Port prints the correct converted text. Journal 2026-07-24. |
graphs-b56 | 18 | [node] Schluesseloel/label: port=Schluesselöl native=solid; [node] Schluesseloel/style: port=solid native=plaintext; [node] Schluesseloel/shape: port=plaintext native=black; [node] Schluesseloel/fillcolor: port=black native=; [node] Schluesseltraeger/label: port=Schlueßelträger native=solid | oracle bug (A4): canon() use-after-free — output.c:103-108 agstrfree()s the agstrdup-ed refstr before the caller prints it, and _agstrcanon returns that pointer whenever no quoting is needed. Labels whose text is not otherwise pooled (latin1/entity-converted, differs from the raw attr bytes) hit refcnt 0 and are freed; the intervening printdouble allocations reuse the block, so native prints garbage/empty. Port prints the correct converted text. Journal 2026-07-24. |
graphs-b60 | 5 | [node] 0/label: port=XXXrôôôôôôôôôôôôôôleXXX native=solid; [node] 0/style: port=solid native=ellipse; [node] 0/shape: port=ellipse native=black; [node] 0/color: port=black native=lightgrey; [node] 0/fillcolor: port=lightgrey native= | oracle bug (A4): canon() use-after-free — output.c:103-108 agstrfree()s the agstrdup-ed refstr before the caller prints it, and _agstrcanon returns that pointer whenever no quoting is needed. Labels whose text is not otherwise pooled (latin1/entity-converted, differs from the raw attr bytes) hit refcnt 0 and are freed; the intervening printdouble allocations reuse the block, so native prints garbage/empty. Port prints the correct converted text. Journal 2026-07-24. |
graphs-Latin1 | 5 | [node] a/label: port=áâãäåæçèéêëìíîïðñòóôõöøùúûü native=solid; [node] a/style: port=solid native=ellipse; [node] a/shape: port=ellipse native=black; [node] a/color: port=black native=lightgrey; [node] a/fillcolor: port=lightgrey native= | oracle bug (A4): canon() use-after-free — output.c:103-108 agstrfree()s the agstrdup-ed refstr before the caller prints it, and _agstrcanon returns that pointer whenever no quoting is needed. Labels whose text is not otherwise pooled (latin1/entity-converted, differs from the raw attr bytes) hit refcnt 0 and are freed; the intervening printdouble allocations reuse the block, so native prints garbage/empty. Port prints the correct converted text. Journal 2026-07-24. |
graphs-polypoly | 4 | [node] 9000/x: port=43.29 native=2.8872; [node] 9000/y: port=2.0521 native=1.1077; [node] 9004/x: port=2.8872 native=43.29; [node] 9004/y: port=1.1077 native=2.0521 | layout geometry inherited from the osage xdot engine track: id already diverged there with an accepted mechanism (engine acceptance registry / decision journal); plain re-emits the same layout. Journal 2026-07-24. |
graphs-Symbol | 10 | [node] greek/label: port=αβγδεζηθικλμνξοπρςστυφχψωϒϖ native=solid; [node] greek/style: port=solid native=ellipse; [node] greek/shape: port=ellipse native=black; [node] greek/color: port=black native=lightgrey; [node] greek/fillcolor: port=lightgrey native= | oracle bug (A4): canon() use-after-free — output.c:103-108 agstrfree()s the agstrdup-ed refstr before the caller prints it, and _agstrcanon returns that pointer whenever no quoting is needed. Labels whose text is not otherwise pooled (latin1/entity-converted, differs from the raw attr bytes) hit refcnt 0 and are freed; the intervening printdouble allocations reuse the block, so native prints garbage/empty. Port prints the correct converted text. Journal 2026-07-24. |
linux.i386-b29 | 1 | [edge] Node14663->Node14649#0/lx: port=12.198 native=11.681 | layout geometry inherited from the osage xdot engine track: id already diverged there with an accepted mechanism (engine acceptance registry / decision journal); plain re-emits the same layout. Journal 2026-07-24. |
share-b29 | 1 | [edge] Node14663->Node14649#0/lx: port=11.681 native=12.198 | layout geometry inherited from the osage xdot engine track: id already diverged there with an accepted mechanism (engine acceptance registry / decision journal); plain re-emits the same layout. Journal 2026-07-24. |
share-Latin1 | 5 | [node] a/label: port=áâãäåæçèéêëìíîïðñòóôõöøùúûü native=solid; [node] a/style: port=solid native=ellipse; [node] a/shape: port=ellipse native=black; [node] a/color: port=black native=lightgrey; [node] a/fillcolor: port=lightgrey native= | oracle bug (A4): canon() use-after-free — output.c:103-108 agstrfree()s the agstrdup-ed refstr before the caller prints it, and _agstrcanon returns that pointer whenever no quoting is needed. Labels whose text is not otherwise pooled (latin1/entity-converted, differs from the raw attr bytes) hit refcnt 0 and are freed; the intervening printdouble allocations reuse the block, so native prints garbage/empty. Port prints the correct converted text. Journal 2026-07-24. |
share-polypoly | 2 | [node] 9002/x: port=2.805 native=8.2217; [node] 9004/x: port=8.2252 native=2.7947 | layout geometry inherited from the osage xdot engine track: id already diverged there with an accepted mechanism (engine acceptance registry / decision journal); plain re-emits the same layout. Journal 2026-07-24. |
windows-Latin1 | 5 | [node] a/label: port=áâãäåæçèéêëìíîïðñòóôõöøùúûü native=solid; [node] a/style: port=solid native=ellipse; [node] a/shape: port=ellipse native=black; [node] a/color: port=black native=lightgrey; [node] a/fillcolor: port=lightgrey native= | oracle bug (A4): canon() use-after-free — output.c:103-108 agstrfree()s the agstrdup-ed refstr before the caller prints it, and _agstrcanon returns that pointer whenever no quoting is needed. Labels whose text is not otherwise pooled (latin1/entity-converted, differs from the raw attr bytes) hit refcnt 0 and are freed; the intervening printdouble allocations reuse the block, so native prints garbage/empty. Port prints the correct converted text. Journal 2026-07-24. |
windows-polypoly | 2 | [node] 9002/x: port=2.8189 native=8.2633; [node] 9004/x: port=8.2669 native=2.8086 | layout geometry inherited from the osage xdot engine track: id already diverged there with an accepted mechanism (engine acceptance registry / decision journal); plain re-emits the same layout. Journal 2026-07-24. |
Errors and timeouts (1)
| id | message |
|---|---|
2108 |
Passing ids (747) are omitted for brevity — the full roster is in plain-parity-osage.json.