Skip to content

docs: record why the Gremlin ANTLR and Groovy versions are frozen - #5536

Merged
robfrank merged 1 commit into
mainfrom
chore/document-frozen-gremlin-deps
Jul 29, 2026
Merged

docs: record why the Gremlin ANTLR and Groovy versions are frozen#5536
robfrank merged 1 commit into
mainfrom
chore/document-frozen-gremlin-deps

Conversation

@robfrank

Copy link
Copy Markdown
Collaborator

What does this PR do?

Records, in the files a developer actually edits, why two Gremlin dependency versions are frozen. Also ignores the E2E harness test output.

Comments and .gitignore only. No behaviour change. No version is raised, no dependency added or removed.

  • gremlin/pom.xml — explains that groovy.version and antlr4.version are both dictated by TinkerPop, states which updates are still wanted, and points at Upgrade TinkerPop to unlock the ANTLR and Groovy versions frozen in gremlin/pom.xml #5535.
  • engine/pom.xml — records that its own antlr4.version is deliberately independent and free to track the latest, so the divergence from gremlin does not read as drift.
  • .gitignore — ignores playwright-report/, test-results/, blob-report/, and the two reports/ directories.

Motivation

The reasoning for these pins lived only in closed PR threads and a comment in .github/dependabot.yml, neither of which anyone editing gremlin/pom.xml would look at. Two Dependabot PRs were attempted and abandoned against these exact properties (#3235 ANTLR, open since January with 13 failing checks; #4969 Groovy, 6 failing checks) before the constraint was understood. Without a comment at the property itself, a third attempt is a matter of time.

The .gitignore gap is smaller but real: Playwright writes playwright-report/ and test-results/ on every local run and neither was ignored, so simply running the Studio E2E suite locally left untracked artifacts in a developer's tree. e2e-js/reports/ and e2e-studio/reports/ receive JUnit XML in CI and had the same gap.

Related issues

Refs #5535, the tracking issue for the TinkerPop upgrade that unlocks both frozen versions at once.

Context: #3235 and #4969 (both closed as structurally unmergeable), #5534 (the majors-only Groovy ignore rule), #5216 / #5217 (the shading arrangement that depends on the pinned ANTLR).

Additional Notes

The substance of the two pins, for reviewers:

ANTLR is module-local and the divergence is intentional.

Module Version Why
gremlin/pom.xml:45 4.9.1 gremlin-language 3.8.1 ships a parser generated by the ANTLR 4.9.1 tool. ANTLR 4.10 changed the serialized ATN format — the BASE_SERIALIZED_UUID field in 4.9.1's ATNDeserializer does not exist in 4.13.2 — so a 4.13 runtime cannot deserialize it.
engine/pom.xml:46 4.13.2 The engine's own grammar, already on the newest ANTLR, and should keep tracking.

The gremlin comment also records why ANTLR has no Dependabot ignore rule while Groovy does: ignore rules match dependency coordinates rather than modules, and 4.9.1 sits below the engine's 4.13.2, so any blocking range would silently freeze the engine too.

Groovy is pinned to the 4.0.x line because gremlin-groovy 3.8.1 is built against it (TinkerPop 3.8.1 declares groovy.version 4.0.25). ArcadeDB deliberately runs 4.0.32, ahead of TinkerPop, so 4.0.x patches are wanted and still tracked; only majors are ignored.

Verification run locally:

  • xmllint clean on both poms.
  • mvn -pl engine,gremlin validateBUILD SUCCESS.
  • Effective poms still resolve gremlin antlr4.version 4.9.1 / groovy.version 4.0.32 and engine antlr4.version 4.13.2, confirming the comments are inert.
  • Each new .gitignore rule verified against a real directory with git check-ignore; with all five present, git status reports only the three intended file modifications.
  • git ls-files confirms no currently tracked file falls under the new ignore rules, so nothing is silently dropped from version control.

Checklist

  • I have run the build using mvn clean packagenot run in full. The diff is XML comments and .gitignore; mvn -pl engine,gremlin validate passed and the effective property values are unchanged, which is the relevant evidence. CI covers the full build.
  • My unit tests cover both failure and success scenariosno unit tests added. There is no behaviour to test; the change is documentation and ignore rules.

The reasoning for these pins lived only in closed PR threads and the
Dependabot config, neither of which a developer editing gremlin/pom.xml
would look at. Two Dependabot PRs were attempted and abandoned against
these properties before the constraint was understood.

gremlin/pom.xml now records that both properties are dictated by TinkerPop:
groovy.version is held on the 4.0.x line because gremlin-groovy is built
against it, and antlr4.version is held at 4.9.1 because gremlin-language
ships a parser generated by the ANTLR 4.9.1 tool while ANTLR 4.10 changed
the serialized ATN format. It also states which updates are still wanted
(Groovy 4.0.x patches) and why ANTLR has no Dependabot ignore rule.

engine/pom.xml records that its own antlr4.version is deliberately
independent and free to track the latest, so the divergence from gremlin
does not read as drift.

Also ignores the E2E harness test output. Playwright writes
playwright-report/ and test-results/ on every local run and neither was
ignored, so a local run left untracked artifacts in the tree.

Comments only: mvn validate passes and the effective poms still resolve
antlr4.version 4.9.1 / groovy.version 4.0.32 for gremlin and
antlr4.version 4.13.2 for engine.

Refs #5535
@mergify

mergify Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@codacy-production

codacy-production Bot commented Jul 29, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity

Metric Results
Complexity 0

View in Codacy

🟢 Coverage ∅ diff coverage

Metric Results
Coverage variation Report missing for 89d44f31
Diff coverage diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (89d44f3) Report Missing Report Missing Report Missing
Head commit (7b3c711) 178704 121262 67.86%

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#5536) 0 0 ∅ (not applicable)

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

1 Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@github-actions

Copy link
Copy Markdown
Contributor

📜 License Compliance Check

✅ License check passed. See artifacts for full report.

License Summary (first 50 lines)

Lists of 425 third-party dependencies.
     (Public Domain) AOP alliance (aopalliance:aopalliance:1.0 - http://aopalliance.sourceforge.net)
     (Apache License 2.0) LZ4 Java Compression (at.yawk.lz4:lz4-java:1.11.1 - https://github.com/yawkat/lz4-java)
     (EPL-2.0) (LGPL-2.1-only) Logback Classic Module (ch.qos.logback:logback-classic:1.6.1 - http://logback.qos.ch/logback-classic)
     (EPL-2.0) (LGPL-2.1-only) Logback Core Module (ch.qos.logback:logback-core:1.6.1 - http://logback.qos.ch/logback-core)
     (Apache 2) ArcadeDB BOLT Protocol (com.arcadedb:arcadedb-bolt:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-bolt/)
     (Apache 2) ArcadeDB Console (com.arcadedb:arcadedb-console:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-console/)
     (Apache 2) ArcadeDB Engine (com.arcadedb:arcadedb-engine:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-engine/)
     (Apache 2) ArcadeDB GraphQL (com.arcadedb:arcadedb-graphql:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-graphql/)
     (Apache 2) ArcadeDB Gremlin (com.arcadedb:arcadedb-gremlin:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-gremlin/)
     (Apache 2) ArcadeDB gRPC Stubs (com.arcadedb:arcadedb-grpc:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-grpc/)
     (Apache 2) ArcadeDB gRPC Client (com.arcadedb:arcadedb-grpc-client:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-grpc-client/)
     (Apache 2) ArcadeDB gRpcW (com.arcadedb:arcadedb-grpcw:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-grpcw/)
     (Apache 2) ArcadeDB HA Raft (com.arcadedb:arcadedb-ha-raft:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-ha-raft/)
     (Apache 2) ArcadeDB Integration (com.arcadedb:arcadedb-integration:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-integration/)
     (Apache 2) ArcadeDB load tests (com.arcadedb:arcadedb-load-tests:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-load-tests/)
     (Apache 2) ArcadeDB Metrics (com.arcadedb:arcadedb-metrics:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-metrics/)
     (Apache 2) ArcadeDB MongoDB Wire Protocol (com.arcadedb:arcadedb-mongodbw:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-mongodbw/)
     (Apache 2) ArcadeDB Network (com.arcadedb:arcadedb-network:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-network/)
     (Apache 2) ArcadeDB PostgresW (com.arcadedb:arcadedb-postgresw:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-postgresw/)
     (Apache 2) ArcadeDB RedisW (com.arcadedb:arcadedb-redisw:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-redisw/)
     (Apache 2) ArcadeDB Server (com.arcadedb:arcadedb-server:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-server/)
     (Apache 2) ArcadeDB Studio (com.arcadedb:arcadedb-studio:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-studio/)
     (Apache 2) ArcadeDB Tracing (com.arcadedb:arcadedb-tracing:26.8.1-SNAPSHOT - https://arcadedata.com/arcadedb-tracing/)
     (The Apache Software License, Version 2.0) HPPC Collections (com.carrotsearch:hppc:0.7.1 - http://labs.carrotsearch.com/hppc.html/hppc)
     (Apache License 2.0) Metrics Core (com.codahale.metrics:metrics-core:3.0.2 - http://metrics.codahale.com/metrics-core/)
     (The Apache License, Version 2.0) com.conversantmedia:disruptor (com.conversantmedia:disruptor:1.2.21 - https://github.com/conversant/disruptor)
     (The Apache Software License, Version 2.0) Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.20 - https://github.com/FasterXML/jackson)
     (The Apache Software License, Version 2.0) Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.21 - https://github.com/FasterXML/jackson)
     (The Apache Software License, Version 2.0) Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.22 - https://github.com/FasterXML/jackson)
     (The Apache Software License, Version 2.0) Jackson-core (com.fasterxml.jackson.core:jackson-core:2.21.1 - https://github.com/FasterXML/jackson-core)
     (The Apache Software License, Version 2.0) Jackson-core (com.fasterxml.jackson.core:jackson-core:2.22.1 - https://github.com/FasterXML/jackson-core)
     (The Apache Software License, Version 2.0) jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.21.1 - https://github.com/FasterXML/jackson)
     (The Apache Software License, Version 2.0) jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.22.1 - https://github.com/FasterXML/jackson)
     (The Apache Software License, Version 2.0) Jackson-dataformat-YAML (com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.22.0 - https://github.com/FasterXML/jackson-dataformats-text)
     (The Apache Software License, Version 2.0) Jackson datatype: JSR310 (com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.22.0 - https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310)
     (The Apache Software License, Version 2.0) Caffeine cache (com.github.ben-manes.caffeine:caffeine:2.3.1 - https://github.com/ben-manes/caffeine)
     (The Apache Software License, Version 2.0) docker-java-api (com.github.docker-java:docker-java-api:3.7.1 - https://github.com/docker-java/docker-java)
     (The Apache Software License, Version 2.0) docker-java-transport (com.github.docker-java:docker-java-transport:3.7.1 - https://github.com/docker-java/docker-java)
     (The Apache Software License, Version 2.0) docker-java-transport-zerodep (com.github.docker-java:docker-java-transport-zerodep:3.7.1 - https://github.com/docker-java/docker-java)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) btf (com.github.java-json-tools:btf:1.3 - https://github.com/java-json-tools/btf)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) jackson-coreutils (com.github.java-json-tools:jackson-coreutils:2.0 - https://github.com/java-json-tools/jackson-coreutils)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) jackson-coreutils-equivalence (com.github.java-json-tools:jackson-coreutils-equivalence:1.0 - https://github.com/java-json-tools/jackson-coreutils)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) json-patch (com.github.java-json-tools:json-patch:1.13 - https://github.com/java-json-tools/json-patch)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) json-schema-core (com.github.java-json-tools:json-schema-core:1.2.14 - https://github.com/java-json-tools/json-schema-core)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) json-schema-validator (com.github.java-json-tools:json-schema-validator:2.2.14 - https://github.com/java-json-tools/json-schema-validator)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) msg-simple (com.github.java-json-tools:msg-simple:1.2 - https://github.com/java-json-tools/msg-simple)
     (Apache Software License, version 2.0) (Lesser General Public License, version 3 or greater) uri-template (com.github.java-json-tools:uri-template:0.10 - https://github.com/java-json-tools/uri-template)
     (Apache License 2.0) (GNU Lesser General Public License) javaparser-core (com.github.javaparser:javaparser-core:3.26.3 - https://github.com/javaparser/javaparser-core)

@claude

claude Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review

Docs and .gitignore only, no behaviour change. I verified every technical claim against the tree and the effective build, and it all holds up. This is exactly the kind of "explain the pin at the pin" documentation that prevents wasted Dependabot churn - approving in spirit.

What I checked

  • ANTLR / Groovy pins - the two gremlin/pom.xml comments match reality: antlr4-runtime is declared optional=true (gremlin/pom.xml:104) with the transitive-exclusion note at line 142, groovy.version 4.0.32 runs ahead of TinkerPop's 4.0.25, and the reasoning is consistent with the existing .github/dependabot.yml comment block (lines 22-41). The "no ANTLR ignore rule because coordinates aren't module-scoped and 4.9.1 < engine's 4.13.2" argument is sound.
  • engine vs gremlin divergence - engine/pom.xml:46 stays 4.13.2; the new comment correctly frames the split as intentional rather than drift, and cross-links back to gremlin/pom.xml and Upgrade TinkerPop to unlock the ANTLR and Groovy versions frozen in gremlin/pom.xml #5535. Good bidirectional breadcrumbs.
  • .gitignore - the paths line up with e2e-studio/playwright.config.ts: html reporter defaults to playwright-report/, the junit reporter writes reports/playwright-junit.xml, test-results/ is the default outputDir, and blob-report/ is the shard output. e2e-js/package.json sets outputDirectory: "reports". All five entries are directory-scoped (trailing /), and git ls-files confirms no currently tracked file falls under them, so nothing is silently dropped.

Minor, non-blocking

  1. e2e-studio JUnit XML is CI-only. The .gitignore comment says both E2E harnesses emit JUnit XML into reports/, but in playwright.config.ts the junit reporter only runs under process.env.CI; a local run emits only html (into playwright-report/). The ignore rule is still correct and worth having - just noting the comment slightly overstates the local case.
  2. Comment maintenance cost. These comments hard-code specific versions (4.9.1, 4.13.2, 4.0.25, 3.8.1) and issue numbers in three places (both poms + dependabot.yml). That is the right call for discoverability, but when Upgrade TinkerPop to unlock the ANTLR and Groovy versions frozen in gremlin/pom.xml #5535 lands and TinkerPop moves, all three sites need updating in lockstep or the divergence-is-intentional story inverts. A one-line pointer in Upgrade TinkerPop to unlock the ANTLR and Groovy versions frozen in gremlin/pom.xml #5535's checklist ("update the pin comments in gremlin/engine poms + dependabot.yml") would close that loop.

Convention check

Consistent with CLAUDE.md: no new dependency, no version change, no behaviour to test (the "no unit tests" checkbox is justified here). Nothing to flag on performance or security - the diff touches neither code path nor build resolution.

LGTM.

@robfrank
robfrank merged commit 5a06925 into main Jul 29, 2026
23 of 27 checks passed
@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.70%. Comparing base (6de851d) to head (7b3c711).
⚠️ Report is 28 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##               main    #5536      +/-   ##
============================================
+ Coverage     65.31%   65.70%   +0.39%     
- Complexity     1114     1117       +3     
============================================
  Files          1748     1748              
  Lines        146712   146712              
  Branches      31356    31356              
============================================
+ Hits          95827    96401     +574     
+ Misses        37933    37364     -569     
+ Partials      12952    12947       -5     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

robfrank added a commit that referenced this pull request Aug 14, 2026
@robfrank
robfrank deleted the chore/document-frozen-gremlin-deps branch August 26, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant