)]}'
{
  "log": [
    {
      "commit": "7976813d24c04e88657f496ae9f693022b08dbe1",
      "tree": "6574a53956b0d3cd12f5993590ab496cec9d4258",
      "parents": [
        "be2b4e76353f3390bb3fb076f18dce26fdd7b8b5"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Jun 04 14:44:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 14:44:50 2026 +0800"
      },
      "message": "Sync upstream to 89624809f0 + adopt swctl admin e2e migration (#30)\n\nAdvance the skywalking submodule ad733554b0 -\u003e 89624809f0 (4 commits;\ndocs + e2e only, no production code). The relevant change is upstream\n#13889, which migrated the e2e admin-API calls from raw curl to the new\n`swctl admin ...` command tree and bumped skywalking-cli to an\nadmin-capable build.\n\n- Bump SW_CTL_COMMIT 9a1beab0 -\u003e b447211a (admin-capable swctl).\n- Drive the live-debugging admin checks through `swctl admin dsl-debug` /\n  `runtime-rule` / `oal` alongside the existing raw-curl contract checks:\n  the distro stub returns HTTP 501, so swctl exits non-zero and logs its\n  typed error envelope; grep recovers httpStatus + error code + feature\n  root, proving the official CLI surfaces a clean \"unsupported\"\n  (feature_not_available_in_graalvm_native) rather than a confusing 404.\n  Install swctl in the live-debugging case setup.\n- Update version-mapping.md dev row and changes/changes.md."
    },
    {
      "commit": "be2b4e76353f3390bb3fb076f18dce26fdd7b8b5",
      "tree": "fe03aa617ec63d299d910ddacd484f3f241c870a",
      "parents": [
        "3542069c10e072abf8699807a0e09031cca543cf"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri May 29 22:24:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 22:24:27 2026 +0800"
      },
      "message": "Add live-debugging e2e + fix native-image 404 on the unsupported-admin stub (#29)\n\n  - live-debugging e2e case — boots the native OAP and asserts the admin server (:17128) returns the structured HTTP 501 for the DSL live debugger (/dsl-debugging/*) and\n  runtime-rule (/runtime/*) endpoints, the features this distro pre-compiles away. 8 verify cases (6 response-body assertions across both prefixes/verbs + 2 HTTP-status-line\n  checks); added to the CI matrix.\n  - Real bug found + fixed — those endpoints were returning 404, not 501. UnsupportedAdminFeatureHandler is a distro-only Armeria handler the build-time precompiler can\u0027t scan\n  (circular dependency), so its reflection metadata was never registered and Armeria silently built zero routes. The stub had been dead since written — no prior e2e touched\n  port 17128. Fixed by registering it in reachability-metadata.json."
    },
    {
      "commit": "3542069c10e072abf8699807a0e09031cca543cf",
      "tree": "961e8526859d27a0add9371920cbc160623afe55",
      "parents": [
        "dada1c0769c3542eb72ab68ede6ee7532145b49d"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri May 29 20:46:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 20:46:42 2026 +0800"
      },
      "message": "Sync upstream to 11.0.0-SNAPSHOT (ad733554b0): admin-server family, DSL/formatExp drift fixes (#28)\n\n* Sync upstream to 11.0.0-SNAPSHOT (ad733554b0): admin-server family, DSL/formatExp drift fixes\n\n- Move skywalking submodule b272da3 -\u003e ad733554b0 (11.0.0-SNAPSHOT).\n- Wire admin-server/status/inspect/ui-management on the admin host (:17128 HTTP,\n  :17129 gRPC); remove the status-query plugin (status relocated). dsl-debugging and\n  runtime-rule answer with HTTP 501 via a stub module (no runtime Javassist codegen\n  in a closed-world native image).\n- Fix empty-config dispatch boot throw for InspectModuleConfig/UIManagementModuleConfig\n  (no-op branches in YamlConfigLoaderUtils + ConfigInitializerGenerator).\n- Port the new runtime-rule DSL overloads into the same-FQCN replacements: meter\n  DSL.parse/FilterExpression (5-arg) and log DSL.of (9-arg).\n- Fix formatExp drift: the precompiler and MAL comparison tests now compose expressions\n  via the real upstream MetricConvert.formatExp (ANTLR injectExpPrefix) instead of a\n  hand-rolled split-on-dot replica, fixing pre-compiled class lookup for chained exprs.\n- Enable iOS / mini-program OTel and Envoy AI Gateway MCP rules; update docs and e2e pins.\n\nBuild + 1335 unit tests green.\n\n* Fix version-mapping doc check: 12-char submodule prefix; mark 0.3.0 released\n\nThe CI verify-version-mapping.sh compares each (dev) row against the current\nsubmodule using a 12-char commit prefix, and non-dev rows against their v\u003cver\u003e\ngit tag. The 0.4.0 row used a 10-char prefix (ad733554b0) and the prior 0.3.0\nrow was still flagged (dev). Use ad733554b027 for the 0.4.0 dev row and mark\n0.3.0 as released (v0.3.0 -\u003e submodule b272da3cc1 -\u003e v10.4.0).\n\n* Fix native OAP boot crash: expose LAL DSL.getExpression()\n\nLogFilterListener.loadStaticRules() (boot path, LogAnalyzerModuleProvider.start)\ncalls dsl.getExpression() to publish the static LAL binding. Upstream\u0027s v2 DSL\nhas @Getter on the expression field; our same-FQCN replacement had the field but\nno getter, so the native OAP crashed at boot with NoSuchMethodError and every e2e\ncase (which waits on a healthy OAP) failed. Unit tests load pre-compiled classes\ndirectly and never go through DSL.of()/getExpression(), so this only surfaced at\na full boot. Reproduced locally by booting the JVM distro against BanyanDB.\n\n* Bump skywalking-infra-e2e to upstream pin for containsOnce verify fn\n\nThe submodule sync to ad733554b0 brought e2e expected-output templates that use\nthe verify template function containsOnce (121 expected/*.yml files). Our CI\npinned apache/skywalking-infra-e2e@8c21e43e, which predates that function, so the\nverify step failed with \u0027function \"containsOnce\" not defined\u0027 for the 20 cases\nthat use it (the 8 cases that don\u0027t use it passed). Bump to 0d91769411db83f632...,\nthe exact infra-e2e pin upstream\u0027s own e2e (skywalking.yaml @ ad733554b0) uses.\nNo e2e/swctl scripts changed; this only tracks the infra-e2e tool to the sync.\n\n* Remove orphaned menu e2e case (upstream dropped bundled UI in 11.0.0)\n\nUpstream #13877 (11.0.0: drop bundled UI) deleted test/e2e-v2/cases/menu/ in the\nsubmodule. The distro\u0027s test/e2e/cases/menu/ wrapper reuses\n../../../../skywalking/test/e2e-v2/cases/menu/menu-cases.yaml, which no longer\nexists, so the Menu e2e failed with \u0027reuse case config file ... not exist\u0027.\nDrop the wrapper dir and the Menu entry from the CI matrix to mirror upstream.\nVerified: menu is the only distro e2e wrapper whose reuse target is missing.\n\n* Remove Menu from CI e2e matrix (complete the menu case removal)\n\nThe previous commit deleted test/e2e/cases/menu/ but a failed \u0027git add\u0027 pathspec\nleft the ci.yml matrix edit unstaged, so the Menu job kept running against the\ndeleted dir (\u0027e2e config file .../menu/e2e.yaml not exist\u0027). Commit the matrix\nremoval + changelog now.\n\n* Fix native-image protobuf reflection for BanyanDB metrics queries\n\nThe 11.0.0 sync pulls protobuf-java 4.33 (editions) and the BanyanDB measure\ndescriptors carry editions features + protoc-gen-validate field options. When the\nnative OAP parses those descriptors for a metrics query, protobuf-java reflects on\nthe option/feature message classes; the GraalVM reachability metadata bundled with\nbuildtools 0.10.4 predates them, so queries failed at runtime with\n\u0027Generated message class ... missing method\u0027 (FeatureSet.getFieldPresence,\nFieldOptions$Builder.getCtype, Validate$FieldRules.getMessage, ...).\n\nRegister all com.google.protobuf.DescriptorProtos$* (88) and\nio.envoyproxy.pgv.validate.Validate$* (50) message/builder/enum classes\n(allDeclared methods/fields/constructors) in reachability-metadata.json.\n\nValidated locally: rebuilt the native image, ran the e2e Simple Java Agent compose,\nand confirmed \u0027swctl metrics exec --expression\u003dendpoint_cpm\u0027 returns a time series\nwith zero \u0027missing method\u0027 errors in the OAP log.\n\n* Align istio-als e2e to upstream: query OAP directly, drop the UI\n\nUpstream\u0027s istio e2e exposes service/skywalking-oap:12800 and queries it directly;\nthe distro\u0027s istio-als deployed the bundled UI (ui.image.tag\u003d$SW_UPSTREAM_COMMIT)\nand routed all verify queries through skywalking-ui:80/graphql. 11.0.0 dropped the\nbundled UI, so the old UI proxying to the new OAP graphql failed \u0027service ls\u0027\nverification. Expose+query skywalking-oap:12800 directly (matching upstream) and\ndisable the UI in the helm install (ui.enabled\u003dfalse); drop the UI pull/load.\n\n* Fix virtual-genai e2e: add missing /v1 to OpenAI base URL\n\nThe genai app\u0027s openai-java SDK appends /chat/completions to\nSPRING_AI_OPENAI_BASE_URL. Without /v1 the request hit\n/llm/chat/completions (404) instead of the mock\u0027s\n/llm/v1/chat/completions, so the trigger returned 500 and the case\nfailed. Aligns the base URL with upstream\u0027s compose. Verified locally:\nGET /ai/generateStream now returns 200 with a streamed completion."
    },
    {
      "commit": "dada1c0769c3542eb72ab68ede6ee7532145b49d",
      "tree": "48cab903a6faa95bd18574a61a4b682c7d0c3003",
      "parents": [
        "0ba6262fe42f76be7179597b30c4b9f23861bad4"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Apr 10 09:19:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 09:19:06 2026 +0800"
      },
      "message": "Fix post-vote script: pipefail crash, python3 arg passing, and idempotency (#27)\n\nThree bugs fixed:\n\n1. git show on submodule pom.xml exits 128 (submodule content not\n   accessible via superproject tag). With set -euo pipefail, the\n   pipeline silently killed the script. Added || true.\n\n2. Python3 heredoc arguments were placed after the PYEOF terminator,\n   making them a separate shell command instead of python3 args.\n   Changed to python3 - \u003cargs\u003e \u003c\u003c\u0027PYEOF\u0027 pattern.\n\n3. SVN move and remove steps now check if already completed before\n   attempting, making the script safe to re-run after partial failure.\n\nAlso added a pre-flight check that python3 actually works (not just\nexists as a broken asdf/pyenv shim)."
    },
    {
      "commit": "0ba6262fe42f76be7179597b30c4b9f23861bad4",
      "tree": "6a373fa7d684c9b85215b437a80a04bf728b7d9d",
      "parents": [
        "66ca543e53f816e005b206cd35994110ad7f1936"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Apr 05 23:06:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 23:06:11 2026 +0800"
      },
      "message": "Bump version to 0.4.0-SNAPSHOT (#26)"
    },
    {
      "commit": "66ca543e53f816e005b206cd35994110ad7f1936",
      "tree": "45cbd5e4bffb262e9702233df85b7c5a0a135bbb",
      "parents": [
        "84c5857735298f795c1a8ac96f9e5fe1a15e087b"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Apr 05 21:36:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 21:36:31 2026 +0800"
      },
      "message": "Sync upstream to v10.4.0, add GenAI/Envoy AI Gateway/TraceQL support (#25)\n\n  Upstream Sync\n\n  - Update skywalking/ submodule to v10.4.0 release tag (19 commits from 726ebcc321 to b272da3cc1)\n  - Update skywalking.version default in pom.xml to 10.4.0\n  - Update docs/version-mapping.md to 10.4.0\n\n  New Module: gen-ai-analyzer\n\n  - Add gen-ai-analyzer dependency to root pom.xml and oap-graalvm-server/pom.xml\n  - Register GenAIAnalyzerModule + GenAIAnalyzerModuleProvider in GraalVMOAPServerStartUp.java\n  - Add gen-ai-analyzer to AcceptedModules.java\n  - Add gen-ai-analyzer section to application.yml\n  - Regenerate YamlConfigLoaderUtils.java with GenAIConfig / GenAIConfig$Provider / GenAIConfig$Model\n  - Add gen-ai-config.yml to distribution.xml and native-distribution.xml\n  - Add 22 GenAI OAL metrics + 22 builder classes to reachability-metadata.json\n  - Update provider-inventory.properties and rule-file-inventory.properties\n  - Update docs/distro-policy.md\n\n  Envoy AI Gateway\n\n  - Add envoy-ai-gateway to lalFiles and enabledOtelMetricsRules in application.yml\n  - Add lal/envoy-ai-gateway.yaml, otel-rules/envoy-ai-gateway/gateway-service.yaml, gateway-instance.yaml to rule inventory\n  - Add 34 MAL comparison tests (EnvoyAIGatewayServiceTest, EnvoyAIGatewayInstanceTest)\n\n  TraceQL\n\n  - Add lookback, zipkinTracesListResultTags, skywalkingTracesListResultTags to application.yml\n\n  Same-FQCN Replacements\n\n  - New LogAnalyzerModuleConfig.java in log-analyzer-for-graalvm — add @Setter at class level (upstream meterConfigs field lacks setter)\n  - Add shade exclusion for LogAnalyzerModuleConfig in log-analyzer-for-graalvm/pom.xml\n\n  Config Generator Fix\n\n  - Skip imports for config classes with no fields (fixes checkstyle unused import errors)\n\n  E2E Tests\n\n  - Add virtual-genai e2e test case\n  - Add traceql-skywalking e2e test case\n  - Add envoy-ai-gateway e2e test case (manual-only, not in CI — requires ~400MB model download, upstream also skips)\n  - Update test/e2e/script/env: SW_UPSTREAM_COMMIT, SW_E2E_SERVICE_COMMIT, SW_BANYANDB_COMMIT, SW_AGENT_JAVA_COMMIT\n\n  CI\n\n  - Update graalvm/setup-graalvm to Apache-approved SHA f744c72a42 (v1.5.0)\n  - Add Virtual GenAI and TraceQL SkyWalking to e2e matrix\n\n  Version Mapping Script\n\n  - Fetch submodule tags before verification (CI shallow clones lack tags)\n  - Accept both tag format (10.4.0) and commit format (`b272da3cc196`-SNAPSHOT) in doc\n\n  Other\n\n  - Add sync-submodule skill with checklist for future submodule updates\n  - Update changes/changes.md"
    },
    {
      "commit": "84c5857735298f795c1a8ac96f9e5fe1a15e087b",
      "tree": "758432f8e601d70b865856895101ffa2bca7194d",
      "parents": [
        "31465f39f3ce164982efd1b2e9fe4247dedccae7"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 23 21:34:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 21:34:00 2026 +0800"
      },
      "message": "Add post-vote release script (#24)"
    },
    {
      "commit": "31465f39f3ce164982efd1b2e9fe4247dedccae7",
      "tree": "37f804f469c1d765a608288ebeaf797bc7f34a6e",
      "parents": [
        "7ae97f59e43ada1e92df218dd3e138083dcb85ca"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 20 15:13:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 15:13:12 2026 +0800"
      },
      "message": "Add 13 e2e test cases for infrastructure monitoring and TLS (#23)\n\nNew E2E Tests (13)\n\n  - mTLS (mutual TLS with client certificates)\n  - RabbitMQ, RocketMQ, ActiveMQ, Pulsar, Kafka, Redis, MongoDB, Flink (OTEL metrics collection)\n  - AWS DynamoDB, S3, EKS, API Gateway (mock sender metrics)\n\n  Bug Fix\n\n  - Fix Rules.loadRules() glob matching: patterns like rabbitmq/* were matched as exact strings, failing to load any sub-directory OTEL rules. Only 5 of 55 rules loaded. Now\n  dir/* patterns match any rule name starting with the directory prefix.\n\n  Documentation\n\n  - Add docs/version-mapping.md: maps each distro release to upstream Apache SkyWalking version.\n  - Add test/doc-scripts/verify-version-mapping.sh: CI verification that the dev row matches the actual submodule commit.\n\n  CI\n\n  - Add OTEL_COLLECTOR_VERSION and SW_AGENT_JDK_VERSION to e2e env file.\n  - Extend JDK/Maven cache conditions for AWS mock-sender tests.\n  - Add version-mapping doc verification to Build \u0026 Test job.\n  - Total e2e tests: 22 → 35."
    },
    {
      "commit": "7ae97f59e43ada1e92df218dd3e138083dcb85ca",
      "tree": "d1d1452cec50dea60a2fbb7200aeda308a3a91ab",
      "parents": [
        "649ec28e5dadbc0996dddb91af543d356839e2a4"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 19 22:42:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 22:42:02 2026 +0800"
      },
      "message": "Bump upstream, enable gRPC TLS in native image, fix MAL closure wiring (#22)\n\nfeat(graalvm): enable gRPC TLS with JDK SSL and align with SkyWalking MAL v2\n\n- Bump `skywalking` submodule to `726ebcc321`\n  - Includes upstream PR #13750 (MAL v2 companion class closures)\n  - Syncs related UI updates\n\n- Add `library-server-for-graalvm` module\n  - Provides same-FQCN `DynamicSslContext`\n  - Uses `SslProvider.JDK` instead of `SslProvider.OPENSSL`\n  - Enables gRPC TLS in native images without `netty_tcnative`\n\n- Add SSL e2e test (`ssl`)\n  - Verifies gRPC TLS works with JDK SSL provider\n  - Reuses upstream certs and `simple-cases.yaml`\n\n- Remove obsolete closure wiring\n  - Drop `wireClosures()`, `CLOSURE_TYPES`, `ClosureInfo`\n  - Clean up `DSL.java`, `MALScriptComparisonBase`,\n    `PrecompiledMALExecutionTest`\n  - Upstream now uses companion classes with self-wiring `static {}` blocks\n\n- Fix so11y e2e test\n  - Re-enable `meter_oap_instance_metrics_aggregation`\n  - Use label-filtered query: `{level\u003d\u0027L1 aggregation\u0027}`\n\n- Update SHA-256 tracking\n  - Add `DynamicSslContext.java` to staleness detector\n\n- Update docs\n  - Refresh CLAUDE.md for companion class pattern and TLS replacement"
    },
    {
      "commit": "649ec28e5dadbc0996dddb91af543d356839e2a4",
      "tree": "bf0c64295d9e932fa21da8bfe54ed7da738daeb8",
      "parents": [
        "38c3cd07bfa706378012a291baf46b6b4f55e20b"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Mar 18 23:34:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 23:34:21 2026 +0800"
      },
      "message": "Add 8 high-priority e2e test cases for 0.3.0 (#21)\n\nAdd 6 high-priority e2e test cases (auth, OTLP traces, virtual MQ, Kafka exporter, self-observability, MQE) to expand native image feature coverage for 0.3.0. Remove SSL/mTLS tests — native image lacks netty_tcnative native libraries for TLS. Document the TLS limitation in supported-features.md and FAQ with service mesh (Istio/Linkerd) as the recommended alternative."
    },
    {
      "commit": "38c3cd07bfa706378012a291baf46b6b4f55e20b",
      "tree": "207bc4727d44f152c67c472d47f83f4d4a574c08",
      "parents": [
        "2c3a5a0a4506baeec08f01f591cb17140540c93a"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Mar 18 08:05:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 08:05:23 2026 +0800"
      },
      "message": "Fix GitHub Release to include only version-specific changelog (#20)"
    },
    {
      "commit": "2c3a5a0a4506baeec08f01f591cb17140540c93a",
      "tree": "8c16e8ca7e083a30399101cc86db6fea0cd3ff18",
      "parents": [
        "0808555efcb4f592220ea74c4bf249ad008ab91b"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Mar 17 20:30:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 20:30:33 2026 +0800"
      },
      "message": "Fix release scripts when main already has next SNAPSHOT version (#19)"
    },
    {
      "commit": "0808555efcb4f592220ea74c4bf249ad008ab91b",
      "tree": "5cf64f329674825cb98fb1dc49812331bf83ebef",
      "parents": [
        "5ab4d7165bd71f72c9c8464da95adc1501e72cf2"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Mar 17 15:39:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 15:39:10 2026 +0800"
      },
      "message": "Fix changes.md and rewrite pre-release.sh to use release branches (#18)"
    },
    {
      "commit": "5ab4d7165bd71f72c9c8464da95adc1501e72cf2",
      "tree": "a275fd0ae8c22631e1fc7ca2f1221e6b82c874c6",
      "parents": [
        "9f94df6272ceffcb58dcce16617b032ae376afd7"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Mar 17 11:45:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 11:45:04 2026 +0800"
      },
      "message": "Fix source tarball build: move version.properties generation to git-only profile (#16)"
    },
    {
      "commit": "9f94df6272ceffcb58dcce16617b032ae376afd7",
      "tree": "c42fd3da936c51fbcfcb569d1244bc519819eca3",
      "parents": [
        "e1fc27963efc3acebfd3dd29b4490ad986f15215"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Mar 17 10:21:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 10:21:01 2026 +0800"
      },
      "message": "Bump version to 0.3.0-SNAPSHOT (#15)"
    },
    {
      "commit": "e1fc27963efc3acebfd3dd29b4490ad986f15215",
      "tree": "8a6cf5b8dea37d41fd3f936f137114f8af26fc25",
      "parents": [
        "11a091dcb94e2fc3813cbc1772f44090994e39aa"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Mar 17 08:36:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 08:36:35 2026 +0800"
      },
      "message": "Bump version to 0.2.0-SNAPSHOT (#14)"
    },
    {
      "commit": "11a091dcb94e2fc3813cbc1772f44090994e39aa",
      "tree": "b77cc43ca22c33ed9c40ca8f2c10f3b3ca817d9c",
      "parents": [
        "86791a437e293e64d42c6cb90615d4244b863f2e"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 16 23:14:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 23:14:04 2026 +0800"
      },
      "message": "Fix source tarball build and release SHA-512 checksums (#13)\n\n- **Source tarball build fix**: `version.properties` generation now handles absent `.git` gracefully — uses `resultproperty` to check git exit code and falls back to empty commit ID. No `xmlns:if` or complex Ant logic.\n- **SHA-512 fix**: `sign_and_checksum` uses `cd` pattern so `.sha512` files contain only `hash  filename` (no local paths). Darwin SHA-512 re-uploaded to GitHub Release after GPG signing.\n- **Vote email**: link changed from `quick-start.md` to `compiling.md`.\n- **Compiling docs**: added \"Building from Apache Source Tarball\" section with step-by-step instructions (no Git required)."
    },
    {
      "commit": "86791a437e293e64d42c6cb90615d4244b863f2e",
      "tree": "b00bcc769f78af0d4de5ecbf710d71a56e618cff",
      "parents": [
        "d05b707634436a8b02ec33fe8c2cbac6390ac935"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 16 17:01:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 17:01:50 2026 +0800"
      },
      "message": "Add TraceQL/PromQL/LogQL e2e tests, fix source tarball build and release tooling (#12)\n\n- **TraceQL module**: Add Tempo-compatible trace query API with Zipkin and SkyWalking datasource support.\n- **PromQL/LogQL/TraceQL e2e tests**: Three new e2e test cases for Prometheus, Loki, and Tempo compatible query APIs.\n- **Build-time entity auto-discovery**: Scan `org.apache.skywalking.oap.query.*.entity` packages at build time for Jackson reflection config instead of hardcoding class names.\n- **Source tarball build fix**: Gracefully handle absent `.git` in version generation using Ant `if:set` — Apache source release builds no longer require git.\n- **New version format**: `{distro}[-{commit}]-distro-{sw}[-{sw_commit}]` (e.g., `0.2.0-abc1234-distro-10.4.0-def5678`).\n- **Release tooling fixes**: SHA-512 checksum files now contain only hash + filename (no local paths), darwin SHA-512 re-uploaded after GPG signing, vote email links to `compiling.md`.\n- **Compiling docs**: Add \"Building from Apache Source Tarball\" section."
    },
    {
      "commit": "d05b707634436a8b02ec33fe8c2cbac6390ac935",
      "tree": "20322cc261cc802d3bd20a5208e6084f8eba3a59",
      "parents": [
        "b71761580d2676ccafd550b36abd63bc23b1d6bd"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 21:23:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 15 21:23:26 2026 +0800"
      },
      "message": "Add replacement class coverage check and 0.2.0 release notes (#11)\n\n- ReplacementClassStalenessTest: add auto-discovery pass that scans oap-libs-for-graalvm/ for untracked same-FQCN replacements\n- release.sh: verify changes/changes.md has release notes before proceeding\n- Add 0.2.0 changes section with upstream sync commit reference"
    },
    {
      "commit": "b71761580d2676ccafd550b36abd63bc23b1d6bd",
      "tree": "837c485ec9a355234e48cfec309b7b6bb5f00998",
      "parents": [
        "1fbb63b9388c67654c5cab5b00ce2f0a60b1d1c9"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 11:22:08 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 11:22:08 2026 +0800"
      },
      "message": "Add .asf.yaml branch protection, gh-pull-request skill, PR-only cancel-in-progress\n"
    },
    {
      "commit": "1fbb63b9388c67654c5cab5b00ce2f0a60b1d1c9",
      "tree": "caae001d85f0554616f901c3164c16ef9b1f9dd7",
      "parents": [
        "1c21ef352268597c6fe6155468b027a65a51a686",
        "d732dc830b40edccbd797549995203b3c7006cb3"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 11:20:33 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 11:20:33 2026 +0800"
      },
      "message": "Merge branch \u0027main\u0027 of https://github.com/apache/skywalking-graalvm-distro\n\n* \u0027main\u0027 of https://github.com/apache/skywalking-graalvm-distro:\n  Bump version to 0.2.0-SNAPSHOT (#10)\n"
    },
    {
      "commit": "d732dc830b40edccbd797549995203b3c7006cb3",
      "tree": "e9420a682e2425bcae3731f6d3de7c7175d9a76d",
      "parents": [
        "7af63a629568b0df8ea33ac6479c4fbdb3da3288"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 10:46:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 15 10:46:29 2026 +0800"
      },
      "message": "Bump version to 0.2.0-SNAPSHOT (#10)"
    },
    {
      "commit": "1c21ef352268597c6fe6155468b027a65a51a686",
      "tree": "caae001d85f0554616f901c3164c16ef9b1f9dd7",
      "parents": [
        "7af63a629568b0df8ea33ac6479c4fbdb3da3288"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 10:02:43 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 10:02:43 2026 +0800"
      },
      "message": "Release 0.1.1\n"
    },
    {
      "commit": "7af63a629568b0df8ea33ac6479c4fbdb3da3288",
      "tree": "e9420a682e2425bcae3731f6d3de7c7175d9a76d",
      "parents": [
        "9fe53d8c66e33418dc6cf178c39c4cf6e068020a"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 10:02:05 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 10:02:05 2026 +0800"
      },
      "message": "Add full-release.sh, update release guide and CI config\n"
    },
    {
      "commit": "9fe53d8c66e33418dc6cf178c39c4cf6e068020a",
      "tree": "fbf4e7a15c294b73f7a2785e1d41591caf1855ef",
      "parents": [
        "03a000805d7badecff724a0b4443998fbc42391c"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 09:02:07 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 09:02:07 2026 +0800"
      },
      "message": "Bump version to 0.2.0-SNAPSHOT\n"
    },
    {
      "commit": "03a000805d7badecff724a0b4443998fbc42391c",
      "tree": "e72f8088d8e2bb5e6aecd54dbf4d65bf427174e0",
      "parents": [
        "47f422271299d874045abdf992349f1d9c6c4a84"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 09:02:04 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 09:02:04 2026 +0800"
      },
      "message": "Release 0.1.0\n"
    },
    {
      "commit": "47f422271299d874045abdf992349f1d9c6c4a84",
      "tree": "932ac2be3e80fba4e33dbad9353e2a823f0bbb52",
      "parents": [
        "b39bf554dde910f3b99d739a1dc73796c917e7dd"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:59:23 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:59:23 2026 +0800"
      },
      "message": "Add release guide, disable cancel-in-progress, update CLAUDE.md\n\n- Add docs/release-guide.md covering the full release pipeline\n- Add release guide to docs/menu.yml\n- Set CI concurrency cancel-in-progress to false\n- Add no-auto-commit/push rule to CLAUDE.md\n"
    },
    {
      "commit": "b39bf554dde910f3b99d739a1dc73796c917e7dd",
      "tree": "ee2b02d700a2ed64a07d46eeaa220eb4330b5362",
      "parents": [
        "37a2d839f64ef78ac232a75c48dd7a3291a748dc"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:17:54 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:17:54 2026 +0800"
      },
      "message": "Add vote email generation to release.sh with GPG signer info\n"
    },
    {
      "commit": "37a2d839f64ef78ac232a75c48dd7a3291a748dc",
      "tree": "86c783cb3759f22dbd9e131c621141facbdba933",
      "parents": [
        "da5f72b1ff94d29dc8446cea743219284d05af59"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:11:07 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:11:07 2026 +0800"
      },
      "message": "Add SVN dist/dev upload step to release.sh\n"
    },
    {
      "commit": "da5f72b1ff94d29dc8446cea743219284d05af59",
      "tree": "cfd6c68ebb9bcd96d3662a7249e4d26a0a0f0064",
      "parents": [
        "5fb77c5d50eab591695621f5077f4d4dfa8d8f03"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:05:42 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 15 08:05:42 2026 +0800"
      },
      "message": "Fix missing Apache 2.0 license headers in benchmark files\n"
    },
    {
      "commit": "5fb77c5d50eab591695621f5077f4d4dfa8d8f03",
      "tree": "3451672e8aed248b88f525c6d2c5fd5c01f78da2",
      "parents": [
        "38840896192c117d7f1943b1e656233e7c7a8bc9"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Mar 14 23:53:26 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Mar 14 23:53:26 2026 +0800"
      },
      "message": "Set version to 0.1.0-SNAPSHOT, add release tooling and benchmark tuning\n\n- Bump Maven version from 1.0.0-SNAPSHOT to 0.1.0-SNAPSHOT across all modules\n- Move release.sh to release/ folder, add pre-release.sh for version bumping\n- Reduce benchmark traffic rate from ~20 RPS to ~12 RPS (60%)\n- Update changes.md with release tooling, benchmark, and CI/CD sections\n"
    },
    {
      "commit": "38840896192c117d7f1943b1e656233e7c7a8bc9",
      "tree": "b02fc5b12170e931c9261aad1281590dacdea624",
      "parents": [
        "5290d6f8646a83ddb07588abb93f70614ab25032"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Mar 14 21:40:24 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Mar 14 21:41:09 2026 +0800"
      },
      "message": "Restructure release.sh: build darwin-arm64 locally, separate tmp/dist dirs\n\n- Clone source from remote git tag instead of local working tree\n- Build macOS arm64 native binary and upload to GitHub Release\n- Download Linux tarballs from CI, verify checksums\n- GPG sign all artifacts into release-package/dist/\n- Clean tmp/ directory after completion\n- Add pre-flight tool checks and GPG key confirmation prompt\n- Sync skywalking submodule\n"
    },
    {
      "commit": "5290d6f8646a83ddb07588abb93f70614ab25032",
      "tree": "37437d3585a8d8d0fc844ac4974dec08a321139b",
      "parents": [
        "4444d00d33ccbd7ec1d5d02ea2dc33fefdebfb1f"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Mar 14 21:15:10 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Mar 14 21:15:10 2026 +0800"
      },
      "message": "Push Docker images to both GHCR and Docker Hub\n\nASF INFRA provides DOCKERHUB_USER and DOCKERHUB_TOKEN secrets.\nRelease builds push version + latest tags; CI pushes commit-sha tag.\n"
    },
    {
      "commit": "4444d00d33ccbd7ec1d5d02ea2dc33fefdebfb1f",
      "tree": "9d6a52fec9c40c9135294ada80933f2f0ba5058c",
      "parents": [
        "5a13383472dfc11a969fb4ba8d6bfbfd13579422"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 13:54:51 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 13:54:51 2026 +0800"
      },
      "message": "Drop macOS native build from CI: ASF runners lack sufficient RAM\n\nGraalVM native-image needs ~6GB heap; macOS runners only have 7.5GB total.\nNo cross-compilation possible. Users build macOS binaries locally.\n"
    },
    {
      "commit": "5a13383472dfc11a969fb4ba8d6bfbfd13579422",
      "tree": "6c298aad31fe49d62d5f3470803dbb32dc27f779",
      "parents": [
        "0a10c045ee6ba5aeb6ad9b900b00de536688c164"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 13:50:57 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 13:50:57 2026 +0800"
      },
      "message": "Fix macOS native build OOM: use macos-latest-xlarge runner (30GB RAM)\n"
    },
    {
      "commit": "0a10c045ee6ba5aeb6ad9b900b00de536688c164",
      "tree": "235d8f1563f2e433669ca8e1ac115e6498c83f4f",
      "parents": [
        "c73d78cbea52ec0b250c81d10b40c6ca871a75d9"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 12:47:55 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 12:47:55 2026 +0800"
      },
      "message": "Drop macOS amd64 native build, use macos-latest for arm64\n"
    },
    {
      "commit": "c73d78cbea52ec0b250c81d10b40c6ca871a75d9",
      "tree": "90b4835286d941c5977916319d3b5de633120ba8",
      "parents": [
        "e810dd7ca5efeab00d019e2ead5ef154cc0dd7d2"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 12:35:24 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 12:35:24 2026 +0800"
      },
      "message": "Use full commit SHA for Docker tags, add 1h timeout for native image builds\n"
    },
    {
      "commit": "e810dd7ca5efeab00d019e2ead5ef154cc0dd7d2",
      "tree": "8241382ae4aa4ebf522b2c7e3d276a2e0332ff04",
      "parents": [
        "fbdba78525c01520e85f9fa7a23d918d07b13781"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:47:11 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:47:11 2026 +0800"
      },
      "message": "Use changes.md as release body, rewrite release.sh to download from GitHub Release\n\n- GitHub Release page now uses changes/changes.md (or changes/{version}.md) as body\n- release.sh: download binary tarballs + SHA-512 from GitHub Release instead of\n  building locally; create source tarball from tag; GPG sign all artifacts\n"
    },
    {
      "commit": "fbdba78525c01520e85f9fa7a23d918d07b13781",
      "tree": "88a8b2d6bf9074c7eb8b7026a747c88e3f8a5445",
      "parents": [
        "b9511ece60cfd6b8b14e82b29c8d4349c0f8fb0a"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:44:04 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:44:04 2026 +0800"
      },
      "message": "Fix CI: run native Linux build + e2e on PRs, gate Docker push and macOS to non-PR\n"
    },
    {
      "commit": "b9511ece60cfd6b8b14e82b29c8d4349c0f8fb0a",
      "tree": "46348162bcd43a6897e3beadede43841cf9927ee",
      "parents": [
        "56fcd2af45da894db7f7db85454cc4633a066d09"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:41:53 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:41:53 2026 +0800"
      },
      "message": "Unify CI and release into single workflow with macOS builds\n\n- Merge release.yml into ci.yml: tag push or manual dispatch with version\n  triggers release (GitHub Release page + version Docker tag)\n- Add macOS native builds (amd64 via macos-13, arm64 via macos-14)\n- Docker manifest tags: commit-sha always; version + latest for releases\n- CI-only builds (push to main): compile, test, e2e, commit-sha Docker tag\n- Release builds (tag or manual): skip e2e, build all platforms, publish\n"
    },
    {
      "commit": "56fcd2af45da894db7f7db85454cc4633a066d09",
      "tree": "225bb732b3f9da38eafc29fbc9297a05992b526d",
      "parents": [
        "f7e39175d348055b67518018ef64d824ace37db5"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:40:19 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:40:19 2026 +0800"
      },
      "message": "Add changes/changes.md for initial release\n"
    },
    {
      "commit": "f7e39175d348055b67518018ef64d824ace37db5",
      "tree": "ca25b2b8ccb4ed5ed6a1bb666b2d07bee899f65d",
      "parents": [
        "936d1d522e0f8da9ce1fe933c09fd4495ea8e5df"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:37:52 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 11:37:52 2026 +0800"
      },
      "message": "Enhance release CI: add macOS builds, commit-based Docker tag, unified release page\n"
    },
    {
      "commit": "936d1d522e0f8da9ce1fe933c09fd4495ea8e5df",
      "tree": "360897262662b29cfd3cffb39cbafae1eb3b579c",
      "parents": [
        "a1cf39821123471dacc278b5d708fae5bb36262c"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 10:24:17 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 10:24:17 2026 +0800"
      },
      "message": "Upgrade GitHub Actions from v4 to v5 to fix Node.js 20 deprecation\n"
    },
    {
      "commit": "a1cf39821123471dacc278b5d708fae5bb36262c",
      "tree": "863c1ffe8e98add0315d61c95121f1a767b4f555",
      "parents": [
        "a470287e234747478fbda8a07e9258db70535f53"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 10:18:36 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 10:18:36 2026 +0800"
      },
      "message": "Add LICENSE/NOTICE, release workflow manual trigger, fix release.sh\n\n- Add root LICENSE and NOTICE from upstream for source tarball\n- Add LICENSE/NOTICE/licenses to native binary assembly\n- Add workflow_dispatch trigger to release.yml with commit and version inputs\n- Fix release.sh .git cleanup to also remove submodule .git files\n"
    },
    {
      "commit": "a470287e234747478fbda8a07e9258db70535f53",
      "tree": "475e6277a86c451b3709ffc49a04cfefc3883fa3",
      "parents": [
        "3f5149cae09bb2d4a1db730a481f2d182e8e6171"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 09:50:39 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 09:50:39 2026 +0800"
      },
      "message": "Sync upstream to 2709c94: LAL LogMetadata refactor\n\nUpdate skywalking submodule to pick up LAL LogMetadata decoupling\n(#13741, #13742). Key changes:\n\n- Update LAL DSL.java replacement: ctx.log() removed upstream,\n  use ctx.metadata() (LogMetadata) for debug logging\n- Add LAL SPI implementations to reflect-config: EnvoyAccessLogBuilder,\n  EnvoyHTTPLALSourceTypeProvider (ServiceLoader needs reflection in\n  native image)\n- Update staleness hash for upstream DSL.java\n"
    },
    {
      "commit": "3f5149cae09bb2d4a1db730a481f2d182e8e6171",
      "tree": "051506ac602969ab6cc0811fd92851a85ff962af",
      "parents": [
        "68f6b4c8c79cef8631e0fea63c96bfdf92248102"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 08:48:13 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Mar 13 08:48:13 2026 +0800"
      },
      "message": "Add AlarmRecoveryMessage to native image reflect-config\n\nAlarmRecoveryMessage extends AlarmMessage with a recoveryTime field.\nGson needs reflection access to serialize this subclass field in native\nimage. Without it, recovery webhook JSON omits recoveryTime, causing\nthe alarm e2e recovery test case to loop forever (sleep 60 per retry).\n"
    },
    {
      "commit": "68f6b4c8c79cef8631e0fea63c96bfdf92248102",
      "tree": "51e8d721d2a943152cafbcdec502d4d5dd610e04",
      "parents": [
        "02700a7f71d897162d0de6dddce7ed21390f1f64"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 22:29:47 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 22:29:47 2026 +0800"
      },
      "message": "Fix alarm webhook in native image: lazy HttpClient initialization\n\nHttpAlarmCallback used a static final HttpClient field that was initialized\nat native-image build time. The resulting HttpClient had dead thread pools\nand IO resources, silently failing all webhook POST requests at runtime.\n\nReplace with same-FQCN class using double-checked locking lazy init, so\nthe HttpClient is created on first use at runtime.\n"
    },
    {
      "commit": "02700a7f71d897162d0de6dddce7ed21390f1f64",
      "tree": "230bba8ba4ee0485ecabcdc9535edfea0d41da4d",
      "parents": [
        "8363f78a0dbb03bf751d12380db9823a9a7032a3"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 17:05:58 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 17:05:58 2026 +0800"
      },
      "message": "Fix baseline e2e: restore Maven cache for mock-sender dependencies\n\nThe e2e-mock-sender build needs e2e-protocol and opentelemetry-proto\nfrom the local Maven repo. Add init-skywalking to e2e job needs,\nrestore the Maven cache, and set up JDK 17 for the baseline case.\nAlso use reactor (-pl -am) to resolve intra-project dependencies.\n"
    },
    {
      "commit": "8363f78a0dbb03bf751d12380db9823a9a7032a3",
      "tree": "e18949b3137f27733f6289964461831e6c0a31f7",
      "parents": [
        "ce00a5cd56d166edfe9139a06968ff70f19cdb31"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 15:47:36 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 15:47:36 2026 +0800"
      },
      "message": "Fix baseline e2e: build mock-sender jar; add alarm TRACE logging for diagnosis\n\n- Add CI step to build e2e-mock-sender jar from upstream submodule before\n  baseline e2e test (fixes \"Invalid or corrupt jarfile\" in sender container)\n- Add TRACE-level log4j2 config for alarm e2e test to diagnose why alarms\n  never trigger in native image (volume-mounted over default log4j2.xml)\n"
    },
    {
      "commit": "ce00a5cd56d166edfe9139a06968ff70f19cdb31",
      "tree": "a48f7cbefc70bb6256560ea7029a3e18cf289bc6",
      "parents": [
        "b59ce67374e93eaab6b596ea842c9cccbb6ee811"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 11:37:41 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 11:37:41 2026 +0800"
      },
      "message": "Add TTLDefinition to native image reflect-config for /status/config/ttl endpoint\n\nThe baseline e2e test failed because the REST endpoint /status/config/ttl\nreturns TTLDefinition, which Jackson cannot serialize in native image without\nreflection metadata. MetricsTTL and RecordsTTL were already covered by the\nGraphQL type scanner, but the wrapper TTLDefinition was not.\n"
    },
    {
      "commit": "b59ce67374e93eaab6b596ea842c9cccbb6ee811",
      "tree": "827c8adb95a29af06db6873a753a6bc093446cb1",
      "parents": [
        "68ebc83c692531b3a8dd7c67c0d14d17fb97243f"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 10:11:22 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 10:11:22 2026 +0800"
      },
      "message": "Restructure docs for end users: add quick-start, features, FAQ\n\n- Add docs/quick-start.md, docs/supported-features.md, docs/faq.md\n- Move internal build-time docs to docs/internals/\n- Update docs/README.md with user-facing and contributor sections\n- Update menu.yml, distro-policy.md, CLAUDE.md links accordingly\n"
    },
    {
      "commit": "68ebc83c692531b3a8dd7c67c0d14d17fb97243f",
      "tree": "27a35e27ec3620e960a24d8926e635dc657ff8cf",
      "parents": [
        "7f8651a57c42ad369f84c3dc311ae1479ebbdb19"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 09:52:38 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Mar 12 09:52:38 2026 +0800"
      },
      "message": "Update BanyanDB to e1ba421, bump Istio to 1.28.0, add baseline e2e case\n\n- Sync BanyanDB commit to e1ba421bd6 (required for Zipkin minDuration trace query)\n- Update ISTIO_VERSION from 1.24.0 to 1.28.0\n- Add baseline predictor e2e test case\n- Add gen/ to .gitignore\n- Add SW_PREDICTOR_COMMIT to env to silence docker-compose warnings\n"
    },
    {
      "commit": "7f8651a57c42ad369f84c3dc311ae1479ebbdb19",
      "tree": "d20488cc0799cb4388730b929a2fb365c7014dc3",
      "parents": [
        "f52364f74d5ddc394928bbc87ee9b2493934d233"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Mar 11 22:32:30 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Mar 11 22:32:30 2026 +0800"
      },
      "message": "Fix native image boot: add Rules/LALConfigs replacements and resource config\n\n- Add same-FQCN replacement for v2 Rules.java (loads from META-INF/config-data/*.json)\n- Add same-FQCN replacement for v2 LALConfigs.java (loads from META-INF/config-data/lal.json)\n- Fix LAL DSL.of() lookup to match {yamlSource}_{ruleName} class naming pattern\n- Add MeterConfigs FAIL_ON_UNKNOWN_PROPERTIES for MetricRuleConfig.sourceName field\n- Fix precompiler resource-config.json: add mal-v2.manifest and mal-v2/* patterns\n- Fix native-image reachability metadata: update 5 stale v1→v2 class references\n- Add release.sh with GPG key display and @apache.org email validation\n- Update submodule to 58652507b6 (K8s coordinator fix, LAL def variables)\n\nVerified: E2E Simple Java Agent passes (51/51) on native image.\n"
    },
    {
      "commit": "f52364f74d5ddc394928bbc87ee9b2493934d233",
      "tree": "68b42ccb76b767517e514651a79bbc0d4f49bec6",
      "parents": [
        "113d3deb322e379b0a33ff5c805feaa7cc5fa80d"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Mar 10 07:58:51 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Mar 10 07:58:51 2026 +0800"
      },
      "message": "Fix hierarchy rule name lookup for v2 class naming convention\n\nThe v2 HierarchyRuleClassGenerator names classes as\nhierarchy_definition_\u003cruleName\u003e (e.g. hierarchy_definition_name).\nThe loadPrecompiledRules() method was stripping \"HierarchyRule_\"\nprefix (v1 convention) instead of \"hierarchy_definition_\" prefix,\ncausing all E2E tests to fail at startup.\n"
    },
    {
      "commit": "113d3deb322e379b0a33ff5c805feaa7cc5fa80d",
      "tree": "d490ab90686f6a63d64a30c1d01a1194298e29e6",
      "parents": [
        "444e9a437e7ff7f339465508344abef92d068ad9"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 09 23:47:32 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 09 23:47:32 2026 +0800"
      },
      "message": "Add ci-e2e-debug skill for inspecting CI e2e test logs\n"
    },
    {
      "commit": "444e9a437e7ff7f339465508344abef92d068ad9",
      "tree": "a2ccf026cd60b08c3fec524386ebfc704e5ef6da",
      "parents": [
        "b40057726d1c710e33c33d1d8cdeb49375b7e89f"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 09 23:45:57 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 09 23:45:57 2026 +0800"
      },
      "message": "Fix EnvoyMetricReceiverConfig v1 import after upstream v2 migration\n\nUpdate Rule/Rules imports from v1 package\n(o.a.s.oap.meter.analyzer.prometheus.rule) to v2 package\n(o.a.s.oap.meter.analyzer.v2.prometheus.rule).\n"
    },
    {
      "commit": "b40057726d1c710e33c33d1d8cdeb49375b7e89f",
      "tree": "1bd3b57401fbc2f12ef17fdb4a2e39a6842cc3c3",
      "parents": [
        "c888e81df03cfa983532e652991ddf6d5dd8ffbe"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 09 22:28:14 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Mar 09 22:28:14 2026 +0800"
      },
      "message": "Adopt upstream v2 DSL engines (ANTLR4+Javassist, no Groovy)\n\nSync skywalking submodule to 247583be0b which replaces all Groovy-based\nDSL compilers (OAL/MAL/LAL/Hierarchy) with v2 engines using ANTLR4\nparsing and Javassist bytecode generation.\n\nKey changes:\n- Remove groovy-stubs module (no longer needed)\n- Remove v1 transpilers (MalToJavaTranspiler, LalToJavaTranspiler)\n- Update precompiler to use v2 MALClassGenerator/LALClassGenerator APIs\n- Replace flat hash-based manifests with per-file configs under\n  META-INF/mal-v2/ mirroring original YAML directory structure\n- Update same-FQCN replacements from v1 to v2 packages (DSL, FilterExpression)\n- Remove v1 replacement classes (Expression, SampleFamily, Spec classes, etc.)\n- Update all MAL/LAL comparison tests to use v2 engine APIs\n- Update staleness SHA-256 hashes for v2 upstream paths\n- Add TraceQLProvider to provider inventory\n- Add setter exclusion for LogAnalyzerModuleConfig.meterConfigs cache field\n- Update docs and CLAUDE.md for v2 architecture\n\nAll 1293 tests pass.\n"
    },
    {
      "commit": "c888e81df03cfa983532e652991ddf6d5dd8ffbe",
      "tree": "ebcd7b60bfe2d6c352af339b672559bccbed45dd",
      "parents": [
        "b9ccc10d589db8b2eb276403cbf69e969b3760f6"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 01 09:21:54 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 01 09:21:54 2026 +0800"
      },
      "message": "Fix GraphQL type scanner to handle simple name collisions\n\nThe simpleNameIndex map was keyed by class simple name, so when multiple\nclasses share the same name (e.g., AlarmMessage exists in core.alarm,\ncore.alarm.grpc, and core.query.type), only the last one was indexed.\nThis caused core.query.type.AlarmMessage to be missing from\nreflect-config.json, resulting in null String fields in GraphQL alarm\nquery responses.\n\nChange the index to map simple name → list of FQCNs so all variants\nare included in the reflection configuration.\n"
    },
    {
      "commit": "b9ccc10d589db8b2eb276403cbf69e969b3760f6",
      "tree": "4edc2c5121dce1e3c01451e01a6d48c85e52a57d",
      "parents": [
        "1047c8e9566247ad259ea5b08afedc01fcd78f99"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 01 08:29:41 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Mar 01 08:29:41 2026 +0800"
      },
      "message": "Fix MAL combination pattern resolution and add reflection configs\n\nDSL.java: resolve correct suffixed metric variant (e.g., telegraf vs otel)\nby matching expression SHA-256 hash against mal-groovy-expression-hashes.txt.\nWithout this, all shared metric names (meter_vm_cpu_load1, etc.) always\nresolved to the otel (base) variant, ignoring telegraf/zabbix expressions.\n\nPrecompiler: add ZabbixRequest$AgentData and AlarmMessage to reflection\nconfig for Gson serialization at runtime.\n"
    },
    {
      "commit": "1047c8e9566247ad259ea5b08afedc01fcd78f99",
      "tree": "7c948a546375d700bf47a4c8fc108d1866c940c2",
      "parents": [
        "d5a2e19ffe6774453be3ba56ba7998564d98e02c"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 23:51:38 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 23:51:38 2026 +0800"
      },
      "message": "Fix Alarm, Zabbix, and Telegraf E2E failures\n\n- Alarm: register AlarmSnapshotRecord for Gson serialization so\n  snapshot.expression field is not null in GraphQL response\n- Zabbix: add ZBX_ACTIVESERVERS/ZBX_HOSTNAME env vars to override\n  Docker entrypoint defaults; register ZabbixResponse$ActiveChecks\n  for Gson serialization of active check response items\n- Telegraf: TelegrafDatum fix from previous commit should allow data\n  processing; Meter base class fix should prevent persistence errors\n"
    },
    {
      "commit": "d5a2e19ffe6774453be3ba56ba7998564d98e02c",
      "tree": "59ad76e450c1fd81f6fd2a130cda92c76a0e115f",
      "parents": [
        "db75f1f51418d93f95a37e27f6ff631e74cb35fb"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 22:49:15 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 22:49:15 2026 +0800"
      },
      "message": "Add reflection config for Meter, TelegrafDatum, event.Source, Tag\n\nFix 5 E2E test failures:\n- Meter: register Meter base class so attr0-attr5 fields are\n  discoverable via getDeclaredFields() in StorageModels.retrieval()\n- VM Telegraf: register TelegrafDatum for Jackson deserialization\n  (request conversion fails before handler method is called)\n- Event: register event.Source for no-arg constructor reflection\n- Alarm/Log: register searchtag.Tag for field read/write access\n"
    },
    {
      "commit": "db75f1f51418d93f95a37e27f6ff631e74cb35fb",
      "tree": "9c29e3cac2621d288fe11ffcf2c90d1afd2fb955",
      "parents": [
        "dc3142c44b8119f9c43b2578aa73a59afc12764f"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 21:17:53 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 21:17:53 2026 +0800"
      },
      "message": "Register ZabbixConfig classes for reflection, disable E2E fail-fast\n\nZabbixConfigs.loadConfigs() deserializes zabbix-rules/*.yaml via\nSnakeYAML into ZabbixConfig POJOs. The class and its inner classes\n(Entities, EntityLabel, Metric) were not registered for reflection,\ncausing \"Class not found\" at runtime in the native image.\n\nAlso set fail-fast: false on the E2E matrix so one test failure does\nnot cancel all other running tests.\n"
    },
    {
      "commit": "dc3142c44b8119f9c43b2578aa73a59afc12764f",
      "tree": "fd20cc4204d261652607de8ea542d44b0ae31922",
      "parents": [
        "8b309be5cb2cf78b2047d08f72e45dbf053e8b98"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 20:43:10 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 20:43:10 2026 +0800"
      },
      "message": "Ship telegraf-rules/ and zabbix-rules/ in native distribution\n\nThe receiver-zabbix and receiver-telegraf modules load MAL rule YAML\nfiles from the filesystem at runtime via Rules.loadRules(). These\ndirectories were missing from the native assembly, causing\nFileNotFoundException when the modules are activated via env vars.\n"
    },
    {
      "commit": "8b309be5cb2cf78b2047d08f72e45dbf053e8b98",
      "tree": "56f01071773b2861624431f877138b249465b1bc",
      "parents": [
        "24970b3448154eb2f171b457b563d6723f0185fa"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 19:57:29 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 19:57:29 2026 +0800"
      },
      "message": "Add 9 E2E tests: event, menu, alarm, log, meter, trace-profiling, telegraf, zabbix, zipkin\n\nAdd docker-compose + BanyanDB E2E tests for 9 upstream cases covering\nreceiver-event, menu metadata, alarm/webhook, receiver-log/LAL, receiver-meter/MAL,\ntrace profiling, receiver-telegraf, receiver-zabbix, and receiver-zipkin/query-zipkin.\n\nDisabled-by-default modules (zabbix, zipkin) are activated via env vars.\nLog and meter tests use inline verification adapted for native image constraints\n(LAL/MAL configs compiled into binary, no mock-sender GHCR image).\n"
    },
    {
      "commit": "24970b3448154eb2f171b457b563d6723f0185fa",
      "tree": "cf3a8f328b320c9ffb8459a784b16bc0bb13bfcf",
      "parents": [
        "dfd8b8a392516aba71c7ea17667759af3d3ef334"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 16:56:19 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 16:56:19 2026 +0800"
      },
      "message": "E2E: always upload logs artifact for OAP cluster mode inspection\n"
    },
    {
      "commit": "dfd8b8a392516aba71c7ea17667759af3d3ef334",
      "tree": "61bfd44b839248c481c63311a1678820563bfd76",
      "parents": [
        "b7e4c31fbb0f7237a26b22d8d872b44aa3ad6806"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 10:58:29 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 10:58:29 2026 +0800"
      },
      "message": "E2E: always dump OAP logs after test run\n"
    },
    {
      "commit": "b7e4c31fbb0f7237a26b22d8d872b44aa3ad6806",
      "tree": "b61a37726cda29976639eba94a1d2f8e2d5f4de1",
      "parents": [
        "a5f4ad8e20dc6ae1b51c9e6a88179ccbf1fbe178"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 08:55:25 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 08:55:25 2026 +0800"
      },
      "message": "Add compiling guide, pre-built Docker image doc, and track existing docs\n\n- Add docs/compiling.md: step-by-step build guide from source to native image\n- Add docs/docker-image.md: GHCR pre-built image usage, tags, and run examples\n- Add Setup section to docs/menu.yml grouping compiling, Docker image, and config\n- Track existing docs/ files that were previously untracked (distro-policy,\n  oal/mal/lal-immigration, config-init-immigration)\n"
    },
    {
      "commit": "a5f4ad8e20dc6ae1b51c9e6a88179ccbf1fbe178",
      "tree": "184124e12b9d7aa0fb78bc3bc8eda2ddb06a8968",
      "parents": [
        "18ad07efff095813bf83b21380e25e5aef7b5bd2"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 08:41:17 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 27 08:41:17 2026 +0800"
      },
      "message": "Move docs to docs/ directory, add website menu, configuration reference, and README\n\n- Move 5 root-level doc files (DISTRO-POLICY, OAL/MAL/LAL/CONFIG-INIT-IMMIGRATION)\n  into docs/ with lowercase names as the canonical location\n- Add docs/menu.yml for website generation\n- Add docs/README.md as the website landing page\n- Add docs/configuration.md with full module/setting/env-var reference\n- Slim down root README.md to a brief overview linking to docs/\n- Update CLAUDE.md references to point to docs/ paths\n"
    },
    {
      "commit": "18ad07efff095813bf83b21380e25e5aef7b5bd2",
      "tree": "428c527743e23b9d398247a4c339f3c2d334d034",
      "parents": [
        "cd12192cc3e1f158715c34a3894d4efd21417fe0"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 22:24:19 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 22:24:19 2026 +0800"
      },
      "message": "Add Istio ALS E2E test to CI matrix\n"
    },
    {
      "commit": "cd12192cc3e1f158715c34a3894d4efd21417fe0",
      "tree": "3df5eb6260b6c1c5a4631a573bf622a4f96152fc",
      "parents": [
        "a67cc7886d1ea2b6cdac7e2df04ba21086d748c0"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 22:22:53 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 22:22:53 2026 +0800"
      },
      "message": "E2E istio-als: split reflection configs by project, fix K8s/ALS runtime\n\nSplit third-party reflection registrations from reachability-metadata.json\ninto per-project files (fabric8, fasterxml, linecorp-armeria, grpc-envoy,\nnetty, google) referenced via -H:ReflectionConfigurationResources for\neasier tracking.\n\nRegister comprehensive fabric8 K8s model types (507 entries) with\nallPublicMethods/allPublicConstructors for Jackson deserialization of\nConfigMap, Pod, and related API objects at runtime.\n\nAdd 18 array type registrations (java.util.Calendar[], BigDecimal[],\netc.) required by commons-beanutils ConvertUtilsBean, fixing ALS K8s\nreceiver ServiceNameFormatter which uses PropertyUtils.\n\nUpdate istio-als E2E: use ghcr.io UI image via SW_UPSTREAM_COMMIT,\nadd pull_or_cache() for Docker Hub resilience, pre-load all required\nimages into kind cluster.\n\nVerified: istio-als E2E passes (42/42 assertions).\n"
    },
    {
      "commit": "a67cc7886d1ea2b6cdac7e2df04ba21086d748c0",
      "tree": "c220b051de8abc702cfcdca7a02b6295fd147186",
      "parents": [
        "e1443e82f5900a9e0b7cd70a58a51a423c95d443"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 16:13:22 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 16:13:22 2026 +0800"
      },
      "message": "E2E: use pre-built test service images from GHCR\n\nReplace local JAR volume-mounts with pre-built images from\nghcr.io/apache/skywalking. Init containers copy JARs into a\nshared volume, then the skywalking-java agent image runs them.\n\nAdd test/e2e/script/env with all commit IDs for pre-built images.\n"
    },
    {
      "commit": "e1443e82f5900a9e0b7cd70a58a51a423c95d443",
      "tree": "84d7ea2f11c32404a86f04f7484d1b0c2db82ae6",
      "parents": [
        "7b66e7906bdb79b4d22994209e1bd75d5501fb71"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 15:21:54 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 15:21:54 2026 +0800"
      },
      "message": "Fix ClassCastException: use Number.xxxValue() for YAML numeric casts\n\nSnakeYAML parses small numbers as Integer, but the config generator\nemitted direct (long)/(int) casts which fail on boxed Integer/Long.\nUse ((Number) value).longValue()/intValue() in both the generator\nand the generated YamlConfigLoaderUtils.\n"
    },
    {
      "commit": "7b66e7906bdb79b4d22994209e1bd75d5501fb71",
      "tree": "496c16a8a83c6703a64096d35ab78199c86d5158",
      "parents": [
        "ee98e4369efdb932383b71b7fdb00decc2bbb8b7"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 14:17:38 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 14:17:38 2026 +0800"
      },
      "message": "Fix javadoc: replace invalid ServiceLoader link in ProviderDiscovery\n"
    },
    {
      "commit": "ee98e4369efdb932383b71b7fdb00decc2bbb8b7",
      "tree": "dbe1ace71bba2fd5a3df7a6769b702aa589c66de",
      "parents": [
        "ea7124439dd8eb477e29b1a1c79f61a2db3b1406"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 14:04:21 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 26 14:04:21 2026 +0800"
      },
      "message": "Dynamic discovery for build tools, dependency cleanup, and E2E istio-als case\n\nBuild tools:\n- Add build-common module with AcceptedModules and ProviderDiscovery for\n  dynamic module/provider scanning (replaces hardcoded FQCN lists)\n- Simplify config-generator: depend on upstream server-starter, remove\n  setter validation (upstream classes lack @Setter; javac in oap-graalvm-server\n  catches missing setters at compile time)\n- Precompiler: dynamic OALDefine scanning, emit module-config-classes.txt\n  manifest, update tests\n\nDependency cleanup:\n- Remove redundant server-starter provided entries from oap-graalvm-server\n  dependencyManagement and oap-graalvm-native dependencies\n- Replace groovy test-scope override in oap-graalvm-native with Maven\n  exclusion on oap-graalvm-server dependency\n- Add -am to build-distro Makefile target for automatic reactor resolution\n\nOther:\n- Regenerated YamlConfigLoaderUtils from updated config-generator\n- Add istio-als E2E test case scaffolding\n- Dockerfile.native and E2E Makefile updates\n"
    },
    {
      "commit": "ea7124439dd8eb477e29b1a1c79f61a2db3b1406",
      "tree": "6d9736f88c3078c2ce579259b4956556dc775b6f",
      "parents": [
        "6786c4e027638fd0e86d50dbbc98c491e11531ff"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 22:08:11 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 22:08:11 2026 +0800"
      },
      "message": "Rename build-skywalking to init-skywalking in Makefile and CI\n"
    },
    {
      "commit": "6786c4e027638fd0e86d50dbbc98c491e11531ff",
      "tree": "d7be17fb92538dfa3aa6697b387ea9785bde9101",
      "parents": [
        "e438f0fd7514fc45b8e648777ffdd6a4a623007f"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 21:56:41 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 21:56:41 2026 +0800"
      },
      "message": "E2E test infrastructure: simple-java-agent case with native OAP\n\n- Add simple-java-agent e2e test case reusing upstream verification\n- Register GraphQL query types and protobuf classes for reflection\n- Add netcat-openbsd to Docker image for healthchecks\n- Add e2e job to CI pipeline using pre-built native Docker image\n- Document applicable e2e cases in .github/E2E-CASES.md\n"
    },
    {
      "commit": "e438f0fd7514fc45b8e648777ffdd6a4a623007f",
      "tree": "84320028ab8c7ae3a55d819f8fe992d0edaf757f",
      "parents": [
        "ee1a103716c43ca876ff3716e02b331745b706d4"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 20:13:11 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 20:13:11 2026 +0800"
      },
      "message": "Sync with upstream submodule: VirtualThreads, ExporterSetting, oap.yaml, warm/cold config\n\n- Update skywalking submodule to a0cec0c\n- Add VirtualThreads replacement (direct JDK 25 API, no reflection)\n- Update HierarchyService to use VirtualThreads.createScheduledExecutor()\n- Fix ExporterSetting: bufferChannelSize/bufferChannelNum -\u003e bufferSize\n- Handle BanyanDB warm/cold Stage config in YamlConfigLoaderUtils\n  (extract shared copyToGroupResource with deferred stage processing)\n- Update oap.yaml metric label change (kind+metricName -\u003e slot)\n- Update SHA-256 hashes for changed upstream files\n"
    },
    {
      "commit": "ee1a103716c43ca876ff3716e02b331745b706d4",
      "tree": "a09bd08f92f234d4996b58094262ebff926d6771",
      "parents": [
        "faa12ddfbb28c4cee0dca3d8d41408fae6d14995"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 12:04:14 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 12:04:14 2026 +0800"
      },
      "message": "Scan-based immigration scope detection and staleness tracking\n\nAdd ImmigrationScopeTest to detect new upstream providers and rule files\nafter skywalking/ submodule updates. Provider inventory (55 entries) and\nrule file inventory (89 entries) serve as the single source of truth.\n\nExpand replacement-source-sha256.properties from 4 to 33 entries,\ncovering all same-FQCN replacement upstream sources.\n\nRefactor ConfigFieldAccessorTest to derive provider list from\nprovider-inventory.properties ACCEPTED entries and discover nested\nconfig classes via reflection, eliminating hardcoded lists.\n\nAdd ASF license header to native-image.properties.\nAdd oap-libs-for-graalvm/CLAUDE.md documenting replacement inventory.\n"
    },
    {
      "commit": "faa12ddfbb28c4cee0dca3d8d41408fae6d14995",
      "tree": "169165e34e913c27198ed013fcd6f67a28e5d9b7",
      "parents": [
        "b530e20f093e61665678ec155b0fb0b5ae51f835"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 08:55:08 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 08:55:08 2026 +0800"
      },
      "message": "Update documentation: remove step/phase prefixes, reflect current state\n\nAll immigration work is complete. Remove progress-tracking prefixes\n(Phase N, Step N, Challenge N, DONE/COMPLETE/SOLVED suffixes, checkboxes)\nand restructure around the compilation workflow.\n\nAlso update README with native/Docker commands, project structure,\nand refresh all immigration docs to match current code paths.\n"
    },
    {
      "commit": "b530e20f093e61665678ec155b0fb0b5ae51f835",
      "tree": "d5bc6f15d703013a81bd815c43c95332b1f25cfb",
      "parents": [
        "0c986b953a496b057ec36bddcdb71e985af1899a"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 08:23:37 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 08:23:37 2026 +0800"
      },
      "message": "Add native-image-macos target for cross-building Linux native binary on macOS\n\nCompiles on the host (platform-independent bytecode), then runs only\nthe native-image step inside a GraalVM Docker container with volume\nmounts for .m2 cache and project directory.\n"
    },
    {
      "commit": "0c986b953a496b057ec36bddcdb71e985af1899a",
      "tree": "d1508f7ea3921c97773964fa6e31deb62b8ff27c",
      "parents": [
        "29310a714f52e579232c4f558c6cd98c1f5c9006"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 08:02:20 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Feb 25 08:02:20 2026 +0800"
      },
      "message": "Docker and log4j2 adjustments for native image\n\n- Dockerfile.native: pass log4j2.xml config path in ENTRYPOINT\n- docker-compose.yml: add OAP service with BanyanDB dependency\n- log4j2.xml: make log level configurable via SW_LOG_LEVEL env var\n"
    },
    {
      "commit": "29310a714f52e579232c4f558c6cd98c1f5c9006",
      "tree": "e28b8be66520fbb92cbce7c72e3a12072966eab2",
      "parents": [
        "565fe8c14295808e76bd9d6fc6e0f4c62835807a"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 23:39:14 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 23:39:14 2026 +0800"
      },
      "message": "Auto-generate reflection metadata for HTTP handlers, GraphQL resolvers/types\n\nPrecompiler now scans classpath to auto-generate reflect-config.json entries for:\n- Armeria HTTP handlers (19 classes with @Post/@Get/@Path + ExceptionHandlerFunction impls)\n- GraphQL resolvers (32 classes implementing GraphQLQueryResolver/GraphQLMutationResolver)\n- GraphQL DTO types (182 classes matched from .graphqls schema files)\n- Config POJOs (LALConfigs, MeterConfig, etc. deserialized by Jackson/SnakeYAML)\n\nAdded console-only log4j2.xml for native image to avoid RollingFileAppender\u0027s\ndeep reflection chain. Renamed static reflect-config to log4j2-reflect-config.json\nwith Log4j2 plugin visitors and console appender entries only.\n\nVerified: native binary boots with 0 errors, GraphQL returns version and health.\n"
    },
    {
      "commit": "565fe8c14295808e76bd9d6fc6e0f4c62835807a",
      "tree": "7d6a07237323e28ca27bb970bc8c05a3302f8d6b",
      "parents": [
        "e99019b8531f7dbc7fb86f387b583b4d579b25b9"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 16:49:45 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 16:49:45 2026 +0800"
      },
      "message": "Fix CI: generate version.properties from git directly, not upstream build output\n"
    },
    {
      "commit": "e99019b8531f7dbc7fb86f387b583b4d579b25b9",
      "tree": "c9fbd2b99e66d666d81e251739387cb3e7faa6e8",
      "parents": [
        "e7946e270ccedc7ae816e6356007fce216c7fbe9"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 16:32:53 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 16:32:53 2026 +0800"
      },
      "message": "Fix Docker image name to match project: skywalking-graalvm-distro\n"
    },
    {
      "commit": "e7946e270ccedc7ae816e6356007fce216c7fbe9",
      "tree": "ff2bf5c56aed686706eabb491d99dea3f5588bad",
      "parents": [
        "9b68f0e5cc62d6132315b5bda75aadc1c9068bb1"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 16:31:30 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 16:31:30 2026 +0800"
      },
      "message": "Native distro packaging, Docker image, and CI pipeline\n\n- Add native assembly descriptor (binary + config + logs)\n- Add Dockerfile.native for packaging pre-built native binary\n- Merge CI and Docker workflows: shared skywalking submodule cache\n- Build multi-arch Docker image (amd64 + arm64) to ghcr.io\n- Fix javadoc error in FieldsHelper (MethodHandle#invoke reference)\n"
    },
    {
      "commit": "9b68f0e5cc62d6132315b5bda75aadc1c9068bb1",
      "tree": "d210a103f7c7c60cd301958097f4abcc89976bd3",
      "parents": [
        "ddbb69e288a1651a31682e44026149fe0be87234"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 11:57:25 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Feb 24 11:57:25 2026 +0800"
      },
      "message": "Distro packaging: version, log4j2, alarm config, and native-image readiness\n\n- version.properties: copy from submodule, replace -SNAPSHOT with short\n  commit ID, append -graal-distro suffix (e.g. 10.4.0-b537891-graal-distro).\n  Placed in config/ (first on classpath) to shadow any JAR copies.\n\n- server-starter-for-graalvm: repackaged server-starter via shade plugin\n  with version.properties excluded, preventing classpath conflict in both\n  JVM distro and native-image builds. Original server-starter excluded\n  from assembly and marked provided in oap-graalvm-native.\n\n- log4j2.xml and alarm-settings.yml now sourced from dist-material/\n  (production configs) instead of server-starter/ (dev configs), matching\n  upstream apm-dist packaging. dist-material log4j2 uses RollingFile\n  appender at INFO level with no custom %swversion plugin dependency.\n\n- sw.version system property set in GraalVMOAPServerStartUp.main() before\n  log4j2 init, enabling ${sys:sw.version} in log patterns as a standard\n  log4j2 lookup replacement for the custom VersionLogConverter plugin.\n\n- Makefile build-distro: add oap-libs-for-graalvm child module build\n  phase to ensure all for-graalvm shaded JARs are installed.\n\n- StorageBuilder scan in precompiler for native-image reflection config.\n\n- FieldsHelper same-FQCN replacement, NoneConfigurationProvider support,\n  native-image build args (AddAllCharsets, URL protocols).\n"
    },
    {
      "commit": "ddbb69e288a1651a31682e44026149fe0be87234",
      "tree": "60ede35be06f9433cb411bb5cc336fefa0f0b3ab",
      "parents": [
        "d9c4ef2345c797e58e7ef48dc2e2334129234e18"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Feb 22 10:18:40 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Feb 22 10:18:40 2026 +0800"
      },
      "message": "Groovy runtime removal, native image build (206MB, boots to module init)\n\n- Wire groovy-stubs as runtime dependency; real Groovy moved to test-only\n  scope via explicit declaration in oap-graalvm-server and oap-graalvm-native\n- Add groovy-stubs dep to log-analyzer-for-graalvm (needs groovy.lang.Closure)\n- Add IndyInterface stub for GraalVM GroovyIndyInterfaceFeature compatibility\n- Add meter-analyzer-for-graalvm/log-analyzer-for-graalvm as provided deps\n  in precompiler POM (fixes CI: ensures Maven builds them first so javac\n  classpath has public ExpressionParsingContext.get())\n- Tracing agent captures supplementary native-image metadata (2751 reflection\n  + 128 resource entries in reachability-metadata.json)\n- Same-FQCN ResourceUtils: filesystem-first loading (config/ directory)\n  for native images where ClassLoader.getResource() has no classpath\n- Same-FQCN LoggingConfigWatcher: handle DefaultConfiguration gracefully\n  when Log4j2 XML config is not found (native image bootstrap)\n- GraalVMOAPServerStartUp: set log4j2.configurationFile from filesystem\n- Native image builds successfully (206MB, 1m57s, 44880 reachable types)\n- Native binary boots past module init; next blocker: UTF-32BE charset\n  for Kubernetes client (needs --add-modules\u003djdk.charsets)\n"
    },
    {
      "commit": "d9c4ef2345c797e58e7ef48dc2e2334129234e18",
      "tree": "1faab34cd9b596c4f2fb9e6038d74b12b10c47be",
      "parents": [
        "0a9181e6df9122034d8efbbf839c839b1968a922"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Feb 22 07:57:00 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Feb 22 07:57:00 2026 +0800"
      },
      "message": "Fix MAL test quality: eliminate vacuous agreements, fix histogram +Inf and rate window\n\n- Add guard in runAndCompare() to fail when both paths return EMPTY,\n  preventing vacuous test agreements where wrong input masks real issues\n- Remove +Inf bucket from histogram test data (upstream receivers strip\n  it before MAL engine; Java Double.parseDouble(\"+Inf\") throws NFE)\n- Fix test timestamps from 2min to 10s gap so rate(\u0027PT15S\u0027) window\n  contains the warmup data point and produces real rate values\n- Remove last groovy.lang.Closure overload from production SampleFamily\n- Add metricName propagation in Expression.run() for CounterWindow keying\n- Add ExpandoMetaClass bridging in test base for Groovy Path A Closure\n  to functional interface conversion (SAM coercion doesn\u0027t work for\n  interfaces extending Function/Predicate)\n\n1303 tests pass (1281 MAL + 19 LAL + 3 other), 0 failures.\n"
    },
    {
      "commit": "0a9181e6df9122034d8efbbf839c839b1968a922",
      "tree": "32f4bb8a2c0495b8f5f12d51d5f7e1ddfe8a048e",
      "parents": [
        "dc6f5e1833cd87f58fdc23370edf84b53358e850"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Feb 21 21:43:58 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Feb 21 21:43:58 2026 +0800"
      },
      "message": "LAL-to-Java transpiler: eliminate Groovy from LAL runtime path\n\n- LalExpression interface replacing DelegatingScript\n- Groovy stubs module (groovy.lang.* types, no org.codehaus.groovy.*)\n- Consumer overloads on FilterSpec, ExtractorSpec, SinkSpec, SamplerSpec\n- LalToJavaTranspiler: Groovy AST to Java source at build time\n- Runtime DSL.java loads LalExpression from lal-expressions.txt manifest\n- Dual-path tests updated: Groovy vs transpiled Java (19 tests passing)\n"
    },
    {
      "commit": "dc6f5e1833cd87f58fdc23370edf84b53358e850",
      "tree": "e40d2789ec07721bc51597c3924d494735b87150",
      "parents": [
        "e26cc15d238466ce44f95e586151cccc721620a2"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Feb 21 19:56:50 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Feb 21 19:56:50 2026 +0800"
      },
      "message": "Runtime wiring: replace Groovy with pure Java MalExpression/MalFilter at runtime\n\nWire transpiled MAL classes into runtime classpath:\n- Expression.java: wraps MalExpression instead of Groovy DelegatingScript\n- DSL.java: loads from mal-expressions.txt manifest with MalExpression classes\n- FilterExpression.java: loads from mal-filter-expressions.properties with MalFilter\n- Add Expression to shade excludes so same-FQCN replacement takes effect\n- Add InstanceEntityDescription same-FQCN replacement\n- Add native-image profile and Makefile targets (native-image, trace-agent)\n- Update MAL/LAL immigration docs with Phase 3 transpiler plans\n"
    },
    {
      "commit": "e26cc15d238466ce44f95e586151cccc721620a2",
      "tree": "fa037c5362a51a9b43a6775c6af0d077addaf6ef",
      "parents": [
        "70725070f737778ecd8907476ec48a3aecac4ba6"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Feb 21 19:38:33 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Feb 21 19:38:33 2026 +0800"
      },
      "message": "MAL-to-Java transpiler: compile Groovy DSL expressions to pure Java at build time\n\nTranspile all 1250 MAL expressions and 29 filter closures from Groovy DSL\nto pure Java classes implementing MalExpression/MalFilter interfaces. This\neliminates Groovy runtime dependency for MAL evaluation in GraalVM native image.\n\nPrecompiler changes:\n- MalToJavaTranspiler: Groovy AST → Java source transpiler (67 unit tests)\n- DSL.java: added EXPRESSION_REGISTRY to capture expression strings\n- Precompiler.transpileMAL(): wired into build pipeline after Groovy compilation\n- Same-FQCN stubs (MalExpression, MalFilter, SampleFamilyFunctions) for javac\n\nmeter-analyzer-for-graalvm changes:\n- ExpressionParsingContext: same-FQCN with public get()/create() for cross-package access\n- SampleFamily: tagNotEqual/tagMatch/tagNotMatch changed to varargs, newValue made public\n- FilterExpression: wrapped Closure in SampleFilter lambda for GraalVM SampleFamily API\n- MalExpression, MalFilter, SampleFamilyFunctions: Java functional interface definitions\n- pom.xml: added ExpressionParsingContext to shade excludes\n"
    },
    {
      "commit": "70725070f737778ecd8907476ec48a3aecac4ba6",
      "tree": "fa32e74ecbb7ea16209da9a0d3101c59027e34c5",
      "parents": [
        "3c8cb3c181f13a6f06456361aeeeeee5606fac6d"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 23:25:13 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 23:25:13 2026 +0800"
      },
      "message": "Add debug logging for config property loading in YamlConfigLoaderUtils\n\nEach copyTo*() method now logs every property at DEBUG level during\ncopyProperties(), verified against application.yml via local boot:\n148 settings matched, 0 missing, 0 mismatched.\n"
    },
    {
      "commit": "3c8cb3c181f13a6f06456361aeeeeee5606fac6d",
      "tree": "69bcd1b5fd90c380df32653235e91118fb1ae574",
      "parents": [
        "477239b81f258bbc7ad6b9c3dfe915f34a3942ce"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 21:58:55 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 21:58:55 2026 +0800"
      },
      "message": "Config data serialization, module system wiring, JVM boot verification\n\n- Precompiler serializes parsed config POJOs to META-INF/config-data/*.json\n- Add 3 replacement config loaders: MeterConfigs, Rules, LALConfigs\n  (load from JSON instead of filesystem YAML)\n- Add library-module-for-graalvm: ModuleDefine replacement with direct\n  prepare() overload, bypassing ServiceLoader discovery\n- Simplify FixedModuleManager to use ModuleDefine.prepare() directly,\n  delete ModuleWiringBridge\n- Add configuration.has() guards for 6 optional modules in startup\n- Centralize all dependency versions in root pom.xml\n- Add debug logging for per-script MAL/LAL/filter loading ([count/total])\n- Add docker-compose with all 4 BanyanDB data paths\n- Add make shutdown target, SHA-256 staleness test for replacements\n- Verify full JVM boot: 38 modules, 620 OAL + 1250 MAL + 7 LAL scripts\n- Update DISTRO-POLICY.md: 23 replacement classes across 13 modules\n"
    },
    {
      "commit": "477239b81f258bbc7ad6b9c3dfe915f34a3942ce",
      "tree": "e71f8b36928829207fd6823fa60d34f6959b1e75",
      "parents": [
        "f5d97485b1e5da5a575ef75c79dbb5a10c1c0c2e"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 16:56:35 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 16:56:35 2026 +0800"
      },
      "message": "Gitignore dependency-reduced-pom.xml generated by shade plugin\n\nThese files are auto-generated by maven-shade-plugin and should not\nbe tracked in git. Fixes license header check failure in CI.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f5d97485b1e5da5a575ef75c79dbb5a10c1c0c2e",
      "tree": "5669cc5c100530feba4e74ea40ac278133ee7bc3",
      "parents": [
        "1f12fd77d1320d5d1bf13cf135ed8aec2f4e9f01"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 16:54:54 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 16:54:54 2026 +0800"
      },
      "message": "Replace HierarchyDefinitionService GroovyShell with Java-backed closures\n\nHierarchyDefinitionService.MatchingRule used GroovyShell.evaluate() to\ncompile 4 closure expressions from hierarchy-definition.yml at runtime.\nThis blocks GraalVM native image where dynamic Groovy compilation is\nunavailable.\n\nReplace with same-FQCN class in server-core-for-graalvm that provides\npre-built Closure\u003cBoolean\u003e implementations in Java, keyed by rule name.\nUnknown rule names fail fast at startup. HierarchyService (the caller)\nis unchanged — MatchingRule.getClosure() still returns Closure\u003cBoolean\u003e.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "1f12fd77d1320d5d1bf13cf135ed8aec2f4e9f01",
      "tree": "80d04a105665ad7a7a787445865a6f64c8af86a4",
      "parents": [
        "f42b4d719cbafc3701520c103d3d70fdf8116022"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 16:40:19 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Feb 20 16:40:19 2026 +0800"
      },
      "message": "Complete Phase 2: config init immigration, repackaged modules, distro packaging\n\n- Add config-generator build tool: scans all ModuleConfig classes, generates\n  same-FQCN YamlConfigLoaderUtils replacement using Lombok setters instead\n  of Field.setAccessible() reflection\n- Add oap-libs-for-graalvm: 12 repackaged modules via maven-shade-plugin\n  that bake replacement classes into upstream JARs, eliminating all\n  same-FQCN classpath ordering tricks\n- Move 7 replacement classes from oap-graalvm-server to -for-graalvm modules\n  (OALEngineLoaderService, AnnotationScan, SourceReceiverImpl, MeterSystem,\n  MAL DSL, LAL DSL, FilterExpression)\n- Add 11 config-only replacement classes with @Setter for reflection-free\n  config loading (CoreModuleConfig, AnalyzerModuleConfig, etc.)\n- Update distribution assembly: package 146 runtime config files, exclude\n  89 pre-compiled OAL/MAL/LAL files not needed at runtime\n- Simplify startup script: flat classpath, no ordering tricks\n- Rename MALYamlStalenessTest → PrecompiledYamlStalenessTest (tracks all\n  pre-compiled YAML files, not just MAL)\n- Update Phase 1/2 checklists: mark CI and distro packaging as complete,\n  update Phase 3 list to remove obsolete uber JAR item\n- Document distro resource file inventory in DISTRO-POLICY.md\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f42b4d719cbafc3701520c103d3d70fdf8116022",
      "tree": "ce97abf82dee013130acc7190d3f5f53ebb27bfc",
      "parents": [
        "bcf953165651596acca59066be4a210b2560652d"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 23:43:57 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 23:43:57 2026 +0800"
      },
      "message": "Fix CI: produce precompiler generated JAR at process-classes phase\n\nMove the maven-jar-plugin execution for the classified JAR\n(precompiler-*-generated.jar) from package to process-classes phase.\nThis ensures the artifact is attached to the reactor before downstream\nmodules need it, even with `mvn test` which never reaches package.\n\nRoot cause: Maven\u0027s ReactorReader does not fall back to the local repo\nfor classified artifacts when the producing module is in the reactor\nbut hasn\u0027t attached the artifact yet.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "bcf953165651596acca59066be4a210b2560652d",
      "tree": "b27b5e9dece9f9a9c77fb8cc654dade9bdd6b4db",
      "parents": [
        "6b6964dcf3180aceef160bc3eea8beeb95057364"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 22:37:26 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 22:37:26 2026 +0800"
      },
      "message": "Fix CI: install classified precompiler JAR before javadoc/test steps\n\nThe precompiler produces a classified JAR (precompiler-*-generated.jar) at\nthe package phase. The javadoc and test steps need this artifact resolved\nbut ran before it was available. Change compile target to mvn install so\nthe artifact is in the local repo for subsequent steps. Also skip tests in\ncompile and build-distro since tests run as a dedicated step.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "6b6964dcf3180aceef160bc3eea8beeb95057364",
      "tree": "f353391651836385632594e11d81f1239463a4e1",
      "parents": [
        "3f93c59351fe49a18bf09497e9d86f27b0cd6141"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 21:48:15 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 21:48:15 2026 +0800"
      },
      "message": "Skip GPG signing when building SkyWalking submodule\n\nCI runners don\u0027t have GPG keys configured. Add -Dgpg.skip\u003dtrue\nto the submodule install command.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "3f93c59351fe49a18bf09497e9d86f27b0cd6141",
      "tree": "cca5fd53aa001eaa4a7fc9bead36bc913c59fe99",
      "parents": [
        "8923e737e31215321f897ba197a6dcb33780d098"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 21:47:48 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Feb 19 21:47:48 2026 +0800"
      },
      "message": "Fix license header check: add header to properties, ignore codeStyle.xml\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    }
  ],
  "next": "8923e737e31215321f897ba197a6dcb33780d098"
}
