)]}'
{
  "log": [
    {
      "commit": "4562f6b4c82ca22f6cc95e031c880cf86e60eeea",
      "tree": "9caed1ad5fe429029badb2ac943d8272c74af51b",
      "parents": [
        "f08c7ffb5f5c52509af6d8f2922b6fa04c6a316a"
      ],
      "author": {
        "name": "AzrMedit0x",
        "email": "161927884+aotenjou@users.noreply.github.com",
        "time": "Mon Oct 12 17:23:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 17:23:24 2026 +0800"
      },
      "message": "feat: Graph rag mvp (#876)\n\n* feat(ai): define retrieval api contract and configuration\n\n* fix(ai): harden retrieval api validation\n\n* feat(ai): add versioned ingestion metadata and import state model\n\n* test(ai): add deterministic retrieval fixture and HTTP contract baseline\n\n* chore(ai): preserve week1 retrieval baseline\n\n* feat(graphrag): add verified dataset source loader\n\n* chore(graphrag): remove generated Python caches\n\n* fix(graphrag): harden source verification and streaming\n\n* chore(graphrag): remove generated Python caches\n\n* fix(graphrag): verify staged downloads and strict JSON arrays\n\n* feat(graphrag): add deterministic document normalization and chunking\n\n* fix(graphrag): preserve source identity and Java-compatible offsets\n\n* feat(graphrag): build deterministic entity graph artifacts\n\n* fix(graphrag): preserve dataset evidence triples\n\n* fix(graphrag): make graph publication deterministic and staged\n\n* feat(ai): add deterministic Lucene BM25 index builder\n\n* feat(ai): add offline versioned vector index builder\n\n* feat(graphrag): complete week2 ingestion and readiness pipeline\n\n* fix(graphrag): harden ingestion and index artifact validation\n\n* test(ai): align index fixtures with chunking contract\n\n* feat(graphrag): publish validated retrieval artifacts\n\n* feat(ai): add budgeted hybrid recall with graph channel\n\n* feat(ai): extend retrieval contract for hybrid recall\n\n* docs(ai): document fixed hybrid recall MVP\n\n* fix(ai): make ingestion and artifact publication exclusive\n\n* fix(ai): secure and cache memory retrieval service\n\n* fix(ai): preserve retrieval provenance and trace identity\n\n* fix(graphrag): make dataset ingestion identities and spills deterministic\n\n* docs(ai): update MVP review verification\n\n* docs(ai): remove obsolete retrieval README files"
    },
    {
      "commit": "f08c7ffb5f5c52509af6d8f2922b6fa04c6a316a",
      "tree": "8eb425e451d27f84b1c45be609fbeffc5aade0fd",
      "parents": [
        "ad7dfabe336fac2d3c1895ea27cee16c642e2383"
      ],
      "author": {
        "name": "E2ern1ty",
        "email": "qihongcheng968@hellobike.com",
        "time": "Mon Oct 12 13:53:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 13:53:18 2026 +0800"
      },
      "message": "[ISSUE-856] test(ai): golden tests for keyword index tokenization, serialization and lifecycle (#877)\n\n* [ISSUE-856] test(ai): golden tests for keyword index tokenization, serialization and lifecycle\n\n* test: replace List.of with Arrays.asList for JDK 8 compilation"
    },
    {
      "commit": "ad7dfabe336fac2d3c1895ea27cee16c642e2383",
      "tree": "b7f489a3b3ed1d7f6b60a988999d31f20efcf6f1",
      "parents": [
        "3f11902d77bf8b5fab6c8d5da6ba005e8b0bf187"
      ],
      "author": {
        "name": "Sumit Soreng",
        "email": "88316155+Sumit2342@users.noreply.github.com",
        "time": "Mon Oct 12 08:14:47 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 10:44:47 2026 +0800"
      },
      "message": "[ISSUE-851] implemented VectorStore and VectorStoreMetadata interfaces with validation and persistence (#855)\n\n* [ISSUE-851] implemented VectorStore and VectorStoreMetadata interfaces with validation and persistence\n\n* feat(ai): implemented decoupled VectorStore SPI architecture\n\n* enhance validation and synchronization in vector store implementations"
    },
    {
      "commit": "3f11902d77bf8b5fab6c8d5da6ba005e8b0bf187",
      "tree": "748d42995684ae046d774569ed24d83857b02391",
      "parents": [
        "3ba68e00006856defbf3fc5cc58827709ab7ee66"
      ],
      "author": {
        "name": "E2ern1ty",
        "email": "qihongcheng968@hellobike.com",
        "time": "Mon Oct 12 10:39:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 10:39:46 2026 +0800"
      },
      "message": "[ISSUE-854] feat(ai): add NearestNeighborIndex contract with linear default adapter (#878)\n\n* [ISSUE-854] feat(ai): add NearestNeighborIndex contract with linear default adapter\n\n* test: replace List.of with Arrays.asList for JDK 8 compilation"
    },
    {
      "commit": "3ba68e00006856defbf3fc5cc58827709ab7ee66",
      "tree": "2d56df6c5863c8ecd1a549cf4248840c424a2484",
      "parents": [
        "4eb0a4882f0864af805739689da2ac48d4397291"
      ],
      "author": {
        "name": "E2ern1ty",
        "email": "qihongcheng968@hellobike.com",
        "time": "Sat Oct 10 12:29:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 12:29:08 2026 +0800"
      },
      "message": "fix(ci): remove duplicate geaflow-cluster dependency declaration in geaflow-mcp (#879)"
    },
    {
      "commit": "4eb0a4882f0864af805739689da2ac48d4397291",
      "tree": "0420569ec613be6040789364d27c917162bd2c74",
      "parents": [
        "53ba6ecf11a5283c8d9c89d46cc4002d47f1a7a4"
      ],
      "author": {
        "name": "AzrMedit0x",
        "email": "161927884+aotenjou@users.noreply.github.com",
        "time": "Mon Sep 14 15:37:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 15:37:17 2026 +0800"
      },
      "message": "feat(ai): define retrieval API v1 contract and configuration (#872)\n\n* feat(ai): define retrieval api contract and configuration\n\n* fix(ai): harden retrieval api validation\n\n* Add validation for required budget values\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix(ai): harden retrieval json boundary\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "53ba6ecf11a5283c8d9c89d46cc4002d47f1a7a4",
      "tree": "41b0fc62e3ada7098a6a308cbbd5812a26d31e9e",
      "parents": [
        "ce4830bd77b555e03257209fc7a320f0661d835b"
      ],
      "author": {
        "name": "AzrMedit0x",
        "email": "161927884+aotenjou@users.noreply.github.com",
        "time": "Thu Sep 10 16:42:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 16:42:31 2026 +0800"
      },
      "message": "feat(ai): introduce retrieval domain models and validation (#869)\n\n* feat(ai): add retrieval domain models\n\n* feat(ai): add retrieval model codec and validation\n\n* test(ai): cover retrieval domain models\n\n* Enhance equality checks for SourceDocument\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* fix(ai): preserve identity for unreferenced evidence\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "ce4830bd77b555e03257209fc7a320f0661d835b",
      "tree": "beaa70d493ef6c5b58915c7367a196efd783b60b",
      "parents": [
        "39dc3e624c04297e7559aa4bc699df055fabafe5"
      ],
      "author": {
        "name": "Gabriel Baldez",
        "email": "130607246+GabrielBBaldez@users.noreply.github.com",
        "time": "Wed Sep 09 04:39:02 2026 -0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 15:39:02 2026 +0800"
      },
      "message": "Add a ClickHouse connector with batched writes (#810)\n\n* Add a ClickHouse connector with batched writes\n\n* Address review: fix partition stride, harden batch flush/close and result set"
    },
    {
      "commit": "39dc3e624c04297e7559aa4bc699df055fabafe5",
      "tree": "5e045d73ae8eb9cf38423f5e38457270884734d0",
      "parents": [
        "f4347728f3106d10a889664b276a04ff88c032b6"
      ],
      "author": {
        "name": "AzrMedit0x",
        "email": "161927884+aotenjou@users.noreply.github.com",
        "time": "Tue Sep 08 17:37:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 17:37:40 2026 +0800"
      },
      "message": "feat: Add subgraph sampling as reusable multi-hop subgraph sampling foundation (#831)\n\n* feat(sampling): add bounded one-hop neighbor sampling\n\n* feat(sampling): assemble layered sampled subgraphs\n\n* feat(sampling): add iterative multi-hop protocol\n\n* fix(sampling): track edge targets in dynamic cache\n\n* feat(sampling): integrate sampling with DSL runtime\n\n* refactor(sampling): remove duplicate one-degree sampling entrypoint\n\n* refactor(sampling): reduce subgraph sampling implementation\n\n* test(sampling): add end-to-end subgraph sampling coverage\n\n* fix(sampling): stabilize neighbor sampling semantics\n\n* fix(operator): avoid evolving remote edge targets"
    },
    {
      "commit": "f4347728f3106d10a889664b276a04ff88c032b6",
      "tree": "edde7691b1373169a76c241576893457b5dd4333",
      "parents": [
        "47a1b2e10ccb9bcad325b218dc883db062815ad8"
      ],
      "author": {
        "name": "E2ern1ty",
        "email": "qihongcheng968@hellobike.com",
        "time": "Tue Sep 08 17:37:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 17:37:09 2026 +0800"
      },
      "message": "[ISSUE-830] Fix inverted embedding value filter that dropped digit-free text (#832)\n\n* fix(ai): keep text without digits embeddable\n\nThe value filter feeding the embedding store dropped ordinary prose and kept\ndigit-only noise, so an embedding store silently produced nothing for any text\nthat happened to contain no digit. No request was issued, no error was raised,\nand the entity was still registered as indexed with an empty vector list, which\nmakes it unrecallable.\n\nSearchUtils.isAllAllowedChars returned on the first character *inside* the\nignorable set instead of the first one outside it, which is the negation of both\nits name and its Javadoc. Reproduced on master with an unusable ModelConfig:\n\"no digits here at all\" completes without contacting a model and writes zero\nindex lines while logging \"Successfully added 1 new index items\", whereas the\nsame text with a digit appended does attempt the request.\n\n- Correct the predicate and rename it to isAllIgnorableChars. Renaming rather\n  than fixing in place is deliberate: a caller depending on the old meaning now\n  fails to compile instead of silently flipping behaviour. Null and empty become\n  ignorable, since callers use this to decide what to skip and there is nothing\n  in them to index. Both call sites are in SubgraphSemanticPromptFunction and\n  read the same as before, `!isAllIgnorableChars(value)`.\n- Stop reporting entities with no embeddable text as indexed. indexBatch now\n  warns with a count and an example key, and the summary line reports how many\n  entities actually hold vectors rather than how many were queued. Silence was\n  half of this defect.\n\nMeasured on the LDBC test dataset before changing anything: of 168 entities,\nthe set wanting vectors is the same before and after the fix, and none of them\nare absent from the committed index file. LDBC values mix letters and digits, so\nboth the old and the new predicate keep them; the two differ only on values that\nare entirely digits or punctuation, and on values that are entirely letters. The\ncommitted embedding index therefore needs no regeneration and GraphMemoryTest\npasses unchanged.\n\nTests in IgnorableTextFilterTest, 7 cases: the predicate over values that do and\ndo not carry meaning, the property that keeping a value must not depend on it\ncontaining a digit, verbalization of digit free vertex and edge text, and the\nstore either attempting a request or correctly declining to. All 7 fail against\nthe previous behaviour.\n\n* test(ai): pin down the index over successive runs, and name the empty case\n\nReview on #832 raised the concern that an entity holding no embeddable text is\nregistered in indexStoreMap with an empty list, and that a later run would skip it\nthrough the containsKey check, so an entity whose value later gains meaning would\nnever be embedded.\n\nThat does not happen, and the reason is worth a test rather than an argument.\ninitStore assigns a fresh indexStoreMap on every call and repopulates it from the\nindex file alone, and nothing is written to that file for an entity with no text. A\nlater run therefore sees the entity as unseen and embeds it as soon as its value\ncarries meaning. The registration is still doing work within a run: scanEdge returns\nan edge from both of its endpoints, so the empty entry is what stops the second visit\nfrom verbalizing it again.\n\nEmbeddingIndexLifecycleTest covers three successive runs against a local embeddings\nendpoint, so the request and response serialization, the on-disk file and the decision\nabout what to embed are all real, with no model service involved. A value carrying\nmeaning is embedded and persisted while a date-only value is not; an unchanged graph\non a second run issues no request and restores its vectors from the file; and when the\ndate is replaced by meaningful text, that entity alone is embedded, the request carries\nonly its text, and the record is appended.\n\nAlso from review: getEntityIndex returned an empty list both for an entity that was\nchecked and held nothing and for an entity nobody has looked at yet. It still returns\nthe same value, since callers want vectors either way, but the first case now says so\nat debug level instead of being silent."
    },
    {
      "commit": "47a1b2e10ccb9bcad325b218dc883db062815ad8",
      "tree": "2e8c4dddc02ded73f2fa1dfe493f737dc6bbd9bc",
      "parents": [
        "3f73eb5527530d28dd1d3bd7d04b029247907a9d"
      ],
      "author": {
        "name": "Heracles",
        "email": "2678785492@qq.com",
        "time": "Sat Aug 22 10:32:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 22 10:32:50 2026 +0800"
      },
      "message": "[ISSUE-796] Clean up PartitionType TODOs in rocksdb store module (#823)\n\n* [ISSUE-796] Clean up PartitionType TODOs in rocksdb store module\n\nThe `PartitionType` enum in the rocksdb store carried two stale `TODO`s:\n\n- `// TODO: Support dt partition` on `DT` — DT partition is already\n  implemented (`SyncGraphDtPartitionProxy`, dispatched by `ProxyBuilder`),\n  so the TODO is removed.\n- `// TODO: Support label dt partition` on `DT_LABEL` — this combination\n  has no proxy implementation. Configuring it previously fell through to a\n  generic \"unexpected partition type\" error. `ProxyBuilder.build` now\n  rejects `DT_LABEL` explicitly with a message that names the unsupported\n  type, and the TODO is replaced with a NOTE documenting the gap.\n\nAdds `PartitionTypeTest` covering the enum lookup/flags, the explicit\n`DT_LABEL` rejection, and that `DT` is still dispatched to a real proxy.\nThe test targets `ProxyBuilder` directly so it does not depend on opening\na native RocksDB instance.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\n* [ISSUE-796] Address review: fail fast on DT_LABEL before opening RocksDB\n\n- Extract ProxyBuilder.checkPartitionTypeSupported and call it in\n  StaticGraphRocksdbStoreBase.init before super.init() opens the RocksDB\n  instance, so an unsupported partition.type fails fast without leaving a\n  half-initialized store on disk.\n- Rewrite the DT-dispatch test to mock RocksdbClient/encoder and assert the\n  returned proxy is a SyncGraphDtPartitionProxy, instead of inferring dispatch\n  from an incidental NullPointerException.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "3f73eb5527530d28dd1d3bd7d04b029247907a9d",
      "tree": "c0213f6b95d7e89a8e560a5ddc7952d68623c2e9",
      "parents": [
        "9f8d8d6f72f23e9640f116c313f11a007145c01f"
      ],
      "author": {
        "name": "Heracles",
        "email": "2678785492@qq.com",
        "time": "Mon Aug 10 10:59:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 10:59:04 2026 +0800"
      },
      "message": "[ISSUE-358] Implement ISO-GQL labeled predicate (#824)\n\n* [ISSUE-358] Implement ISO-GQL labeled predicate\n\nAdds the ISO-GQL \u003clabeled predicate\u003e (ISO/IEC 39075 Section 19.9), which\ntests whether a graph element (vertex or edge) carries a given label.\n\nFollowing the pattern of the already-merged source/destination predicate\n(#366), this is implemented as built-in UDFs rather than a grammar change:\n\n- `IS_LABELED(element, label)` — TRUE if the element has the label.\n- `IS_NOT_LABELED(element, label)` — the negation.\n\nBoth follow ISO-GQL three-valued logic: a null element or null label\nyields Unknown (null). The shared logic lives in\n`LabeledPredicateFunctions` (geaflow-dsl-common); the UDFs delegate to it\nand are registered in `BuildInSqlFunctionTable`.\n\nTests:\n- `LabeledPredicateFunctionsTest` (geaflow-dsl-common) unit-tests the\n  logic directly: vertex/edge labels, negation, three-valued null\n  handling, and rejection of non-graph-element operands.\n- `GQLLabeledPredicateTest` (geaflow-dsl-runtime) is an end-to-end\n  `.sql`/`.txt` case over the modern graph; expected outputs were\n  computed by hand from the graph data.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\n* [ISSUE-358] Address review: inline labeled predicate logic into UDFs\n\nThe geaflow-dsl-common/function package is for general-purpose interfaces,\nso the labeled predicate logic should live in the UDFs rather than a separate\nhelper class there.\n\n- Inline the label-matching and three-valued-null logic (plus a private\n  getLabel helper) directly into IsLabeled; IsNotLabeled delegates to an\n  IsLabeled instance and negates, keeping label extraction in one place.\n- Remove LabeledPredicateFunctions and its test from geaflow-dsl-common.\n- Move the unit test to geaflow-dsl-plan as LabeledPredicateTest (same\n  udf/table/other package as the UDFs, matching PropertyExistsTest), testing\n  through the UDF eval methods.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "9f8d8d6f72f23e9640f116c313f11a007145c01f",
      "tree": "2764e48b999be12cc0722fef270d43dd59475cd8",
      "parents": [
        "958b8039b27887b995334e120ac21188a7ea2cf3"
      ],
      "author": {
        "name": "Piotr P. Karwasz",
        "email": "piotr@github.copernik.eu",
        "time": "Thu Aug 06 08:14:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 14:14:44 2026 +0800"
      },
      "message": "docs: route vulnerability reports to the ASF security team (#828)\n\nSECURITY.md directed reporters to dev@geaflow.apache.org, a public\nmailing list, which would disclose an unfixed vulnerability at the\nmoment it is reported.\n\nPoint reporters at security@apache.org instead and link to the ASF\nreporting and handling policies. Add the ASF submission conventions\n(plaintext, one finding per e-mail, [SECURITY] subject prefix).\n\nAssisted-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "958b8039b27887b995334e120ac21188a7ea2cf3",
      "tree": "a6277cb8c530a8ee5350532ec38c220a5ab8ceb2",
      "parents": [
        "6b79587f48eecc7eeda484c5dde73df42d20f962"
      ],
      "author": {
        "name": "Power John",
        "email": "johntomcat7408@gmail.com",
        "time": "Tue Aug 04 13:58:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 13:58:07 2026 +0800"
      },
      "message": "feat(dsl): add MongoDB connector (#816)\n\n* feat(dsl): add MongoDB connector\n\n* fix(dsl): improve MongoDB pagination and error reporting"
    },
    {
      "commit": "6b79587f48eecc7eeda484c5dde73df42d20f962",
      "tree": "f4137e5fc51b798ed7243ae0880f648579750bef",
      "parents": [
        "ece614a76d279067a85702ff67bfe560ae86530a"
      ],
      "author": {
        "name": "Power John",
        "email": "johntomcat7408@gmail.com",
        "time": "Mon Aug 03 20:13:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 20:13:04 2026 +0800"
      },
      "message": "test(cluster): avoid uncaught system exit exceptions (#821)"
    },
    {
      "commit": "ece614a76d279067a85702ff67bfe560ae86530a",
      "tree": "480fac8fb58bb64de8d59e9e1879bdaefef0a95c",
      "parents": [
        "6312f97d83c1f992ac52427b08380d596954fdf8"
      ],
      "author": {
        "name": "Power John",
        "email": "johntomcat7408@gmail.com",
        "time": "Mon Aug 03 19:58:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 19:58:40 2026 +0800"
      },
      "message": "test(dsl): add modern graph algorithm cases (#815)"
    },
    {
      "commit": "6312f97d83c1f992ac52427b08380d596954fdf8",
      "tree": "f42b58709573214bec66dffd9ede69805c40cac2",
      "parents": [
        "7847fa2514d5286fc7c12ce11b8a1b05387249e6"
      ],
      "author": {
        "name": "YinZiBenRun",
        "email": "yinzibenrun@gmail.com",
        "time": "Tue Jul 28 10:35:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 10:35:21 2026 +0800"
      },
      "message": "feat: add date functions QUARTER and DAY_OF_YEAR (#814)\n\n* feat: add date functions QUARTER and DAY_OF_YEAR\n\nAdd two new date UDFs:\n- quarter(date): returns the quarter of the year (1-4)\n- day_of_year(date): returns the day of the year (1-366)\n\nBoth follow the existing WeekOfYear pattern using Joda-Time.\nRegistered in BuildInSqlFunctionTable.\nTests cover quarter boundaries, leap years, year boundaries, and null inputs.\n\nCloses #791\n\n* test: add end-to-end SQL test for QUARTER/DAY_OF_YEAR\n\nThe existing UDFDateTest verifies the Java eval() methods directly but\ndoes not exercise SQL registration, overload resolution, type inference,\nor runtime invocation. Add an E2E SQL test via QueryTester that runs the\nfunctions through the full query pipeline.\n\nCovers quarter boundaries (Q1-Q4), leap-year day_of_year values\n(2020-12-31\u003d366, 2020-02-29\u003d60), non-leap year (2019-12-31\u003d365), and\nyear start/end boundaries.\n\nVerified locally: Tests run: 1, Failures: 0, Errors: 0.\n\n---------\n\nCo-authored-by: 1+5 \u003c2932419272@qq.com\u003e"
    },
    {
      "commit": "7847fa2514d5286fc7c12ce11b8a1b05387249e6",
      "tree": "a5eacc9876606d61acfa4ebd96c6449400286b45",
      "parents": [
        "1fc3f0f1a5640c9d869b10d9e16c0a00442dc542"
      ],
      "author": {
        "name": "E2ern1ty",
        "email": "1144902127@qq.com",
        "time": "Sun Jul 26 11:50:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:50:04 2026 +0800"
      },
      "message": "[ISSUE-817] Add geaflow-dsl-connector-doris (Stream Load sink + partitioned source) (#819)\n\n* [ISSUE-817] Add geaflow-dsl-connector-doris (Stream Load sink + partitioned source)\n\n- Sink writes to Doris via Stream Load: buffer rows in write(), flush a whole\n  batch on row/byte threshold or window finish(), giving much higher throughput\n  than row-by-row JDBC INSERT. CSV payload by default, JSON supported.\n- Source reads through the MySQL protocol with parallel partitioned reads.\n- SPI registration + parent/aggregation pom wiring + runtime dependency.\n- CN + EN docs and examples.\n- Unit tests and a Testcontainers integration test with a throughput benchmark\n  (self-skips when Docker/host-networking is unavailable).\n\n* [ISSUE-817] Make Doris integration test opt-in to keep CI green\n\nThe Doris Testcontainers integration test previously ran whenever Docker was\navailable on a Linux host, which is exactly the case on GitHub CI runners, so\nit would try to pull the multi-GB Doris image and start a container during a\nnormal \u0027mvn test\u0027. Make it opt-in: it only runs with -Ddoris.it.enabled\u003dtrue\nor when an external Doris is provided via -Ddoris.it.fenodes/-Ddoris.it.jdbcUrl,\nand otherwise skips. Docs updated accordingly.\n\n* [ISSUE-817] Address review: serialization safety, idempotent close, FE failover\n\nAddress the maintainer\u0027s review points on the Doris connector:\n- serialization: default to json (Gson with serializeNulls + disableHtmlEscaping)\n  so newlines, quotes, backslashes, unicode, null and empty strings round-trip\n  correctly; document csv as a no-escape plain-split option.\n- sink flush: flushBuffer stays safe on an empty buffer and is idempotent on\n  finish(); close() now flushes the remaining buffer and is safe on repeated\n  calls and when the client is not initialized.\n- partition logic: clamp partition.num to at least 1 instead of throwing; the\n  first partition already covers rows whose partition column is entirely NULL.\n- label: kept globally unique via UUID.\n- FE failover: DorisStreamLoad now takes the full FE list and rotates to the\n  next FE on a failed request (retries at least once per FE).\n- integration tests: add table-not-found, FE-failover and full data-type\n  round-trip fidelity cases (still opt-in). Add unit tests for special-char /\n  null / empty-string serialization and multi-FE url building.\n\n* [ISSUE-817] Do not bundle the GPL MySQL driver; minor cleanup\n\n- Make mysql-connector-java a test-scope dependency instead of compile, so the\n  GPL-licensed driver is not shipped in the distribution (matching\n  geaflow-dsl-connector-jdbc, which bundles no driver). The source only uses the\n  standard java.sql API and loads the driver by name, so users must provide a\n  MySQL-protocol driver on the runtime classpath; documented in CN + EN docs.\n- Remove the unused COLON constant.\n\nVerified: checkstyle 0 violations, RAT 0 unapproved (14 files), unit tests\n23 run / 0 failed / 7 skipped (integration tests are opt-in).\n\n* [ISSUE-817] Add real benchmark numbers verified against a local Doris\n\nVerified the connector end to end against a real single-node\napache/doris:3.0.8-all: the sink (Stream Load), the partitioned source, FE\nfailover, table-not-found and full data-type round-trip (newlines, quotes,\nbackslashes, chinese, emoji) integration tests all pass. Benchmark: Stream Load\nloaded 500 rows in ~91ms (~5500 rows/s) vs ~11335ms (~44 rows/s) for row-by-row\nJDBC INSERT, ~125x faster; 2000 rows via Stream Load took only ~97ms. Recorded\nthe reference numbers in the CN + EN docs.\n\n* [ISSUE-817] Address PR review: idempotent label, partition strategies, timeouts\n\n- Label/idempotency: generate one label per batch and reuse it across all\n  retries and FE failover attempts (Doris loads a label at most once); treat\n  \u0027Label Already Exists\u0027 on retry as success to avoid duplicate writes; log the\n  label on failures/retries. Documented the write semantics.\n- Partition strategies: add source.partition.mode (range/custom). \u0027custom\u0027 takes\n  semicolon-separated WHERE predicates (source.partition.clauses), one partition\n  per predicate, supporting non-numeric/skewed columns and arbitrary conditions.\n  Documented the performance impact of unindexed/skewed partition columns and\n  recommended indexed, evenly-distributed columns.\n- Timeouts: read/write timeout is configurable and its default is raised to 60s\n  to cover large-batch uploads; documented tuning guidance.\n- Tests: add DorisTableSourceTest covering single/range/custom partition listing."
    },
    {
      "commit": "1fc3f0f1a5640c9d869b10d9e16c0a00442dc542",
      "tree": "72f4ad8d170e960cdeb8ea7e57ea9abe0dca74dc",
      "parents": [
        "f8be72222ee1ddbbf66a87fc351cd727a4d13b03"
      ],
      "author": {
        "name": "YinZiBenRun",
        "email": "yinzibenrun@gmail.com",
        "time": "Fri Jul 24 16:23:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 16:23:12 2026 +0800"
      },
      "message": "feat: add math functions SIGN/CBRT/TRUNC (#813)\n\n* feat: add math functions SIGN/CBRT/TRUNC\n\n- sign(x): returns -1 for negative, 0 for zero, 1 for positive\n- cbrt(x): returns the cube root of a number\n- trunc(x, d): truncates x to d decimal places (not round)\n\nAdd UDF classes (Sign.java, Cbrt.java, Trunc.java) and register\nthem in BuildInSqlFunctionTable. Add cbrt/trunc static methods\nto GeaFlowBuiltinFunctions. Add unit tests covering negative,\nzero, and null edge cases.\n\nResolves #790\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* test: add end-to-end SQL test for SIGN/CBRT/TRUNC\n\nThe existing MathUdfTest verifies the Java eval() methods directly but\ndoes not exercise SQL registration, overload resolution, type inference,\nor runtime invocation. Add an E2E SQL test via QueryTester that runs the\nfunctions through the full query pipeline.\n\nCovers:\n- SQL registration in BuildInSqlFunctionTable (sign/cbrt/trunc)\n- Overload resolution: sign(Double/Long/Integer), trunc(Double,Long/\n  Integer, with and without scale)\n- Type inference: each overload returns a distinct type, propagated\n  un-cast to the sink schema\n- Runtime invocation through the query engine\n- Null-free boundary cases (zero, negative, positive, integer doubles)\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* test: make E2E SQL test runnable on Windows\n\nUse a relative forward-slash sink path instead of the ${target}\nplaceholder. QueryTester rewrites ${target} to an absolute path that on\nWindows contains backslashes; injected into a SQL string literal those\nbackslashes get escaped (\\t -\u003e tab, \\U/\\s/\\g dropped) and the sink path\nis corrupted, so the test fails on Windows. A relative path avoids the\nrewrite and resolves to the same target/ directory checkSinkResult()\nreads, on both Windows and Linux.\n\nAlso align the expected output with the real Calcite overload resolution\nbehaviour: sign(bigint)/sign(int) are promoted to double and match\nsign(Double) (Long/Integer overloads not selected), while trunc(bigint)\nand trunc(int) select the Long/Integer overloads. This type-inference\ndifference is exactly what an end-to-end SQL test surfaces.\n\nVerified locally: Tests run: 1, Failures: 0, Errors: 0.\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: 1+5 \u003c2932419272@qq.com\u003e\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "f8be72222ee1ddbbf66a87fc351cd727a4d13b03",
      "tree": "eda62907104453570ecd9c8c26d79133232ae0d7",
      "parents": [
        "7cb33d923a1e51738ca1977a0882006809d0f676"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Fri Mar 20 15:46:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 15:46:08 2026 +0800"
      },
      "message": "fix(ci): format build and test command for better readability (#763)"
    },
    {
      "commit": "7cb33d923a1e51738ca1977a0882006809d0f676",
      "tree": "a85828d829cc3cdaf8e50ed0b4130f9a2ec0bc05",
      "parents": [
        "1bc9790dee999307dd56f1cea6c4deea887b620f"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Thu Mar 19 10:41:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 10:41:46 2026 +0800"
      },
      "message": "fix:Add check for empty search results to prevent array out of bounds (#769)"
    },
    {
      "commit": "1bc9790dee999307dd56f1cea6c4deea887b620f",
      "tree": "67879e2765a50ef57e573e07505198cc922c308a",
      "parents": [
        "fb294b07a05b436998c6e775e5b1e05c53dd6c91"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Thu Mar 19 10:41:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 10:41:35 2026 +0800"
      },
      "message": "docs: add CONTRIBUTING.md to outline contribution guidelines (#765)"
    },
    {
      "commit": "fb294b07a05b436998c6e775e5b1e05c53dd6c91",
      "tree": "9036372662d95291dd9a4df32c6ff3d54b8cbef7",
      "parents": [
        "6f83cdf6fd5a78830950c4ada26b5984ada8180a"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Fri Mar 13 16:48:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 16:48:39 2026 +0800"
      },
      "message": "fix: add runtime checks for graph accessors in multiple classes (#774)"
    },
    {
      "commit": "6f83cdf6fd5a78830950c4ada26b5984ada8180a",
      "tree": "9d90ce38235b616371c36ee363209e382698d935",
      "parents": [
        "a9d9e34f965a521f2bbe99fa5b5b0248ea98d60f"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Fri Mar 13 16:47:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 16:47:54 2026 +0800"
      },
      "message": "fix(pom): exclude lucene-core from elasticsearch client dependency and add specific version (#778)"
    },
    {
      "commit": "a9d9e34f965a521f2bbe99fa5b5b0248ea98d60f",
      "tree": "9b0383bc78a7ecb02a0be4714ef238f4f3e5d465",
      "parents": [
        "7cd1ff25e386558aa17df32a95b1706a76f1cf7d"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Thu Mar 12 20:53:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 20:53:40 2026 +0800"
      },
      "message": "feat: define BYTES_PER_KB constant for consistent byte-to-kilobyte conversions in metrics classes (#770)"
    },
    {
      "commit": "7cd1ff25e386558aa17df32a95b1706a76f1cf7d",
      "tree": "dcbd62e43359ccb8bdadd18689587fe3327b2cca",
      "parents": [
        "fb1562298b263433dfe5925ba0cb0d8add3de811"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Tue Mar 10 11:04:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 11:04:43 2026 +0800"
      },
      "message": "fix(math): handle null and empty inputs in average methods (#760)"
    },
    {
      "commit": "fb1562298b263433dfe5925ba0cb0d8add3de811",
      "tree": "d349ad959d1a817952e8c8f9b37f6f8c83719ae7",
      "parents": [
        "332d7fd153dc37671edec87d1eb641766f85166d"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Mon Mar 09 10:26:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 10:26:31 2026 +0800"
      },
      "message": "Fix raw type usage: replace Collections.EMPTY_LIST with Collections.emptyList() (#766)"
    },
    {
      "commit": "332d7fd153dc37671edec87d1eb641766f85166d",
      "tree": "5f62fb931374a908fca2c4bba774152b56925935",
      "parents": [
        "f9b985289addead225adff2d61991b5fb82e2998"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Mon Mar 09 10:23:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 10:23:05 2026 +0800"
      },
      "message": "fix: update RocksdbClient to use getDeclaredConstructor for options instantiation (#749)"
    },
    {
      "commit": "f9b985289addead225adff2d61991b5fb82e2998",
      "tree": "a3551215e4c3c0633c9bce99d5fada83073cd54d",
      "parents": [
        "b69c952b8d0734a5ca4e79c18d369d9ec1f28ef9"
      ],
      "author": {
        "name": "kitalkuyo-gita",
        "email": "windwheel@sina.cn",
        "time": "Fri Mar 06 13:43:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 13:43:47 2026 +0800"
      },
      "message": "feat: support louvain algorithm (#689)\n\n* support louvin algrothim\n\n* bugfix: add louvin function register\n\n* chore: add except result\n\n* refactor: add commuity weight compute"
    },
    {
      "commit": "b69c952b8d0734a5ca4e79c18d369d9ec1f28ef9",
      "tree": "1822df6ee455a98382f0d3594001316914a40f6a",
      "parents": [
        "0eb38df90b4e8008586dae61c78497c1eb1a260b"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Thu Mar 05 10:12:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 10:12:54 2026 +0800"
      },
      "message": "fix: improve error handling in searchVectorIndex method (#750)\n\n* fix: ensure IndexReader is properly closed in searchVectorIndex method\n\n* fix: use try-with-resources approach to avoiding exception masked"
    },
    {
      "commit": "0eb38df90b4e8008586dae61c78497c1eb1a260b",
      "tree": "dcf9a9f05ce14a06d217694f31aed509a9c1cfc7",
      "parents": [
        "ace07624e99c6f98ee7d0e6d4e22271a973ff343"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Tue Mar 03 10:08:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 03 10:08:38 2026 +0800"
      },
      "message": "fix: correct typos in log messages and comments across multiple files (#752)\n\n"
    },
    {
      "commit": "ace07624e99c6f98ee7d0e6d4e22271a973ff343",
      "tree": "52de2950cc6c709a1ba77b6ad717723e687bd72a",
      "parents": [
        "c43c3ac8ef5c5651697f90168595aad7a173e88b"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Mon Mar 02 10:18:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 10:18:29 2026 +0800"
      },
      "message": "refactor(encoder): extract varint constants to improve readability (#744)\n\n"
    },
    {
      "commit": "c43c3ac8ef5c5651697f90168595aad7a173e88b",
      "tree": "99492a56fe2b03a838cf284a47ffe17eb326be72",
      "parents": [
        "dad821cb8431364c6c97d354763213928089f8e8"
      ],
      "author": {
        "name": "Jason Yao",
        "email": "libevent@yeah.net",
        "time": "Sat Feb 28 13:43:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 28 13:43:58 2026 +0800"
      },
      "message": "docs: update repository references from tugraph-family to apache (#746)\n\nUpdate all references in README files to point to the new Apache repository location"
    },
    {
      "commit": "dad821cb8431364c6c97d354763213928089f8e8",
      "tree": "b858b09bd24ae522a94657d1ae4bcf1e1bcf09a0",
      "parents": [
        "38dabca238cff216893999eb95ecd53ba9457199"
      ],
      "author": {
        "name": "Appointat",
        "email": "65004114+Appointat@users.noreply.github.com",
        "time": "Thu Feb 26 10:31:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 10:31:18 2026 +0800"
      },
      "message": "feat(ai): add CASTS for GeaFlow reasoning ability (#737)\n\n* feat: add CASTS for LLM-Graph based reasoning\n\n* feat: enhance simulation evaluation with metadata and improve configuration settings\n\n* feat: enhance LLM Oracle and Simulation Engine with Debug Logging and Improved Decision Validation\n\n* feat(reasoning): implement canonical storage with abstract matching for structural signatures\n\n* chore: update type hints to use List and improve code formatting across multiple files\n\n* feat: enhance LLM Oracle with starting node type recommendations\n\n* feat: implement simplePath() cycle prevention with LLM-driven path quality control\n\nAdd native Gremlin simplePath() support to prevent pathological cycles in graph traversals. The implementation uses LLM-guided decision-making and AIMD confidence penalties rather than hard-coded restrictions, staying true to the system\u0027s learning philosophy.\n\nKey changes:\n- Add simplePath() step to Gremlin state machine for V, E, and P states\n- Implement per-request path history tracking in TraversalExecutor\n- Add cycle detection with configurable threshold and penalty modes\n- Enhance LLM Oracle prompts to recommend simplePath() for exploration goals\n- Add recent decision history context to improve LLM decision quality\n- Update configuration with CYCLE_PENALTY and CYCLE_DETECTION_THRESHOLD settings\n- Document design rationale and rejected alternatives in architecture.md\n- Add test case for simple path traversal validation\n\n* feat(metrics): add rollback_steps method to MetricsCollector\n\n* refactor: refactor metrics handling and evaluation logic in CASTS simulations\n\n- Updated MetricsCollector to use Optional types for match_type, parent_node, parent_step_index, edge_label, sku_id, and decision parameters.\n- Enhanced EVALUATOR documentation to clarify evaluation phases and scoring mechanisms, including coverage rewards and penalties for cache misses.\n- Modified test cases in test_execution_lifecycle.py to align with new metrics structure and added tests for simple path execution.\n- Improved test coverage in test_gremlin_step_state_machine.py and test_lifecycle_integration.py to validate state transitions and integration with Gremlin state machine.\n- Refined threshold calculation tests to ensure monotonicity and boundary conditions.\n- Added dynamic execution environment constraints in documentation to clarify step legality in relation to current state and schema.\n\n* refactor: refactor code structure for improved readability and maintainability\n\n* refactor: move CASTS into geaflow-ai operator\n\n* reafactor: refactor type hints across multiple modules to use built-in generic types\n\n* refactor: update type hints for GremlinState and PathEvaluator for improved clarity\n\n* refactor: update imports to use StrategyCache from strategy_cache module\n\n* refactor: update module documentation to improve clarity and consistency\n\n* fix the comments\n\n* refactor: remove unnecessary blank lines in embedding.py and add a blank line in visualizer.py for consistency\n\n* fix: remove --frozen flag from uv sync commands in README and CI workflow"
    },
    {
      "commit": "38dabca238cff216893999eb95ecd53ba9457199",
      "tree": "0d0e47b3ec7ef2345e119bd3d7f38e9ea6752962",
      "parents": [
        "72be83ba3d035e93478cd85bb34526071789a125"
      ],
      "author": {
        "name": "Weichen Zhao",
        "email": "61238101+SeasonPilot@users.noreply.github.com",
        "time": "Thu Feb 05 17:05:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 17:05:59 2026 +0800"
      },
      "message": "feat: implement ISO-GQL SAME predicate for element identity compariso… (#692)\n\n* feat: implement ISO-GQL SAME predicate for element identity comparison (#368)\n\nImplement the ISO-GQL SAME predicate function to check if graph elements\nrefer to the same entity by comparing their identities. This feature adds\nfull ISO/IEC 39075:2024 Section 19.12 compliance for identity comparisons.\n\nChanges:\n- Parser Layer:\n  * Add SqlSameCall AST node for SAME function calls\n  * Add SqlSameOperator with BOOLEAN return type and VARIADIC operands\n  * Register operator in BuildInSqlOperatorTable\n  * Add syntax tests with 4 GQL test cases\n\n- Runtime Layer:\n  * Implement GeaFlowBuiltinFunctions.same() for identity comparison\n    - Vertex comparison: compares vertex IDs using Objects.equals()\n    - Edge comparison: compares both source and target IDs\n    - Null handling: returns null following SQL ternary logic\n    - Type safety: returns false for mismatched types\n  * Add BuildInExpression.SAME constant for expression translation\n  * Register SAME in ExpressionTranslator.processOtherTrans()\n\n- Testing:\n  * Add comprehensive SameTest with 13 unit tests (100% pass rate)\n  * Test coverage: identical/different IDs, null handling, mixed types,\n    string IDs, invalid types\n\nImplementation follows Approach 1 (Built-in Function Pattern) with\nminimal code changes (441 lines added across 9 files) for maximum\nsimplicity and maintainability.\n\nExample usage:\n  MATCH (a)-\u003e(b)-\u003e(c) WHERE SAME(a, c) RETURN a, b, c;\n\n* fix(dsl): resolve ISO-GQL SAME predicate code review issues\n\n- Fix SqlSameCall immutable operands list causing setOperand() failure\n- Add type-specific same() overloads for RowVertex and RowEdge\n- Add varargs same(Object...) for multi-element comparisons\n- Add comprehensive unit tests for all same() overloads"
    },
    {
      "commit": "72be83ba3d035e93478cd85bb34526071789a125",
      "tree": "70706e9be0d027b3fd8f3efd2255c65a3f991e34",
      "parents": [
        "ee4a0c52a4f8725ba52af308a63763fc1ab94d07"
      ],
      "author": {
        "name": "Leomrlin",
        "email": "1229394985@qq.com",
        "time": "Wed Jan 28 10:04:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 10:04:12 2026 +0800"
      },
      "message": "feat(ai): support graph consolidate algorithm (#729)\n\n* init dcp code\n\n* add lucene search\n\n* add prompt formatter\n\n* add test case\n\n* handle ldbc id conflict\n\n* support llm\n\n* support embedding index store\n\n* add embedding op\n\n* refine test case\n\n* delete test data\n\n* add MockChatRobot\n\n* fix checkstyle\n\n* fix pom\n\n* fix finishReason\n\n* fix ci tests\n\n* fix ci tests\n\n* fix comments\n\n* fix codestyle\n\n* support mutable graph\n\n* Add ConsolidateFunction\n\n* Add geaflow memory server\n\n* Add GeaFlowMemoryClientCLI\n\n* fix comment\n\n* refine code\n\n* replay commit\n\n* add consolidate server"
    },
    {
      "commit": "ee4a0c52a4f8725ba52af308a63763fc1ab94d07",
      "tree": "ef0794837d5d50ddfc62795df8cab3d30cae122c",
      "parents": [
        "019da958d780b942d2e348ed1eb06160f374a571"
      ],
      "author": {
        "name": "Leomrlin",
        "email": "1229394985@qq.com",
        "time": "Wed Jan 21 15:16:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 21 15:16:58 2026 +0800"
      },
      "message": "feat(ai): Adding Lucene \u0026 Embedding-Based Search Operators to Apache GeaFlow (incubating) for Lightweight Context Memory (#716)\n\n* init dcp code\n\n* add lucene search\n\n* add prompt formatter\n\n* add test case\n\n* handle ldbc id conflict\n\n* support llm\n\n* support embedding index store\n\n* add embedding op\n\n* refine test case\n\n* delete test data\n\n* add MockChatRobot\n\n* fix checkstyle\n\n* fix pom\n\n* fix finishReason\n\n* fix ci tests\n\n* fix ci tests\n\n* fix comments\n\n* fix codestyle\n\n* support mutable graph\n\n* fix comments"
    },
    {
      "commit": "019da958d780b942d2e348ed1eb06160f374a571",
      "tree": "b9d97d693b1c07fe2d7a8ea09759de2c64284aa8",
      "parents": [
        "f891ede132df65026ff71aa43f83a12dcfdbecdd"
      ],
      "author": {
        "name": "Wang Rui",
        "email": "55612496+wr-web@users.noreply.github.com",
        "time": "Wed Jan 21 15:16:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 21 15:16:01 2026 +0800"
      },
      "message": "Fix memory management in mmap_ipc.cpp (#725)\n\nRemove unnecessary Py_DECREF call for marker."
    },
    {
      "commit": "f891ede132df65026ff71aa43f83a12dcfdbecdd",
      "tree": "3bdeb0fc5cd86b4306053400ce71b1ffb1dec7a3",
      "parents": [
        "45b19695464ac1f7fecaf99a4281409320513e99"
      ],
      "author": {
        "name": "Weichen Zhao",
        "email": "61238101+SeasonPilot@users.noreply.github.com",
        "time": "Tue Jan 06 13:41:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 06 13:41:47 2026 +0800"
      },
      "message": "feat: add ISO-GQL PROPERTY_EXISTS predicate (#359) (#702)\n\n* feat: add ISO-GQL PROPERTY_EXISTS predicate (#359)\n\nImplement PROPERTY_EXISTS function according to ISO-GQL Section 19.13.\n\nFeatures:\n- ISO-GQL compliant PROPERTY_EXISTS predicate\n- Three-valued logic support (True/False/NULL)\n- Support for vertices, edges, and rows\n- Comprehensive unit tests and SQL test cases\n\nImplementation:\n- Add PropertyExists UDF class\n- Register function in BuildInSqlFunctionTable\n- Add PropertyExistsTest with 5 test cases (100% pass)\n- Add 3 SQL integration test cases\n\nTesting:\n- Unit tests: 5/5 passed\n- Checkstyle: 0 violations\n- Build: SUCCESS\n\nCloses #359\n\n* refactor: enhance PROPERTY_EXISTS with utility layer and validation (#359)\n\nRefactor PROPERTY_EXISTS to follow GeaFlow\u0027s established ISO-GQL predicate\npattern by introducing PropertyExistsFunctions utility class.\n\nThis aligns PropertyExists with IsSourceOf/IsDestinationOf implementation\nand addresses technical debt from the initial implementation.\n\n**Architecture Improvements:**\n- Add PropertyExistsFunctions utility class (three-layer pattern)\n  * UDF → Utility → Business Logic\n- Delegate all eval() methods to utility class\n- Implement type validation with IllegalArgumentException\n- Add property name validation (null/empty checks)\n- Maintain ISO-GQL three-valued logic (NULL → null)\n\n**Error Handling:**\n- Invalid element type → clear error messages with type info\n- NULL/empty property name → descriptive error messages\n- Consistent with SourceDestinationFunctions error handling\n\n**Testing:**\n- Expand from 4 to 13 tests (+225% coverage)\n- Add 9 error handling tests:\n  * Invalid element types (String, Integer)\n  * NULL/empty/whitespace property names\n  * Error message validation\n  * Type-specific overload testing\n- All 13/13 tests pass\n\n**Code Quality:**\n- Checkstyle: 0 violations\n- Comprehensive Javadoc with ISO-GQL Section 19.13 reference\n- Design decision documentation\n- Implementation notes for Row interface limitations\n\n**Implementation Strategy:**\n- Runtime validation follows compile-time checking approach\n- Row interface indexed access documented\n- Future runtime schema validation options identified\n\n**Files:**\n- NEW: PropertyExistsFunctions.java (137 lines)\n- MOD: PropertyExists.java (refactored to delegation)\n- MOD: PropertyExistsTest.java (comprehensive tests)\n\n**Build Status:**\n- Tests: 13 run, 0 failures, 0 errors\n- Checkstyle: PASS\n- Build: SUCCESS"
    },
    {
      "commit": "45b19695464ac1f7fecaf99a4281409320513e99",
      "tree": "e537e9e3c24c51f170afb98ed2d6471339b45f98",
      "parents": [
        "b3b4c5073392c52eb0ed5877d9a75fbbed406368"
      ],
      "author": {
        "name": "Haodong Tang",
        "email": "tanghaodong25@gmail.com",
        "time": "Wed Dec 31 15:31:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 31 15:31:29 2025 +0800"
      },
      "message": "feat: support vector store. (#637)\n\nCo-authored-by: haodong.thd \u003chaodong.thd@antgroup.com\u003e"
    },
    {
      "commit": "b3b4c5073392c52eb0ed5877d9a75fbbed406368",
      "tree": "437d7c41588d422031d5c822b02ecd8974cad312",
      "parents": [
        "2a0fd8e67a28d718841026c8a08a14e9a3b6e03e"
      ],
      "author": {
        "name": "yazong",
        "email": "llyweb_aliyun@llyweb.com",
        "time": "Fri Dec 26 09:40:34 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 26 09:40:34 2025 +0800"
      },
      "message": "[ISSUE701]Use classifier (#720)\n\nCo-authored-by: liliya \u003clly_testfox@foxmail.com\u003e"
    },
    {
      "commit": "2a0fd8e67a28d718841026c8a08a14e9a3b6e03e",
      "tree": "1f602824213c39cd8d27b1ba70c5de5f7e9e7be3",
      "parents": [
        "ac9656beb185f88d1dc20ea0809785a89a3d7bff"
      ],
      "author": {
        "name": "Tengting Xu",
        "email": "xtt@apache.org",
        "time": "Tue Dec 23 14:33:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 14:33:07 2025 +0800"
      },
      "message": "[Optimize] hard-coded optimize about cluster-constants/magic num/temp… (#674)\n\n* [Optimize] hard-coded optimize about cluster-constants/magic num/template/hex array\n\n* fix comments and add test cases\n\n* minor fix\n\n* fix comment 2\n\n* fix comments 3"
    },
    {
      "commit": "ac9656beb185f88d1dc20ea0809785a89a3d7bff",
      "tree": "3e830332feb58ad0f20af59e32c3f89071283738",
      "parents": [
        "c7130acd36aa53d08f4d648488d76523dd58fab7"
      ],
      "author": {
        "name": "accevolve",
        "email": "54697743+accevolve@users.noreply.github.com",
        "time": "Tue Dec 23 14:16:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 14:16:10 2025 +0800"
      },
      "message": "docs: update source download url (#721)\n\nCo-authored-by: 泽震 \u003ccll454911@antgroup.com\u003e"
    },
    {
      "commit": "c7130acd36aa53d08f4d648488d76523dd58fab7",
      "tree": "f01fa051bf07bd6d1fb8526a73e58bb333b4f4fb",
      "parents": [
        "185f1a36b91148f298adc8b22e72aa5355b25c8b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Dec 18 11:33:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 18 11:33:07 2025 +0800"
      },
      "message": "chore(deps): bump at.yawk.lz4:lz4-java from 1.9.0 to 1.10.1 in /geaflow (#715)\n\nBumps [at.yawk.lz4:lz4-java](https://github.com/yawkat/lz4-java) from 1.9.0 to 1.10.1.\n- [Release notes](https://github.com/yawkat/lz4-java/releases)\n- [Changelog](https://github.com/yawkat/lz4-java/blob/main/CHANGES.md)\n- [Commits](https://github.com/yawkat/lz4-java/compare/v1.9.0...v1.10.1)\n\n---\nupdated-dependencies:\n- dependency-name: at.yawk.lz4:lz4-java\n  dependency-version: 1.10.1\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "185f1a36b91148f298adc8b22e72aa5355b25c8b",
      "tree": "91deebad2cfcfe05163c033b46486027347c3001",
      "parents": [
        "18b0055c3bdc9824f8f67a8742f87328858e3f36"
      ],
      "author": {
        "name": "Qingwen Zhao",
        "email": "qingwen220@gmail.com",
        "time": "Tue Dec 16 22:59:37 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 16 22:59:37 2025 +0800"
      },
      "message": "Upgrade lz4 version to 1.9.0 (#714)\n\n* upgrade lz4 version to 1.8.1\n\n* fix update\n\n* update"
    },
    {
      "commit": "18b0055c3bdc9824f8f67a8742f87328858e3f36",
      "tree": "750686a1af1df5ec01f304909c6124820a255a24",
      "parents": [
        "13618a5c30ad6be1ca0cea003203d46d3791aa20"
      ],
      "author": {
        "name": "Loognqiang",
        "email": "zqlongqiang@gmail.com",
        "time": "Mon Dec 15 21:06:33 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 21:06:33 2025 +0800"
      },
      "message": "cherry pick release 0.7.0 fix and upgrade version to 0.8.0-SNAPSHOT (#712)\n\n* Prepare release 0.7.0\n\n* Update distributionManagement to correct staging repo\n\n* fix(incubator): add NOTICE, DISCLAIMER, fix license headers , fix naming\n\n* fix(incubator): update version, fix naming\n\n* fix(incubator): add license headers for tpl/js/ts file, fix LICENSE/NOTICE files, fix other issues\n\n* fix(incubator): Fix LICENSE/NOTICE and add proper headers to derived files\n\n* fix(incubator): Fix LICENSE/NOTICE and headers to derived files\n\n* fix(incubator): remove useless LEGAL.md file\n\n* upgrapde new version to 0.8.0-SNAPSHOT\n\n* to #712, address comments\n\n---------\n\nCo-authored-by: loogn zhou \u003cloogn@apache.org\u003e"
    },
    {
      "commit": "13618a5c30ad6be1ca0cea003203d46d3791aa20",
      "tree": "21337076826ef3de297f2799edee83e84b66cec0",
      "parents": [
        "3c7c814bb3c9ff953f4f41e67eb8ec92b5e8c246"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Tue Dec 02 19:51:52 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 19:51:52 2025 +0800"
      },
      "message": "feat: add neo4j and es connector (#653)\n\n* t# This is a combination of 2 commits.\n\nfeat: add neo4j connector\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e\n\n* fix: adapter jdk 8\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e\n\n* feat: update by comment\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e\n\n* fix: fix checkstyle errror\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e\n\n* fix\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e\n\n---------\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e"
    },
    {
      "commit": "3c7c814bb3c9ff953f4f41e67eb8ec92b5e8c246",
      "tree": "3194c18aa4e917c310ec543c9fe35d474e27ff0c",
      "parents": [
        "4ea648fee0e7d8e91bc0d9f78407cb50a482ea78"
      ],
      "author": {
        "name": "moses",
        "email": "72908278+ChaomingZhangCN@users.noreply.github.com",
        "time": "Tue Dec 02 19:46:21 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 19:46:21 2025 +0800"
      },
      "message": "feat: Write data into ODPS with dynamic partiiton (#666)\n\n* feat: Write data into ODPS with dynamic partiiton\n\n* fix partition extractor\n\n* address\n\n* minor fix\n\n* get table schema\n\n* minor fix"
    },
    {
      "commit": "4ea648fee0e7d8e91bc0d9f78407cb50a482ea78",
      "tree": "841e88451543a49ec98fa1c3d60b0bd4ef928a3b",
      "parents": [
        "ab533347f63e68babe3ecb939faacb0ee75f5e35"
      ],
      "author": {
        "name": "SeasonPilot",
        "email": "61238101+SeasonPilot@users.noreply.github.com",
        "time": "Tue Dec 02 09:35:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 09:35:10 2025 +0800"
      },
      "message": "feat(dsl): 实现ISO-GQL源/目标谓词函数 (#675)\n\n- 新增SourceDestinationFunctions工具类，实现ISO-GQL标准的源/目标谓词逻辑\n- 添加四个新的UDF函数：IsSourceOf、IsNotSourceOf、IsDestinationOf、IsNotDestinationOf\n- 在BuildInSqlFunctionTable中注册新的源/目标谓词函数\n- 实现完整的三值逻辑处理，包括空值和无向边情况- 添加五个测试用例验证源/目标谓词的正确性- 提供详细的JavaDoc说明和ISO-GQL规则实现注释"
    },
    {
      "commit": "ab533347f63e68babe3ecb939faacb0ee75f5e35",
      "tree": "b3309abd19861096e15f9b930d4fcf5b05492bc3",
      "parents": [
        "8a42ff39991e1eb02663e23be8304e76cdf82b1d"
      ],
      "author": {
        "name": "moses",
        "email": "72908278+ChaomingZhangCN@users.noreply.github.com",
        "time": "Tue Dec 02 09:32:26 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 09:32:26 2025 +0800"
      },
      "message": "feat: Implements lpa and cc algorithm (#670)\n\n* feat: Implements lpa and cc algorithm\n\n* fix\n\n* fix cc\n\n* clarify parameter name\n\n* improve cc"
    },
    {
      "commit": "8a42ff39991e1eb02663e23be8304e76cdf82b1d",
      "tree": "077e07046dfd0c9a257123ac60024cef0f0049c3",
      "parents": [
        "d1167757b6f053b953994f9e6f993ea8994600ea"
      ],
      "author": {
        "name": "明城",
        "email": "mingcheng@apache.org",
        "time": "Thu Nov 27 16:35:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 27 16:35:29 2025 +0800"
      },
      "message": "docs: update README with contact and star sections (#684)\n\n- Add DingTalk group details for user support\n- Include call to star the project on GitHub\n- Add acknowledgments section in Chinese README\n- Expand mailing list subscription information\n\nSigned-off-by: mingcheng \u003cmingcheng@apache.org\u003e"
    },
    {
      "commit": "d1167757b6f053b953994f9e6f993ea8994600ea",
      "tree": "375182d489a2fe22e35cca6cad17a92ee0f312a6",
      "parents": [
        "69e14de224361ddc585fd0626d20f60a54e1cdeb"
      ],
      "author": {
        "name": "vamossagar12",
        "email": "sagarmeansocean@gmail.com",
        "time": "Thu Nov 27 14:03:59 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 27 16:33:59 2025 +0800"
      },
      "message": "Minor: Add try-with-resources block around ProcessLoggerManager (#687)\n\n"
    },
    {
      "commit": "69e14de224361ddc585fd0626d20f60a54e1cdeb",
      "tree": "88f5091a628b498c27c7fbf15b19986fe8be339e",
      "parents": [
        "3f7b695c851f4962e6a0aa6d37be3b46eeff781d"
      ],
      "author": {
        "name": "moses",
        "email": "72908278+ChaomingZhangCN@users.noreply.github.com",
        "time": "Wed Nov 26 19:06:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 19:06:38 2025 +0800"
      },
      "message": "feat: Paimon stream source. (#662)\n\n* feat: Paimon stream source.\n\n* add lisences\n\n* check style\n\n* check style\n\n* minor fix\n\n* fix list partitions\n\n* throws exception\n\n* fix tests"
    },
    {
      "commit": "3f7b695c851f4962e6a0aa6d37be3b46eeff781d",
      "tree": "6e10eaeb4fb2f408fd7deaf9765b01a3e59dcd15",
      "parents": [
        "5c892852b720f22cd79739b4efb87e14c269e1fe"
      ],
      "author": {
        "name": "kitalkuyo-gita",
        "email": "windwheel@sina.cn",
        "time": "Thu Nov 20 11:16:09 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 11:16:09 2025 +0800"
      },
      "message": "feat: support cluster coefficient (#640)\n\n* chore: support coefficient\n\n* refactor: enhance logic \u0026\u0026 add tests"
    },
    {
      "commit": "5c892852b720f22cd79739b4efb87e14c269e1fe",
      "tree": "72048d20b3bb3c2aa70154fb820fdb111dee0fc1",
      "parents": [
        "7a3d5bb9eed0c66655a19e6d9c302b90a0c689b2"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Thu Nov 20 11:05:57 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 11:05:57 2025 +0800"
      },
      "message": "dev: standardize editor configs for cross-platform development (#648)\n\n* dev: standardize editor configs for cross-platform development\n\nSigned-off-by: yuluo-yx \u003cyuluo08290126@gmail.com\u003e\n\n* Update .gitattributes\n\n* Update .gitattributes\n\n---------\n\nSigned-off-by: yuluo-yx \u003cyuluo08290126@gmail.com\u003e"
    },
    {
      "commit": "7a3d5bb9eed0c66655a19e6d9c302b90a0c689b2",
      "tree": "ab29bffe254e6841b234df36e667198d7ff97f2a",
      "parents": [
        "531dbbba30065fb3c0f3e14b0ed9631bffa1552b"
      ],
      "author": {
        "name": "kitalkuyo-gita",
        "email": "windwheel@sina.cn",
        "time": "Tue Nov 18 15:32:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 18 15:32:53 2025 +0800"
      },
      "message": "feat: add jaccard similarity (#650)\n\n* feat: add jaccard similarity\n\n* fix: tests\n\n* remove useless files\n\n* add build in register function\n\n* bugfix: fix tests\n\n* chore: fix checkstyle\n\n* refactor: simple logic\n\n* bugfix: fix dataset\n\n* bugfix: exclude cycle\n\n* bufix: excclude cycle\n\n* refactor: designate one to calculate the final similarity\n\n* optimize: replace memory relationship to id\n\n* refactor: messge type divide\n\n* bugfix: add random seed\n\n* bugfix: fix windows\n\n* chore: optimize import\n\n* fix checkstyle\n\n---------\n\nCo-authored-by: undertaker86001 \u003cwindwheel555@outlook.com\u003e"
    },
    {
      "commit": "531dbbba30065fb3c0f3e14b0ed9631bffa1552b",
      "tree": "1678049533a5574c806a1ca8252b68226bdfa491",
      "parents": [
        "bec40e0757a976cf1643f34a4d66490237cb37f6"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Fri Nov 14 13:45:12 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 14 13:45:12 2025 +0800"
      },
      "message": "chore: delete unnecessary files (#647)\n\nSigned-off-by: yuluo-yx \u003cyuluo08290126@gmail.com\u003e"
    },
    {
      "commit": "bec40e0757a976cf1643f34a4d66490237cb37f6",
      "tree": "5d932cde5569aecc4f0939a172375a9e59d468aa",
      "parents": [
        "851b39ee28f8dafc26427108421dc5b4d4c269f5"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Fri Nov 14 13:41:58 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 14 13:41:58 2025 +0800"
      },
      "message": "chore: deleting useless methods \u0026 translated into Chinese (#667)\n\n* chore: deleting useless methods \u0026 translated into Chinese\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e\n\n* fix: remove useless import\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e\n\n---------\n\nSigned-off-by: jishiwen.jsw \u003cjishiwen.jsw@digital-engine.com\u003e"
    },
    {
      "commit": "851b39ee28f8dafc26427108421dc5b4d4c269f5",
      "tree": "ce2f873698d1aa8c7900d37984cc9c961795a322",
      "parents": [
        "0887a11dfd57ad76267adc98dbe3f4399561463f"
      ],
      "author": {
        "name": "chzhoo",
        "email": "czawyx@163.com",
        "time": "Wed Nov 12 19:48:59 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 12 19:48:59 2025 +0800"
      },
      "message": "fix data loss after failover (#633)\n\n"
    },
    {
      "commit": "0887a11dfd57ad76267adc98dbe3f4399561463f",
      "tree": "ecc633cd72c6d531225c57d883b82ea2b770ea11",
      "parents": [
        "81825e232790f9fab17c3f7e6dee808ea4516f4e"
      ],
      "author": {
        "name": "shown",
        "email": "jishiwen.jsw@digital-engine.com",
        "time": "Tue Nov 11 15:04:20 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 11 15:04:20 2025 +0800"
      },
      "message": "infra: add GHA condition (#649)\n\nSigned-off-by: yuluo-yx \u003cyuluo08290126@gmail.com\u003e"
    },
    {
      "commit": "81825e232790f9fab17c3f7e6dee808ea4516f4e",
      "tree": "82d6a70dcde3b4c1fbe853ecd24e59075156a72a",
      "parents": [
        "e99f88338cfb9b41a1860f8f0932cf72a2bdafa0"
      ],
      "author": {
        "name": "明城",
        "email": "mingcheng@apache.org",
        "time": "Mon Nov 03 20:57:04 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 03 20:57:04 2025 +0800"
      },
      "message": "docs: Add security policy (#643)\n\n- add SECURITY.md file with vulnerability reporting guidelines\n- include email contacts for Apache Security Team and project team\n- outline required information for reports and expected response timeline\n- describe responsible disclosure practices and security update channels\n- reference additional resources like Apache Security Team website\n\nSigned-off-by: mingcheng \u003cmingcheng@apache.org\u003e"
    },
    {
      "commit": "e99f88338cfb9b41a1860f8f0932cf72a2bdafa0",
      "tree": "e840d93a82d842558f7a04e9d33d8e5725c75378",
      "parents": [
        "e83829319fc76483fe397b2a96d56ab4a1a2a3e4"
      ],
      "author": {
        "name": "明城",
        "email": "mingcheng@apache.org",
        "time": "Mon Nov 03 20:55:20 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 03 20:55:20 2025 +0800"
      },
      "message": "docs: Update governance and code of conduct for ASF compliance (#641)\n\n- add ASF Code of Conduct reference to GOVERNANCE.md\n- simplify CODE_OF_CONDUCT.md to title only for consistency as incubation project\n- ensure alignment with Apache Software Foundation standards\n\nSigned-off-by: mingcheng \u003cmingcheng@apache.org\u003e"
    },
    {
      "commit": "e83829319fc76483fe397b2a96d56ab4a1a2a3e4",
      "tree": "e9b5b05417bcc661f8d7c80ff5ec207d24ec235e",
      "parents": [
        "a7998bb53e237c1358a6c5c984ef2ad0e90855d5"
      ],
      "author": {
        "name": "hey-money",
        "email": "lzoi_qxx@163.com",
        "time": "Thu Oct 30 17:01:38 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 30 17:01:38 2025 +0800"
      },
      "message": "[ISSUE-630]optimize: extract vertex/edge projector rules\n\n* 更改\n\n* version 1.0 with `List` and passed `UT#001`~`UT#004`\n\n* version 1.1: `Edge` encoding is implemented\n\n* version 1.2: `RexField List` is replaced with Set()\nBug Fix: `isEmpty()` reach condition of SelectFieldPruneRule.onMatch()\n\n* version 2.0: Handle `condition` issue but failed in #006 \u0026 #012\n\n* version 3.0: Pass all tests\n\n* version 3.1: Delete `笔记` folder\n\n* version 3.2: Project fields of edges\n\n* version 3.3: Bug fix for Null `edge` reference on multiple test suites\n\n* test commit for email\n\n* v5.0: Pass all tests in geaflow.dsl.runtime\n\n* v5.1: style: format code\n\n* Resolve conversations:\n\n* Comments in English\n* Remove Rule states\n* Revert to original project files\n* Use constants as field names\n\n* Improve code readability and standards compliance:\n- Create `VertexProjectorUtil` and `EdgeProjectorUtil` class to encapsulate projection logic\n- Separate optimization rules regarding field extraction into individual files\n\n* Add unit test for prune-field plans and switch to constant value to declare special fields."
    },
    {
      "commit": "a7998bb53e237c1358a6c5c984ef2ad0e90855d5",
      "tree": "7a8f08ca7da23af6cb3f928dcbb562e9051c70cc",
      "parents": [
        "49fd5c6666e7f7e1bcd3b5c5a8e1166e816dd46c"
      ],
      "author": {
        "name": "Leomrlin",
        "email": "1229394985@qq.com",
        "time": "Tue Oct 14 09:47:42 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 14 09:47:42 2025 +0800"
      },
      "message": "Add release profile to main pom.xml (#628)\n\n* add release profile in main pom.xml\n\n* fix codestyle\n\n* minor fix pom\n\n* minor fix pom"
    },
    {
      "commit": "49fd5c6666e7f7e1bcd3b5c5a8e1166e816dd46c",
      "tree": "259231f954565c3a6dc80237cb0a1502aae74a74",
      "parents": [
        "0e58511a01beb01710d942870c489bf0a79bd2f9"
      ],
      "author": {
        "name": "Fan Tianlan",
        "email": "2510317228@qq.com",
        "time": "Mon Oct 13 10:16:52 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 13 10:16:52 2025 +0800"
      },
      "message": "feat: Optimizing Sorting Performance via Radix Sort Algorithm (#589)\n\n* Optimizing Sorting Performance via Radix Sort Algorithm\n\n* Fix style\n\n* Optimizing the efficiency of the radix sort algorithm\n\n* Max String Precision\n\n* add tests\n\n* modify pom\n\n* fix style\n\n* fix style2\n\n* fix style2\n\n* refractor equals for BinaryStringType\n\n* concurrency-safe sorting"
    },
    {
      "commit": "0e58511a01beb01710d942870c489bf0a79bd2f9",
      "tree": "1ed03ed9ca6d4e56c8aba5a58172e4dc052d6887",
      "parents": [
        "e3dfcc43bf962077e926ad0a8d6bbb41cae62c2a"
      ],
      "author": {
        "name": "kitalkuyo-gita",
        "email": "windwheel@sina.cn",
        "time": "Sat Oct 11 13:38:22 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 11 13:38:22 2025 +0800"
      },
      "message": "feat: Support incremental K-Core algorithm (#600)\n\n* finish k-core v1.0\n\n* fix checkstyle\n\n* add test files\n\n* fix checkstyle\n\n* fix checkstyle\n\n* translate english\n\n* rename author\n\n* fix tests\n\n* add function register\n\n* bugfix: fix function invoke\n\n* impl sendMessageToNeighbors\n\n* refactor code \u0026\u0026 fix compile error\n\n* update version\n\n* fix tests\n\n* fix tests\n\n* fix tests\n\n* refactor code\n\n* remove useless code \u0026\u0026 throw exception\n\n* refactor alg logic\n\n* refactor code\n\n* refactor code\n\n* fix tests\n\n* fix tests\n\n* fix tests\n\n* fix tests\n\n* fix tests\n\n* fix tests\n\n* fix tests\n\n* add throw exception\n\n---------\n\nCo-authored-by: undertaker86001 \u003cwindwheelorz@outlook.com\u003e"
    },
    {
      "commit": "e3dfcc43bf962077e926ad0a8d6bbb41cae62c2a",
      "tree": "fb11126e7c406a24d1f1b03c0518c3a3a2fc711c",
      "parents": [
        "5307fcb0f359915057d2b4d1426428c3cc3e4569"
      ],
      "author": {
        "name": "kitalkuyo-gita",
        "email": "windwheel@sina.cn",
        "time": "Mon Sep 29 19:07:39 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 29 19:07:39 2025 +0800"
      },
      "message": "feat: Support incremental Minimum Spanning Tree (#599)\n\n* finish mst tree\n\n* fix checkstyle\n\n* refactor code\n\n* remove useless files\n\n* add test files\n\n* fix checkstyle\n\n* fix checkstyle\n\n* translate english\n\n* rename team name\n\n* fix tests\n\n* translate english\n\n* translate english\n\n* fix checkstyle\n\n* fix checkstyle\n\n* fix tests\n\n* fix complie error\n\n* fix checkstyle\n\n* fix checkstyle\n\n* chore: support short-circuit algorithm\n\n* support itype\n\n* refactor code\n\n* fix tests\n\n* refactor code \u0026\u0026 improve performce\n\n* chore: change paramster\n\n* add register class\n\n* update seriable\n\n* fix dataset\n\n* fix dataset\n\n* fix tests\n\n* fix tests\n\n---------\n\nCo-authored-by: undertaker86001 \u003cwindwheelorz@outlook.com\u003e"
    },
    {
      "commit": "5307fcb0f359915057d2b4d1426428c3cc3e4569",
      "tree": "d8e9661b8c7bfa626f6f075b04fb81fc2beffc60",
      "parents": [
        "817bdd9306b77d83e0bf475c6dbf0f8d28494589"
      ],
      "author": {
        "name": "Qingwen Zhao",
        "email": "qingwen220@gmail.com",
        "time": "Thu Sep 25 15:11:53 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 25 15:11:53 2025 +0800"
      },
      "message": "[ISSUE-622] feat: support distributed writing with one Paimon graph store (#623)\n\n* feat: support paimon store in distributed mode\n\n* update\n\n* fix checkstyle\n\n* update\n\n* fix ut\n\n* update\n\n* disable dynamic traversal with data appending"
    },
    {
      "commit": "817bdd9306b77d83e0bf475c6dbf0f8d28494589",
      "tree": "bc9e85fdfee30de7c969f2a19fcac42f8e0b58de",
      "parents": [
        "5823e6ada624e7ce0471809378b62ef45daa7fb5"
      ],
      "author": {
        "name": "dingyi",
        "email": "50548737+dy247846795@users.noreply.github.com",
        "time": "Thu Sep 18 10:26:24 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 18 10:26:24 2025 +0800"
      },
      "message": "[ISSUE-620] fix: remove the directory of db after running PaimonRWHandleTest (#621)\n\n"
    },
    {
      "commit": "5823e6ada624e7ce0471809378b62ef45daa7fb5",
      "tree": "dd110ac0d697290976b53a706ebe04d6a7caa5b2",
      "parents": [
        "e065ad6d0cb4a6420dc738fa82323404d7bee5fb"
      ],
      "author": {
        "name": "Loognqiang",
        "email": "zqlongqiang@gmail.com",
        "time": "Wed Sep 17 15:04:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 17 15:04:29 2025 +0800"
      },
      "message": "Add connector tests (#624)\n\n* [ISSUE-619] move the Hive Connector unit tests to an independent module\n\n* [ISSUE-619] fix package name import order\n\n* [ISSUE-619] fix check style\n\n* [ISSUE-619] address comment"
    },
    {
      "commit": "e065ad6d0cb4a6420dc738fa82323404d7bee5fb",
      "tree": "db1328402f73e16143de3be1e3ca9b07e954f549",
      "parents": [
        "ce2ebf8aff41c96636bb80465675d62540253146"
      ],
      "author": {
        "name": "Leomrlin",
        "email": "1229394985@qq.com",
        "time": "Mon Sep 15 20:30:58 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 15 20:30:58 2025 +0800"
      },
      "message": "[GQL] Add direction(edge) UDF for GQL (#617)\n\n* add direction udf\n\n* fix import\n\n* fix checkstyle"
    },
    {
      "commit": "ce2ebf8aff41c96636bb80465675d62540253146",
      "tree": "dac0398ae5992b7a5f3763e9bf6ef9ce4f45fb09",
      "parents": [
        "017893ce838caac25c368fb905d9137bbd80bb90"
      ],
      "author": {
        "name": "Loognqiang",
        "email": "zqlongqiang@gmail.com",
        "time": "Mon Sep 15 18:03:40 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 15 18:03:40 2025 +0800"
      },
      "message": "Jdk11 ci support (#618)\n\n* [ISSUE-601] add jdk11 ci yml\n\n* [ISSUE-601] solve the problem of failing the timezone ut caused by timezone\n\n* [ISSUE-601] add concurrency group\n\n* [ISSUE-601] support jdk11 ci run \u0026 compatible with jdk8\n\n* [ISSUE-601] disable dsl-runtime ut run as dependency on hive connector\n\n* [ISSUE-601] break build\u0026test into two stages\n\n* [ISSUE-601] revert build\u0026test into one stage\n\n* [ISSUE-601] fix module name\n\n* [ISSUE-601] fix script\n\n* [ISSUE-601] fix script\n\n* [ISSUE-601] maven surefire version add in parent pom"
    },
    {
      "commit": "017893ce838caac25c368fb905d9137bbd80bb90",
      "tree": "187406c9a20f0e7eaeadb3bdbd7e6e14bd9f4e0d",
      "parents": [
        "66930c4d00c040794e158c80d87f3aa166cc3ab1"
      ],
      "author": {
        "name": "Leomrlin",
        "email": "1229394985@qq.com",
        "time": "Wed Sep 10 19:27:50 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 19:27:50 2025 +0800"
      },
      "message": "[MCP] Implement MCP local tools for demo case (#610)\n\n* add local graph mcp server\n\n* add type query tool\n\n* update mcp version\n\n* fix license\n\n* fix pom\n\n* fix pom\n\n* refine code\n\n* minor fix\n\n* fix comments\n\n* fix codestyle\n\n* fix tools prompt\n\n* minor fix\n\n* refine code\n\n* fix comment"
    },
    {
      "commit": "66930c4d00c040794e158c80d87f3aa166cc3ab1",
      "tree": "272ab4bbc929f6fbe0dbbd2421aa6b0d1002aae1",
      "parents": [
        "6526b69bbce536d4e918ec9fe6f6c32b9f05cb20"
      ],
      "author": {
        "name": "kitalkuyo-gita",
        "email": "windwheel@sina.cn",
        "time": "Tue Sep 09 21:00:11 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 21:00:11 2025 +0800"
      },
      "message": "feat: ci timeout optimize (#606)\n\n* ci timeout optimize\n\n* change memory size\n\n* translate english"
    },
    {
      "commit": "6526b69bbce536d4e918ec9fe6f6c32b9f05cb20",
      "tree": "924c37bcf49c91dac9e39d705d8adf3d01a455bc",
      "parents": [
        "c36d3623a5d44a31c4fa9253d64dc92a5a03570a"
      ],
      "author": {
        "name": "DukeWangYu",
        "email": "290740508@qq.com",
        "time": "Mon Aug 25 11:33:23 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 25 11:33:23 2025 +0800"
      },
      "message": "[ISSUE-592] feat: Add a Streaming Source for Hiveadd stream hive reader (#594)\n\n* add stream hive reader\n\n* add licenses to test case\n\n* refine codes after review"
    },
    {
      "commit": "c36d3623a5d44a31c4fa9253d64dc92a5a03570a",
      "tree": "782d21a507c70ed16feadbf262d6b58c6b77e899",
      "parents": [
        "e7a53a10901b247c4152ceaeaf26795c1dc19c72"
      ],
      "author": {
        "name": "chzhoo",
        "email": "czawyx@163.com",
        "time": "Thu Aug 14 16:44:41 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 14 16:44:41 2025 +0800"
      },
      "message": "Fix callback issue when task done (#587)\n\n"
    },
    {
      "commit": "e7a53a10901b247c4152ceaeaf26795c1dc19c72",
      "tree": "96433ab3112c262f7f04ba8713fd1223050f14e6",
      "parents": [
        "53766ddda61683c6501e7c7068f1daf91cfba370"
      ],
      "author": {
        "name": "明城",
        "email": "mingcheng@apache.org",
        "time": "Tue Aug 12 20:08:03 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 12 20:08:03 2025 +0800"
      },
      "message": "docs: streamline contributing and roles documentation 📚 (#588)\n\n- Simplify CONTRIBUTING.md with concise steps and prerequisites\n- Restructure ROLES.md for clarity and remove redundant content\n- Update community links and resources for consistency\n\nSigned-off-by: mingcheng \u003cmingcheng@apache.org\u003e"
    },
    {
      "commit": "53766ddda61683c6501e7c7068f1daf91cfba370",
      "tree": "4b97642a339bd879f5fb3050860ab101b0b38b6a",
      "parents": [
        "baad72e56412b61e928db421c2e8a15c3e100d8d"
      ],
      "author": {
        "name": "Qingwen Zhao",
        "email": "qingwen220@gmail.com",
        "time": "Tue Aug 12 16:41:48 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 12 16:41:48 2025 +0800"
      },
      "message": "[ISSUE-583] feat: add paimon source connector (#584)\n\n* feat: add paimon source connector"
    },
    {
      "commit": "baad72e56412b61e928db421c2e8a15c3e100d8d",
      "tree": "39aa52a7f277e001b98386cfe92f333bd985bfc3",
      "parents": [
        "49eb2a08ba9d144ab845145f927b48da952f1458"
      ],
      "author": {
        "name": "明城",
        "email": "mingcheng@apache.org",
        "time": "Tue Aug 12 13:52:24 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 12 13:52:24 2025 +0800"
      },
      "message": "docs: update contributing guidelines and add governance docs 📚 (#586)\n\n- Revise CONTRIBUTING.md with detailed steps and prerequisites\n- Add MEETING.md for bi-weekly community meeting details\n- Update ROLES.md with structured role descriptions\n- Introduce GOVERNANCE.md for project governance overview\n\nSigned-off-by: mingcheng \u003cmingcheng@apache.org\u003e"
    },
    {
      "commit": "49eb2a08ba9d144ab845145f927b48da952f1458",
      "tree": "c8fcc2c8af0856aad275a46afd01f41d08a037fd",
      "parents": [
        "0a9953e9c9d790e7dd7a9cc1dfb564c988153716"
      ],
      "author": {
        "name": "Xin Wang",
        "email": "xinwang@apache.org",
        "time": "Tue Aug 12 10:15:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 12 10:15:54 2025 +0800"
      },
      "message": "Remove publishing profile from .asf.yaml (#585)\n\n"
    },
    {
      "commit": "0a9953e9c9d790e7dd7a9cc1dfb564c988153716",
      "tree": "bbb43503602b59daa8887d49eac212be0e17d748",
      "parents": [
        "f832169cf69f89f6bcf2698667109feb52aff4d3"
      ],
      "author": {
        "name": "chzhoo",
        "email": "czawyx@163.com",
        "time": "Mon Aug 11 14:08:06 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 11 14:08:06 2025 +0800"
      },
      "message": "Fix building issue on aarch64 (#580)\n\n"
    },
    {
      "commit": "f832169cf69f89f6bcf2698667109feb52aff4d3",
      "tree": "c3d2e0ece9ccbe1f89311c5514c98b510f922ed0",
      "parents": [
        "a0e0ab9fb4c19c2d986342c336b1b8c7087c39b4"
      ],
      "author": {
        "name": "Forest",
        "email": "47968887+cfsfine@users.noreply.github.com",
        "time": "Mon Aug 11 14:01:25 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 11 14:01:25 2025 +0800"
      },
      "message": "Support ASync-Write for PaimonGraphStore #577 (#578)\n\n"
    },
    {
      "commit": "a0e0ab9fb4c19c2d986342c336b1b8c7087c39b4",
      "tree": "41dadcd801ffaf49724e6011db51ab6757a9ab3c",
      "parents": [
        "562037c03e03847431b3769bc9be6d6780abfa8e"
      ],
      "author": {
        "name": "Yaya",
        "email": "xiaxiaoya.xxy@antgroup.com",
        "time": "Mon Aug 04 10:59:33 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 04 10:59:33 2025 +0800"
      },
      "message": "chore: update headline description about Apache GeaFlow (#573)\n\n"
    },
    {
      "commit": "562037c03e03847431b3769bc9be6d6780abfa8e",
      "tree": "310bc23ec6216fa1ed5357d924ef3680d5b2a107",
      "parents": [
        "f98371ed401494703bfaf896f58abea9fba9a172"
      ],
      "author": {
        "name": "yaozhongq",
        "email": "135590979+yaozhongq@users.noreply.github.com",
        "time": "Fri Aug 01 16:48:11 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 01 16:48:11 2025 +0800"
      },
      "message": "[ISSUE-563] refactor: Update filter instantiation method and optimize edge query \n\n* refactor: Update filter instantiation method and optimize edge query interface\n\n* fix: code conflict"
    },
    {
      "commit": "f98371ed401494703bfaf896f58abea9fba9a172",
      "tree": "2930007f5008cc8b1a6778bc4e36a6e863f69bdd",
      "parents": [
        "d6cfa8992776628932b12eecbb64f1c088c4a5dd"
      ],
      "author": {
        "name": "Loognqiang",
        "email": "zqlongqiang@gmail.com",
        "time": "Thu Jul 31 15:03:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 31 15:03:29 2025 +0800"
      },
      "message": "[ISSUE-569] fix package path error and doc deploy failed (#570)\n\n* [ISSUE-569] fix package path error and doc deploy failed\n\n* [ISSUE-569] revert template fix because other pr has already been merged"
    },
    {
      "commit": "d6cfa8992776628932b12eecbb64f1c088c4a5dd",
      "tree": "84b9bc40b58c86c925e960db1fc61c1815a6740e",
      "parents": [
        "c7171d3e697cb3592bb5d6ce6a1f264e095e2bfa"
      ],
      "author": {
        "name": "chzhoo",
        "email": "czawyx@163.com",
        "time": "Thu Jul 31 12:40:00 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 31 12:40:00 2025 +0800"
      },
      "message": "Fix invalid Filter.template issue (#571)\n\n"
    },
    {
      "commit": "c7171d3e697cb3592bb5d6ce6a1f264e095e2bfa",
      "tree": "55fbdcd34a4b3a74ea71199de000a58d2bd57a5f",
      "parents": [
        "3ddaa5a3987415383e69ddb02f58318dbf337c19"
      ],
      "author": {
        "name": "Xin Wang",
        "email": "best.wangxin@163.com",
        "time": "Wed Jul 30 19:24:19 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 19:24:19 2025 +0800"
      },
      "message": "[asf] Add .asf.yaml configuration file (#568)\n\n"
    },
    {
      "commit": "3ddaa5a3987415383e69ddb02f58318dbf337c19",
      "tree": "7dbc3606ad23a96d2eb0025bc4f53debc52ebe46",
      "parents": [
        "b94d58eaa4cfface9ae2c313b215b26f24c8f6e4"
      ],
      "author": {
        "name": "Yaya",
        "email": "xiaxiaoya.xxy@antgroup.com",
        "time": "Wed Jul 30 16:47:26 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 16:47:26 2025 +0800"
      },
      "message": "fix: change the contact email to dev@geaflow.apache.org (#567)\n\n"
    },
    {
      "commit": "b94d58eaa4cfface9ae2c313b215b26f24c8f6e4",
      "tree": "b0edaa697d37b0bdb1b78ae0f0bb4b261198b276",
      "parents": [
        "a29f9180fb0eda941867486d3b56486ee3f9023a"
      ],
      "author": {
        "name": "Florian",
        "email": "florianfan@apache.org",
        "time": "Wed Jul 30 16:10:51 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 16:10:51 2025 +0800"
      },
      "message": "chore: update discord contact info (#566)\n\n"
    },
    {
      "commit": "a29f9180fb0eda941867486d3b56486ee3f9023a",
      "tree": "cf187dbe81e698d3b56e3048b5b2fd2f1db96167",
      "parents": [
        "9f60315eec3a9af58dac9ebc9b6726a8bd7f5934"
      ],
      "author": {
        "name": "yaozhongq",
        "email": "135590979+yaozhongq@users.noreply.github.com",
        "time": "Tue Jul 29 15:26:02 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 29 15:26:02 2025 +0800"
      },
      "message": "[ISSUE-562] docs: Remove outdated blog posts and configuration files, and update the project name and links. (#561)\n\n* docs: refactor\n\n* docs: Updated contact information and project links in the README\n\n* docs: Update project links and contact details"
    },
    {
      "commit": "9f60315eec3a9af58dac9ebc9b6726a8bd7f5934",
      "tree": "ab71aa656730e6fb947fee2faab1f3190ac5a082",
      "parents": [
        "1c4c1d6d4b9525c6a5111815394cf8972c25aa83"
      ],
      "author": {
        "name": "Congbin Qiao",
        "email": "qiaocongbin@gmail.com",
        "time": "Thu Jul 24 12:39:22 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 24 12:39:22 2025 +0800"
      },
      "message": "[ISSUE-557] Rename group id to org.apache.geaflow (#558)\n\n* [ISSUE-557] Rename group id to org.apache.geaflow\n\n* update project version\n\n* update\n\n* fix mass logs in ci test\n\n* fix resource file rename error"
    },
    {
      "commit": "1c4c1d6d4b9525c6a5111815394cf8972c25aa83",
      "tree": "47d83f1b047d77cfc1089d1a4fbb63b75337b00a",
      "parents": [
        "ffba882a642b78f272639a9726bf6606ed2412e0"
      ],
      "author": {
        "name": "dingyi",
        "email": "50548737+dy247846795@users.noreply.github.com",
        "time": "Wed Jul 16 15:23:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 16 15:23:54 2025 +0800"
      },
      "message": "[ISSUE-553] Support dynamic graph APIs in Paimon store. (#554)\n\n"
    },
    {
      "commit": "ffba882a642b78f272639a9726bf6606ed2412e0",
      "tree": "f6a3827b5ef66e54ff77a5d7e3abd0b4f574568c",
      "parents": [
        "64ab8dbb5ee3d4aea9713eb6d0b4d3a344902ed5"
      ],
      "author": {
        "name": "Leomrlin",
        "email": "1229394985@qq.com",
        "time": "Tue Jul 15 19:24:44 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 15 19:24:44 2025 +0800"
      },
      "message": "Add random table source (#550)\n\n* Add random table source\n\n* minor fix"
    },
    {
      "commit": "64ab8dbb5ee3d4aea9713eb6d0b4d3a344902ed5",
      "tree": "13b62d3ac22d924c0965ee045377109574b1040d",
      "parents": [
        "415f00bd28637c207149f7be85fb91063a6d4da0"
      ],
      "author": {
        "name": "huhao0926",
        "email": "hao0926.hu@huolala.cn",
        "time": "Tue Jul 15 11:49:14 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 15 11:49:14 2025 +0800"
      },
      "message": "fix(shuffle): prevent NPE in SpillablePipelineSlice.hasNext() during concurrent release (#552)\n\n1. Remove buffers\u003dnull in SpillablePipelineSlice.release()"
    },
    {
      "commit": "415f00bd28637c207149f7be85fb91063a6d4da0",
      "tree": "000215cabd08c72f9bd316677f69fe64370ea3a0",
      "parents": [
        "23f981dce562368708c4dc04f5184c63bae7c33e"
      ],
      "author": {
        "name": "huhao0926",
        "email": "hao0926.hu@huolala.cn",
        "time": "Thu Jul 10 16:52:47 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 10 16:52:47 2025 +0800"
      },
      "message": "[Cluster] Fix BRPC endpoint conflict in local multi-container deployment (#548)\n\n* [Cluster] Fix BRPC endpoint conflict in local multi-container deployment (#547)\n\n* Fix BRPC endpoint registration conflict when launching multiple containers in local mode\n* Add geaflow.executor.thread.max.multiple configuration for thread pool scaling\n\n* [Cluster] Make DEFAULT_MAX_MULTIPLE private\n\n* [Cluster] Fix Checkstyle violations in Javadoc comments\n\n* [Cluster] Fix remove unused import"
    },
    {
      "commit": "23f981dce562368708c4dc04f5184c63bae7c33e",
      "tree": "ed25d2deec8cb9756fa95f90be238c1ebe94aefc",
      "parents": [
        "fae74b3feacd94a0343beee73c52556ffbbaaa5c"
      ],
      "author": {
        "name": "Loognqiang",
        "email": "zqlongqiang@gmail.com",
        "time": "Fri Jul 04 15:44:23 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 15:44:23 2025 +0800"
      },
      "message": "support geaflow mcp server and provide basic query service (#545)\n\n"
    },
    {
      "commit": "fae74b3feacd94a0343beee73c52556ffbbaaa5c",
      "tree": "199c396fac59a41f0c3a0e81b49f51785882d453",
      "parents": [
        "d4e8bd2146b0d8d68c21c393b45422575fa1a719"
      ],
      "author": {
        "name": "huhao0926",
        "email": "huhao0926@outlook.com",
        "time": "Wed Jul 02 09:55:17 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 02 09:55:17 2025 +0800"
      },
      "message": "[Runtime] Fix checkpoint causing empty results in PipelineServiceExecutorContext (#543) (#544)\n\n* fix checkpoint causing empty results in interactive query\n* skip checkpoint when context is PipelineServiceExecutorContext"
    },
    {
      "commit": "d4e8bd2146b0d8d68c21c393b45422575fa1a719",
      "tree": "172eb870ca1f0c33bf1c5f620fcaa7d800558601",
      "parents": [
        "190810039f8f98c6c5acd228009d495f05b1c3d8"
      ],
      "author": {
        "name": "Qi Zhang",
        "email": "48751722+QiZhang1997@users.noreply.github.com",
        "time": "Sat Jun 14 14:25:35 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 14 14:25:35 2025 +0800"
      },
      "message": "add array function (#539)\n\n"
    },
    {
      "commit": "190810039f8f98c6c5acd228009d495f05b1c3d8",
      "tree": "2e20b1494cf6499b09878d4173291e74ee610ba8",
      "parents": [
        "6351ac7357d47f715139972842376a4d0bbc9190"
      ],
      "author": {
        "name": "dukewy123",
        "email": "135831500+dukewy123@users.noreply.github.com",
        "time": "Fri Jun 13 21:05:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 13 21:05:54 2025 +0800"
      },
      "message": "[DSL] Support UDF json get object (#536)\n\n* dsl support json get\n\n* PullRequest: 927 add udf get json object, refine code style\n\nMerge branch dev_ky_opensource_json_get of git@code.alipay.com:AntGraph/GeaFlow.git into dev_opensource\nhttps://code.alipay.com/AntGraph/GeaFlow/pull_requests/927?tab\u003ddiff\n\nReviewed-by: 知尘 \u003czhichen.zq@antgroup.com\u003e\n\n\n* add udf get json object, refine code style\n* change import test\n\n---------\n\nCo-authored-by: 坤羽 \u003cky.wy@antgroup.com\u003e"
    },
    {
      "commit": "6351ac7357d47f715139972842376a4d0bbc9190",
      "tree": "10e61bca995380a45441d5700c42638f60ad6606",
      "parents": [
        "a9a891afb10005540cfb00785fa416f8572e1d53"
      ],
      "author": {
        "name": "Florian",
        "email": "fanzhidongyzby@gmail.com",
        "time": "Fri Jun 06 17:00:07 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 06 17:00:07 2025 +0800"
      },
      "message": "chore: update contacts (#537)\n\n"
    }
  ],
  "next": "a9a891afb10005540cfb00785fa416f8572e1d53"
}
