)]}'
{
  "log": [
    {
      "commit": "e48318e8aa50ed32fbcc81fe8d0f1d2772f9e539",
      "tree": "811d4733513fd1a2c00d45d353b2ce054f6b77d5",
      "parents": [
        "7bbd36c494e9af20bf5e13912d156a5ff50f0b47",
        "30c63de9e56737825fce1c49a81defa35f965078"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Wed Sep 16 15:38:56 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Wed Sep 16 15:38:56 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "30c63de9e56737825fce1c49a81defa35f965078",
      "tree": "d37305570f1be443e96aa7a13673276170eae1b2",
      "parents": [
        "eea6a1dcbdfcbce3c6a1e62d79185570effbd596",
        "5fc5273c03984f74caa695125c4162fbae07a3b2"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Wed Sep 16 15:38:10 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Wed Sep 16 15:38:10 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "5fc5273c03984f74caa695125c4162fbae07a3b2",
      "tree": "6c83425dd736522f201742967677a883eaac7c67",
      "parents": [
        "cd39f23cafeaf1ddcb5bfae2a56974ca05e5c7fb"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Wed Sep 16 15:37:36 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Wed Sep 16 15:37:36 2026 -0700"
      },
      "message": "CTR isolate plugin install to a docs-only console copy\n\nprocess-docs.sh installed the docs plugins directly into the console standalone directory that distribution.xml packages into the release zip, leaking hadoop/spark/neo4j/sparql into shipped distributions. Install into a throwaway copy under target/ instead so the released console keeps its default plugin set.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "7bbd36c494e9af20bf5e13912d156a5ff50f0b47",
      "tree": "912b85152528eaff045dedb342846b65ad50e6cf",
      "parents": [
        "d56f99f3f901536f64885ffb3c516e05b5fd3dfe",
        "eea6a1dcbdfcbce3c6a1e62d79185570effbd596"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 17:23:29 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 17:23:29 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "eea6a1dcbdfcbce3c6a1e62d79185570effbd596",
      "tree": "12e95a6f76f8903602af856d9266713ee31f148f",
      "parents": [
        "7dd0eebb9e161bf896c8ecad2befca2183ab3632"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 17:11:40 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 17:11:40 2026 -0700"
      },
      "message": "CTR fix gremlin-console CI\n\nAssisted-by: Kiro:auto\n"
    },
    {
      "commit": "7dd0eebb9e161bf896c8ecad2befca2183ab3632",
      "tree": "3b10e5de6a8fb4e2c4a5f433ff6efc9e332120f2",
      "parents": [
        "1c7cf6e8a834c02cfa2d308c839ac0597ec1158f",
        "cd39f23cafeaf1ddcb5bfae2a56974ca05e5c7fb"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 15:20:24 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 15:20:24 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "cd39f23cafeaf1ddcb5bfae2a56974ca05e5c7fb",
      "tree": "bf1166519e80d7efaf7efb3d329cb910151bf6cc",
      "parents": [
        "9bd9196441a73a64a8c3c90ff7a5d3f21709d613"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 13:19:19 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 15:17:28 2026 -0700"
      },
      "message": "Move gremlin-console test image off end-of-life Debian CTR\n\nThe image the gremlin-console Python integration tests run in was based on\npython:3.9.20-bullseye. Debian 11 reached end of life, so bullseye-security\nnow serves an expired Release file and its packages have been withdrawn from\ndeb.debian.org, and apt-get in the image fails with exit code 100.\n\nThe base is now python:3.9.20-bookworm, same Python and setuptools, on a\nsupported Debian. bookworm carries no openjdk-11 package, so the Java 11 JRE\nis copied from eclipse-temurin:11-jre instead of installed with apt. dos2unix\nfolds into the single apt-get install so it is also covered by -y.\n\nAssisted-by: Kiro:claude-opus-5\n\nAssisted-by: Kiro:auto\n"
    },
    {
      "commit": "d56f99f3f901536f64885ffb3c516e05b5fd3dfe",
      "tree": "181afcc83ede25b1b10b9de08f5319616f0d0bf7",
      "parents": [
        "b6cd28ee7dcb848f2f80fe3fb3c422cb950649d9"
      ],
      "author": {
        "name": "kirill-stepanishin",
        "email": "kirill.stepanishin@improving.com",
        "time": "Tue Sep 15 10:39:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 10:39:13 2026 -0700"
      },
      "message": "Reduce async overhead in GraphBinary reads (#3630)\n\nAdds a synchronous fast path to gremlin-javascript StreamReader\n\nEvery primitive read in StreamReader awaits #ensure(n) first. For a buffered submit() response a chunk of\nthe payload is already in memory, so that await often does nothing but still costs a Promise and a\nmicrotask per read, which dominates client CPU on large responses. Reads now return right away when the bytes are already buffered and only await when the buffer needs refilling.\n\nAssisted-by: Claude Code:claude-opus-4-8"
    },
    {
      "commit": "b6cd28ee7dcb848f2f80fe3fb3c422cb950649d9",
      "tree": "4addd12a6879c45fb8396b47fed32b4d4f60335a",
      "parents": [
        "e67b1ffb69f3caf3b0e5ec37ddbd5fbfdb564159",
        "1c7cf6e8a834c02cfa2d308c839ac0597ec1158f"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 10:24:09 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 10:24:09 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "1c7cf6e8a834c02cfa2d308c839ac0597ec1158f",
      "tree": "ef59ddb88004a7162a1cad44857ab6c56d20c28d",
      "parents": [
        "736c0a76bff506b0e0446b18f3389dcfd31a95e6",
        "9bd9196441a73a64a8c3c90ff7a5d3f21709d613"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 10:23:37 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 10:23:37 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "9bd9196441a73a64a8c3c90ff7a5d3f21709d613",
      "tree": "2900c1a47422ffae3798c4a90a5a1ef7d22214e0",
      "parents": [
        "ac9993f3e783b701c10ecffadc2542ee2129a617"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 10:20:33 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 15 10:20:33 2026 -0700"
      },
      "message": "CTR Fix publish-docs.awk to strip the base-directory prefix correctly.\n\nBroadens the deletion rule from (java)?docs to (dotnet|js|java)?docs so jsdocs and\ndotnetdocs deletions are handled when diff reports entries at the top level of a version directory\n(as happens for a new release, where the awk previously left the prefix in the path).\n"
    },
    {
      "commit": "e67b1ffb69f3caf3b0e5ec37ddbd5fbfdb564159",
      "tree": "fd5d121d5f53b2214989990dbf56c59a42a6e02c",
      "parents": [
        "0c342c21eb8220afa776e587f98e5bb300526aae"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 20:12:42 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 20:05:48 2026 +0000"
      },
      "message": "Note gremlin-groovy prerequisite in Cache Management section\n\nThe Cache Management section documents controls that only apply to the\ngremlin-groovy ScriptEngine, which is not enabled by default. Add a note\nclarifying this prerequisite and pointing to the scriptEngines Behavior\nsection for how to enable it, so a reader on a default configuration\nunderstands why these controls have no effect otherwise.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "0c342c21eb8220afa776e587f98e5bb300526aae",
      "tree": "a7ea84a4f0a4a0c6c61308ecf5ffd60262f22bec",
      "parents": [
        "201c31680f5e4b45473920b20585402ee47515b5"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 19:35:17 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 19:53:46 2026 +0000"
      },
      "message": "Add a configuration and submission example to the CloneVertexProgram section\n\nThe CloneVertexProgram section named the available InputFormat and\nOutputFormat classes but gave no indication of how to configure and run\nthe program. It now identifies the modules the classes reside in, shows\nthe gremlin.hadoop.graphReader and gremlin.hadoop.graphWriter properties\nthat select the formats, and provides a short example that submits the\nprogram through a GraphComputer, while still linking to the\nSparkGraphComputer section for a complete distributed run.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "201c31680f5e4b45473920b20585402ee47515b5",
      "tree": "84bff1f1963eeb423b626fd1517d3f591802cdfd",
      "parents": [
        "a3574852c9cde774d452176e66c8775758e7ce7d"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 19:07:21 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 19:50:09 2026 +0000"
      },
      "message": "Make the feature support-check example in The Graph self-contained\n\nThe support-check example referenced a traversal source g that was only\ndefined in an earlier, separate code block. It ran without error solely\nbecause TinkerGraph does not support transactions, so the ternary\u0027s true\nbranch was never evaluated. A reader adapting this pattern for a\ntransactional graph would have hit an error on the undefined g. Define g\nfrom graph within the block so the example stands on its own. Also add a\nshort note describing how the features() output is grouped, so a reader\ncan orient in the long list of boolean flags.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "a3574852c9cde774d452176e66c8775758e7ce7d",
      "tree": "253b290b4569062dbc80a990c41b5a25bed7c7c1",
      "parents": [
        "a94b82ab95a24cad420172e4394223a9e97f9d42"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 18:48:25 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 19:41:38 2026 +0000"
      },
      "message": "Explain Pick.none and the fictional label in the Discard Step example\n\nThe Discard Step example uses the bare none token, an invented bleep\nlabel, and assumes the modern graph\u0027s schema without comment, so a\nnewcomer cannot work out why it emits only vadas and josh. Add a short\nparagraph that identifies none as Pick.none and the default branch,\nnotes the qualified form for use outside the Gremlin Console, explains\nthat bleep is intentionally fictional so software vertices fall through\nto option(none, discard()) and are removed, and cross-links the Choose\nStep and Branch Step sections for the full option() and Pick semantics.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "a94b82ab95a24cad420172e4394223a9e97f9d42",
      "tree": "dd53d0b5847c5fd10bb8b886e8f7d0dbc5b040ee",
      "parents": [
        "6802da451ed684d39451f64db1c28f53ac1291f6",
        "736c0a76bff506b0e0446b18f3389dcfd31a95e6"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 19:27:15 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 19:27:15 2026 +0000"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "736c0a76bff506b0e0446b18f3389dcfd31a95e6",
      "tree": "627edae6fb67eb0d897ef02e56212cebcbf815d7",
      "parents": [
        "b1f12f7cc85da6f476e39f2c768bb2919e112a16",
        "ac9993f3e783b701c10ecffadc2542ee2129a617"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 19:26:50 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 19:26:50 2026 +0000"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "ac9993f3e783b701c10ecffadc2542ee2129a617",
      "tree": "82e00bd7cb26c905f3d8248ea5c611129f308c8a",
      "parents": [
        "58eea67f46c9ea97aa32a90748c1faad831afd1b"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 19:26:01 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 19:26:37 2026 +0000"
      },
      "message": "Document llms-summary authoring expectations in the tinker-doc skill\n\nExplains what the attribute is for and how to write one (one or two\nsentences, self-contained, matched to the book), deferring the mechanics\nto the existing Agent-Friendly Documentation dev docs.\n\nAssisted-by: Claude Code:claude-opus-4-8\n"
    },
    {
      "commit": "6802da451ed684d39451f64db1c28f53ac1291f6",
      "tree": "bc725bc3d125603080ae24b589c149bf88be5d03",
      "parents": [
        "990872208e1b5532b13425f65f63eefa4d8d1e5f"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 18:15:01 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 19:11:45 2026 +0000"
      },
      "message": "Fix PageRank Step example to read the configured property name\n\nThe first example in the PageRank Step section set PageRank.propertyName to\n\u0027friendRank\u0027 but then read values(\u0027pageRank\u0027), a key that does not exist, so\nthe traversal silently returned nothing. Read values(\u0027friendRank\u0027) so the key\nmatches the configured property, and note that the key passed to values() must\nmatch the name set via PageRank.propertyName, along with the default property\nused when it is not overridden.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "990872208e1b5532b13425f65f63eefa4d8d1e5f",
      "tree": "005ef9b2b66dd0019e8a2f705c3ec8f99a1ca33e",
      "parents": [
        "9b8937694bddd0ffc652142fb9123604c70134c0"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 14:51:38 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 18:12:08 2026 +0000"
      },
      "message": "Clarify PageRank token class and times/maxIterations in GraphComputer docs\n\nThe PageRankVertexProgram section used the PageRank.propertyName and\nPageRank.times tokens in its pageRank()-step example without introducing\nthe PageRank token class or explaining how PageRank.times relates to the\nprogram\u0027s maxIterations default of 20. Add a short introduction of the\nPageRank class and a note explaining that PageRank.times sets the iteration\ncount, so a reader can understand the example from this section alone.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "9b8937694bddd0ffc652142fb9123604c70134c0",
      "tree": "41d3afa266e4dc5c8156d0d69f584b15f8680c1e",
      "parents": [
        "5af4c4d6b63a5667e8071946a93a25857da7211b"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 12:23:18 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 18:06:20 2026 +0000"
      },
      "message": "Add runnable example to ConnectedComponentVertexProgram docs\n\nThe ConnectedComponentVertexProgram reference subsection was a two-sentence\nstub, while its PageRank, PeerPressure, and ShortestPath siblings each carry a\nrunnable example. Expand it to match: add a [gremlin-groovy,modern] block that\nbuilds the program, submits it, and reads the per-vertex component assignment,\nplus a Builder configuration table and a note on the default component property\nkey.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "5af4c4d6b63a5667e8071946a93a25857da7211b",
      "tree": "9cb82e8a1a2e17dee53f0ae4f992b61da17165e9",
      "parents": [
        "d74684fb4ea109ba59865c250e26c198d254ca94"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 17:35:22 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 17:49:00 2026 +0000"
      },
      "message": "Clarify that the semantics Errors table messages are illustrative\n\nThe Example message column lists a representative message for each error\ncategory. A note now makes explicit that these are general illustrations\nrather than the exact runtime text, which can differ across versions and\nproviders. The table content itself is unchanged.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "d74684fb4ea109ba59865c250e26c198d254ca94",
      "tree": "f840085a19aabd32d52e12e8702a076d767c720f",
      "parents": [
        "34dc715d0580e0f20f0ca777f58ca53b5763a7ed"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 00:09:13 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 17:40:19 2026 +0000"
      },
      "message": "Add a note on key()-step input to the reference docs\n\nClarify in the key()-step reference section that the step operates on a\nProperty and must therefore follow a Property-emitting step such as\nproperties(). Applying key() directly to a vertex or edge raises an error.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "34dc715d0580e0f20f0ca777f58ca53b5763a7ed",
      "tree": "ee08751d3ea71c0189f99ace06270438c83d3248",
      "parents": [
        "1b2378eea4673624022d2cfa1e4eb722c679c244"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 20:27:13 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 17:27:46 2026 +0000"
      },
      "message": "Correct addE() edge label semantics in the semantics spec\n\nUnlike addV(), the addE() step has no null-label guard. A missing or null\nedge label resolves to the graph\u0027s default edge label rather than raising\nan error. Update the Considerations to describe this behavior and replace\nthe incorrect null-label exception with the from()/to() resolution error\nthe step actually raises.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "1b2378eea4673624022d2cfa1e4eb722c679c244",
      "tree": "0c72f8b222d2640b7044f3137018998a6317800c",
      "parents": [
        "022619b056ec0055350044ba2d7a6ef7665d1626"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 16:09:39 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 17:24:29 2026 +0000"
      },
      "message": "Clarify dateAdd() semantics for DT tokens and value bounds\n\nDocument that DT is a closed enumeration whose only members are second,\nminute, hour, and day, and that supplying a token outside that set raises\nan Argument Error. Also note that value is bounded by the INT type, so the\nduration is derived without numeric overflow even for large magnitudes.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "022619b056ec0055350044ba2d7a6ef7665d1626",
      "tree": "105632c1545297d205764e95ca332f81164dff52",
      "parents": [
        "f3c7c7fa2dadc781cbe49bb7312c577f109e0b8a"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 12:51:57 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 16:58:53 2026 +0000"
      },
      "message": "Remove userAgent from Gremlin-Java per-request options list\n\nThe Gremlin-Java Connecting section listed userAgent among the options\nthat can be set per request, but the HTTP driver does not apply a\nper-request user agent, so that value has no effect. Drop userAgent from\nthe list, leaving batchSize, bulkResults, materializeProperties and\ntimeoutMillis.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "f3c7c7fa2dadc781cbe49bb7312c577f109e0b8a",
      "tree": "218862ba5ce1aafd1b2066f7c97d539f04adb88a",
      "parents": [
        "180ad9ff2a530697ffef8717c1580c3dee281fab"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Mon Sep 14 12:41:31 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 16:50:02 2026 +0000"
      },
      "message": "Refresh the Console plugin usage transcript in the reference docs\n\nThe \"Dependencies and Plugin Usage\" example in the Gremlin Console\nreference no longer matched the Console\u0027s behavior. The :plugin list\noutput omitted the tinkerpop.credentials plugin and showed\ntinkerpop.sugar as inactive, even though the plugins bundled with the\nstandard Console distribution are all active by default. The :install\nwalkthrough also implied that hadoop-gremlin becomes usable as soon as\nit is installed.\n\nUpdate the transcript to list the current default plugins, demonstrate\ndeactivating and reactivating a plugin with :plugin unuse and :plugin\nuse, and show that installing a dependency such as hadoop-gremlin\nreports that the Console must be restarted before the plugin can be\nused.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "180ad9ff2a530697ffef8717c1580c3dee281fab",
      "tree": "6b376125bfa57c5f07e949121d9d041e5d5c3f6c",
      "parents": [
        "c3124ef7e66b422f9c8f8b1144715d8d5fd3deca"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 23:30:42 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 15:22:48 2026 +0000"
      },
      "message": "Update stale select() error in the-traversal \u0027A Note on Maps\u0027\n\nThe static console example showing select() with a non-string key documented\nan outdated Groovy method-resolution error. As of the current 4.0 runtime the\nsame traversal fails with a ClassCastException instead, so update the example\noutput and reframe the accompanying note. The constant() workaround is unchanged.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "c3124ef7e66b422f9c8f8b1144715d8d5fd3deca",
      "tree": "732f2f064251675a16d50693e330b578487a4e8d",
      "parents": [
        "52b0ed93b71acc420b9e091d92e1ad8b03cb3434"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 22:49:07 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 12:51:24 2026 +0000"
      },
      "message": "Fix Gremlin Server connection examples in reference intro\n\nCorrect the Python remote connection snippet to import traversal from\ngremlin_python.process.anonymous_traversal, import DriverRemoteConnection,\nand call with_() since with is a reserved word in Python. Add the missing\nGraphTraversalSource import to the Java example, and add a note pointing to\nStarting Gremlin Server so the server the section connects to can be started.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "52b0ed93b71acc420b9e091d92e1ad8b03cb3434",
      "tree": "941e45785cf7da5843a4acc3e651c129ddc42dba",
      "parents": [
        "84d7425f6f9c79f3359fa07782b1c13103efb2c5"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 20:31:37 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 12:39:16 2026 +0000"
      },
      "message": "Fix Gremlin-Java DSL example to compile on 4.x\n\nThe Domain Specific Languages example on the Gremlin-Java reference page used\nAPIs that no longer compile on 4.x. Update persons() to obtain the start step\nthrough getGremlinLang() rather than the removed getBytecode(), and change the\nreturn bound of youngestFriendsAge() from Number to Comparable so it matches the\ncurrent min() signature.\n\nAdd the import statements needed to build the interface and TraversalSource\nexamples, give the DSL section its own summary so it renders as its own page,\nand correct the interface-suffix note to read TraversalDsl to match the\nexamples.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "84d7425f6f9c79f3359fa07782b1c13103efb2c5",
      "tree": "b4da30fe9ce1afafaea042972bb50b9dc4ab0c0e",
      "parents": [
        "0a83c235ff021d6f15e50e8168c53c67a3c549d6"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 19:14:23 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 12:18:38 2026 +0000"
      },
      "message": "Update Gremlin Console plugin output in reference docs\n\nThe Gremlin Console section showed a stale startup transcript and plugin\nlist. The console now prints \"plugin activated:\" rather than \"plugin\nloaded:\", and the default console plugin was renamed from tinkerpop.server\nto tinkerpop.remote. Update the startup banners, the :plugin list session,\nand the interactive-mode and Docker transcripts to match the current\nconsole output.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "0a83c235ff021d6f15e50e8168c53c67a3c549d6",
      "tree": "9a8babbc1c3a5f36bc2ce02b5443e46bc9f4066f",
      "parents": [
        "4c257b39d2ef19ba0625b9a605a12ee11138b179"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 12:23:50 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Mon Sep 14 12:16:27 2026 +0000"
      },
      "message": "Update stale plugin name in Interactive Mode console transcript\n\nThe launch transcript in the Interactive Mode section still showed\n\"plugin activated: tinkerpop.server\", but that plugin was renamed to\n\"tinkerpop.remote\" (RemoteGremlinPlugin). Update the transcript to match\nthe default console output, which activates tinkerpop.remote,\ntinkerpop.utilities and tinkerpop.tinkergraph.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "4c257b39d2ef19ba0625b9a605a12ee11138b179",
      "tree": "05ced6407c63d135c4116871627b4a112b80c0f2",
      "parents": [
        "9e9483e7c2386c75a6ea4f55d3062f7ee3bb320c"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 14:08:51 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Fri Sep 11 20:08:22 2026 +0000"
      },
      "message": "Clarify provider-dependent behavior of call() step in reference docs\n\nThe Call Step section showed directory-service and xyz-service examples\nwith no indication of expected output. On the default TinkerGraph, which\nregisters no callable services, these examples return an empty result,\nleaving readers unable to tell correct behavior from a broken setup. Add\na note explaining that call() results are entirely provider-dependent,\nthat the default TinkerGraph exposes no services (so the examples return\nempty), how to register TinkerGraph\u0027s example services to see real\noutput, and that xyz-service is a fictional placeholder.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "9e9483e7c2386c75a6ea4f55d3062f7ee3bb320c",
      "tree": "e057e76717432e5e0530d7d9e48d06933dbbe6d9",
      "parents": [
        "956e345a43cc20cb5dba59acb22bf778e5e65995"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 19:44:07 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Fri Sep 11 20:03:07 2026 +0000"
      },
      "message": "Specify project() by()/key count mismatch semantics\n\nThe project() section stated only that the number of by() modulations\nshould match the number of keys, without describing what happens when\nthey do not. Replace that soft guidance with the concrete, no-error\nbehavior: fewer by() modulations than keys are reused cyclically in\nround-robin order, surplus by() modulations are silently ignored, and\nwith no by() every key maps to the current object unchanged.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "956e345a43cc20cb5dba59acb22bf778e5e65995",
      "tree": "bc9cfb27af9ff815983a7e37bbca18a55cb1d3e1",
      "parents": [
        "80b00892b6626bfa11841de2998d033477c650b4"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 16:00:17 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Fri Sep 11 20:00:52 2026 +0000"
      },
      "message": "Clarify asDate() semantics in the Gremlin semantics specification\n\nState that asDate() yields a DATETIME value rather than a bare date, document\nthat numeric input is interpreted as milliseconds since the Unix epoch, and\nreconcile the Domain column with the accepted input types and the Exceptions\nlist (STRING, NUMBER, and DATETIME).\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "80b00892b6626bfa11841de2998d033477c650b4",
      "tree": "29477d51f2db444f2f5bc9becb6d941f280062f3",
      "parents": [
        "e2f6f982f7adb2ecdd3c4b737d7f75cf2c3ad62e"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 12:39:40 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Fri Sep 11 19:57:51 2026 +0000"
      },
      "message": "Document string-to-number coercion for asNumber() in Gremlin semantics\n\nAdd a Considerations rule describing how asNumber() parses a string with no type token: integer-valued strings resolve to the smallest of INT, LONG, or BIGINT that fits, and decimal or exponent-notation strings resolve to FLOAT (then DOUBLE or BIGDECIMAL). Also remove a duplicated Modulation/Considerations heading block in the asNumber() section.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "e2f6f982f7adb2ecdd3c4b737d7f75cf2c3ad62e",
      "tree": "656f813f627374285aa3d597fac2706b75574614",
      "parents": [
        "d12eb5b3145572803ee1ccc175117b6b20f42d9e",
        "b1f12f7cc85da6f476e39f2c768bb2919e112a16"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Fri Sep 11 12:50:11 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Fri Sep 11 12:50:11 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "b1f12f7cc85da6f476e39f2c768bb2919e112a16",
      "tree": "d8a7f1cfecb304ee27610241aa4fab9c72b4d663",
      "parents": [
        "c20c27fadfeef8966a8647c6b0418716adf966fc",
        "58eea67f46c9ea97aa32a90748c1faad831afd1b"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Fri Sep 11 12:46:50 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Fri Sep 11 12:46:50 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "58eea67f46c9ea97aa32a90748c1faad831afd1b",
      "tree": "559449dd488963e2971a88cc1d2265713335e616",
      "parents": [
        "e771788db5777f909da8a9f6ba1785861643afa0"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Fri Sep 11 12:44:24 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Fri Sep 11 12:44:24 2026 -0700"
      },
      "message": "Drop references to Windows build support CTR.\n\nAs discussed in https://lists.apache.org/thread/gqt85v3rs5rggyxzb5g7tm7rp00f9b2f\nthere isn\u0027t going to be continued effort in supporting a Windows\nbuild. Those users should use WSL2.\n"
    },
    {
      "commit": "d12eb5b3145572803ee1ccc175117b6b20f42d9e",
      "tree": "ab856c8d6a1587a0e4b5ed1ad044a9b6014dbfdb",
      "parents": [
        "f6382038fc641664930d9ccc701574b6f260f44f"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 16:11:28 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Fri Sep 11 16:43:08 2026 +0000"
      },
      "message": "Specify per-type asString() rendering in the Gremlin semantics\n\nReplace the vague statement that each value is converted to its canonical\nString representation in the asString()-step Considerations section with an\nexplicit per-type rendering table and examples. The table covers integer and\nlong, floating-point, boolean, datetime, and vertex values, and two examples\ndistinguish list rendering under the global scope from element-wise rendering\nunder Scope.local. The null and scope Exceptions block is unchanged.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "f6382038fc641664930d9ccc701574b6f260f44f",
      "tree": "40ee45e0431f49d0b96ee4a6c8f0ac28ea4767fb",
      "parents": [
        "2aa0725988b575148d2fcb6b05bf9f4ffaeae2c5"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 14:41:50 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Fri Sep 11 15:56:48 2026 +0000"
      },
      "message": "Clarify difference() step semantics in the provider documentation\n\nExpand the Considerations for the difference() step in gremlin-semantics.asciidoc\nwith language-agnostic behavioral detail. The result is a SET whose iteration\norder is unspecified and does not preserve the incoming list order, and A-B is\ndirectional rather than order-preserving. Membership compares members by both\nvalue and type, so numerically equal values of different types are distinct, and\na null is a legal list element while a null or non-iterable whole traverser or\nargument raises an error. It also notes that a traversal supplied as the argument\nproduces the comparison list as a single result.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "2aa0725988b575148d2fcb6b05bf9f4ffaeae2c5",
      "tree": "c18828233e70abef507b83f9ead2151de64077ee",
      "parents": [
        "8edf3015ede04d9bc8ba11402dab5beace32ec26"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Fri Sep 11 14:41:59 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Fri Sep 11 15:11:02 2026 +0000"
      },
      "message": "Clarify product() step semantics for cardinality, ordering, and empty input\n\nExpand the product() considerations in the Gremlin semantics document to\nspecify the cartesian product cardinality and the row-major order in which\npairs are emitted, that duplicate elements are preserved, and that an empty\noperand yields a single empty list rather than no result or an error. Also\nclarify that only a non-iterable incoming traverser or resolved argument\nraises an error, while a null appearing as a member of an otherwise valid\nlist is a legal element.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "8edf3015ede04d9bc8ba11402dab5beace32ec26",
      "tree": "c7a1d2a07cbd22ced760c0dd7d9265132c140eb4",
      "parents": [
        "5735712ff03647ef2d101e87be8786d0519d89b8",
        "c20c27fadfeef8966a8647c6b0418716adf966fc"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:39:03 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:39:03 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "c20c27fadfeef8966a8647c6b0418716adf966fc",
      "tree": "9dd88ccaa61ca2ab04a6e4730fa0fd2232d6f278",
      "parents": [
        "feea0f2d5673546faeacf13eab9267606746df4f"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:36:06 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:36:06 2026 -0700"
      },
      "message": "CTR update to 3.8.3-SNAPSHOT\n"
    },
    {
      "commit": "feea0f2d5673546faeacf13eab9267606746df4f",
      "tree": "f007c19d2cfc9a49fa50738d190d193e1f4500f5",
      "parents": [
        "6af77b451fa9c39c6c98d9d09cb06c0347aebc32",
        "e771788db5777f909da8a9f6ba1785861643afa0"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:30:28 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:30:28 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "e771788db5777f909da8a9f6ba1785861643afa0",
      "tree": "ac0c05885dffbb5ad501ac78dbbcb1e3e15f16db",
      "parents": [
        "dcdaee0e0a08863f94ee1d17cd65454041e655a8"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:28:13 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Thu Sep 10 15:28:13 2026 -0700"
      },
      "message": "CTR update to 3.7.8-SNAPSHOT\n"
    },
    {
      "commit": "5735712ff03647ef2d101e87be8786d0519d89b8",
      "tree": "03368c6897bd1313c3461cd203200cf555981203",
      "parents": [
        "a185eebc0b3315a99116a16564456bb8dc290ed4"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 17:57:06 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Thu Sep 10 18:11:06 2026 +0000"
      },
      "message": "Expand the From Step reference section\n\nThe From Step section was a bare stub with no runnable examples and no\nprose on the semantics of from()\u0027s argument forms. Add a description of\nthe three argument forms (from(String), from(Traversal), from(Vertex)),\na sentence on the symmetric from()/to() pairing, and two runnable\nexamples against the modern graph: an addE().from(\u0027a\u0027) edge creation and\na path().from(\u0027a\u0027).to(\u0027b\u0027) sub-path selection.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "a185eebc0b3315a99116a16564456bb8dc290ed4",
      "tree": "e2c57632f8c5581aad1a9a51ddfb20140c4d844a",
      "parents": [
        "b7cb93d96cc5d9ba782baf1b2127a52eca668842"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 00:02:16 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Thu Sep 10 12:59:38 2026 +0000"
      },
      "message": "Expand branch() and sideEffect() step reference sections\n\nThe Branch Step and SideEffect Step sections of the traversal reference were\nsingle-sentence stubs with no runnable example. Both now carry live examples\nagainst the modern graph. The branch() section explains discriminator-to-option\nrouting and shows that branch() multiplexes a traverser to every matching\noption(), in contrast to choose(), which routes to a single branch. The\nsideEffect() section demonstrates its pass-through semantics and how it differs\nfrom map(). Both \"Additional References\" links are also corrected, as their text\nincorrectly read \"map(Traversal)\".\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "b7cb93d96cc5d9ba782baf1b2127a52eca668842",
      "tree": "74a2e32824e1534d5d0aa657eb70be3f402c0895",
      "parents": [
        "01cd56bf9a327636ad2595bdc10f4672332614be"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Sep 09 23:53:35 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Thu Sep 10 12:23:53 2026 +0000"
      },
      "message": "Show visible output for simplePath() from()/to() by(label) examples\n\nThe last two simplePath() examples in the modern-graph block used three\nout() hops, but the modern graph has no three-hop outgoing paths, so both\nexamples rendered empty output with no explanation. This left the\nfrom()/to() segment-scoping semantics undemonstrated and made the empty\nresults look like a mistake.\n\nReduce the examples to two out() hops and add callouts. The whole-path\nby(label) example is now meaningfully empty (each path starts with two\nperson vertices), while scoping the check to the b..c segment with\nfrom()/to() retains the paths, producing visible contrasting output.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "01cd56bf9a327636ad2595bdc10f4672332614be",
      "tree": "bf316295ee7729378077479397ed28fbe5cad51c",
      "parents": [
        "7443b8eab7c9e3ec14e0a46d8ced05f727460655",
        "6af77b451fa9c39c6c98d9d09cb06c0347aebc32"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 12:00:29 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 12:00:29 2026 +0000"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "6af77b451fa9c39c6c98d9d09cb06c0347aebc32",
      "tree": "53e74d0c99084344b3aecb2ff2040974b64963b3",
      "parents": [
        "952d8d8e4c3cd37ed8e192ecb97348e6e82594a9",
        "dcdaee0e0a08863f94ee1d17cd65454041e655a8"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 11:59:33 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 11:59:33 2026 +0000"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "dcdaee0e0a08863f94ee1d17cd65454041e655a8",
      "tree": "bb0db9b5364f85734759f91aacdba4f6c91b2cc4",
      "parents": [
        "86a495f591dab66b37b8dfe48fbff35f853111f5"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 11:50:45 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Thu Sep 10 11:50:45 2026 +0000"
      },
      "message": "Restrict AI commit trailers to Assisted-by only\n\nForbid improvised trailers such as Claude-Session and direct agents to\nask before adding any provenance trailer other than Assisted-by.\n\nAssisted-by: Claude Code:claude-opus-4-8\n"
    },
    {
      "commit": "7443b8eab7c9e3ec14e0a46d8ced05f727460655",
      "tree": "3b0a99a083e989d15d073b6e13dd3ed000f4858f",
      "parents": [
        "ccc8327099988c52ce4d42c058edf0f38d136473"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Sep 09 20:39:03 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Thu Sep 10 11:49:39 2026 +0000"
      },
      "message": "Correct Python cardinality functions and add format_() to steps list\n\nThe Gremlin-Python Differences section listed the value-taking\ncardinality functions as list(), set() and single(), but CardinalityValue\nactually exposes single(), list_() and set_(). Calling CardinalityValue.list()\nor CardinalityValue.set() raises AttributeError, so the documented spelling\ndoes not work. Correct the sentence and note that list and set are renamed\nwith a trailing underscore because they overlap with Python built-ins.\n\nAlso add the missing format_() step to the list of underscore-suffixed steps.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "ccc8327099988c52ce4d42c058edf0f38d136473",
      "tree": "5a770ca9d45211c6212ab6b771d103e04a0c7e82",
      "parents": [
        "eaf18f813990dc576346715d65cdbebae1a16e8e"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Sep 09 20:34:11 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Thu Sep 10 11:27:07 2026 +0000"
      },
      "message": "Make hasValue() value-matching semantics explicit in provider docs\n\nClarify the value-matching contract for hasValue() in the Gremlin\nsemantics provider guide: multiple values use within-set (any-of)\nmatching, value comparison follows Gremlin equality and comparability\nincluding cross-type numeric coercion, and a null argument matches\nnothing without raising an error.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "eaf18f813990dc576346715d65cdbebae1a16e8e",
      "tree": "a67a34098f9b5262fc10dbd642920affd67175e2",
      "parents": [
        "0218696366dc2690daa8fa0a8b77c4b8385c8f3d"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Sep 09 15:12:46 2026 +0000"
      },
      "committer": {
        "name": "stephen mallette",
        "email": "spmallette@users.noreply.github.com",
        "time": "Wed Sep 09 15:18:00 2026 +0000"
      },
      "message": "Fix index() step callout: reference statement 2 and correct \u0027explicitly\u0027 typo\n\nThe third example in the Index Step section is structurally identical to\nthe second example (both use the list indexer; the third just specifies it\nexplicitly), so callout 3 now references statement 2 rather than statement 1.\nAlso corrects the spelling of \u0027explicitly\u0027.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "0218696366dc2690daa8fa0a8b77c4b8385c8f3d",
      "tree": "63d26ab3711e67127a40fb6e8800e747b509f1ae",
      "parents": [
        "b9c8b1edf50f9b728d8299f7d530cf360b6bde01"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 08 16:29:52 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 08 16:29:52 2026 -0700"
      },
      "message": "CTR update homepage for 3.7.7/3.8.2 releases\n"
    },
    {
      "commit": "b9c8b1edf50f9b728d8299f7d530cf360b6bde01",
      "tree": "723d914a898309455938a505a977c4eb35872ec2",
      "parents": [
        "9199afe4e3d7a9033987cd538a2ab3a5a461f8dd",
        "952d8d8e4c3cd37ed8e192ecb97348e6e82594a9"
      ],
      "author": {
        "name": "Cole-Greer",
        "email": "Cole.Greer@improving.com",
        "time": "Tue Sep 01 21:28:14 2026 -0700"
      },
      "committer": {
        "name": "Cole-Greer",
        "email": "Cole.Greer@improving.com",
        "time": "Tue Sep 01 21:28:14 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "952d8d8e4c3cd37ed8e192ecb97348e6e82594a9",
      "tree": "c8f7a55bf174f76bd92edf7f9b0959a6acd6ff93",
      "parents": [
        "1a99f5064ea03f6a09b803a5d9a8a5efe30b2f91"
      ],
      "author": {
        "name": "Cole-Greer",
        "email": "Cole.Greer@improving.com",
        "time": "Tue Sep 01 20:30:19 2026 -0700"
      },
      "committer": {
        "name": "Cole-Greer",
        "email": "Cole.Greer@improving.com",
        "time": "Tue Sep 01 20:30:19 2026 -0700"
      },
      "message": "TinkerPop 3.8.2 release\n"
    },
    {
      "commit": "1a99f5064ea03f6a09b803a5d9a8a5efe30b2f91",
      "tree": "7ada98ac6fc29d8e0ad46c4b3e5d21586b9462c5",
      "parents": [
        "9ef293de9d450c35df0a97e88cfce1a43c547615",
        "86a495f591dab66b37b8dfe48fbff35f853111f5"
      ],
      "author": {
        "name": "Cole-Greer",
        "email": "Cole.Greer@improving.com",
        "time": "Tue Sep 01 19:20:35 2026 -0700"
      },
      "committer": {
        "name": "Cole-Greer",
        "email": "Cole.Greer@improving.com",
        "time": "Tue Sep 01 19:20:35 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "86a495f591dab66b37b8dfe48fbff35f853111f5",
      "tree": "1ae52cc3473be35a6446978c5450e34a41e5c776",
      "parents": [
        "a97e7d88669fb45bbda079b243faec2461e37551"
      ],
      "author": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 19:14:39 2026 -0700"
      },
      "committer": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 19:14:39 2026 -0700"
      },
      "message": "TinkerPop 3.7.7 release\n"
    },
    {
      "commit": "9199afe4e3d7a9033987cd538a2ab3a5a461f8dd",
      "tree": "e23aa8193f8a1d0c065aacde2990a0ac830d8eda",
      "parents": [
        "70cd4293c5d158d2ef1d6f384c485f79d6275a32",
        "9ef293de9d450c35df0a97e88cfce1a43c547615"
      ],
      "author": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 15:42:02 2026 -0700"
      },
      "committer": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 15:42:02 2026 -0700"
      },
      "message": "Merge remote-tracking branch \u0027origin/3.8-dev\u0027\n"
    },
    {
      "commit": "9ef293de9d450c35df0a97e88cfce1a43c547615",
      "tree": "20eda3ed4893db0265971897845f2959b0dddf72",
      "parents": [
        "2718dbbbf5e0d7934b3817649cb2d0a2fe164cdc",
        "a97e7d88669fb45bbda079b243faec2461e37551"
      ],
      "author": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 15:39:25 2026 -0700"
      },
      "committer": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 15:39:25 2026 -0700"
      },
      "message": "Merge remote-tracking branch \u0027origin/3.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "a97e7d88669fb45bbda079b243faec2461e37551",
      "tree": "bde4833c06e72048de6225410fbb06fa70320454",
      "parents": [
        "76b06f71bad4be8bcadec908fa1da17ff18adee6"
      ],
      "author": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 15:37:33 2026 -0700"
      },
      "committer": {
        "name": "xiazcy",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 15:37:33 2026 -0700"
      },
      "message": "CTR update Apache Ivy version in NOTICE files\n"
    },
    {
      "commit": "70cd4293c5d158d2ef1d6f384c485f79d6275a32",
      "tree": "f9a9f418b7870530e587fa2138fd807e0a4e9070",
      "parents": [
        "8bdc4ef7d66da5afa3e302de3af053fd44442105",
        "2718dbbbf5e0d7934b3817649cb2d0a2fe164cdc"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 13:46:24 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 13:46:24 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n\n# Conflicts:\n#\tdocs/tinkeradoc-extension/src/main/java/org/apache/tinkerpop/tinkeradoc/GremlinTreeprocessor.java\n"
    },
    {
      "commit": "2718dbbbf5e0d7934b3817649cb2d0a2fe164cdc",
      "tree": "d5336571fda452ef8f800ed43f4b853dad49adeb",
      "parents": [
        "99c9153c84a018072b65dda28f8c7c0c4a6eb646",
        "76b06f71bad4be8bcadec908fa1da17ff18adee6"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 13:26:18 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 13:26:18 2026 -0700"
      },
      "message": "Merge remote-tracking branch \u0027origin/3.7-dev\u0027 into 3.8-dev\n\n# Conflicts:\n#\tdocs/tinkeradoc-extension/src/main/java/org/apache/tinkerpop/tinkeradoc/GremlinTreeprocessor.java\n"
    },
    {
      "commit": "76b06f71bad4be8bcadec908fa1da17ff18adee6",
      "tree": "c1347a7b108a685d35f8f8cb9db4b0682f7c2308",
      "parents": [
        "d429ec0bd8cba4885b12054b63a44fe14df97afc"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Wed Aug 12 16:51:39 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Tue Sep 01 12:52:36 2026 -0700"
      },
      "message": "Add toy-graph dataset captions to rendered Gremlin examples CTR\n\nRender an italic caption beneath each Gremlin example naming the toy graph it runs against, linking to that graph\u0027s section in the Sample Data book in the HTML output and emitting a machine-parseable `graph-dataset:` line in the Markdown mirror. Resolve the dataset from the AST walk rather than execution state.\n\nIntroduce GraphCatalog as the single source of truth for toy-graph tokens, replacing the duplicated GRAPH_INIT and GRAPH_DOC maps so adding a dataset is a one-line change.\n\nAlso simplify the console tab label from \"console (groovy)\" to \"console\" so it renders at the same size as the other single-word tabs.\n\nAssisted-by: Kiro:claude-opus-4.8\n"
    },
    {
      "commit": "8bdc4ef7d66da5afa3e302de3af053fd44442105",
      "tree": "c49d9499aef6a4cebb2cce96c3c5a1377746c576",
      "parents": [
        "2ed613e5440b82e4f6586e54bc14338d51cb82e4",
        "99c9153c84a018072b65dda28f8c7c0c4a6eb646"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 01 12:41:00 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 01 12:43:06 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "99c9153c84a018072b65dda28f8c7c0c4a6eb646",
      "tree": "411867c22602caaca70c1ddb2ab6954f831e41e5",
      "parents": [
        "0e743cbc82e3cb9eeb7050ec11e17e701b2263dd",
        "d429ec0bd8cba4885b12054b63a44fe14df97afc"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 01 12:29:45 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 01 12:29:45 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "d429ec0bd8cba4885b12054b63a44fe14df97afc",
      "tree": "ca1ce046bdc64289597cbd022d096e06397cba60",
      "parents": [
        "c90ac5df947d3c86ca05e3de85f67d32ce4b9023"
      ],
      "author": {
        "name": "Guian Gumpac",
        "email": "guian.gumpac@gmail.com",
        "time": "Tue Sep 01 12:28:15 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Tue Sep 01 12:29:09 2026 -0700"
      },
      "message": "Cap and expire requests deferred during SASL authentication\n\nSaslAuthenticationHandler now bounds how many requests and how many\nrequest bytes a channel may retain while its SASL authentication is\npending, and closes a channel whose authentication does not complete in\ntime. A request beyond a limit is answered UNAUTHORIZED rather than\nretained, and can be resent once the channel is authenticated.\n\nAll three limits are configurable as authentication.maxDeferredRequests\n(64), authentication.maxPreAuthRetainedBytes (2097152) and\nauthentication.preAuthTimeout (30000 ms). Each must be greater than\nzero or Gremlin Server fails to start.\n\nMAX_REQUEST_DEFERRABLE_DURATION is now the default for\nauthentication.preAuthTimeout, and its value moved from 5 to 30 seconds.\nA request that a failed authentication attempt already answered is no\nlonger replayed when a later attempt on the same channel succeeds.\n\nAssisted-by: Claude Code:claude-opus-5"
    },
    {
      "commit": "2ed613e5440b82e4f6586e54bc14338d51cb82e4",
      "tree": "ee23d72aae9d807b5d2c571a0275f42e47e811a3",
      "parents": [
        "90abe4fe022fb2041fb8ba8196c475042722e493",
        "0e743cbc82e3cb9eeb7050ec11e17e701b2263dd"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 23:27:08 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 23:27:08 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n\nWebSocket authorization is omitted because master removed WebSocket\nsupport. Keeping the authenticated user request-local avoids shared\nmutable state.\n\nFrom the P.typeOf(Class) fix, port only the GraphSON 2/3 serializers with\nformat-specific tests. Those formats still support P through arbitrary\nobject IO and graph property values. Do not port the GraphBinary\nPSerializer or shared wire round-trip tests because GraphBinary 1 was\nremoved, GraphBinary 4 has no P type, and the remaining PSerializer is\nunreachable.\n\nDo not port the HTTP buffer-release changes because master\u0027s\nMessageToMessageDecoder and SimpleChannelInboundHandler implementations\nalready release inbound messages automatically.\n\nRestore changelog entries accidentally removed by later additions.\n\nAssisted-by: Codex:gpt-5.6-sol\n"
    },
    {
      "commit": "0e743cbc82e3cb9eeb7050ec11e17e701b2263dd",
      "tree": "de14e895a8cc6e844dd06f8a3814d83032f50c2e",
      "parents": [
        "bc9936c0de11002299960e1f6679d0446e29d0c0"
      ],
      "author": {
        "name": "Guian Gumpac",
        "email": "guian.gumpac@gmail.com",
        "time": "Mon Aug 31 16:30:15 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 22:20:54 2026 -0700"
      },
      "message": "Fixed P.typeOf()\n\nAssisted-by: Claude Opus 5\n"
    },
    {
      "commit": "bc9936c0de11002299960e1f6679d0446e29d0c0",
      "tree": "a50da7a7dbc106919fa0a2cdada52d9eea18769a",
      "parents": [
        "8e861e5f5b799053527a7fe0e07df74def4595c8",
        "c90ac5df947d3c86ca05e3de85f67d32ce4b9023"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 22:17:17 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 22:17:17 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "c90ac5df947d3c86ca05e3de85f67d32ce4b9023",
      "tree": "d3ccb7692e2b2c3967dad814bbd08be4e03187cf",
      "parents": [
        "2a30be2ba3462048e659932d8c07b3d1935dfbbd"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 20:10:35 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 22:08:46 2026 -0700"
      },
      "message": "Ensure buffer release in HTTP handlers CTR\n\nAssisted-by: Codex:gpt-5.6-sol\n"
    },
    {
      "commit": "2a30be2ba3462048e659932d8c07b3d1935dfbbd",
      "tree": "72231dacbd6232985a788f7d3b3bf9ec051b057b",
      "parents": [
        "eae093bbfdbaf599fff0e44cb7250bf360dba706"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Mon Aug 31 17:16:21 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 22:02:23 2026 -0700"
      },
      "message": "Isolate OLAP io() configuration per request\n\nOLAP io() now configures a per-request copy of the graph configuration rather than the shared, long-lived HadoopGraph configuration, so a request\u0027s reader/writer, file location, and with() options no longer persist on or race across the shared graph. Adds a protected VertexProgramStep.resolveComputeGraph seam that HadoopIoStep overrides to supply the request-local copy.\n\nAssisted-by: Claude Code:claude-opus-4-8\n"
    },
    {
      "commit": "eae093bbfdbaf599fff0e44cb7250bf360dba706",
      "tree": "2e71d2f21f41577b2474952c1fb69e56e396db1b",
      "parents": [
        "ed61d5787e27979dc59388c1b77b8623a103ae53"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 16:38:05 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 22:00:59 2026 -0700"
      },
      "message": "Isolate authenticated users in authorization handlers CTR\n\nAssisted-by: Codex:gpt-5.6-sol\n"
    },
    {
      "commit": "ed61d5787e27979dc59388c1b77b8623a103ae53",
      "tree": "7357d5a162f5fcdd18e292dbff5acbab98d43da6",
      "parents": [
        "baf2bd2fb287143a243039462542a9cd53c6fd30"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 13:12:41 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 21:58:45 2026 -0700"
      },
      "message": "Update threat model CTR\n"
    },
    {
      "commit": "90abe4fe022fb2041fb8ba8196c475042722e493",
      "tree": "04c38072152d4c044ab94fd5374ceb4d7b4cb22e",
      "parents": [
        "36597457a25c983789947e2f76aeba82e24e5db4",
        "8e861e5f5b799053527a7fe0e07df74def4595c8"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Mon Aug 31 19:05:28 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Mon Aug 31 19:05:28 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "8e861e5f5b799053527a7fe0e07df74def4595c8",
      "tree": "004384c72f83ec82dbd76ad38bc3ccf2b8d93e37",
      "parents": [
        "b644ac0c4c0666f20df0e6481d57d81fd386a0fa",
        "baf2bd2fb287143a243039462542a9cd53c6fd30"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Mon Aug 31 18:53:37 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Mon Aug 31 18:53:37 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "baf2bd2fb287143a243039462542a9cd53c6fd30",
      "tree": "08a9eb1e34c6a5f12a1349982a8b311d2c19c198",
      "parents": [
        "e34091379486fe86fa009438bd8d87bbedc249f9"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Mon Aug 31 18:16:49 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Mon Aug 31 18:16:49 2026 -0700"
      },
      "message": "CTR Bump Netty to 4.1.137.final\n"
    },
    {
      "commit": "36597457a25c983789947e2f76aeba82e24e5db4",
      "tree": "89acc3a0e99a86c1e960253925b1166dfb3fca4a",
      "parents": [
        "c2ab68a957227539858b0c14a98a240bbc78cb6d",
        "b644ac0c4c0666f20df0e6481d57d81fd386a0fa"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:51:52 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:51:52 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "b644ac0c4c0666f20df0e6481d57d81fd386a0fa",
      "tree": "5522e3e80414c493c3e938f0603b292883fbec97",
      "parents": [
        "35d8f49b6be07c767d8c73d4dab5b3918905b6f6",
        "e34091379486fe86fa009438bd8d87bbedc249f9"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:45:10 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:45:10 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "e34091379486fe86fa009438bd8d87bbedc249f9",
      "tree": "9afb2f97b471bbfb046d39fbd4c84d9b40361cf9",
      "parents": [
        "739d5c4a6fdeb4bfef62ebffaf933d5e8ca98d21"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:24:47 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:30:54 2026 -0700"
      },
      "message": "Require registered strategies in JavaTranslator CTR\n\nAssisted-by: Codex:gpt-5.6-sol\n"
    },
    {
      "commit": "c2ab68a957227539858b0c14a98a240bbc78cb6d",
      "tree": "5b63d24e3cc0eb6dcc3979bde946e7673803f062",
      "parents": [
        "405d53bb34e709d4d876b4ede504a5655c6c1eb0",
        "35d8f49b6be07c767d8c73d4dab5b3918905b6f6"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:08:04 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 11:08:04 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "35d8f49b6be07c767d8c73d4dab5b3918905b6f6",
      "tree": "153a71581cd7923bf4fb291741790f21815c71f6",
      "parents": [
        "82850f7783495e7b25d18a911a8c91410727a0bd",
        "739d5c4a6fdeb4bfef62ebffaf933d5e8ca98d21"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 10:17:23 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Mon Aug 31 10:17:23 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "739d5c4a6fdeb4bfef62ebffaf933d5e8ca98d21",
      "tree": "c4b2fed69614473e4d24e6eb6ab9dfd6bf6806da",
      "parents": [
        "ae53653365363cdcbdee8d6ffa20ca430dab3478"
      ],
      "author": {
        "name": "Guian Gumpac",
        "email": "guian.gumpac@gmail.com",
        "time": "Mon Aug 31 09:50:53 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 09:50:53 2026 -0700"
      },
      "message": "Restrict GraphSON 1.0 embedded-type deserialization (#3586)\n\nAssisted-by: Kiro: Claude Opus 4.8"
    },
    {
      "commit": "405d53bb34e709d4d876b4ede504a5655c6c1eb0",
      "tree": "39e065804fae444245a6334eb401820654ca779d",
      "parents": [
        "2f3ad0188aebd43218ef363c9a54a01f5b52fc0b",
        "82850f7783495e7b25d18a911a8c91410727a0bd"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Mon Aug 31 00:29:58 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Mon Aug 31 00:29:58 2026 -0700"
      },
      "message": "Merge remote-tracking branch \u0027origin/3.8-dev\u0027\n\n# Conflicts:\n#\tdocs/src/upgrade/release-3.7.x.asciidoc\n"
    },
    {
      "commit": "82850f7783495e7b25d18a911a8c91410727a0bd",
      "tree": "563466a29cd1b9d7b2756524e46742c196efc7ec",
      "parents": [
        "63d94c880d5020b14d4efaa77a60582a5e93c713",
        "ae53653365363cdcbdee8d6ffa20ca430dab3478"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Sun Aug 30 23:32:26 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Sun Aug 30 23:32:26 2026 -0700"
      },
      "message": "Merge remote-tracking branch \u0027origin/3.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "ae53653365363cdcbdee8d6ffa20ca430dab3478",
      "tree": "ff880b2055728f90339d0ca73216afd924511275",
      "parents": [
        "d557266e4046672cbb5ed98fab56135ab87c38d2"
      ],
      "author": {
        "name": "Yang Xia",
        "email": "55853655+xiazcy@users.noreply.github.com",
        "time": "Sun Aug 30 20:33:09 2026 -0700"
      },
      "committer": {
        "name": "Yang Xia",
        "email": "xiazcy@gmail.com",
        "time": "Sun Aug 30 23:30:11 2026 -0700"
      },
      "message": "Add Remote Restrictions in Hadoop/Spark OLAP\n\nRemotely submitted traversal may name only the built-in `gryo` and `graphson` formats, and its\n`io().with(key, value)` and `GraphComputer.configure(key, value)` options are no longer transferred automatically.\nNaming another reader or writer class, selecting `ScriptInputFormat` or `ScriptOutputFormat`, or setting a key that\nhas not been approved now fails with an error rather than loading the class or applying the key.\n\nTo keep using a custom format, a script format, or additional `with()` or `configure()` keys from a remote traversal,\nthey must be listed in the graph configuration.\n\nAssisted-by: Claude Code:claude-opus-4-8\n"
    },
    {
      "commit": "2f3ad0188aebd43218ef363c9a54a01f5b52fc0b",
      "tree": "6b6b0aae2a43a72960993d88f02419a2d5b2423e",
      "parents": [
        "a0c04d2139787baaa0b4ce1d4b07a891e2bf8088",
        "63d94c880d5020b14d4efaa77a60582a5e93c713"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Fri Aug 28 16:42:32 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Fri Aug 28 16:42:32 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "63d94c880d5020b14d4efaa77a60582a5e93c713",
      "tree": "b0ab180164b35dd4fd4e55e44890ff6b9c94bc24",
      "parents": [
        "f33bbcb13be0d46d10e16409362df0bca2a96b75",
        "d557266e4046672cbb5ed98fab56135ab87c38d2"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Fri Aug 28 16:09:29 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Fri Aug 28 16:09:29 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "d557266e4046672cbb5ed98fab56135ab87c38d2",
      "tree": "2cd164277ea28c644e317c6328b7687c3faac081",
      "parents": [
        "1f0ded919d0236123110d02e23f63b4bcb356e1e"
      ],
      "author": {
        "name": "Guian Gumpac",
        "email": "guian.gumpac@gmail.com",
        "time": "Fri Aug 28 16:07:47 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Fri Aug 28 16:08:41 2026 -0700"
      },
      "message": "Restrict Class value deserialization in GraphBinary, GraphSON, and Gryo\n\nAdded class registry that builds on top of the TraversalStrategy registry\n\nAssisted-by: Claude Opus 5"
    },
    {
      "commit": "a0c04d2139787baaa0b4ce1d4b07a891e2bf8088",
      "tree": "6b6b0aae2a43a72960993d88f02419a2d5b2423e",
      "parents": [
        "71d8528449d57fa7a6fcc3bc35722c87b198824b",
        "f33bbcb13be0d46d10e16409362df0bca2a96b75"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Thu Aug 27 13:04:21 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Thu Aug 27 13:25:41 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "f33bbcb13be0d46d10e16409362df0bca2a96b75",
      "tree": "51ae4380ff762e68bcebd10a19b1a07014fe15a3",
      "parents": [
        "696d8636c4c455ac423c56aac3a64fc2b3f3be4f",
        "1f0ded919d0236123110d02e23f63b4bcb356e1e"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Thu Aug 27 12:53:51 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Thu Aug 27 12:53:51 2026 -0700"
      },
      "message": "Merge branch \u00273.7-dev\u0027 into 3.8-dev\n"
    },
    {
      "commit": "1f0ded919d0236123110d02e23f63b4bcb356e1e",
      "tree": "a8cf7cf24eea892f333a91da85463494af9747e4",
      "parents": [
        "e678e22c4f1de2efe2e3d7be86eb6647afa42ac3"
      ],
      "author": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Thu Aug 20 11:23:48 2026 -0700"
      },
      "committer": {
        "name": "Cole Greer",
        "email": "cole@colegreer.ca",
        "time": "Thu Aug 27 12:53:23 2026 -0700"
      },
      "message": "CTR: Guard against non-terminating loops in TinkerGraph GraphSON deserialization\n\nAssisted-by: Kiro:claude-opus-5\n"
    },
    {
      "commit": "71d8528449d57fa7a6fcc3bc35722c87b198824b",
      "tree": "ddc647188fb1fe3086a3e290773e1b1b5e169172",
      "parents": [
        "193e67850678c3f8c29bb051e10ba18d4734524c",
        "696d8636c4c455ac423c56aac3a64fc2b3f3be4f"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Thu Aug 27 12:42:39 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Thu Aug 27 12:42:39 2026 -0700"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "696d8636c4c455ac423c56aac3a64fc2b3f3be4f",
      "tree": "2c9d9489967adaea435f8b39968b72876d771b34",
      "parents": [
        "1f6a462ac1549cab0b11834d79348717698fe259"
      ],
      "author": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Thu Aug 20 19:32:22 2026 -0700"
      },
      "committer": {
        "name": "Ken Hu",
        "email": "106191785+kenhuuu@users.noreply.github.com",
        "time": "Thu Aug 27 12:14:12 2026 -0700"
      },
      "message": "Restrict GraphSON2/3 traversal strategy deserialization\n\nAssisted-by: Codex:gpt-5.6-sol\n"
    },
    {
      "commit": "193e67850678c3f8c29bb051e10ba18d4734524c",
      "tree": "6024d91abe1fb4ddadbe7d058126f31be333569a",
      "parents": [
        "1a5391215afbd0c340dd0885fa4f5569273f0038"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 16:37:55 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 16:37:55 2026 +0000"
      },
      "message": "Add The Zoo to the Sample Data docs book\n\nDocuments the 4.0 zoo graph (schema in GQL Graph Types plus runnable examples showcasing multi-label vertices) and adds the missing treeprocessor test for the existing \u0027theZoo\u0027 executable-block alias.\n\nAssisted-by: Claude Code:claude-opus-4-8\n"
    },
    {
      "commit": "1a5391215afbd0c340dd0885fa4f5569273f0038",
      "tree": "6123aa0b798cc21e3f8b2c3479e0b5ca9953202d",
      "parents": [
        "1d8a5c825f6c7c16f4c73ec06a335296943802dd",
        "1f6a462ac1549cab0b11834d79348717698fe259"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 16:21:25 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 16:21:25 2026 +0000"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n"
    },
    {
      "commit": "1f6a462ac1549cab0b11834d79348717698fe259",
      "tree": "35baa5036c32ab1a79399b85eac27619a4931777",
      "parents": [
        "a080dfa6d5ff2e42b5fdc6028c0da69087a82afc"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 16:12:53 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 16:12:53 2026 +0000"
      },
      "message": "Add Air Routes to the Sample Data docs book\n\nDocuments the air routes graph (schema in GQL Graph Types plus runnable examples) and registers an \u0027airroutes\u0027 executable-block graph alias so its examples run against TinkerFactory.createAirRoutes() at build time.\n\nAssisted-by: Claude Code:claude-opus-4-8\n"
    },
    {
      "commit": "1d8a5c825f6c7c16f4c73ec06a335296943802dd",
      "tree": "ee77ec892f8e52ed8a1d6457ff2a46b05cabb4d6",
      "parents": [
        "b9afe89d0efaf392d6a48f4445dbe77e38e35e6d",
        "a080dfa6d5ff2e42b5fdc6028c0da69087a82afc"
      ],
      "author": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 15:48:36 2026 +0000"
      },
      "committer": {
        "name": "Stephen Mallette",
        "email": "stepmall@amazon.com",
        "time": "Wed Aug 26 15:48:36 2026 +0000"
      },
      "message": "Merge branch \u00273.8-dev\u0027\n\nResolved docs conflicts from the Sample Data book merge; fixed a dangling grateful-dead xref in the-traversal.asciidoc left by master\u0027s match() rewrite.\n\nAssisted-by: Claude Code:claude-opus-4-8\n"
    }
  ],
  "next": "a080dfa6d5ff2e42b5fdc6028c0da69087a82afc"
}
