Repository navigation
feat(elk-server): rebuilt from its recovered source on ELK 0.10.0, elkjs pinned to match - #110
Merged
Merged
Conversation
…kjs pinned to match The Java ELK server bundled ELK 0.8.1 while elkjs was 0.9.3, and the two laid some graphs out differently: a graph moved its nodes as it grew past the size where layouts go to the server. - Source: only the jar had ever been committed. Its six classes are recovered with CFR into `elk-server/` (Maven, `mvn package`), logic, wire format and log lines unchanged: the gzip-framed socket mode (`GZ10`, a 4-byte length, gzip body, both ways) included. Built on ELK 0.8.1, the rebuild lays out six real documents identically to the 0.2.0 jar through the platform's framed client. - ELK: no ELK release matches elkjs 0.9.3 (0.9.1 and 0.10.0 each differ on some graphs), but ELK 0.10.0 and elkjs 0.10.0 lay every graph tried out alike, node for node and route for route. The jar is built on ELK 0.10.0 (`elk-server-0.3.0-all.jar`) and elkjs is pinned to exactly 0.10.0. `SwitchingElk` takes elkjs 0.10's generic `layout` signature. - `test/elk-server-parity.test.ts` lays out the graphs the platform builds for two real documents (a grouped specification document and an HDL module, the two that told the engines apart) on both engines and requires them to match; it fails against the old jar. - ELK 0.10 is built for Java 17: the jar tests skip below it (as the process would pick its Java), and the start failure says Java 17. Products must copy and name `elk-server-0.3.0-all.jar`. Claude-Session: https://claude.ai/code/session_01E8WfqKknDNN6xpNVcJL5K8
The server is under the Eclipse Public License 2.0 only, like ELK and the server it was recovered from, not the GPL secondary licence the rest of the repository is also offered under. elk-server/LICENSE holds the text, every source file carries SPDX-License-Identifier: EPL-2.0, the pom declares it, and the build puts the licence in the jar at META-INF/elk-server/LICENSE (Bundle-License: EPL-2.0 in the manifest), beside the bundled libraries' own notices. The rebuilt jar lays out the same; the jar README's checksum moves. Claude-Session: https://claude.ai/code/session_01E8WfqKknDNN6xpNVcJL5K8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Java ELK server bundled ELK 0.8.1 while elkjs was 0.9.3, and the two engines laid some graphs out differently. A diagram could therefore reshuffle its nodes as it grew past the size where layouts move to the server (tracker m1-19).
The source. Only the jar had ever been committed: here, in mlir-viewer, and in ascpp-graph-sprotty, where
af9cc65added the gzip framing.io.typefox.elkserver) are recovered with CFR 0.152 intoelk-server/, a Maven project (mvn package).GZ10, a 4-byte big-endian length, then a gzip body, in both directions.The licence. The server stays under the Eclipse Public License 2.0 only, like ELK, and not the GPL secondary licence the rest of the repository is also offered under.
elk-server/LICENSEholds the text, every source file carriesSPDX-License-Identifier: EPL-2.0, the pom declares the licence, and the build puts it in the jar atMETA-INF/elk-server/LICENSE, next to the bundled libraries' own notices.The ELK version. No ELK release matches elkjs 0.9.3:
So the jar is built on ELK 0.10.0 (
elk-server-0.3.0-all.jar), and elkjs is pinned to exactly0.10.0, since a later patch release isn't known to match.SwitchingElktakes elkjs 0.10's genericlayoutsignature.The guard.
test/elk-server-parity.test.tslays out the graphs the platform builds for two real documents on both engines and requires them to match. The two are a grouped specification document and an HDL module, the two that told the engines apart; they are fixtures undertest/fixtures/elk-parity/, with outline, panel text and paths trimmed. The test fails against the old jar, so raising elkjs without rebuilding the jar on the same ELK fails CI.What changes for users and products
trap.mdlays out differently but cleanly.elk-server-0.3.0-all.jar. PRs for ndf-ide, sv-ide and vhdl-ide follow and should merge after this one.Gates.
npm run buildandcheck:neutralitypass, and every test passes except the variant wizard's 5-second timeouts, which time out the same way on unchangedmainon this machine (load).https://claude.ai/code/session_01E8WfqKknDNN6xpNVcJL5K8