Dagro is a native Go implementation of the D2-used default layout profile from
Dagre 3.1.1 and the subset of Graphlib 4.0.5 required by that profile.

Behavioral sources:

  @dagrejs/dagre 3.1.1
  https://github.com/dagrejs/dagre
  commit c3ed0802cd98de74c21cff1f754689ebbb0f8dae
  npm integrity sha512-zroZB1dFOFiGgv4Xcrn1DckB1o4aOikPqD2NDQPV0WM//CXGcS6xiD0rNkqHmw6FEg4tabt4nxPLwgCWT+Vb2A==

  @dagrejs/graphlib 4.0.5
  https://github.com/dagrejs/graphlib
  commit d3a0cf36f55ebd75f28b6acf7a436a54e1b990dc
  npm integrity sha512-7xrBTqIts3o+PMUZX97wSc+7TUbW+/rULzGNCTP6yooNVDXbzw4Wutg/H/xOutTB/c/k0YqOAavgPh4/Zk9PFA==

Both upstream projects are licensed under the MIT License and carry the
copyright notice "Copyright (c) 2012-2014 Chris Pettitt". The repository's
LICENSE preserves that notice and license text.

Dagro does not bundle the JavaScript packages. Official packages are installed
only for tests, and the patched compatibility oracle is reproducibly generated
from the pinned source commit during tests. Dagro intentionally covers the
D2-used surface rather than all features or APIs of either upstream project.

The JSON under testdata/differential/d2-corpus and the first three named
compatibility cases is derived from D2 E2E fixtures captured at commit
1a60d69e4df9b9557923e61bf10f9aa3aa5422e1 and retains D2's copyright and
Mozilla Public License 2.0 coverage. D2 is Copyright 2022 Terrastruct Inc. See
testdata/differential/D2-LICENSE.txt and D2-CORPUS-NOTICE.md. Their expected
JSON additionally contains generated layout geometry from the pinned MIT
oracle or documented compatibility patch. The synthetic fourth compatibility
case is generated under Dagro's MIT license.

Three narrow source-level compatibility corrections are represented by
testdata/differential/dagre-3.1.1-d2-compat.patch (SHA-256
d510c474e1f291c38c14c276f6bc498dbbd0dc7132e3b9694e31b47650356d19):
parallel-edge special handling requires exactly one reversed edge, all
opposite-direction partners for the same forward dummy are retained, and
zero-size rectangle intersections remain finite. The generated test-only
oracle has SHA-256
8e34c25ed53dbccca2fa206780b0b46974b285c74e0cd7b34d0d1fafa5506cab.
Dagro also collision-checks generated reversed-edge names to preserve
caller-owned named multiedges.
