This is an automated email from the ASF dual-hosted git repository.

Cole-Greer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/master by this push:
     new 2542097fdb TinkerPop 4.0.0-beta.3 release
2542097fdb is described below

commit 2542097fdbe9bb0644177abe8dff5c2f33f440b2
Author: Cole Greer <[email protected]>
AuthorDate: Mon Jul 20 14:11:01 2026 -0700

    TinkerPop 4.0.0-beta.3 release
---
 .../scripts/extraction/tree-sitter.js              |  2 +-
 CHANGELOG.asciidoc                                 | 19 ++++++++---------
 bin/validate-distribution.sh                       |  2 +-
 docs/src/upgrade/release-4.x.x.asciidoc            |  2 +-
 docs/tinkeradoc-extension/pom.xml                  |  2 +-
 gql-gremlin/pom.xml                                |  2 +-
 gremlin-annotations/pom.xml                        |  2 +-
 gremlin-console/bin/gremlin.sh                     |  2 +-
 gremlin-console/pom.xml                            |  2 +-
 gremlin-core/pom.xml                               |  2 +-
 .../org/apache/tinkerpop/gremlin/util/Gremlin.java |  2 +-
 gremlin-dotnet/pom.xml                             |  2 +-
 .../Gremlin.Net.Template.csproj                    |  2 +-
 .../Gremlin.Net.Template.nuspec                    |  2 +-
 gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs    |  2 +-
 gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj  |  2 +-
 gremlin-dotnet/src/pom.xml                         |  2 +-
 gremlin-dotnet/test/pom.xml                        |  2 +-
 gremlin-driver/pom.xml                             |  2 +-
 gremlin-go/driver/user_agent.go                    |  2 +-
 gremlin-go/pom.xml                                 |  2 +-
 gremlin-groovy/pom.xml                             |  2 +-
 gremlin-js/gremlin-javascript/lib/utils.ts         |  2 +-
 gremlin-js/gremlin-javascript/package.json         |  2 +-
 gremlin-js/gremlin-javascript/pom.xml              |  2 +-
 gremlin-js/gremlin-mcp/package.json                |  6 +++---
 gremlin-js/gremlin-mcp/pom.xml                     |  2 +-
 gremlin-js/gremlin-mcp/src/constants.ts            |  2 +-
 gremlin-js/gremlint/package.json                   |  2 +-
 gremlin-js/gremlint/pom.xml                        |  2 +-
 gremlin-js/package-lock.json                       | 10 ++++-----
 gremlin-js/pom.xml                                 |  2 +-
 gremlin-language/pom.xml                           |  2 +-
 gremlin-python/pom.xml                             |  2 +-
 .../main/python/gremlin_python/driver/useragent.py |  2 +-
 gremlin-server/pom.xml                             |  2 +-
 gremlin-shaded/pom.xml                             |  2 +-
 gremlin-test/pom.xml                               |  2 +-
 gremlin-tools/gremlin-benchmark/pom.xml            |  2 +-
 gremlin-tools/gremlin-coverage/pom.xml             |  2 +-
 gremlin-tools/gremlin-socket-server/pom.xml        |  2 +-
 gremlin-tools/pom.xml                              |  2 +-
 gremlin-util/pom.xml                               |  2 +-
 hadoop-gremlin/pom.xml                             |  2 +-
 pom.xml                                            | 24 ++++++++++++++++++++--
 source-release.xml                                 |  5 +++++
 spark-gremlin/pom.xml                              |  2 +-
 tinkergraph-gremlin/pom.xml                        |  2 +-
 48 files changed, 87 insertions(+), 63 deletions(-)

diff --git a/.skills/tinker-review/scripts/extraction/tree-sitter.js 
b/.skills/tinker-review/scripts/extraction/tree-sitter.js
index 8d425cdee9..ba4dc9bd48 100644
--- a/.skills/tinker-review/scripts/extraction/tree-sitter.js
+++ b/.skills/tinker-review/scripts/extraction/tree-sitter.js
@@ -274,7 +274,7 @@ function normHash(node) {
     }
     for (let i = 0; i < n.childCount; i++) walk(n.child(i));
   })(node);
-  return sha256(tokens.join("�"));
+  return sha256(tokens.join("\0"));
 }
 
 function extractFunctionsFromTree(tree, filePath, language) {
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 3dbf8bf53c..23eafb89fa 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -22,8 +22,8 @@ under the License.
 
 
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlins-wildest-dreams.png[width=185]
 
-[[release-4-0-0]]
-=== TinkerPop 4.0.0 (Release Date: NOT OFFICIALLY RELEASED YET)
+[[release-4-0-0-beta-3]]
+=== TinkerPop 4.0.0-beta.3 (July 20, 2026)
 
 * Fixed `gremlin-python` `GremlinLang` equality (`__eq__`) which compared a 
traversal to itself, so traversals with different steps but equal parameters 
were incorrectly considered equal.
 * Removed the deprecated `gremlin-python` `DriverRemoteConnection.submitAsync` 
method in favor of `submit_async`.
@@ -36,14 +36,13 @@ 
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Bumped Groovy to 4.0.32, Hadoop to 3.4.3, Spark to 4.1.2 (Scala 2.13), and 
Netty to 4.2.7 to support Java 25.
 * Bumped `Microsoft.Extensions.Logging.Abstractions` and 
`Microsoft.Extensions.Logging.Console` to 10.0.9 for `gremlin-dotnet`.
 * Bumped TypeScript to 6.0 across the JavaScript modules; `gremlint` now 
compiles to ES2021 rather than ES5.
-* Standardized connection options across all GLVs (Java, Python, .NET, Go, 
JavaScript) per the TinkerPop 4.x GLV proposal; see the upgrade docs for the 
full per-driver table. *(breaking)*
-** Aligned option names across drivers: `maxConnections` (128), 
`connectTimeoutMillis` (5000), `readTimeoutMillis` (off), `idleTimeoutMillis` 
(180000), `keepAliveTimeMillis` (30000), `compression` (on/`deflate`), 
`batchSize` (64), `bulkResults` (false), `maxResponseHeaderBytes`, `proxy`, 
`ssl`, and `responseSerializer`. Timeouts use a millisecond-suffixed canonical 
name with an idiomatic duration companion (Java `Duration`, Go `time.Duration`, 
.NET `TimeSpan`, Python seconds); JavaScript [...]
-** Java: renamed 
`maxConnectionPoolSize`/`connectionSetupTimeoutMillis`/`idleConnectionTimeoutMillis`/`resultIterationBatchSize`/`serializer`
 and `RequestOptions.addG`->`traversalSource`; removed 
`maxResponseContentLength` (responses now stream); added `readTimeoutMillis`, 
`keepAliveTimeMillis`, `maxResponseHeaderBytes`, `proxy`, `url(String)`, 
`ssl(SslContext)`. *(breaking)*
-** Python: renamed `pool_size`->`max_connections` (8->128) and 
`ssl_options`->`ssl`; removed `headers` (use interceptors) and 
`max_content_length`; added the timeout, `compression`, `batch_size`, `proxy`, 
and `trust_env` options; requires `aiohttp>=3.11`. *(breaking)*
-** .NET: renamed 
`MaxConnectionsPerServer`/`ConnectionTimeout`/`IdleConnectionTimeout`/`KeepAliveInterval`/`EnableCompression`
 and `Auth.BasicAuth`/`Auth.SigV4Auth`->`Auth.Basic`/`Auth.Sigv4`; 
`KeepAliveTime` now uses a real TCP keep-alive socket option; added 
`ReadTimeout`, `MaxResponseHeaderBytes`, `Proxy`, `Ssl`, `BulkResults`. 
*(breaking)*
-** Go: renamed 
`MaximumConcurrentConnections`/`IdleConnectionTimeout`/`KeepAliveInterval`/`ConnectionTimeout`/`TlsConfig`/`RequestInterceptors`/`EnableCompression`;
 moved auth helpers into an `auth` sub-package 
(`auth.Basic`/`auth.SigV4`/`auth.SigV4WithCredentials`); added `ReadTimeout`, 
`MaxResponseHeaderBytes`, `Proxy`, `BatchSize`, `BulkResults`. *(breaking)*
-** JavaScript: adopted `undici` for the default dispatcher; renamed 
`reader`->`responseSerializer`; added `readTimeoutMillis`, 
`keepAliveTimeMillis`, `maxResponseHeaderBytes`, `proxy`, `compression`, 
`batchSize`, `bulkResults`, `logger`; removed `headers` (use interceptors) and 
`ca`/`cert`/`pfx`/`rejectUnauthorized`/`agent` (TLS via the Node/undici 
runtime); undici is swapped out in browser bundles. *(breaking)*
-** All drivers: compression now defaults on; `connectTimeout` lowered to 5s 
and applied to transport establishment; `readTimeout` is a streaming-safe 
idle-read timeout (off by default); `idleTimeout` reaps only pooled connections.
+* Standardized connection options across all GLVs (Java, Python, .NET, Go, 
JavaScript), aligning option names and defaults. *(breaking)*
+* Changed connection defaults across all GLV drivers: compression now defaults 
on, `connectTimeout` is 5s and applied to transport establishment.
+* Standardized `gremlin-driver` (Java) connection options, aligning the 
pool/timeout/serializer names, removing `maxResponseContentLength`, and adding 
`readTimeoutMillis`, `keepAliveTimeMillis`, `maxResponseHeaderBytes`, `proxy`, 
and `ssl(SslContext)`. *(breaking)*
+* Standardized `gremlin-python` connection options, renaming 
`pool_size`->`max_connections` and `ssl_options`->`ssl`, removing `headers` and 
`max_content_length`, and adding `compression`, `batch_size`, `proxy`, 
`trust_env`, and timeout options. *(breaking)*
+* Standardized `gremlin-dotnet` connection options, aligning the connection 
and `Auth.*` names, switching `KeepAliveTime` to a real TCP keep-alive socket 
option, and adding `ReadTimeout`, `MaxResponseHeaderBytes`, `Proxy`, `Ssl`, and 
`BulkResults`. *(breaking)*
+* Standardized `gremlin-go` connection options, aligning the connection and 
TLS names, moving auth helpers into an `auth` sub-package, and adding 
`ReadTimeout`, `MaxResponseHeaderBytes`, `Proxy`, `BatchSize`, and 
`BulkResults`. *(breaking)*
+* Standardized `gremlin-javascript` connection options, adopting `undici` as 
the default dispatcher, renaming `reader`->`responseSerializer`, removing 
`headers` and the Node TLS options 
(`ca`/`cert`/`pfx`/`rejectUnauthorized`/`agent`), and adding 
`readTimeoutMillis`, `keepAliveTimeMillis`, `proxy`, `compression`, 
`batchSize`, `bulkResults`, and `logger`. *(breaking)*
 * Changed all GLV drivers to always serialize requests as JSON 
(`application/json`). Request serialization is no longer configurable and the 
serializer options (now `responseSerializer`) control only response 
deserialization.
 * Fixed remote traversals in Java, Python, .NET, and JavaScript to avoid 
sending the traversal source alias as a GremlinLang parameter, and removed the 
unused GremlinLang traversal-source helpers.
 * Fixed `gremlin-javascript` `Client.submit()` so that an explicit 
`bulkResults: false` request option is forwarded to the server instead of being 
silently dropped.
diff --git a/bin/validate-distribution.sh b/bin/validate-distribution.sh
index e4afe5ff6a..77571c3001 100755
--- a/bin/validate-distribution.sh
+++ b/bin/validate-distribution.sh
@@ -141,7 +141,7 @@ cd ${DIR_NAME}
 echo -n "* checking source files ... "
 find . -type f | xargs -n1 -I {} file {} --mime | grep 'charset=binary' | cut 
-f1 -d: |
   grep -Pv 
'^\./docs/(static|(site/home))/(img|images|fonts)/((icons|logos|policy|resources|providers|community|use-cases|gremlin|download|social)/)?[^/]*\.(png|jpg|ico|pdf|eot|otf|woff|woff2|ttf)$'
 |
-  grep -Pv '^\./docs/gremlint/(src|public)/[^/]*\.(png|jpg|ico)$' |
+  grep -Pv '^\./docs/(gremlint|gremlator)/(src|public)/[^/]*\.(png|jpg|ico)$' |
   grep -Pv '^\./docs/original/(ai/)?[^/]*\.(png|jpg|ico|ai)$' |
   grep -Pv '^./gremlin-dotnet/src/images/[^/]*\.(png|ico)$' |
   grep -Pv '^./gremlin-dotnet/.*\.snk$' |
diff --git a/docs/src/upgrade/release-4.x.x.asciidoc 
b/docs/src/upgrade/release-4.x.x.asciidoc
index 5e2656ae74..2470a6cb3e 100644
--- a/docs/src/upgrade/release-4.x.x.asciidoc
+++ b/docs/src/upgrade/release-4.x.x.asciidoc
@@ -25,7 +25,7 @@ image::gremlins-wildest-dreams.png[width=185]
 
 == TinkerPop 4.0.0-beta.3
 
-*Release Date: NOT OFFICIALLY RELEASED YET*
+*Release Date: July 20, 2026*
 
 Please see the 
link:https://github.com/apache/tinkerpop/blob/4.0.0-beta.3/CHANGELOG.asciidoc#release-4-0-0-beta-3[changelog]
 for a
 complete list of all the modifications that are part of this release.
diff --git a/docs/tinkeradoc-extension/pom.xml 
b/docs/tinkeradoc-extension/pom.xml
index d095d8b994..3d0c61ea98 100644
--- a/docs/tinkeradoc-extension/pom.xml
+++ b/docs/tinkeradoc-extension/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>tinkeradoc-extension</artifactId>
diff --git a/gql-gremlin/pom.xml b/gql-gremlin/pom.xml
index e186256bd4..e69fb93d08 100644
--- a/gql-gremlin/pom.xml
+++ b/gql-gremlin/pom.xml
@@ -24,7 +24,7 @@ under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gql-gremlin</artifactId>
     <name>Apache TinkerPop :: GQL Gremlin</name>
diff --git a/gremlin-annotations/pom.xml b/gremlin-annotations/pom.xml
index 15214dbd24..fb7ad732eb 100644
--- a/gremlin-annotations/pom.xml
+++ b/gremlin-annotations/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <artifactId>tinkerpop</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
 
     <artifactId>gremlin-annotations</artifactId>
diff --git a/gremlin-console/bin/gremlin.sh b/gremlin-console/bin/gremlin.sh
index b8cb4ab153..36b8ec8140 120000
--- a/gremlin-console/bin/gremlin.sh
+++ b/gremlin-console/bin/gremlin.sh
@@ -1 +1 @@
-../target/apache-tinkerpop-gremlin-console-4.0.0-SNAPSHOT-standalone/bin/gremlin.sh
\ No newline at end of file
+../target/apache-tinkerpop-gremlin-console-4.0.0-beta.3-standalone/bin/gremlin.sh
\ No newline at end of file
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index 0c96d16aa7..5e4c7e6c4a 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <artifactId>tinkerpop</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-console</artifactId>
     <name>Apache TinkerPop :: Gremlin Console</name>
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index 7d547d0e5f..68be983f50 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -20,7 +20,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-core</artifactId>
     <name>Apache TinkerPop :: Gremlin Core</name>
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java
index a934468dc1..a6a6ec4666 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Gremlin.java
@@ -24,7 +24,7 @@ import java.io.IOException;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public final class Gremlin {
-    private final static String gremlinVersion = "4.0.0-SNAPSHOT"; // DO NOT 
MODIFY - Configured automatically by Maven Replacer Plugin
+    private final static String gremlinVersion = "4.0.0-beta.3"; // DO NOT 
MODIFY - Configured automatically by Maven Replacer Plugin
 
     private Gremlin() {
     }
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index e00f0f45cb..5046361ba6 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-dotnet</artifactId>
     <name>Apache TinkerPop :: Gremlin.Net</name>
diff --git 
a/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj 
b/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj
index ed6da63fa3..30fd969e1f 100644
--- a/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.csproj
@@ -29,7 +29,7 @@ limitations under the License.
     <ProjectReference Include="../Gremlin.Net/Gremlin.Net.csproj" />
 
     <!-- do not edit the version directly - maven updates it automatically -->
-    <PackageReference Include="Gremlin.Net" Version="4.0.0-SNAPSHOT" />
+    <PackageReference Include="Gremlin.Net" Version="4.0.0-beta.3" />
   </ItemGroup>
 
 </Project>
diff --git 
a/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.nuspec 
b/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.nuspec
index f4091066e2..a5753f66b3 100644
--- a/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.nuspec
+++ b/gremlin-dotnet/src/Gremlin.Net.Template/Gremlin.Net.Template.nuspec
@@ -5,7 +5,7 @@
         <title>Gremlin.Net Template</title>
 
         <!-- do not edit the version directly - maven updates it automatically 
-->
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
 
         <description>Gremlin.Net template to create a console application with 
dotnet new.</description>
         <authors>Apache TinkerPop</authors>
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs 
b/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
index 2f1b330346..9f5e095f22 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
@@ -33,7 +33,7 @@ namespace Gremlin.Net.Driver
         /// <summary>
         ///     Current TinkerPop version.
         /// </summary>
-        public static string GremlinVersion = "4.0.0-SNAPSHOT"; // DO NOT 
MODIFY - Configured automatically by Maven Replacer Plugin
+        public static string GremlinVersion = "4.0.0-beta.3"; // DO NOT MODIFY 
- Configured automatically by Maven Replacer Plugin
 
         /// <summary>
         ///     The key for the unique identifier of the request.
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj 
b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index 300f8c4639..09f49515c4 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -27,7 +27,7 @@ limitations under the License.
 
   <PropertyGroup Label="Package">
     <!-- do not edit the version directly - maven updates it automatically -->
-    <Version>4.0.0-SNAPSHOT</Version>
+    <Version>4.0.0-beta.3</Version>
     <Title>Gremlin.Net</Title>
     <Authors>Apache TinkerPop</Authors>
     <Description>Gremlin.Net for Apache TinkerPop™ is a language variant and 
driver for .NET.
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 50a3b2a521..1885c507a5 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-dotnet</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-dotnet-source</artifactId>
     <name>Apache TinkerPop :: Gremlin.Net - Source</name>
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 82b1037f32..b3a59bca0d 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-dotnet</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-dotnet-tests</artifactId>
     <name>Apache TinkerPop :: Gremlin.Net - Tests</name>
diff --git a/gremlin-driver/pom.xml b/gremlin-driver/pom.xml
index 926c61c40e..9ac980c3e1 100644
--- a/gremlin-driver/pom.xml
+++ b/gremlin-driver/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-driver</artifactId>
     <name>Apache TinkerPop :: Gremlin Driver</name>
diff --git a/gremlin-go/driver/user_agent.go b/gremlin-go/driver/user_agent.go
index 7fec2b0d2c..698404e168 100644
--- a/gremlin-go/driver/user_agent.go
+++ b/gremlin-go/driver/user_agent.go
@@ -37,7 +37,7 @@ var userAgent string
 
 const userAgentHeader = "User-Agent"
 
-const gremlinVersion = "4.0.0-SNAPSHOT" // DO NOT MODIFY - Configured 
automatically by Maven Replacer Plugin
+const gremlinVersion = "4.0.0-beta.3" // DO NOT MODIFY - Configured 
automatically by Maven Replacer Plugin
 
 func init() {
        applicationName := "NotAvailable"
diff --git a/gremlin-go/pom.xml b/gremlin-go/pom.xml
index 355687582d..687bbecc40 100644
--- a/gremlin-go/pom.xml
+++ b/gremlin-go/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-go</artifactId>
     <name>Apache TinkerPop :: Gremlin Go</name>
diff --git a/gremlin-groovy/pom.xml b/gremlin-groovy/pom.xml
index aaafa65750..90859c1bc5 100644
--- a/gremlin-groovy/pom.xml
+++ b/gremlin-groovy/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-groovy</artifactId>
     <name>Apache TinkerPop :: Gremlin Groovy</name>
diff --git a/gremlin-js/gremlin-javascript/lib/utils.ts 
b/gremlin-js/gremlin-javascript/lib/utils.ts
index be81755872..47fa84a762 100644
--- a/gremlin-js/gremlin-javascript/lib/utils.ts
+++ b/gremlin-js/gremlin-javascript/lib/utils.ts
@@ -22,7 +22,7 @@
  * @author Jorge Bay Gondra
  */
 
-const gremlinVersion = '4.0.0-SNAPSHOT'; // DO NOT MODIFY - Configured 
automatically by Maven Replacer Plugin
+const gremlinVersion = '4.0.0-beta.3'; // DO NOT MODIFY - Configured 
automatically by Maven Replacer Plugin
 
 const INT64_MIN = -9223372036854775808n;
 const INT64_MAX = 9223372036854775807n;
diff --git a/gremlin-js/gremlin-javascript/package.json 
b/gremlin-js/gremlin-javascript/package.json
index 9cf1e83a5e..c1d43a8245 100644
--- a/gremlin-js/gremlin-javascript/package.json
+++ b/gremlin-js/gremlin-javascript/package.json
@@ -1,6 +1,6 @@
 {
   "name": "gremlin",
-  "version": "4.0.0-alpha1",
+  "version": "4.0.0-beta.3",
   "description": "JavaScript Gremlin Language Variant",
   "author": {
     "name": "Apache TinkerPop team"
diff --git a/gremlin-js/gremlin-javascript/pom.xml 
b/gremlin-js/gremlin-javascript/pom.xml
index cf8ba36f33..017b3595d7 100644
--- a/gremlin-js/gremlin-javascript/pom.xml
+++ b/gremlin-js/gremlin-javascript/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-js</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>gremlin-javascript</artifactId>
diff --git a/gremlin-js/gremlin-mcp/package.json 
b/gremlin-js/gremlin-mcp/package.json
index f6de399f1c..a44d7e41e2 100644
--- a/gremlin-js/gremlin-mcp/package.json
+++ b/gremlin-js/gremlin-mcp/package.json
@@ -1,6 +1,6 @@
 {
   "name": "gremlin-mcp",
-  "version": "4.0.0-alpha1",
+  "version": "4.0.0-beta.3",
   "description": "The official Apache TinkerPop MCP server for Gremlin that 
allows for fetching status, schema, and querying using Gremlin for any 
TinkerPop-compatible graph database (TypeScript implementation).",
   "type": "module",
   "main": "dist/server.js",
@@ -43,12 +43,12 @@
   },
   "license": "Apache-2.0",
   "dependencies": {
-    "gremlint": "4.0.0-alpha1",
+    "gremlint": "4.0.0-beta.3",
     "@effect/platform": "^0.90.6",
     "@effect/platform-node": "^0.96.0",
     "@modelcontextprotocol/sdk": "^1.17.4",
     "effect": "^3.17.9",
-    "gremlin": "4.0.0-alpha1",
+    "gremlin": "4.0.0-beta.3",
     "winston": "^3.17.0",
     "zod": "^3.25.76"
   },
diff --git a/gremlin-js/gremlin-mcp/pom.xml b/gremlin-js/gremlin-mcp/pom.xml
index f11f51782e..8a2ab9d058 100644
--- a/gremlin-js/gremlin-mcp/pom.xml
+++ b/gremlin-js/gremlin-mcp/pom.xml
@@ -22,7 +22,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-js</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/gremlin-js/gremlin-mcp/src/constants.ts 
b/gremlin-js/gremlin-mcp/src/constants.ts
index ecb1282b69..79f63af2d3 100644
--- a/gremlin-js/gremlin-mcp/src/constants.ts
+++ b/gremlin-js/gremlin-mcp/src/constants.ts
@@ -24,7 +24,7 @@
  * including server metadata, MCP protocol identifiers, and configuration 
defaults.
  */
 
-export const GREMLIN_VERSION = '4.0.0-SNAPSHOT'; // DO NOT MODIFY - Configured 
automatically by Maven Replacer Plugin
+export const GREMLIN_VERSION = '4.0.0-beta.3'; // DO NOT MODIFY - Configured 
automatically by Maven Replacer Plugin
 
 // Server Information
 export const SERVER_INFO = {
diff --git a/gremlin-js/gremlint/package.json b/gremlin-js/gremlint/package.json
index b4f7f732a3..ebe3c7d34b 100644
--- a/gremlin-js/gremlint/package.json
+++ b/gremlin-js/gremlint/package.json
@@ -1,6 +1,6 @@
 {
   "name": "gremlint",
-  "version": "4.0.0-alpha1",
+  "version": "4.0.0-beta.3",
   "description": "Linter/code formatter for Gremlin",
   "main": "lib/index.js",
   "types": "lib/index.d.ts",
diff --git a/gremlin-js/gremlint/pom.xml b/gremlin-js/gremlint/pom.xml
index 7c302382ae..b128b4c0a6 100644
--- a/gremlin-js/gremlint/pom.xml
+++ b/gremlin-js/gremlint/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-js</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>gremlint</artifactId>
diff --git a/gremlin-js/package-lock.json b/gremlin-js/package-lock.json
index 71c9e4cc41..87d5e74b89 100644
--- a/gremlin-js/package-lock.json
+++ b/gremlin-js/package-lock.json
@@ -13,7 +13,7 @@
     },
     "gremlin-javascript": {
       "name": "gremlin",
-      "version": "4.0.0-alpha1",
+      "version": "4.0.0-beta.3",
       "license": "Apache-2.0",
       "dependencies": {
         "antlr4ng": "3.0.16",
@@ -82,7 +82,7 @@
       }
     },
     "gremlin-mcp": {
-      "version": "4.0.0-alpha1",
+      "version": "4.0.0-beta.3",
       "hasInstallScript": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -90,8 +90,8 @@
         "@effect/platform-node": "^0.96.0",
         "@modelcontextprotocol/sdk": "^1.17.4",
         "effect": "^3.17.9",
-        "gremlin": "4.0.0-alpha1",
-        "gremlint": "4.0.0-alpha1",
+        "gremlin": "4.0.0-beta.3",
+        "gremlint": "4.0.0-beta.3",
         "winston": "^3.17.0",
         "zod": "^3.25.76"
       },
@@ -140,7 +140,7 @@
       }
     },
     "gremlint": {
-      "version": "4.0.0-alpha1",
+      "version": "4.0.0-beta.3",
       "license": "Apache-2.0",
       "devDependencies": {
         "@types/jest": "^30.0.0",
diff --git a/gremlin-js/pom.xml b/gremlin-js/pom.xml
index 143920a026..25c130e50b 100644
--- a/gremlin-js/pom.xml
+++ b/gremlin-js/pom.xml
@@ -22,7 +22,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/gremlin-language/pom.xml b/gremlin-language/pom.xml
index 0d0a1de8a4..12473ff96c 100644
--- a/gremlin-language/pom.xml
+++ b/gremlin-language/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
 
     <artifactId>gremlin-language</artifactId>
diff --git a/gremlin-python/pom.xml b/gremlin-python/pom.xml
index 63680b3dd4..d004a27068 100644
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-python</artifactId>
     <name>Apache TinkerPop :: Gremlin Python</name>
diff --git a/gremlin-python/src/main/python/gremlin_python/driver/useragent.py 
b/gremlin-python/src/main/python/gremlin_python/driver/useragent.py
index f9065d74f9..cc5a9d3b35 100644
--- a/gremlin-python/src/main/python/gremlin_python/driver/useragent.py
+++ b/gremlin-python/src/main/python/gremlin_python/driver/useragent.py
@@ -18,7 +18,7 @@
 #
 import platform
 
-gremlin_version = "4.0.0-SNAPSHOT"  # DO NOT MODIFY - Configured automatically 
by Maven Replacer Plugin
+gremlin_version = "4.0.0-beta.3"  # DO NOT MODIFY - Configured automatically 
by Maven Replacer Plugin
 
 def _generate_user_agent():
     application_name = "NotAvailable"
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index 016365f6b1..3834c00ab0 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-server</artifactId>
     <name>Apache TinkerPop :: Gremlin Server</name>
diff --git a/gremlin-shaded/pom.xml b/gremlin-shaded/pom.xml
index 0438ad6d50..265bfdb691 100644
--- a/gremlin-shaded/pom.xml
+++ b/gremlin-shaded/pom.xml
@@ -20,7 +20,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-shaded</artifactId>
     <name>Apache TinkerPop :: Gremlin Shaded</name>
diff --git a/gremlin-test/pom.xml b/gremlin-test/pom.xml
index 1c5c7985a6..88b6669f6c 100644
--- a/gremlin-test/pom.xml
+++ b/gremlin-test/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-test</artifactId>
     <name>Apache TinkerPop :: Gremlin Test</name>
diff --git a/gremlin-tools/gremlin-benchmark/pom.xml 
b/gremlin-tools/gremlin-benchmark/pom.xml
index 7a25d430f1..23a8d602e7 100644
--- a/gremlin-tools/gremlin-benchmark/pom.xml
+++ b/gremlin-tools/gremlin-benchmark/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <artifactId>gremlin-tools</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
 
     <artifactId>gremlin-benchmark</artifactId>
diff --git a/gremlin-tools/gremlin-coverage/pom.xml 
b/gremlin-tools/gremlin-coverage/pom.xml
index ef6b9ac682..806191f56c 100644
--- a/gremlin-tools/gremlin-coverage/pom.xml
+++ b/gremlin-tools/gremlin-coverage/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <artifactId>gremlin-tools</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>gremlin-coverage</artifactId>
     <name>Apache TinkerPop :: Gremlin Coverage</name>
diff --git a/gremlin-tools/gremlin-socket-server/pom.xml 
b/gremlin-tools/gremlin-socket-server/pom.xml
index 42bb46df1f..e9b8408554 100644
--- a/gremlin-tools/gremlin-socket-server/pom.xml
+++ b/gremlin-tools/gremlin-socket-server/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>gremlin-tools</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/gremlin-tools/pom.xml b/gremlin-tools/pom.xml
index 569fe97e63..b7d313f813 100644
--- a/gremlin-tools/pom.xml
+++ b/gremlin-tools/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <artifactId>tinkerpop</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
 
     <artifactId>gremlin-tools</artifactId>
diff --git a/gremlin-util/pom.xml b/gremlin-util/pom.xml
index 12141fb216..7325094442 100644
--- a/gremlin-util/pom.xml
+++ b/gremlin-util/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>tinkerpop</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/hadoop-gremlin/pom.xml b/hadoop-gremlin/pom.xml
index 83c1da8e87..09dd9e7049 100644
--- a/hadoop-gremlin/pom.xml
+++ b/hadoop-gremlin/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>hadoop-gremlin</artifactId>
     <name>Apache TinkerPop :: Hadoop Gremlin</name>
diff --git a/pom.xml b/pom.xml
index 2569cf6abc..d64d4e906e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@ limitations under the License.
     </parent>
     <groupId>org.apache.tinkerpop</groupId>
     <artifactId>tinkerpop</artifactId>
-    <version>4.0.0-SNAPSHOT</version>
+    <version>4.0.0-beta.3</version>
     <packaging>pom</packaging>
     <name>Apache TinkerPop</name>
     <description>A Graph Computing Framework</description>
@@ -1531,7 +1531,7 @@ limitations under the License.
                                     
<overview>${basedir}/docs/javadoc/overview.html</overview>
                                     <quiet>true</quiet>
                                     <sourcepath>
-                                        
gremlin-annotations/src/main/java:gremlin-language/target/generated-sources/antlr4:gremlin-core/src/main/java:gremlin-driver/src/main/java:gremlin-groovy/src/main/java:gremlin-groovy/target/generated-sources/annotations:gremlin-groovy/target/generated-sources/groovy-stubs/main:gremlin-server/src/main/java:gremlin-test/src/main/java:tinkergraph-gremlin/src/main/java:gremlin-util/src/main/java
+                                        
gremlin-annotations/src/main/java:gremlin-language/target/generated-sources/antlr4:gremlin-core/src/main/java:gql-gremlin/src/main/java:gql-gremlin/target/generated-sources/antlr4:gremlin-driver/src/main/java:gremlin-groovy/src/main/java:gremlin-groovy/target/generated-sources/annotations:gremlin-groovy/target/generated-sources/groovy-stubs/main:gremlin-server/src/main/java:gremlin-test/src/main/java:tinkergraph-gremlin/src/main/java:gremlin-util/s
 [...]
                                     </sourcepath>
                                     <dependencySourceIncludes>
                                         
<dependencySourceInclude>org.apache.tinkerpop:*</dependencySourceInclude>
@@ -1552,6 +1552,11 @@ limitations under the License.
                                             
<artifactId>netty-codec</artifactId>
                                             <version>${netty.version}</version>
                                         </additionalDependency>
+                                        <additionalDependency>
+                                            <groupId>io.netty</groupId>
+                                            
<artifactId>netty-codec-base</artifactId>
+                                            <version>${netty.version}</version>
+                                        </additionalDependency>
                                         <additionalDependency>
                                             <groupId>io.netty</groupId>
                                             
<artifactId>netty-codec-http</artifactId>
@@ -1572,6 +1577,11 @@ limitations under the License.
                                             
<artifactId>netty-handler</artifactId>
                                             <version>${netty.version}</version>
                                         </additionalDependency>
+                                        <additionalDependency>
+                                            <groupId>io.netty</groupId>
+                                            
<artifactId>netty-handler-proxy</artifactId>
+                                            <version>${netty.version}</version>
+                                        </additionalDependency>
                                         <additionalDependency>
                                             <groupId>io.netty</groupId>
                                             
<artifactId>netty-transport</artifactId>
@@ -1895,6 +1905,11 @@ limitations under the License.
                                             
<artifactId>netty-codec</artifactId>
                                             <version>${netty.version}</version>
                                         </additionalDependency>
+                                        <additionalDependency>
+                                            <groupId>io.netty</groupId>
+                                            
<artifactId>netty-codec-base</artifactId>
+                                            <version>${netty.version}</version>
+                                        </additionalDependency>
                                         <additionalDependency>
                                             <groupId>io.netty</groupId>
                                             
<artifactId>netty-codec-http</artifactId>
@@ -1910,6 +1925,11 @@ limitations under the License.
                                             
<artifactId>netty-handler</artifactId>
                                             <version>${netty.version}</version>
                                         </additionalDependency>
+                                        <additionalDependency>
+                                            <groupId>io.netty</groupId>
+                                            
<artifactId>netty-handler-proxy</artifactId>
+                                            <version>${netty.version}</version>
+                                        </additionalDependency>
                                         <additionalDependency>
                                             <groupId>io.netty</groupId>
                                             
<artifactId>netty-transport</artifactId>
diff --git a/source-release.xml b/source-release.xml
index 890e75ab6c..f5f2e511e0 100644
--- a/source-release.xml
+++ b/source-release.xml
@@ -49,6 +49,7 @@
                 -->
 
                 <!-- AI coding agent directories -->
+                <exclude>**/.beads/**</exclude>
                 <exclude>**/.claude/**</exclude>
                 <exclude>**/.codex/**</exclude>
                 <exclude>**/.copilot/**</exclude>
@@ -89,6 +90,10 @@
                 <exclude>docs/gremlint/package-lock.json</exclude>
                 <exclude>docs/gremlint/node_modules/**</exclude>
                 <exclude>docs/gremlint/build/**</exclude>
+                <exclude>docs/gremlint/dist/**</exclude>
+                <exclude>docs/gremlator/package-lock.json</exclude>
+                <exclude>docs/gremlator/node_modules/**</exclude>
+                <exclude>docs/gremlator/dist/**</exclude>
                 <exclude>gremlin-dotnet/.glv</exclude>
                 <exclude>gremlin-dotnet/gremlin-*/**</exclude>
                 <exclude>gremlin-dotnet/src/docfx/**</exclude>
diff --git a/spark-gremlin/pom.xml b/spark-gremlin/pom.xml
index 0b2917997d..d72242c05e 100644
--- a/spark-gremlin/pom.xml
+++ b/spark-gremlin/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>spark-gremlin</artifactId>
     <name>Apache TinkerPop :: Spark Gremlin</name>
diff --git a/tinkergraph-gremlin/pom.xml b/tinkergraph-gremlin/pom.xml
index 3437530bc4..10d4b0c5da 100644
--- a/tinkergraph-gremlin/pom.xml
+++ b/tinkergraph-gremlin/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>4.0.0-beta.3</version>
     </parent>
     <artifactId>tinkergraph-gremlin</artifactId>
     <name>Apache TinkerPop :: TinkerGraph Gremlin</name>


Reply via email to