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

wu-sheng pushed a commit to branch sync-11.0.0
in repository https://gitbox.apache.org/repos/asf/skywalking-graalvm-distro.git

commit 62811f0a925aaca1d2c3dd5e9451d729fabbaa3f
Author: Wu Sheng <[email protected]>
AuthorDate: Fri May 29 10:33:21 2026 +0800

    Sync upstream to 11.0.0-SNAPSHOT (ad733554b0): admin-server family, 
DSL/formatExp drift fixes
    
    - Move skywalking submodule b272da3 -> ad733554b0 (11.0.0-SNAPSHOT).
    - Wire admin-server/status/inspect/ui-management on the admin host (:17128 
HTTP,
      :17129 gRPC); remove the status-query plugin (status relocated). 
dsl-debugging and
      runtime-rule answer with HTTP 501 via a stub module (no runtime Javassist 
codegen
      in a closed-world native image).
    - Fix empty-config dispatch boot throw for 
InspectModuleConfig/UIManagementModuleConfig
      (no-op branches in YamlConfigLoaderUtils + ConfigInitializerGenerator).
    - Port the new runtime-rule DSL overloads into the same-FQCN replacements: 
meter
      DSL.parse/FilterExpression (5-arg) and log DSL.of (9-arg).
    - Fix formatExp drift: the precompiler and MAL comparison tests now compose 
expressions
      via the real upstream MetricConvert.formatExp (ANTLR injectExpPrefix) 
instead of a
      hand-rolled split-on-dot replica, fixing pre-compiled class lookup for 
chained exprs.
    - Enable iOS / mini-program OTel and Envoy AI Gateway MCP rules; update 
docs and e2e pins.
    
    Build + 1335 unit tests green.
---
 CLAUDE.md                                          |   1 +
 benchmark/env                                      |   4 +-
 .../server/buildtools/common/AcceptedModules.java  |   9 +-
 build-tools/config-generator/pom.xml               |  21 +++
 .../config/ConfigInitializerGenerator.java         |  19 +--
 build-tools/precompiler/pom.xml                    |  14 +-
 .../skywalking/oap/meter/analyzer/v2/dsl/DSL.java  |  11 ++
 .../meter/analyzer/v2/dsl/FilterExpression.java    |  11 ++
 .../server/buildtools/precompiler/Precompiler.java |  28 +---
 .../resources/META-INF/module-config-classes.txt   |   5 +-
 changes/changes.md                                 |  28 ++++
 docker/docker-compose.yml                          |   2 +-
 docs/distro-policy.md                              |  30 ++--
 docs/supported-features.md                         |  12 +-
 docs/version-mapping.md                            |   1 +
 .../src/main/assembly/native-distribution.xml      |   1 -
 oap-graalvm-server/pom.xml                         |  26 ++-
 .../src/main/assembly/distribution.xml             |   2 -
 .../server/graalvm/GraalVMOAPServerStartUp.java    |  31 +++-
 .../admin/UnsupportedAdminFeatureHandler.java      |  78 +++++++++
 .../admin/UnsupportedAdminFeatureModule.java       |  43 +++++
 .../UnsupportedAdminFeatureModuleProvider.java     |  78 +++++++++
 .../server/library/util/YamlConfigLoaderUtils.java | 178 +++++++++++++++------
 .../src/main/resources/application.yml             |  58 ++++++-
 .../server/graalvm/lal/LALIosMetrickitTest.java    |  45 ++++++
 .../oap/server/graalvm/lal/LALMiniprogramTest.java |  45 ++++++
 .../graalvm/mal/MALScriptComparisonBase.java       |  21 +--
 .../graalvm/mal/MiniprogramAlipayLogMalTest.java   |  29 ++++
 .../graalvm/mal/MiniprogramWechatLogMalTest.java   |  29 ++++
 .../resources/precompiled-yaml-sha256.properties   |  11 ++
 .../test/resources/provider-inventory.properties   |  13 +-
 .../resources/replacement-source-sha256.properties |  17 +-
 .../test/resources/rule-file-inventory.properties  |  18 ++-
 .../skywalking/oap/log/analyzer/v2/dsl/DSL.java    |  15 ++
 .../skywalking/oap/meter/analyzer/v2/dsl/DSL.java  |  11 ++
 .../meter/analyzer/v2/dsl/FilterExpression.java    |  11 ++
 oap-libs-for-graalvm/pom.xml                       |   1 -
 .../oap/server/core/CoreModuleConfig.java          |   5 -
 .../status-query-for-graalvm/pom.xml               |  68 --------
 .../oap/query/debug/StatusQueryConfig.java         |  43 -----
 pom.xml                                            |  23 ++-
 skywalking                                         |   2 +-
 test/e2e/script/env                                |  14 +-
 43 files changed, 830 insertions(+), 282 deletions(-)

diff --git a/CLAUDE.md b/CLAUDE.md
index b8c5e40..b19f272 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -16,6 +16,7 @@
 2. **Build-time class export.** All runtime code generation 
(OAL/MAL/LAL/Hierarchy via ANTLR4 + Javassist) runs at build time. Export 
`.class` files into native-image classpath.
 3. **Fixed module wiring.** Module/provider selection is hardcoded in this 
distro — no SPI discovery. See docs/distro-policy.md for the full module table.
 4. **JDK 25.** Already compiles and runs.
+5. **Minimal comments.** Comment only what the code can't say for itself — a 
non-obvious invariant, the *why* behind a non-obvious choice, or cross-cutting 
context (e.g. "must match upstream X"). Don't restate the code or annotate the 
obvious. When a same-FQCN replacement diverges from upstream, one line on *why* 
is enough.
 
 ## Technical Notes
 - **V2 DSL engines**: All four DSL compilers (OAL, MAL, LAL, Hierarchy) use 
the same pipeline: ANTLR4 parse → immutable AST → Javassist bytecode. Upstream 
PR #13723 removed Groovy from all production code. The precompiler runs these 
v2 engines at build time via `setClassOutputDir()` / `setClassNameHint()`, 
capturing `.class` files into the output JAR.
diff --git a/benchmark/env b/benchmark/env
index b9bff60..abadece 100644
--- a/benchmark/env
+++ b/benchmark/env
@@ -23,13 +23,13 @@ SW_UI_IMAGE_TAG="latest"
 # BanyanDB
 ##############################################################################
 SW_BANYANDB_IMAGE_REPO="ghcr.io/apache/skywalking-banyandb"
-SW_BANYANDB_IMAGE_TAG="e1ba421bd624727760c7a69c84c6fe55878fb526"
+SW_BANYANDB_IMAGE_TAG="84b919efca3fee3d51df9e97a734a9f10ae6f1d2"
 
 ##############################################################################
 # SkyWalking Helm Chart
 ##############################################################################
 SW_HELM_CHART="oci://ghcr.io/apache/skywalking-helm/skywalking-helm"
-SW_KUBERNETES_COMMIT_SHA="6fe5e6f0d3b7686c6be0457733e825ee68cb9b35"
+SW_KUBERNETES_COMMIT_SHA="da0e267f877b9b8e5f7728ae4ea7dc7723a2a073"
 
 ##############################################################################
 # Istio
diff --git 
a/build-tools/build-common/src/main/java/org/apache/skywalking/oap/server/buildtools/common/AcceptedModules.java
 
b/build-tools/build-common/src/main/java/org/apache/skywalking/oap/server/buildtools/common/AcceptedModules.java
index 5c5d03b..fc0cf59 100644
--- 
a/build-tools/build-common/src/main/java/org/apache/skywalking/oap/server/buildtools/common/AcceptedModules.java
+++ 
b/build-tools/build-common/src/main/java/org/apache/skywalking/oap/server/buildtools/common/AcceptedModules.java
@@ -88,7 +88,6 @@ public final class AcceptedModules {
         new ModuleProviderPair("promql", "default"),
         new ModuleProviderPair("logql", "default"),
         new ModuleProviderPair("traceQL", "default"),
-        new ModuleProviderPair("status-query", "default"),
         // Alarm
         new ModuleProviderPair("alarm", "default"),
         // Exporter
@@ -96,7 +95,13 @@ public final class AcceptedModules {
         // Health Checker
         new ModuleProviderPair("health-checker", "default"),
         // AI Pipeline
-        new ModuleProviderPair("ai-pipeline", "default")
+        new ModuleProviderPair("ai-pipeline", "default"),
+        // Admin server family (11.0.0+). runtime-rule + dsl-debugging are 
intentionally
+        // excluded — they need runtime Javassist codegen, unsupported under 
native image.
+        new ModuleProviderPair("admin-server", "default"),
+        new ModuleProviderPair("status", "default"),
+        new ModuleProviderPair("inspect", "default"),
+        new ModuleProviderPair("ui-management", "default")
     );
 
     /**
diff --git a/build-tools/config-generator/pom.xml 
b/build-tools/config-generator/pom.xml
index e668b75..139e1bb 100644
--- a/build-tools/config-generator/pom.xml
+++ b/build-tools/config-generator/pom.xml
@@ -49,6 +49,27 @@
             <groupId>org.apache.skywalking</groupId>
             <artifactId>server-starter</artifactId>
         </dependency>
+
+        <!-- Admin server family (11.0.0+) is not pulled transitively by 
server-starter
+             (SPI-discovered at runtime from the assembled libs dir). The 
config-generator
+             needs these provider jars on its classpath to scan their 
ModuleConfig classes.
+             runtime-rule + dsl-debugging are omitted: not wired in this 
distro. -->
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>admin-server</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>status</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>inspect</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>ui-management</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/build-tools/config-generator/src/main/java/org/apache/skywalking/oap/server/buildtools/config/ConfigInitializerGenerator.java
 
b/build-tools/config-generator/src/main/java/org/apache/skywalking/oap/server/buildtools/config/ConfigInitializerGenerator.java
index 7de8e0a..353cd05 100644
--- 
a/build-tools/config-generator/src/main/java/org/apache/skywalking/oap/server/buildtools/config/ConfigInitializerGenerator.java
+++ 
b/build-tools/config-generator/src/main/java/org/apache/skywalking/oap/server/buildtools/config/ConfigInitializerGenerator.java
@@ -196,10 +196,7 @@ public class ConfigInitializerGenerator {
         // Collect all imports needed for config classes and their field types
         TreeMap<String, String> imports = new TreeMap<>();
         for (var entry : configClasses.entrySet()) {
-            // Skip imports for config classes with no fields (not used in 
generated code)
-            if (entry.getValue().fields.isEmpty()) {
-                continue;
-            }
+            // Import every config class for the dispatcher instanceof check 
(incl. empty ones).
             String fqcn = entry.getKey();
             if (fqcn.contains("$")) {
                 String enclosing = fqcn.substring(0, fqcn.indexOf('$'));
@@ -313,9 +310,6 @@ public class ConfigInitializerGenerator {
         boolean first = true;
         for (var entry : configClasses.entrySet()) {
             ConfigClassInfo info = entry.getValue();
-            if (info.fields.isEmpty()) {
-                continue;
-            }
             String typeRef = javaClassRef(info.configClass);
             if (first) {
                 sb.append("        if (dest instanceof 
").append(typeRef).append(") {\n");
@@ -323,8 +317,15 @@ public class ConfigInitializerGenerator {
             } else {
                 sb.append("        } else if (dest instanceof 
").append(typeRef).append(") {\n");
             }
-            sb.append("            copyTo").append(methodSuffix(info))
-                .append("((").append(typeRef).append(") dest, src, moduleName, 
providerName);\n");
+            if (info.fields.isEmpty()) {
+                // Empty config still reaches copyProperties() (its provider 
returns a non-null
+                // ConfigCreator), so it needs a branch or it hits the 
"unknown type" throw.
+                sb.append("            // ").append(info.simpleName)
+                    .append(" has no configurable fields; nothing to copy.\n");
+            } else {
+                sb.append("            copyTo").append(methodSuffix(info))
+                    .append("((").append(typeRef).append(") dest, src, 
moduleName, providerName);\n");
+            }
         }
         if (!first) {
             sb.append("        } else {\n");
diff --git a/build-tools/precompiler/pom.xml b/build-tools/precompiler/pom.xml
index a31063f..73cfe85 100644
--- a/build-tools/precompiler/pom.xml
+++ b/build-tools/precompiler/pom.xml
@@ -101,7 +101,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.skywalking</groupId>
-            <artifactId>status-query-plugin</artifactId>
+            <artifactId>admin-server</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>status</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>inspect</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>ui-management</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.skywalking</groupId>
diff --git 
a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
 
b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
index e42ec7f..a568db8 100644
--- 
a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
+++ 
b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
@@ -22,6 +22,7 @@ import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import javassist.ClassPool;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.oap.meter.analyzer.v2.compiler.MALClassGenerator;
 
@@ -79,6 +80,16 @@ public final class DSL {
         }
     }
 
+    // Runtime-rule overload (upstream signature). The precompiler only runs 
the startup path
+    // (pool/targetClassLoader null), so it delegates to the shared-GENERATOR 
compile.
+    public static Expression parse(final String metricName,
+                                   final String expression,
+                                   final String yamlSource,
+                                   final ClassPool pool,
+                                   final ClassLoader targetClassLoader) {
+        return parse(metricName, expression, yamlSource);
+    }
+
     public static String expressionKey(final String expression, final String 
metricName) {
         try {
             final MessageDigest md = MessageDigest.getInstance("SHA-256");
diff --git 
a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
 
b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
index c022005..e7d2996 100644
--- 
a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
+++ 
b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
@@ -22,6 +22,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
+import javassist.ClassPool;
 import lombok.ToString;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.oap.meter.analyzer.v2.compiler.MALClassGenerator;
@@ -85,6 +86,16 @@ public class FilterExpression {
         }
     }
 
+    // Runtime-rule overload (upstream signature). The precompiler only runs 
the startup path
+    // (pool/targetClassLoader null), so it delegates to the shared-generator 
compile.
+    public FilterExpression(final String literal,
+                            final String filterNameHint,
+                            final String yamlSource,
+                            final ClassPool pool,
+                            final ClassLoader targetClassLoader) {
+        this(literal, filterNameHint, yamlSource);
+    }
+
     public Map<String, SampleFamily> filter(final Map<String, SampleFamily> 
sampleFamilies) {
         try {
             final Map<String, SampleFamily> result = new HashMap<>();
diff --git 
a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java
 
b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java
index eef110d..de93ae6 100644
--- 
a/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java
+++ 
b/build-tools/precompiler/src/main/java/org/apache/skywalking/oap/server/buildtools/precompiler/Precompiler.java
@@ -1175,7 +1175,9 @@ public class Precompiler {
                     for (int i = 0; i < metricsRules.size(); i++) {
                         MetricsRule mr = metricsRules.get(i);
                         String metricName = rule.getMetricPrefix() + "_" + 
mr.getName();
-                        String fullExp = malFormatExp(
+                        // Must use the real formatExp: this text keys 
COMPILE_MAP at compile time
+                        // and is what MetricConvert passes to DSL.parse at 
runtime — a replica drifts.
+                        String fullExp = MetricConvert.formatExp(
                             rule.getExpPrefix(), rule.getExpSuffix(), 
mr.getExp());
                         String exprKey = DSL.expressionKey(fullExp, 
metricName);
                         String className = DSL.COMPILE_MAP.get(exprKey);
@@ -1204,30 +1206,6 @@ public class Precompiler {
         return totalExpressions;
     }
 
-    /**
-     * Replicate MetricConvert.formatExp() to compose the full MAL expression
-     * from expPrefix, expSuffix, and the per-rule expression.
-     */
-    private static String malFormatExp(final String expPrefix,
-                                       final String expSuffix,
-                                       final String exp) {
-        String ret = exp;
-        if (expPrefix != null && !expPrefix.isEmpty()) {
-            String before = exp.contains(".") ? exp.substring(0, 
exp.indexOf('.')) : exp;
-            ret = String.format("(%s.%s)", before, expPrefix);
-            if (exp.contains(".")) {
-                String after = exp.substring(exp.indexOf('.') + 1);
-                if (!after.isEmpty()) {
-                    ret = String.format("(%s.%s)", ret, after);
-                }
-            }
-        }
-        if (expSuffix != null && !expSuffix.isEmpty()) {
-            ret = String.format("(%s).%s", ret, expSuffix);
-        }
-        return ret;
-    }
-
     private static String escapePropertiesValue(String value) {
         // Escape backslashes and newlines in property values
         return value.replace("\\", "\\\\")
diff --git 
a/build-tools/precompiler/src/main/resources/META-INF/module-config-classes.txt 
b/build-tools/precompiler/src/main/resources/META-INF/module-config-classes.txt
index 3e97cbf..0c445a3 100644
--- 
a/build-tools/precompiler/src/main/resources/META-INF/module-config-classes.txt
+++ 
b/build-tools/precompiler/src/main/resources/META-INF/module-config-classes.txt
@@ -2,12 +2,15 @@ org.apache.skywalking.oap.analyzer.genai.config.GenAIConfig
 org.apache.skywalking.oap.analyzer.genai.config.GenAIConfig$Model
 org.apache.skywalking.oap.analyzer.genai.config.GenAIConfig$Provider
 org.apache.skywalking.oap.log.analyzer.v2.provider.LogAnalyzerModuleConfig
-org.apache.skywalking.oap.query.debug.StatusQueryConfig
 org.apache.skywalking.oap.query.graphql.GraphQLQueryConfig
 org.apache.skywalking.oap.query.logql.LogQLConfig
 org.apache.skywalking.oap.query.promql.PromQLConfig
 org.apache.skywalking.oap.query.traceql.TraceQLConfig
 org.apache.skywalking.oap.query.zipkin.ZipkinQueryConfig
+org.apache.skywalking.oap.server.admin.inspect.InspectModuleConfig
+org.apache.skywalking.oap.server.admin.server.module.AdminServerModuleConfig
+org.apache.skywalking.oap.server.admin.status.StatusModuleConfig
+org.apache.skywalking.oap.server.admin.uimanagement.UIManagementModuleConfig
 org.apache.skywalking.oap.server.ai.pipeline.AIPipelineConfig
 org.apache.skywalking.oap.server.analyzer.agent.kafka.module.KafkaFetcherConfig
 org.apache.skywalking.oap.server.analyzer.provider.AnalyzerModuleConfig
diff --git a/changes/changes.md b/changes/changes.md
index 76a387c..c639263 100644
--- a/changes/changes.md
+++ b/changes/changes.md
@@ -1,5 +1,33 @@
 # Changes
 
+## 0.4.0
+
+### Upstream Sync
+
+- Sync SkyWalking submodule to upstream `ad733554b0` (11.0.0-SNAPSHOT).
+- Wire the admin-server family on the admin host (HTTP `:17128`, 
admin-internal gRPC `:17129`): `admin-server`, `status` (relocated from the 
10.x `status-query` plugin — `/status/*`, `/debugging/*`), `inspect` (SWIP-14 
metric catalog, `/inspect/*`), and `ui-management` (dashboard-template REST for 
the Horizon UI, `/ui-management/*`). The `status-query` plugin is removed.
+- Enable iOS (SWIP-11) and mini-program (SWIP-12) OTel metrics rules and Envoy 
AI Gateway MCP rules; add the mini-program log-MAL rules and the 
`ai_route_type` searchable log tag.
+- Drop the bundled UI templates: upstream 11.0.0 removed 
`ui-initialized-templates/` and `UITemplateInitializer`; templates are now 
managed via `ui-management`.
+
+### GraalVM Native Image Compatibility
+
+- DSL Live Debugger (SWIP-13, `/dsl-debugging/*`) and runtime rule hot-update 
(`/runtime/*`) are unsupported in the native image — both need runtime 
Javassist codegen — so a stub module answers those prefixes with HTTP 501.
+- `YamlConfigLoaderUtils` and `ConfigInitializerGenerator` now emit a no-op 
dispatch branch for empty `ModuleConfig` types (`InspectModuleConfig`, 
`UIManagementModuleConfig`), so module boot no longer throws on the relocated 
empty configs.
+- Port the new upstream runtime-rule DSL overloads into the same-FQCN 
replacements: meter `DSL.parse(..., ClassPool, ClassLoader)`, 
`FilterExpression(..., ClassPool, ClassLoader)`, and log `DSL.of(..., 
ClassPool, ClassLoader)`.
+- The precompiler and the MAL comparison tests now compose expressions via the 
real upstream `MetricConvert.formatExp` (ANTLR `injectExpPrefix`) instead of a 
hand-rolled replica, fixing pre-compiled class lookup for chained expressions 
(`.sum` / `.rate` / `.downsampling`).
+
+### Documentation
+
+- Document the admin-server family, the status relocation, and the unsupported 
DSL-debugging / runtime-rule features (HTTP 501) in `distro-policy.md` and 
`supported-features.md`; add the `0.4.0` → `ad733554b0` row to 
`version-mapping.md`.
+
+### Testing
+
+- Add MAL comparison tests for the mini-program log-MAL rules and LAL 
pre-compilation tests for the iOS MetricKit and mini-program rules; track the 
new iOS / mini-program / Envoy AI Gateway MCP YAML in the precompiled-YAML 
staleness baseline.
+
+### E2E Tests
+
+- Bump pinned dependency images for the 11.0.0 sync: BanyanDB `84b919e`, 
Kubernetes `da0e267`, e2e java-test-service `7754e3e`.
+
 ## 0.3.0
 
 ### Upstream Sync
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 78c3375..77e5085 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -15,7 +15,7 @@
 
 services:
   banyandb:
-    image: 
"ghcr.io/apache/skywalking-banyandb:${SW_BANYANDB_COMMIT:-74334e027b7fad414c9773f803163b5c97a9655b}"
+    image: 
"ghcr.io/apache/skywalking-banyandb:${SW_BANYANDB_COMMIT:-84b919efca3fee3d51df9e97a734a9f10ae6f1d2}"
     ports:
       - "17912:17912"
       - "17913:17913"
diff --git a/docs/distro-policy.md b/docs/distro-policy.md
index ec99d2a..f080e4d 100644
--- a/docs/distro-policy.md
+++ b/docs/distro-policy.md
@@ -18,13 +18,25 @@ Build and package Apache SkyWalking OAP server as a GraalVM 
native image on JDK
 | **Configuration** | ConfigurationModule | Kubernetes |
 | **Receivers** | SharingServerModule, TraceModule, JVMModule, 
MeterReceiverModule, LogModule, RegisterModule, ProfileModule, BrowserModule, 
EventModule, OtelMetricReceiverModule, MeshReceiverModule, 
EnvoyMetricReceiverModule, ZipkinReceiverModule, ZabbixReceiverModule, 
TelegrafReceiverModule, AWSFirehoseReceiverModule, CiliumFetcherModule, 
EBPFReceiverModule, AsyncProfilerModule, PprofModule, CLRModule, 
ConfigurationDiscoveryModule, KafkaFetcherModule | default providers |
 | **Analyzers** | AnalyzerModule, LogAnalyzerModule, EventAnalyzerModule, 
GenAIAnalyzerModule | default providers |
-| **Query** | QueryModule (GraphQL), PromQLModule, LogQLModule, TraceQLModule, 
ZipkinQueryModule, StatusQueryModule | default providers |
+| **Query** | QueryModule (GraphQL), PromQLModule, LogQLModule, TraceQLModule, 
ZipkinQueryModule | default providers |
+| **Admin** | AdminServerModule, StatusModule, InspectModule, 
UIManagementModule | default; dsl-debugging + runtime-rule excluded (return 
501) |
 | **Alarm** | AlarmModule | default |
 | **Telemetry** | TelemetryModule | Prometheus |
 | **Other** | ExporterModule, HealthCheckerModule, AIPipelineModule | default 
providers |
 
 **Full feature set.** Work around issues as they arise.
 
+> **Admin server family (11.0.0+).** `StatusModule` — cluster / alarm-runtime 
/ TTL-config
+> status plus the `/debugging/*` debug-query trace endpoints — was relocated 
from the 10.x
+> `status-query` query plugin onto the admin-server host (default `:17128`); 
URIs and payloads
+> are unchanged. `InspectModule` (SWIP-14 metric catalog + entity enumeration, 
`/inspect/*`)
+> and `UIManagementModule` (dashboard-template REST consumed by the Horizon UI,
+> `/ui-management/*`) are hosted there as well. `DSLDebuggingModule` (SWIP-13 
DSL live
+> debugger, `/dsl-debugging/*`) and `RuntimeRuleModule` (MAL/LAL hot-update, 
`/runtime/*`) are
+> **not supported** in this distro: both need runtime Javassist code 
generation, which a
+> closed-world native image cannot do. Their endpoints return a friendly HTTP 
501 via a stub
+> module provider.
+
 ---
 
 ## Core Strategy
@@ -145,7 +157,6 @@ Each upstream JAR that has replacement classes gets a 
corresponding `*-for-graal
 | `ebpf-receiver-for-graalvm` | `EBPFReceiverModuleConfig` |
 | `aws-firehose-receiver-for-graalvm` | `AWSFirehoseReceiverModuleConfig` |
 | `cilium-fetcher-for-graalvm` | `CiliumFetcherConfig` |
-| `status-query-for-graalvm` | `StatusQueryConfig` |
 | `health-checker-for-graalvm` | `HealthCheckerConfig` |
 
 ### No Classpath Ordering Required
@@ -203,11 +214,12 @@ YAML parsing. No reflection involved — safe for GraalVM 
native image as-is.
 | `metadata-service-mapping.yaml` | 1 | `ResourceUtils.read()` | Metadata 
service mapping |
 | `service-apdex-threshold.yml` | 1 | `ApdexThresholdConfig` via 
`ResourceUtils.read()` | APDEX thresholds |
 | `trace-sampling-policy-settings.yml` | 1 | `TraceSamplingPolicyWatcher` via 
`ResourceUtils.read()` | Trace sampling |
-| `ui-initialized-templates/**` | 131 | `UITemplateInitializer` via 
`Files.walk()` | UI dashboard JSON templates |
 | `cilium-rules/**` | 2 | `CiliumFetcherProvider` via 
`ResourceUtils.getPathFiles()` | Cilium flow rules |
 | `openapi-definitions/**` | 1 | `EndpointNameGrouping` via 
`ResourceUtils.getPathFiles()` | OpenAPI grouping definitions |
 
-**Total: 146 files** included in the distro `config/` directory.
+**Total: 15 files** included in the distro `config/` directory. (Upstream 
11.0.0 removed the
+bundled `ui-initialized-templates/` + `UITemplateInitializer`; dashboard 
templates are now managed
+via the `ui-management` REST surface.)
 
 ### Pre-compiled at Build Time (NOT in distro)
 
@@ -219,15 +231,15 @@ packaged in JARs. The YAML source files are not needed at 
runtime.
 |---|---|---|---|
 | `oal/*.oal` | 9 | ~620 metrics + ~620 builders + ~45 dispatchers (Javassist) 
| OAL v2 engine |
 | `meter-analyzer-config/*.yaml` | 11 | ~147 `MalExpression` classes 
(ANTLR4+Javassist) + meter classes | MAL v2 compiler |
-| `otel-rules/**/*.yaml` | 55 | ~1039 `MalExpression` classes + meter classes 
| MAL v2 compiler |
-| `log-mal-rules/*.yaml` | 2 | ~2 `MalExpression` classes | MAL v2 compiler |
+| `otel-rules/**/*.yaml` | 65 | ~1039 `MalExpression` classes + meter classes 
| MAL v2 compiler |
+| `log-mal-rules/*.yaml` | 4 | ~4 `MalExpression` classes | MAL v2 compiler |
 | `envoy-metrics-rules/*.yaml` | 2 | ~26 `MalExpression` classes + meter 
classes | MAL v2 compiler |
 | `telegraf-rules/*.yaml` | 1 | ~20 `MalExpression` classes + meter classes | 
MAL v2 compiler |
 | `zabbix-rules/*.yaml` | 1 | ~15 `MalExpression` classes + meter classes | 
MAL v2 compiler |
-| `lal/*.yaml` | 8 | ~10 `LalExpression` classes (ANTLR4+Javassist) | LAL v2 
compiler |
+| `lal/*.yaml` | 11 | ~12 `LalExpression` classes (ANTLR4+Javassist) | LAL v2 
compiler |
 | `hierarchy-definition.yml` | 1 | ~4 `BiFunction` hierarchy rule classes | 
Hierarchy v2 compiler |
 
-**Total: 90 files** consumed at build time, producing ~1285 OAL classes, ~1250 
MAL expression classes, ~1188 meter classes, ~10 LAL expression classes, and ~4 
hierarchy rule classes.
+**Total: 105 files** consumed at build time, producing ~1285 OAL classes, 
~1250 MAL expression classes, ~1188 meter classes, ~12 LAL expression classes, 
and ~4 hierarchy rule classes.
 
 Additionally, the precompiler serializes parsed config POJOs as JSON manifests 
in
 `META-INF/config-data/` (7 JSON files for meter-analyzer-config, otel-rules,
@@ -277,7 +289,7 @@ All four DSL compilers (OAL/MAL/LAL/Hierarchy) use ANTLR4 + 
Javassist v2 engines
 - `reflect-config.json` auto-generated by precompiler from manifests (OAL, 
MAL, LAL, meter, HTTP handlers, GraphQL types)
 - `log4j2-reflect-config.json` for Log4j2 plugin classes; console-only 
`log4j2.xml` with `SW_LOG_LEVEL` env var
 - gRPC/Netty/Protobuf/Armeria via GraalVM reachability metadata repository
-- Auto-scanned reflection metadata: Armeria HTTP handlers (~19), GraphQL 
resolvers (~32), GraphQL types (~182), config POJOs (8)
+- Auto-scanned reflection metadata: Armeria HTTP handlers (~27, incl. 
admin-server/status/inspect/ui-management), GraphQL resolvers (~32), GraphQL 
types (~182), config POJOs (8)
 - Native binary: ~203MB, boots to full module init with all HTTP endpoints 
functional
 
 ### Native Distro Packaging
diff --git a/docs/supported-features.md b/docs/supported-features.md
index de1846d..9663baa 100644
--- a/docs/supported-features.md
+++ b/docs/supported-features.md
@@ -64,7 +64,9 @@ All receivers are included:
 | **PromQL** | 9090 | Prometheus-compatible query |
 | **LogQL** | 3100 | Loki-compatible log query |
 | **Zipkin** | 9412 | Zipkin v2 query API (disabled by default) |
-| **Status** | 12800 | Debugging and status queries |
+| **Status** | 17128 | Cluster / alarm / TTL status + `/debugging/*` 
debug-query trace, on the admin-server host (relocated from the query plugin in 
11.0.0) |
+| **Inspect** | 17128 | SWIP-14 metric catalog + entity enumeration 
(`/inspect/*`), on the admin-server host |
+| **UI Management** | 17128 | Dashboard-template REST (`/ui-management/*`) 
consumed by the Horizon UI, on the admin-server host |
 
 ### Analyzers
 
@@ -121,6 +123,14 @@ Agent Pod ──(plaintext gRPC)──► Istio Sidecar ══(mTLS)══► 
Is
 This is the recommended approach for Kubernetes deployments and provides 
stronger security
 guarantees than application-level TLS (automatic certificate rotation, policy 
enforcement).
 
+### No DSL Live Debugger or Runtime Rule Hot-Update
+
+The admin-server feature modules `DSLDebuggingModule` (SWIP-13 DSL live 
debugger, `/dsl-debugging/*`)
+and `RuntimeRuleModule` (MAL/LAL hot-update, `/runtime/*`) are **not 
supported**. Both generate
+Javassist bytecode at runtime, which a closed-world native image cannot do — 
all DSL rules are
+pre-compiled at build time. These endpoints return **HTTP 501**. Use the 
upstream JVM distribution
+if you need live DSL debugging or runtime rule updates.
+
 ## Differences from Upstream SkyWalking
 
 | Aspect | Upstream | This Distro |
diff --git a/docs/version-mapping.md b/docs/version-mapping.md
index cd375a4..26c6824 100644
--- a/docs/version-mapping.md
+++ b/docs/version-mapping.md
@@ -8,6 +8,7 @@ Otherwise, it is shown as `{commit-id}-SNAPSHOT` indicating a 
development build
 <!-- DOC-CHECK: version-mapping-table -->
 | Distro Version | Apache SkyWalking Version |
 |---|---|
+| 0.4.0-SNAPSHOT (dev) | `ad733554b0`-SNAPSHOT |
 | 0.3.0-SNAPSHOT (dev) | 10.4.0 |
 | 0.2.1 | `64a1795d8a58`-SNAPSHOT |
 | 0.2.0 | `64a1795d8a58`-SNAPSHOT |
diff --git a/oap-graalvm-native/src/main/assembly/native-distribution.xml 
b/oap-graalvm-native/src/main/assembly/native-distribution.xml
index 3f0262e..e0c47a3 100644
--- a/oap-graalvm-native/src/main/assembly/native-distribution.xml
+++ b/oap-graalvm-native/src/main/assembly/native-distribution.xml
@@ -69,7 +69,6 @@
             <includes>
                 <include>bydb.yml</include>
                 <include>bydb-topn.yml</include>
-                <include>ui-initialized-templates/**</include>
                 <include>cilium-rules/**</include>
                 <include>telegraf-rules/**</include>
                 <include>zabbix-rules/**</include>
diff --git a/oap-graalvm-server/pom.xml b/oap-graalvm-server/pom.xml
index c6db6bf..6b80a60 100644
--- a/oap-graalvm-server/pom.xml
+++ b/oap-graalvm-server/pom.xml
@@ -111,12 +111,6 @@
                 <version>${skywalking.version}</version>
                 <scope>provided</scope>
             </dependency>
-            <dependency>
-                <groupId>org.apache.skywalking</groupId>
-                <artifactId>status-query-plugin</artifactId>
-                <version>${skywalking.version}</version>
-                <scope>provided</scope>
-            </dependency>
             <dependency>
                 <groupId>org.apache.skywalking</groupId>
                 <artifactId>server-health-checker</artifactId>
@@ -178,11 +172,27 @@
         </dependency>
         <dependency>
             <groupId>org.apache.skywalking</groupId>
-            <artifactId>status-query-for-graalvm</artifactId>
+            <artifactId>health-checker-for-graalvm</artifactId>
         </dependency>
+
+        <!-- Admin server family (11.0.0+). Used as-is (configs already carry 
@Setter,
+             no same-FQCN replacement needed). runtime-rule + dsl-debugging 
are NOT
+             included: their runtime-Javassist codegen can't run under native 
image. -->
         <dependency>
             <groupId>org.apache.skywalking</groupId>
-            <artifactId>health-checker-for-graalvm</artifactId>
+            <artifactId>admin-server</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>status</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>inspect</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>ui-management</artifactId>
         </dependency>
 
         <!-- Core (non-repackaged) -->
diff --git a/oap-graalvm-server/src/main/assembly/distribution.xml 
b/oap-graalvm-server/src/main/assembly/distribution.xml
index d139705..dcb06a1 100644
--- a/oap-graalvm-server/src/main/assembly/distribution.xml
+++ b/oap-graalvm-server/src/main/assembly/distribution.xml
@@ -83,8 +83,6 @@
                 <!-- BanyanDB storage config (loaded by BanyanDBConfigLoader) 
-->
                 <include>bydb.yml</include>
                 <include>bydb-topn.yml</include>
-                <!-- UI dashboard templates (loaded by UITemplateInitializer) 
-->
-                <include>ui-initialized-templates/**</include>
                 <!-- Cilium rules (loaded by CiliumFetcherProvider) -->
                 <include>cilium-rules/**</include>
                 <!-- OpenAPI endpoint grouping definitions -->
diff --git 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java
 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java
index ee6cd72..d0b12b5 100644
--- 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java
+++ 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/GraalVMOAPServerStartUp.java
@@ -115,8 +115,18 @@ import org.apache.skywalking.oap.query.logql.LogQLModule;
 import org.apache.skywalking.oap.query.logql.LogQLProvider;
 import org.apache.skywalking.oap.query.traceql.TraceQLModule;
 import org.apache.skywalking.oap.query.traceql.TraceQLProvider;
-import org.apache.skywalking.oap.query.debug.StatusQueryModule;
-import org.apache.skywalking.oap.query.debug.StatusQueryProvider;
+// Admin server family (11.0.0+)
+import org.apache.skywalking.oap.server.admin.server.module.AdminServerModule;
+import 
org.apache.skywalking.oap.server.admin.server.module.AdminServerModuleProvider;
+import org.apache.skywalking.oap.server.admin.status.StatusModule;
+import org.apache.skywalking.oap.server.admin.status.StatusModuleProvider;
+import org.apache.skywalking.oap.server.admin.inspect.InspectModule;
+import org.apache.skywalking.oap.server.admin.inspect.InspectModuleProvider;
+import org.apache.skywalking.oap.server.admin.uimanagement.UIManagementModule;
+import 
org.apache.skywalking.oap.server.admin.uimanagement.UIManagementModuleProvider;
+// GraalVM stub for unsupported admin features (runtime-rule / dsl-debugging)
+import 
org.apache.skywalking.oap.server.graalvm.admin.UnsupportedAdminFeatureModule;
+import 
org.apache.skywalking.oap.server.graalvm.admin.UnsupportedAdminFeatureModuleProvider;
 // Exporter
 import org.apache.skywalking.oap.server.exporter.provider.ExporterProvider;
 // Health Checker
@@ -260,8 +270,6 @@ public class GraalVMOAPServerStartUp {
         if (configuration.has("traceQL")) {
             manager.register(new TraceQLModule(), new TraceQLProvider());
         }
-        manager.register(new StatusQueryModule(), new StatusQueryProvider());
-
         // Alarm
         manager.register(new AlarmModule(), new AlarmModuleProvider());
 
@@ -275,5 +283,20 @@ public class GraalVMOAPServerStartUp {
 
         // AI Pipeline
         manager.register(new AIPipelineModule(), new AIPipelineProvider());
+
+        // Admin server family (11.0.0+). admin-server hosts the operator REST 
surface
+        // (default :17128) + admin-internal gRPC bus (:17129). The new 
Horizon UI loads
+        // dashboard templates via ui-management, so the host must be 
available.
+        //   - status        : /status/*, /debugging/* (relocated from 
status-query-plugin)
+        //   - inspect        : /inspect/* metric catalog + entity enumeration 
(SWIP-14)
+        //   - ui-management  : /ui-management/* dashboard template CRUD 
(Horizon UI needs this)
+        // runtime-rule + dsl-debugging are NOT wired — they require runtime 
Javassist
+        // class generation, which is impossible under a closed-world native 
image. Their
+        // endpoints are served by UnsupportedAdminFeatureModule with a 
friendly 501.
+        manager.register(new AdminServerModule(), new 
AdminServerModuleProvider());
+        manager.register(new StatusModule(), new StatusModuleProvider());
+        manager.register(new InspectModule(), new InspectModuleProvider());
+        manager.register(new UIManagementModule(), new 
UIManagementModuleProvider());
+        manager.register(new UnsupportedAdminFeatureModule(), new 
UnsupportedAdminFeatureModuleProvider());
     }
 }
diff --git 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureHandler.java
 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureHandler.java
new file mode 100644
index 0000000..2ab57e8
--- /dev/null
+++ 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureHandler.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.oap.server.graalvm.admin;
+
+import com.linecorp.armeria.common.HttpResponse;
+import com.linecorp.armeria.common.HttpStatus;
+import com.linecorp.armeria.common.MediaType;
+import com.linecorp.armeria.server.ServiceRequestContext;
+import com.linecorp.armeria.server.annotation.Delete;
+import com.linecorp.armeria.server.annotation.Get;
+import com.linecorp.armeria.server.annotation.Post;
+import com.linecorp.armeria.server.annotation.Put;
+
+/**
+ * Serves a friendly 501 for the admin features the GraalVM native distro 
cannot support.
+ *
+ * <p>The DSL live debugger ({@code /dsl-debugging/*}, {@code /runtime/oal/*}) 
and runtime-rule
+ * hot-update ({@code /runtime/rule/*}, {@code /runtime/mal/*}, {@code 
/runtime/lal/*}) both
+ * compile MAL / LAL / OAL rules into fresh bytecode with Javassist at 
runtime. A native image
+ * is built under a closed-world assumption — no runtime class generation — so 
this distro
+ * pre-compiles all DSL at build time and these on-demand-codegen features are 
unavailable.
+ *
+ * <p>Routes are registered with Armeria {@code prefix:} patterns so every 
verb and sub-path
+ * under the two roots resolves here, returning a structured payload the 
Horizon UI can render
+ * instead of hitting a connection error.
+ */
+public class UnsupportedAdminFeatureHandler {
+
+    private static final String MESSAGE =
+        "This feature requires runtime DSL (MAL/LAL/OAL) compilation, which is 
not available "
+            + "in the SkyWalking GraalVM native distribution. All DSL rules 
are pre-compiled at "
+            + "build time; runtime rule hot-update and the DSL live debugger 
are disabled. Use "
+            + "the standard JVM OAP distribution if you need these features.";
+
+    @Get("prefix:/dsl-debugging")
+    @Post("prefix:/dsl-debugging")
+    @Put("prefix:/dsl-debugging")
+    @Delete("prefix:/dsl-debugging")
+    public HttpResponse dslDebugging(final ServiceRequestContext ctx) {
+        return notImplemented("dsl-debugging", ctx.path());
+    }
+
+    @Get("prefix:/runtime")
+    @Post("prefix:/runtime")
+    @Put("prefix:/runtime")
+    @Delete("prefix:/runtime")
+    public HttpResponse runtimeRule(final ServiceRequestContext ctx) {
+        return notImplemented("runtime-rule", ctx.path());
+    }
+
+    private static HttpResponse notImplemented(final String feature, final 
String path) {
+        final String body = "{\"status\":501,"
+            + "\"error\":\"feature_not_available_in_graalvm_native\","
+            + "\"feature\":\"" + feature + "\","
+            + "\"path\":\"" + escape(path) + "\","
+            + "\"message\":\"" + MESSAGE + "\"}";
+        return HttpResponse.of(HttpStatus.NOT_IMPLEMENTED, 
MediaType.JSON_UTF_8, body);
+    }
+
+    private static String escape(final String s) {
+        return s == null ? "" : s.replace("\\", "\\\\").replace("\"", "\\\"");
+    }
+}
diff --git 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureModule.java
 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureModule.java
new file mode 100644
index 0000000..63c53c3
--- /dev/null
+++ 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureModule.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.oap.server.graalvm.admin;
+
+import org.apache.skywalking.oap.server.library.module.ModuleDefine;
+
+/**
+ * GraalVM-distro-only module that serves a friendly "not available" response 
for the
+ * admin features this distro cannot support in a native image: runtime-rule 
hot-update
+ * and the DSL live debugger. Both rely on runtime Javassist class generation, 
which is
+ * impossible under the closed-world assumption of a native image.
+ *
+ * <p>Without this module the Horizon UI would hit connection-refused / 404 on 
the
+ * {@code /dsl-debugging/*} and {@code /runtime/*} endpoints. The stub mounts 
those routes
+ * on the admin-server HTTP host and returns 501 with an explanatory payload 
instead.
+ */
+public class UnsupportedAdminFeatureModule extends ModuleDefine {
+    public static final String NAME = "graalvm-unsupported-admin";
+
+    public UnsupportedAdminFeatureModule() {
+        super(NAME);
+    }
+
+    @Override
+    public Class[] services() {
+        return new Class[] {};
+    }
+}
diff --git 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureModuleProvider.java
 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureModuleProvider.java
new file mode 100644
index 0000000..1e9c853
--- /dev/null
+++ 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/graalvm/admin/UnsupportedAdminFeatureModuleProvider.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.oap.server.graalvm.admin;
+
+import com.linecorp.armeria.common.HttpMethod;
+import java.util.Arrays;
+import org.apache.skywalking.oap.server.admin.server.module.AdminServerModule;
+import org.apache.skywalking.oap.server.core.server.HTTPHandlerRegister;
+import org.apache.skywalking.oap.server.library.module.ModuleConfig;
+import org.apache.skywalking.oap.server.library.module.ModuleDefine;
+import org.apache.skywalking.oap.server.library.module.ModuleProvider;
+import org.apache.skywalking.oap.server.library.module.ModuleStartException;
+import 
org.apache.skywalking.oap.server.library.module.ServiceNotProvidedException;
+
+/**
+ * Registers {@link UnsupportedAdminFeatureHandler} on the admin-server HTTP 
host. The
+ * module carries no configuration ({@link #newConfigCreator()} returns null), 
so it needs
+ * no {@code application.yml} section and no config-generator entry — it is 
wired directly
+ * by {@code GraalVMOAPServerStartUp}.
+ */
+public class UnsupportedAdminFeatureModuleProvider extends ModuleProvider {
+
+    @Override
+    public String name() {
+        return "default";
+    }
+
+    @Override
+    public Class<? extends ModuleDefine> module() {
+        return UnsupportedAdminFeatureModule.class;
+    }
+
+    @Override
+    public ConfigCreator<? extends ModuleConfig> newConfigCreator() {
+        return null;
+    }
+
+    @Override
+    public void prepare() throws ServiceNotProvidedException, 
ModuleStartException {
+    }
+
+    @Override
+    public void start() throws ServiceNotProvidedException, 
ModuleStartException {
+        final HTTPHandlerRegister adminRegister = 
getManager().find(AdminServerModule.NAME)
+                                                              .provider()
+                                                              
.getService(HTTPHandlerRegister.class);
+        adminRegister.addHandler(
+            new UnsupportedAdminFeatureHandler(),
+            Arrays.asList(HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, 
HttpMethod.DELETE)
+        );
+    }
+
+    @Override
+    public void notifyAfterCompleted() throws ServiceNotProvidedException, 
ModuleStartException {
+    }
+
+    @Override
+    public String[] requiredModules() {
+        return new String[] {
+            AdminServerModule.NAME,
+        };
+    }
+}
diff --git 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/library/util/YamlConfigLoaderUtils.java
 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/library/util/YamlConfigLoaderUtils.java
index c6e7ef1..699ca28 100644
--- 
a/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/library/util/YamlConfigLoaderUtils.java
+++ 
b/oap-graalvm-server/src/main/java/org/apache/skywalking/oap/server/library/util/YamlConfigLoaderUtils.java
@@ -28,12 +28,15 @@ import org.yaml.snakeyaml.Yaml;
 import java.util.Set;
 import org.apache.skywalking.oap.analyzer.genai.config.GenAIConfig;
 import 
org.apache.skywalking.oap.log.analyzer.v2.provider.LogAnalyzerModuleConfig;
-import org.apache.skywalking.oap.query.debug.StatusQueryConfig;
 import org.apache.skywalking.oap.query.graphql.GraphQLQueryConfig;
 import org.apache.skywalking.oap.query.logql.LogQLConfig;
 import org.apache.skywalking.oap.query.promql.PromQLConfig;
 import org.apache.skywalking.oap.query.traceql.TraceQLConfig;
 import org.apache.skywalking.oap.query.zipkin.ZipkinQueryConfig;
+import org.apache.skywalking.oap.server.admin.inspect.InspectModuleConfig;
+import 
org.apache.skywalking.oap.server.admin.server.module.AdminServerModuleConfig;
+import org.apache.skywalking.oap.server.admin.status.StatusModuleConfig;
+import 
org.apache.skywalking.oap.server.admin.uimanagement.UIManagementModuleConfig;
 import org.apache.skywalking.oap.server.ai.pipeline.AIPipelineConfig;
 import 
org.apache.skywalking.oap.server.analyzer.agent.kafka.module.KafkaFetcherConfig;
 import org.apache.skywalking.oap.server.analyzer.provider.AnalyzerModuleConfig;
@@ -126,14 +129,12 @@ public class YamlConfigLoaderUtils {
             copyToSharingServerConfig((SharingServerConfig) dest, src, 
moduleName, providerName);
         } else if (dest instanceof AnalyzerModuleConfig) {
             copyToAnalyzerModuleConfig((AnalyzerModuleConfig) dest, src, 
moduleName, providerName);
-        } else if (dest instanceof ZipkinReceiverConfig) {
-            copyToZipkinReceiverConfig((ZipkinReceiverConfig) dest, src, 
moduleName, providerName);
         } else if (dest instanceof GenAIConfig) {
             copyToGenAIConfig((GenAIConfig) dest, src, moduleName, 
providerName);
+        } else if (dest instanceof ZipkinReceiverConfig) {
+            copyToZipkinReceiverConfig((ZipkinReceiverConfig) dest, src, 
moduleName, providerName);
         } else if (dest instanceof ZipkinQueryConfig) {
             copyToZipkinQueryConfig((ZipkinQueryConfig) dest, src, moduleName, 
providerName);
-        } else if (dest instanceof StatusQueryConfig) {
-            copyToStatusQueryConfig((StatusQueryConfig) dest, src, moduleName, 
providerName);
         } else if (dest instanceof EnvoyMetricReceiverConfig) {
             copyToEnvoyMetricReceiverConfig((EnvoyMetricReceiverConfig) dest, 
src, moduleName, providerName);
         } else if (dest instanceof LogAnalyzerModuleConfig) {
@@ -180,6 +181,14 @@ public class YamlConfigLoaderUtils {
             copyToExporterSetting((ExporterSetting) dest, src, moduleName, 
providerName);
         } else if (dest instanceof ConfigmapConfigurationSettings) {
             
copyToConfigmapConfigurationSettings((ConfigmapConfigurationSettings) dest, 
src, moduleName, providerName);
+        } else if (dest instanceof AdminServerModuleConfig) {
+            copyToAdminServerModuleConfig((AdminServerModuleConfig) dest, src, 
moduleName, providerName);
+        } else if (dest instanceof StatusModuleConfig) {
+            copyToStatusModuleConfig((StatusModuleConfig) dest, src, 
moduleName, providerName);
+        } else if (dest instanceof InspectModuleConfig) {
+            // InspectModuleConfig has no configurable fields; nothing to copy.
+        } else if (dest instanceof UIManagementModuleConfig) {
+            // UIManagementModuleConfig has no configurable fields; nothing to 
copy.
         } else if (dest instanceof GenAIConfig.Model) {
             copyToModel((GenAIConfig.Model) dest, src, moduleName, 
providerName);
         } else if (dest instanceof GenAIConfig.Provider) {
@@ -385,9 +394,6 @@ public class YamlConfigLoaderUtils {
                 case "maxHttpUrisNumberPerService":
                     cfg.setMaxHttpUrisNumberPerService(((Number) 
value).intValue());
                     break;
-                case "uiMenuRefreshInterval":
-                    cfg.setUiMenuRefreshInterval(((Number) value).intValue());
-                    break;
                 case "serviceCacheRefreshInterval":
                     cfg.setServiceCacheRefreshInterval(((Number) 
value).intValue());
                     break;
@@ -570,6 +576,27 @@ public class YamlConfigLoaderUtils {
         }
     }
 
+    @SuppressWarnings("unchecked")
+    private static void copyToGenAIConfig(
+            final GenAIConfig cfg, final Properties src,
+            final String moduleName, final String providerName) {
+        final Enumeration<?> propertyNames = src.propertyNames();
+        while (propertyNames.hasMoreElements()) {
+            final String key = (String) propertyNames.nextElement();
+            final Object value = src.get(key);
+            log.debug("{}.{} config: {} = {}", moduleName, providerName, key, 
value);
+            switch (key) {
+                case "providers":
+                    cfg.setProviders((List) value);
+                    break;
+                default:
+                    log.warn("{} setting is not supported in {} provider of {} 
module",
+                        key, providerName, moduleName);
+                    break;
+            }
+        }
+    }
+
     @SuppressWarnings("unchecked")
     private static void copyToZipkinReceiverConfig(
             final ZipkinReceiverConfig cfg, final Properties src,
@@ -639,27 +666,6 @@ public class YamlConfigLoaderUtils {
         }
     }
 
-    @SuppressWarnings("unchecked")
-    private static void copyToGenAIConfig(
-            final GenAIConfig cfg, final Properties src,
-            final String moduleName, final String providerName) {
-        final Enumeration<?> propertyNames = src.propertyNames();
-        while (propertyNames.hasMoreElements()) {
-            final String key = (String) propertyNames.nextElement();
-            final Object value = src.get(key);
-            log.debug("{}.{} config: {} = {}", moduleName, providerName, key, 
value);
-            switch (key) {
-                case "providers":
-                    cfg.setProviders((List) value);
-                    break;
-                default:
-                    log.warn("{} setting is not supported in {} provider of {} 
module",
-                        key, providerName, moduleName);
-                    break;
-            }
-        }
-    }
-
     @SuppressWarnings("unchecked")
     private static void copyToZipkinQueryConfig(
             final ZipkinQueryConfig cfg, final Properties src,
@@ -711,27 +717,6 @@ public class YamlConfigLoaderUtils {
         }
     }
 
-    @SuppressWarnings("unchecked")
-    private static void copyToStatusQueryConfig(
-            final StatusQueryConfig cfg, final Properties src,
-            final String moduleName, final String providerName) {
-        final Enumeration<?> propertyNames = src.propertyNames();
-        while (propertyNames.hasMoreElements()) {
-            final String key = (String) propertyNames.nextElement();
-            final Object value = src.get(key);
-            log.debug("{}.{} config: {} = {}", moduleName, providerName, key, 
value);
-            switch (key) {
-                case "keywords4MaskingSecretsOfConfig":
-                    cfg.setKeywords4MaskingSecretsOfConfig((String) value);
-                    break;
-                default:
-                    log.warn("{} setting is not supported in {} provider of {} 
module",
-                        key, providerName, moduleName);
-                    break;
-            }
-        }
-    }
-
     @SuppressWarnings("unchecked")
     private static void copyToEnvoyMetricReceiverConfig(
             final EnvoyMetricReceiverConfig cfg, final Properties src,
@@ -1297,9 +1282,6 @@ public class YamlConfigLoaderUtils {
                 case "maxQueryComplexity":
                     cfg.setMaxQueryComplexity(((Number) value).intValue());
                     break;
-                case "enableUpdateUITemplate":
-                    cfg.setEnableUpdateUITemplate((boolean) value);
-                    break;
                 case "enableOnDemandPodLog":
                     cfg.setEnableOnDemandPodLog((boolean) value);
                     break;
@@ -1608,6 +1590,96 @@ public class YamlConfigLoaderUtils {
         }
     }
 
+    @SuppressWarnings("unchecked")
+    private static void copyToAdminServerModuleConfig(
+            final AdminServerModuleConfig cfg, final Properties src,
+            final String moduleName, final String providerName) {
+        final Enumeration<?> propertyNames = src.propertyNames();
+        while (propertyNames.hasMoreElements()) {
+            final String key = (String) propertyNames.nextElement();
+            final Object value = src.get(key);
+            log.debug("{}.{} config: {} = {}", moduleName, providerName, key, 
value);
+            switch (key) {
+                case "host":
+                    cfg.setHost((String) value);
+                    break;
+                case "port":
+                    cfg.setPort(((Number) value).intValue());
+                    break;
+                case "contextPath":
+                    cfg.setContextPath((String) value);
+                    break;
+                case "idleTimeOut":
+                    cfg.setIdleTimeOut(((Number) value).intValue());
+                    break;
+                case "acceptQueueSize":
+                    cfg.setAcceptQueueSize(((Number) value).intValue());
+                    break;
+                case "httpMaxRequestHeaderSize":
+                    cfg.setHttpMaxRequestHeaderSize(((Number) 
value).intValue());
+                    break;
+                case "gRPCHost":
+                    cfg.setGRPCHost((String) value);
+                    break;
+                case "gRPCPort":
+                    cfg.setGRPCPort(((Number) value).intValue());
+                    break;
+                case "gRPCMaxConcurrentCallsPerConnection":
+                    cfg.setGRPCMaxConcurrentCallsPerConnection(((Number) 
value).intValue());
+                    break;
+                case "gRPCMaxMessageSize":
+                    cfg.setGRPCMaxMessageSize(((Number) value).intValue());
+                    break;
+                case "gRPCThreadPoolSize":
+                    cfg.setGRPCThreadPoolSize(((Number) value).intValue());
+                    break;
+                case "gRPCThreadPoolQueueSize":
+                    cfg.setGRPCThreadPoolQueueSize(((Number) 
value).intValue());
+                    break;
+                case "gRPCSslEnabled":
+                    cfg.setGRPCSslEnabled((boolean) value);
+                    break;
+                case "gRPCSslKeyPath":
+                    cfg.setGRPCSslKeyPath((String) value);
+                    break;
+                case "gRPCSslCertChainPath":
+                    cfg.setGRPCSslCertChainPath((String) value);
+                    break;
+                case "gRPCSslTrustedCAsPath":
+                    cfg.setGRPCSslTrustedCAsPath((String) value);
+                    break;
+                case "internalCommunicationTimeout":
+                    cfg.setInternalCommunicationTimeout(((Number) 
value).intValue());
+                    break;
+                default:
+                    log.warn("{} setting is not supported in {} provider of {} 
module",
+                        key, providerName, moduleName);
+                    break;
+            }
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private static void copyToStatusModuleConfig(
+            final StatusModuleConfig cfg, final Properties src,
+            final String moduleName, final String providerName) {
+        final Enumeration<?> propertyNames = src.propertyNames();
+        while (propertyNames.hasMoreElements()) {
+            final String key = (String) propertyNames.nextElement();
+            final Object value = src.get(key);
+            log.debug("{}.{} config: {} = {}", moduleName, providerName, key, 
value);
+            switch (key) {
+                case "keywords4MaskingSecretsOfConfig":
+                    cfg.setKeywords4MaskingSecretsOfConfig((String) value);
+                    break;
+                default:
+                    log.warn("{} setting is not supported in {} provider of {} 
module",
+                        key, providerName, moduleName);
+                    break;
+            }
+        }
+    }
+
     @SuppressWarnings("unchecked")
     private static void copyToModel(
             final GenAIConfig.Model cfg, final Properties src,
diff --git a/oap-graalvm-server/src/main/resources/application.yml 
b/oap-graalvm-server/src/main/resources/application.yml
index 83ab460..e94cfd6 100644
--- a/oap-graalvm-server/src/main/resources/application.yml
+++ b/oap-graalvm-server/src/main/resources/application.yml
@@ -68,7 +68,7 @@ core:
     instanceNameMaxLength: ${SW_INSTANCE_NAME_MAX_LENGTH:70}
     endpointNameMaxLength: ${SW_ENDPOINT_NAME_MAX_LENGTH:150}
     searchableTracesTags: 
${SW_SEARCHABLE_TAG_KEYS:http.method,http.status_code,rpc.status_code,db.type,db.instance,mq.queue,mq.topic,mq.broker}
-    searchableLogsTags: ${SW_SEARCHABLE_LOGS_TAG_KEYS:level,http.status_code}
+    searchableLogsTags: 
${SW_SEARCHABLE_LOGS_TAG_KEYS:level,http.status_code,ai_route_type}
     searchableAlarmTags: ${SW_SEARCHABLE_ALARM_TAG_KEYS:level}
     autocompleteTagKeysQueryMaxSize: 
${SW_AUTOCOMPLETE_TAG_KEYS_QUERY_MAX_SIZE:100}
     autocompleteTagValuesQueryMaxSize: 
${SW_AUTOCOMPLETE_TAG_VALUES_QUERY_MAX_SIZE:100}
@@ -100,8 +100,8 @@ agent-analyzer:
 log-analyzer:
   selector: ${SW_LOG_ANALYZER:default}
   default:
-    lalFiles: 
${SW_LOG_LAL_FILES:envoy-als,mesh-dp,mysql-slowsql,pgsql-slowsql,redis-slowsql,k8s-service,nginx,envoy-ai-gateway,default}
-    malFiles: ${SW_LOG_MAL_FILES:"nginx"}
+    lalFiles: 
${SW_LOG_LAL_FILES:envoy-als,mesh-dp,mysql-slowsql,pgsql-slowsql,redis-slowsql,k8s-service,nginx,envoy-ai-gateway,miniprogram,default}
+    malFiles: ${SW_LOG_MAL_FILES:"nginx,miniprogram-wechat,miniprogram-alipay"}
 
 event-analyzer:
   selector: ${SW_EVENT_ANALYZER:default}
@@ -227,7 +227,7 @@ receiver-otel:
   selector: ${SW_OTEL_RECEIVER:default}
   default:
     enabledHandlers: 
${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"otlp-traces,otlp-metrics,otlp-logs"}
-    enabledOtelMetricsRules: 
${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*,banyandb/*,envoy-ai-gateway/*"}
+    enabledOtelMetricsRules: 
${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*,banyandb/*,envoy-ai-gateway/*,ios/*,miniprogram/*"}
 
 receiver-zipkin:
   selector: ${SW_RECEIVER_ZIPKIN:-}
@@ -264,7 +264,6 @@ query:
   graphql:
     enableLogTestTool: ${SW_QUERY_GRAPHQL_ENABLE_LOG_TEST_TOOL:false}
     maxQueryComplexity: ${SW_QUERY_MAX_QUERY_COMPLEXITY:3000}
-    enableUpdateUITemplate: ${SW_ENABLE_UPDATE_UI_TEMPLATE:false}
     enableOnDemandPodLog: ${SW_ENABLE_ON_DEMAND_POD_LOG:false}
 
 query-zipkin:
@@ -359,10 +358,53 @@ health-checker:
   default:
     checkIntervalSeconds: ${SW_HEALTH_CHECKER_INTERVAL_SECONDS:30}
 
-status-query:
-  selector: ${SW_STATUS_QUERY:default}
+# Admin server family (11.0.0+). admin-server hosts the operator REST surface
+# (default :17128) and the admin-internal gRPC bus (:17129). The Horizon UI 
loads
+# dashboard templates via ui-management, so the host stays enabled by default.
+# NOTE: runtime-rule and dsl-debugging are NOT available in the GraalVM native
+# distro (they need runtime DSL codegen); their endpoints return a friendly 
501.
+admin-server:
+  selector: ${SW_ADMIN_SERVER:default}
+  default:
+    host: ${SW_ADMIN_SERVER_HOST:0.0.0.0}
+    port: ${SW_ADMIN_SERVER_PORT:17128}
+    contextPath: ${SW_ADMIN_SERVER_CONTEXT_PATH:/}
+    idleTimeOut: ${SW_ADMIN_SERVER_IDLE_TIMEOUT:30000}
+    acceptQueueSize: ${SW_ADMIN_SERVER_QUEUE_SIZE:0}
+    httpMaxRequestHeaderSize: 
${SW_ADMIN_SERVER_HTTP_MAX_REQUEST_HEADER_SIZE:8192}
+    # Admin-internal gRPC bus. MUST be a private interface reachable between 
OAP
+    # nodes ONLY; never expose it to operators or to the agent network.
+    gRPCHost: ${SW_ADMIN_SERVER_GRPC_HOST:0.0.0.0}
+    gRPCPort: ${SW_ADMIN_SERVER_GRPC_PORT:17129}
+    gRPCMaxConcurrentCallsPerConnection: 
${SW_ADMIN_SERVER_GRPC_MAX_CONCURRENT_CALL:0}
+    gRPCMaxMessageSize: ${SW_ADMIN_SERVER_GRPC_MAX_MSG_SIZE:52428800}
+    gRPCThreadPoolSize: ${SW_ADMIN_SERVER_GRPC_THREAD_POOL_SIZE:0}
+    gRPCSslEnabled: ${SW_ADMIN_SERVER_GRPC_SSL_ENABLED:false}
+    gRPCSslKeyPath: ${SW_ADMIN_SERVER_GRPC_SSL_KEY_PATH:""}
+    gRPCSslCertChainPath: ${SW_ADMIN_SERVER_GRPC_SSL_CERT_CHAIN_PATH:""}
+    gRPCSslTrustedCAsPath: ${SW_ADMIN_SERVER_GRPC_SSL_TRUSTED_CAS_PATH:""}
+    internalCommunicationTimeout: ${SW_ADMIN_SERVER_INTERNAL_COMM_TIMEOUT:5000}
+
+# Status feature module — cluster nodes / alarm runtime status / TTL config / 
debug
+# query trace endpoints. Mounts onto admin-server (default :17128). Relocated 
from
+# the 10.x status-query-plugin; URI and payload formats are unchanged.
+status:
+  selector: ${SW_STATUS:default}
+  default:
+    keywords4MaskingSecretsOfConfig: 
${SW_DEBUGGING_QUERY_KEYWORDS_FOR_MASKING_SECRETS:user,password,trustStorePass,keyStorePass,token,accessKey,secretKey,authentication}
+
+# Inspect API (SWIP-14) — admin-only metric catalog + per-metric entity 
enumeration.
+# Routes under /inspect/*. Mounts onto admin-server.
+inspect:
+  selector: ${SW_INSPECT:default}
+  default:
+
+# UI Management REST surface — add / change / disable / list dashboard 
templates.
+# Mounts onto admin-server. The Horizon UI (apache/skywalking-horizon-ui) loads
+# dashboards through these endpoints.
+ui-management:
+  selector: ${SW_UI_MANAGEMENT:default}
   default:
-    keywords4MaskingSecretsOfConfig: 
${SW_DEBUGGING_QUERY_KEYWORDS_FOR_MASKING_SECRETS:user,password,token,accessKey,secretKey,authentication}
 
 configuration-discovery:
   selector: ${SW_CONFIGURATION_DISCOVERY:default}
diff --git 
a/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/lal/LALIosMetrickitTest.java
 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/lal/LALIosMetrickitTest.java
new file mode 100644
index 0000000..785d33a
--- /dev/null
+++ 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/lal/LALIosMetrickitTest.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.oap.server.graalvm.lal;
+
+import java.util.List;
+import org.apache.skywalking.oap.log.analyzer.v2.dsl.LalExpression;
+import org.apache.skywalking.oap.log.analyzer.v2.provider.LALConfig;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class LALIosMetrickitTest extends LALScriptComparisonBase {
+    private static List<LALConfig> RULES;
+
+    @BeforeAll
+    static void loadRules() throws Exception {
+        RULES = loadLALRules("ios-metrickit.yaml");
+    }
+
+    @Test
+    void allRulesPrecompiled() {
+        assertTrue(RULES.size() >= 1, "ios-metrickit.yaml should have at least 
1 rule");
+        for (final LALConfig rule : RULES) {
+            final LalExpression expr = loadPrecompiled(rule.getName());
+            assertNotNull(expr, "Pre-compiled class for rule '" + 
rule.getName() + "' should load");
+        }
+    }
+}
diff --git 
a/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/lal/LALMiniprogramTest.java
 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/lal/LALMiniprogramTest.java
new file mode 100644
index 0000000..c4b979e
--- /dev/null
+++ 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/lal/LALMiniprogramTest.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.oap.server.graalvm.lal;
+
+import java.util.List;
+import org.apache.skywalking.oap.log.analyzer.v2.dsl.LalExpression;
+import org.apache.skywalking.oap.log.analyzer.v2.provider.LALConfig;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class LALMiniprogramTest extends LALScriptComparisonBase {
+    private static List<LALConfig> RULES;
+
+    @BeforeAll
+    static void loadRules() throws Exception {
+        RULES = loadLALRules("miniprogram.yaml");
+    }
+
+    @Test
+    void allRulesPrecompiled() {
+        assertTrue(RULES.size() >= 1, "miniprogram.yaml should have at least 1 
rule");
+        for (final LALConfig rule : RULES) {
+            final LalExpression expr = loadPrecompiled(rule.getName());
+            assertNotNull(expr, "Pre-compiled class for rule '" + 
rule.getName() + "' should load");
+        }
+    }
+}
diff --git 
a/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MALScriptComparisonBase.java
 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MALScriptComparisonBase.java
index 88b189d..101819e 100644
--- 
a/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MALScriptComparisonBase.java
+++ 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MALScriptComparisonBase.java
@@ -17,7 +17,6 @@
 
 package org.apache.skywalking.oap.server.graalvm.mal;
 
-import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableMap;
 import java.io.BufferedReader;
 import java.io.InputStream;
@@ -33,7 +32,7 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Stream;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.skywalking.oap.meter.analyzer.v2.MetricConvert;
 import org.apache.skywalking.oap.meter.analyzer.v2.compiler.MALClassGenerator;
 import org.apache.skywalking.oap.meter.analyzer.v2.dsl.Expression;
 import org.apache.skywalking.oap.meter.analyzer.v2.dsl.ExpressionMetadata;
@@ -430,25 +429,15 @@ abstract class MALScriptComparisonBase {
     }
 
     // ---------------------------------------------------------------
-    // Expression composition (replicates MetricConvert.formatExp)
+    // Expression composition — delegates to the real upstream 
MetricConvert.formatExp
     // ---------------------------------------------------------------
 
     static String formatExp(final String expPrefix,
                             final String expSuffix,
                             final String exp) {
-        String ret = exp;
-        if (!Strings.isNullOrEmpty(expPrefix)) {
-            ret = String.format("(%s.%s)",
-                StringUtils.substringBefore(exp, "."), expPrefix);
-            final String after = StringUtils.substringAfter(exp, ".");
-            if (!Strings.isNullOrEmpty(after)) {
-                ret = String.format("(%s.%s)", ret, after);
-            }
-        }
-        if (!Strings.isNullOrEmpty(expSuffix)) {
-            ret = String.format("(%s).%s", ret, expSuffix);
-        }
-        return ret;
+        // Use the real formatExp so the composed text matches the 
precompiler's manifest key;
+        // a hand-rolled replica drifts when upstream changes expPrefix 
injection.
+        return MetricConvert.formatExp(expPrefix, expSuffix, exp);
     }
 
     // ---------------------------------------------------------------
diff --git 
a/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MiniprogramAlipayLogMalTest.java
 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MiniprogramAlipayLogMalTest.java
new file mode 100644
index 0000000..ce408c2
--- /dev/null
+++ 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MiniprogramAlipayLogMalTest.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.oap.server.graalvm.mal;
+
+import java.util.stream.Stream;
+import org.junit.jupiter.api.DynamicTest;
+import org.junit.jupiter.api.TestFactory;
+
+class MiniprogramAlipayLogMalTest extends MALScriptComparisonBase {
+    @TestFactory
+    Stream<DynamicTest> allMetricsGroovyVsPrecompiled() {
+        return 
generateComparisonTests("log-mal-rules/miniprogram-alipay.yaml");
+    }
+}
diff --git 
a/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MiniprogramWechatLogMalTest.java
 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MiniprogramWechatLogMalTest.java
new file mode 100644
index 0000000..7f6c83d
--- /dev/null
+++ 
b/oap-graalvm-server/src/test/java/org/apache/skywalking/oap/server/graalvm/mal/MiniprogramWechatLogMalTest.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.oap.server.graalvm.mal;
+
+import java.util.stream.Stream;
+import org.junit.jupiter.api.DynamicTest;
+import org.junit.jupiter.api.TestFactory;
+
+class MiniprogramWechatLogMalTest extends MALScriptComparisonBase {
+    @TestFactory
+    Stream<DynamicTest> allMetricsGroovyVsPrecompiled() {
+        return 
generateComparisonTests("log-mal-rules/miniprogram-wechat.yaml");
+    }
+}
diff --git 
a/oap-graalvm-server/src/test/resources/precompiled-yaml-sha256.properties 
b/oap-graalvm-server/src/test/resources/precompiled-yaml-sha256.properties
index d36eae5..991763d 100644
--- a/oap-graalvm-server/src/test/resources/precompiled-yaml-sha256.properties
+++ b/oap-graalvm-server/src/test/resources/precompiled-yaml-sha256.properties
@@ -91,6 +91,15 @@ 
otel-rules/rocketmq/rocketmq-cluster.yaml=4cfbc1642552f70e7e99df4f4ce0c8054f9bf8
 
otel-rules/rocketmq/rocketmq-topic.yaml=2fe609352303233b966b3daa2b5c8321b3fb58d8bc074fc3cf9e45c56f1ab30d
 
otel-rules/vm.yaml=06e9b724ff12ac3ce6ddda23714e615c613efa79c58595aa75fa154562fb6850
 
otel-rules/windows.yaml=67eb82015020a4fb81f3f47d8b646757c14bc09848682b6449df00dcc58d9805
+# 11.0.0 sync: iOS (SWIP-11), mini-program (SWIP-12), Envoy AI Gateway MCP 
rules
+otel-rules/envoy-ai-gateway/gateway-mcp-service.yaml=a6b699b0145c7ab440451f34c69567fd6bed2afdaa6ede6ed9c01ec57dcc64ee
+otel-rules/envoy-ai-gateway/gateway-mcp-instance.yaml=7ca59ddf7d15bb2e0b7a853b6f0bf9890ee3835168dcbfb1c7f356e3b86db7a8
+otel-rules/ios/ios-metrickit.yaml=1fdc876eb82233f59a89fc21fac8ac181e00313e7b89b46b81bd7350d0b5d4de
+otel-rules/ios/ios-metrickit-instance.yaml=0ef42276beb614bcdd72c8e018207892d7878b160f847a99c965d124f4adedb4
+otel-rules/miniprogram/alipay-mini-program.yaml=31234fef0307efd627a3ab6992f880537bc1374e6a8fdc260f877a927a0e9063
+otel-rules/miniprogram/alipay-mini-program-instance.yaml=c09a1843c53b22fbefb6d8be8e05c1a29f1693c7d070c2b61655e0e113ebb5c4
+otel-rules/miniprogram/wechat-mini-program.yaml=8cd31c38b85fb08dc0ace3b7accf81dcb56a292a3f14883e0edad92d20fa4119
+otel-rules/miniprogram/wechat-mini-program-instance.yaml=273eba56e332f5bbf9ee9c868e9c89c311e3eb90ab4f20c44a65d0c2d4147c1e
 
 # envoy-metrics-rules/
 
envoy-metrics-rules/envoy.yaml=724fd1bf14a6157b68c5b40499d9ede505c7fceec30146ba5a1822b7cb5e5c1f
@@ -105,3 +114,5 @@ 
zabbix-rules/agent.yaml=8f66cd64781491734db494c0fc55d7433ea2cc282d0af2cade3b4e7e
 # log-mal-rules/
 
log-mal-rules/nginx.yaml=1fcda877ee3e3fb0991e2270e50abf04d44298d316ffd84159022b96056480d1
 
log-mal-rules/placeholder.yaml=b8c5f42252d41838031a9ceb389a7b6afc855077871707bdbb45a936924af982
+log-mal-rules/miniprogram-wechat.yaml=aa8dc5cc3cfe7b33444e9cc37bc60fcc78906dd7bf4033ef79e246c4267ff6d2
+log-mal-rules/miniprogram-alipay.yaml=1762445e3e9793ec6e5ae23fd9a6a6aa94833e0bf607f7b702f27ec8d18c60c9
diff --git 
a/oap-graalvm-server/src/test/resources/provider-inventory.properties 
b/oap-graalvm-server/src/test/resources/provider-inventory.properties
index 021218e..3a813d5 100644
--- a/oap-graalvm-server/src/test/resources/provider-inventory.properties
+++ b/oap-graalvm-server/src/test/resources/provider-inventory.properties
@@ -91,7 +91,6 @@ 
provider.org.apache.skywalking.oap.query.graphql.GraphQLQueryProvider = ACCEPTED
 provider.org.apache.skywalking.oap.query.zipkin.ZipkinQueryProvider = ACCEPTED
 provider.org.apache.skywalking.oap.query.promql.PromQLProvider = ACCEPTED
 provider.org.apache.skywalking.oap.query.logql.LogQLProvider = ACCEPTED
-provider.org.apache.skywalking.oap.query.debug.StatusQueryProvider = ACCEPTED
 provider.org.apache.skywalking.oap.query.traceql.TraceQLProvider = NOT_ACCEPTED
 
 # --- Alarm ---
@@ -106,5 +105,17 @@ 
provider.org.apache.skywalking.oap.server.health.checker.provider.HealthCheckerP
 # --- AI Pipeline ---
 provider.org.apache.skywalking.oap.server.ai.pipeline.AIPipelineProvider = 
ACCEPTED
 
+# --- Admin server family (11.0.0+) ---
+# admin-server hosts the operator REST surface; status/inspect/ui-management 
mount onto it.
+provider.org.apache.skywalking.oap.server.admin.server.module.AdminServerModuleProvider
 = ACCEPTED
+provider.org.apache.skywalking.oap.server.admin.status.StatusModuleProvider = 
ACCEPTED
+provider.org.apache.skywalking.oap.server.admin.inspect.InspectModuleProvider 
= ACCEPTED
+provider.org.apache.skywalking.oap.server.admin.uimanagement.UIManagementModuleProvider
 = ACCEPTED
+# dsl-debugging and runtime-rule require runtime Javassist codegen, impossible 
under a
+# closed-world native image. Excluded; their endpoints return a friendly 501 
via
+# UnsupportedAdminFeatureModule (graalvm.admin package).
+provider.org.apache.skywalking.oap.server.admin.dsl.debugging.module.DSLDebuggingModuleProvider
 = NOT_ACCEPTED
+provider.org.apache.skywalking.oap.server.receiver.runtimerule.module.RuntimeRuleModuleProvider
 = NOT_ACCEPTED
+
 # --- Tools (not production) ---
 provider.org.apache.skywalking.module.DataGeneratorModuleProvider = 
NOT_ACCEPTED
diff --git 
a/oap-graalvm-server/src/test/resources/replacement-source-sha256.properties 
b/oap-graalvm-server/src/test/resources/replacement-source-sha256.properties
index 8229f9b..b1754aa 100644
--- a/oap-graalvm-server/src/test/resources/replacement-source-sha256.properties
+++ b/oap-graalvm-server/src/test/resources/replacement-source-sha256.properties
@@ -24,15 +24,15 @@
 
 # --- server-core-for-graalvm ---
 # OAL manifest loader (replaces Javassist runtime generation)
-skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngineLoaderService.java
 = 32c4554a851e4faa93f87a8278e3d869139cb4188edf8026d7556ea7b9bce93c
+skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALEngineLoaderService.java
 = c830ad448549431dd4906009658784f992b28ff98cc9cfaf1521273cf29adf91
 # Annotation manifest loader (replaces Guava ClassPath scan)
 
skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
 = 06fc9cbedca66ad0d79ef1bd08bcb58113e6cfabb629098815c649b9f56ec9a5
 # Dispatcher manifest loader (replaces Guava ClassPath scan)
 
skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/SourceReceiverImpl.java
 = 3f0ad755a6d02666ad468c9d8c65fcc02d490507b59dfb6235fe2a5b9a070a20
 # MeterFunction manifest loader (replaces Guava ClassPath scan + Javassist)
-skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
 = fea99b625841e20e0fc5c13f43dd19ce8939ceac546a4bbc805592bca5e3961d
+skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
 = e4a61193aa3d8369315d862f335c5842f5b28cdcdce4dbf732dc624529627ade
 # Added @Setter at class level
-skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
 = f17b294a952670c00ef0b26059cc7fdf458ced0861c5c00210594ba4953edf30
+skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
 = 1e8a06f04c035619fa601022a04fa1c052f47ed6849bf4aad1e5e88fe26851fb
 # Java-backed closures instead of GroovyShell
 
skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/config/HierarchyDefinitionService.java
 = 66df4f116946217750f99a595cec4fed32aabe944dd63541f9d51970d34d7389
 
skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/hierarchy/HierarchyService.java
 = a5b899e9a47c1ddff8551264a3ff22b083c35a57698701632a590489bf488739
@@ -41,19 +41,19 @@ 
skywalking/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server
 
 # --- meter-analyzer-for-graalvm ---
 # MAL DSL v2: loads pre-compiled MalExpression from per-file manifests
-skywalking/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
 = 6b79a24876fbbdc8e8e85b0581351d7bcccc85e664337fe8ce55b5f093bdaa67
+skywalking/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
 = df9f0b817b81d3b63b362b80ffee80830efcd31f006c2845bb14ac19aecb5b01
 # MAL filter v2: loads pre-compiled MalFilter from v2 manifest
-skywalking/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
 = 0cb851af2f34ab6de9b688e20780048992763e528c65a3e8b6b571dd8f63e1f0
+skywalking/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
 = bdbee1d0fe02071337f692d168cb4b5be4e7f58e67bbfa548cb3429581ca0d90
 # Config loader: load from JSON manifests instead of filesystem YAML
-skywalking/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/prometheus/rule/Rules.java
 = 4ec7f1352d62f6c939440dff97b86fe6c326761be9aa9bbafa50718b6b760a86
+skywalking/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/prometheus/rule/Rules.java
 = beb2d23294602a279ca7253404436d256facd9541233fe0dc9edcb3501a986dd
 
 # --- log-analyzer-for-graalvm ---
 # LAL DSL v2: loads pre-compiled LalExpression from v2 manifest
-skywalking/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/dsl/DSL.java
 = 1542d8d2e3ace50eb83298da39904e13b13e1b7cb10d31da3f654ba5edf365a7
+skywalking/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/dsl/DSL.java
 = 3d6e4172055d3e7eaa8bc18eb5ad6b702938bd16985832fd02c89cea69b6a2fa
 # Added @Setter at class level
 
skywalking/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/provider/LogAnalyzerModuleConfig.java
 = 91335e7fbfb452a3522d01c3c1498d954028842c038b7d77233547c36586d0de
 # Config loader: load from JSON manifests instead of filesystem YAML
-skywalking/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/provider/LALConfigs.java
 = 2f3a31186a2eb7da6b49f764ad1322a50f70e926375acc17ac3205ba954e8dd8
+skywalking/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/provider/LALConfigs.java
 = ab2612676e5ab826f30efe7d140e9405ccbf4d7e377c5bd9088ea840f635a0a0
 
 # --- agent-analyzer-for-graalvm ---
 # Added @Setter at class level
@@ -81,5 +81,4 @@ 
skywalking/oap-server/server-receiver-plugin/otel-receiver-plugin/src/main/java/
 
skywalking/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/EBPFReceiverModuleConfig.java
 = 2318e388dab8205280b25d92c1ec4271caf2ba2966c1791a309c800935afaf34
 
skywalking/oap-server/server-receiver-plugin/aws-firehose-receiver/src/main/java/org/apache/skywalking/oap/server/receiver/aws/firehose/AWSFirehoseReceiverModuleConfig.java
 = aef19babbeece9dbd90131e23699768c0f336b354dff75a7bd7b7b2fb8add592
 
skywalking/oap-server/server-fetcher-plugin/cilium-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/cilium/CiliumFetcherConfig.java
 = f1872663b062cb6832cdc1abdcf1030175e98ecc363c5208cd045058da53bc53
-skywalking/oap-server/server-query-plugin/status-query-plugin/src/main/java/org/apache/skywalking/oap/query/debug/StatusQueryConfig.java
 = 1aa61fd4b7704481f2f4c9c36947e8388e546625aefd2fd3defc65282af9dce7
 
skywalking/oap-server/server-health-checker/src/main/java/org/apache/skywalking/oap/server/health/checker/provider/HealthCheckerConfig.java
 = 76ddf18b1b59584e3ff406545c03e6772a25d2bea316248b72f38ba2c8f61f15
diff --git 
a/oap-graalvm-server/src/test/resources/rule-file-inventory.properties 
b/oap-graalvm-server/src/test/resources/rule-file-inventory.properties
index 97fb84e..4d37403 100644
--- a/oap-graalvm-server/src/test/resources/rule-file-inventory.properties
+++ b/oap-graalvm-server/src/test/resources/rule-file-inventory.properties
@@ -46,7 +46,7 @@ meter-analyzer-config/satellite.yaml = ACCEPTED
 meter-analyzer-config/spring-micrometer.yaml = ACCEPTED
 meter-analyzer-config/threadpool.yaml = ACCEPTED
 
-# --- otel-rules (49 files) ---
+# --- otel-rules (57 files) ---
 otel-rules/activemq/activemq-broker.yaml = ACCEPTED
 otel-rules/activemq/activemq-cluster.yaml = ACCEPTED
 otel-rules/activemq/activemq-destination.yaml = ACCEPTED
@@ -102,12 +102,22 @@ otel-rules/rocketmq/rocketmq-cluster.yaml = ACCEPTED
 otel-rules/rocketmq/rocketmq-topic.yaml = ACCEPTED
 otel-rules/envoy-ai-gateway/gateway-instance.yaml = ACCEPTED
 otel-rules/envoy-ai-gateway/gateway-service.yaml = ACCEPTED
+otel-rules/envoy-ai-gateway/gateway-mcp-instance.yaml = ACCEPTED
+otel-rules/envoy-ai-gateway/gateway-mcp-service.yaml = ACCEPTED
+otel-rules/ios/ios-metrickit.yaml = ACCEPTED
+otel-rules/ios/ios-metrickit-instance.yaml = ACCEPTED
+otel-rules/miniprogram/alipay-mini-program.yaml = ACCEPTED
+otel-rules/miniprogram/alipay-mini-program-instance.yaml = ACCEPTED
+otel-rules/miniprogram/wechat-mini-program.yaml = ACCEPTED
+otel-rules/miniprogram/wechat-mini-program-instance.yaml = ACCEPTED
 otel-rules/vm.yaml = ACCEPTED
 otel-rules/windows.yaml = ACCEPTED
 
-# --- log-mal-rules (2 files) ---
+# --- log-mal-rules (4 files) ---
 log-mal-rules/nginx.yaml = ACCEPTED
 log-mal-rules/placeholder.yaml = ACCEPTED
+log-mal-rules/miniprogram-wechat.yaml = ACCEPTED
+log-mal-rules/miniprogram-alipay.yaml = ACCEPTED
 
 # --- envoy-metrics-rules (2 files) ---
 envoy-metrics-rules/envoy.yaml = ACCEPTED
@@ -119,12 +129,14 @@ telegraf-rules/vm.yaml = ACCEPTED
 # --- zabbix-rules (1 file) ---
 zabbix-rules/agent.yaml = ACCEPTED
 
-# --- LAL (9 files) ---
+# --- LAL (11 files) ---
 lal/default.yaml = ACCEPTED
 lal/envoy-ai-gateway.yaml = ACCEPTED
 lal/envoy-als.yaml = ACCEPTED
+lal/ios-metrickit.yaml = ACCEPTED
 lal/k8s-service.yaml = ACCEPTED
 lal/mesh-dp.yaml = ACCEPTED
+lal/miniprogram.yaml = ACCEPTED
 lal/mysql-slowsql.yaml = ACCEPTED
 lal/nginx.yaml = ACCEPTED
 lal/pgsql-slowsql.yaml = ACCEPTED
diff --git 
a/oap-libs-for-graalvm/log-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/dsl/DSL.java
 
b/oap-libs-for-graalvm/log-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/dsl/DSL.java
index 56714ba..a6639c3 100644
--- 
a/oap-libs-for-graalvm/log-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/dsl/DSL.java
+++ 
b/oap-libs-for-graalvm/log-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/dsl/DSL.java
@@ -25,6 +25,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+import javassist.ClassPool;
 import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -73,6 +74,20 @@ public class DSL {
         return of(moduleManager, config, dsl, inputType, outputType, ruleName, 
null);
     }
 
+    // Runtime-rule overload (upstream signature). We load the pre-compiled 
LalExpression by rule
+    // name, so pool/targetClassLoader are ignored; runtime-rule hot-update is 
unsupported (501).
+    public static DSL of(final ModuleManager moduleManager,
+                         final LogAnalyzerModuleConfig config,
+                         final String dsl,
+                         final Class<?> inputType,
+                         final Class<?> outputType,
+                         final String ruleName,
+                         final String yamlSource,
+                         final ClassPool pool,
+                         final ClassLoader targetClassLoader) throws 
ModuleStartException {
+        return of(moduleManager, config, dsl, inputType, outputType, ruleName, 
yamlSource);
+    }
+
     public static DSL of(final ModuleManager moduleManager,
                          final LogAnalyzerModuleConfig config,
                          final String dsl,
diff --git 
a/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
 
b/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
index 4421acb..0f38ede 100644
--- 
a/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
+++ 
b/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/DSL.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicInteger;
+import javassist.ClassPool;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -88,6 +89,16 @@ public final class DSL {
         }
     }
 
+    // Runtime-rule overload (upstream signature). We load the pre-compiled 
class by expression
+    // text, so pool/targetClassLoader are ignored; runtime-rule hot-update is 
unsupported (501).
+    public static Expression parse(final String metricName,
+                                   final String expression,
+                                   final String yamlSource,
+                                   final ClassPool pool,
+                                   final ClassLoader targetClassLoader) {
+        return parse(metricName, expression, yamlSource);
+    }
+
     /**
      * Look up a pre-compiled filter class by its literal expression text.
      * Called by {@link FilterExpression} to load filter classes from the
diff --git 
a/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
 
b/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
index c449ec4..bc4a5a0 100644
--- 
a/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
+++ 
b/oap-libs-for-graalvm/meter-analyzer-for-graalvm/src/main/java/org/apache/skywalking/oap/meter/analyzer/v2/dsl/FilterExpression.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicInteger;
+import javassist.ClassPool;
 import lombok.ToString;
 import lombok.extern.slf4j.Slf4j;
 
@@ -73,6 +74,16 @@ public class FilterExpression {
         }
     }
 
+    // Runtime-rule overload (upstream signature). We load the pre-compiled 
filter by literal,
+    // so pool/targetClassLoader are ignored; runtime-rule hot-update is 
unsupported (501).
+    public FilterExpression(final String literal,
+                            final String filterNameHint,
+                            final String yamlSource,
+                            final ClassPool pool,
+                            final ClassLoader targetClassLoader) {
+        this(literal, filterNameHint, yamlSource);
+    }
+
     public Map<String, SampleFamily> filter(final Map<String, SampleFamily> 
sampleFamilies) {
         try {
             final Map<String, SampleFamily> result = new HashMap<>();
diff --git a/oap-libs-for-graalvm/pom.xml b/oap-libs-for-graalvm/pom.xml
index b81b187..6d9a6e7 100644
--- a/oap-libs-for-graalvm/pom.xml
+++ b/oap-libs-for-graalvm/pom.xml
@@ -45,7 +45,6 @@
         <module>ebpf-receiver-for-graalvm</module>
         <module>aws-firehose-receiver-for-graalvm</module>
         <module>cilium-fetcher-for-graalvm</module>
-        <module>status-query-for-graalvm</module>
         <module>health-checker-for-graalvm</module>
         <module>server-starter-for-graalvm</module>
     </modules>
diff --git 
a/oap-libs-for-graalvm/server-core-for-graalvm/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
 
b/oap-libs-for-graalvm/server-core-for-graalvm/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
index 18cb990..68c7b63 100644
--- 
a/oap-libs-for-graalvm/server-core-for-graalvm/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
+++ 
b/oap-libs-for-graalvm/server-core-for-graalvm/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java
@@ -225,11 +225,6 @@ public class CoreModuleConfig extends ModuleConfig {
      */
     private int maxHttpUrisNumberPerService = 3000;
 
-    /**
-     * The UI menu should activate fetch interval, default 20s
-     */
-    private int uiMenuRefreshInterval = 20;
-
     /**
      * The service cache refresh interval, default 10s
      */
diff --git a/oap-libs-for-graalvm/status-query-for-graalvm/pom.xml 
b/oap-libs-for-graalvm/status-query-for-graalvm/pom.xml
deleted file mode 100644
index c40a831..0000000
--- a/oap-libs-for-graalvm/status-query-for-graalvm/pom.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0";
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.skywalking</groupId>
-        <artifactId>oap-libs-for-graalvm</artifactId>
-        <version>0.4.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>status-query-for-graalvm</artifactId>
-    <name>Status Query for GraalVM</name>
-    <description>Repackaged status-query-plugin with GraalVM-compatible 
config</description>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.skywalking</groupId>
-            <artifactId>status-query-plugin</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <configuration>
-                    <artifactSet>
-                        <includes>
-                            
<include>org.apache.skywalking:status-query-plugin</include>
-                        </includes>
-                    </artifactSet>
-                    <filters>
-                        <filter>
-                            
<artifact>org.apache.skywalking:status-query-plugin</artifact>
-                            <excludes>
-                                
<exclude>org/apache/skywalking/oap/query/debug/StatusQueryConfig.class</exclude>
-                            </excludes>
-                        </filter>
-                    </filters>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git 
a/oap-libs-for-graalvm/status-query-for-graalvm/src/main/java/org/apache/skywalking/oap/query/debug/StatusQueryConfig.java
 
b/oap-libs-for-graalvm/status-query-for-graalvm/src/main/java/org/apache/skywalking/oap/query/debug/StatusQueryConfig.java
deleted file mode 100644
index 6b5a2c6..0000000
--- 
a/oap-libs-for-graalvm/status-query-for-graalvm/src/main/java/org/apache/skywalking/oap/query/debug/StatusQueryConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.query.debug;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.skywalking.oap.server.library.module.ModuleConfig;
-
-/**
- * GraalVM replacement for upstream StatusQueryConfig.
- * Original: 
skywalking/oap-server/server-query-plugin/status-query-plugin/src/main/java/.../debug/StatusQueryConfig.java
- * Repackaged into status-query-for-graalvm via maven-shade-plugin (replaces 
original .class in shaded JAR).
- *
- * Change: Added @Setter at class level. Upstream only has @Getter.
- * Why: Enables YamlConfigLoaderUtils to set config fields via Lombok setters 
instead of
- * reflection (Field.setAccessible + field.set), which requires 
reflect-config.json in GraalVM native image.
- */
-@Getter
-@Setter
-public class StatusQueryConfig extends ModuleConfig {
-    /**
-     * Include the list of keywords to filter configurations including 
secrets. Separate keywords by a comma.
-     *
-     * @since 9.7.0
-     */
-    private String keywords4MaskingSecretsOfConfig = 
"user,password,token,accessKey,secretKey,authentication";
-}
diff --git a/pom.xml b/pom.xml
index 8f16361..433df03 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,7 +34,7 @@
         <maven.compiler.release>25</maven.compiler.release>
         <!-- Injected by Makefile from skywalking submodule's <revision> 
property.
              Do not hardcode — always build via `make`. -->
-        <skywalking.version>10.4.0</skywalking.version>
+        <skywalking.version>11.0.0-SNAPSHOT</skywalking.version>
         <graalvm.version>25.0.0</graalvm.version>
         <graalvm.buildtools.version>0.10.4</graalvm.buildtools.version>
         <lombok.version>1.18.40</lombok.version>
@@ -315,9 +315,28 @@
                 <artifactId>zipkin-query-plugin</artifactId>
                 <version>${skywalking.version}</version>
             </dependency>
+            <!-- Admin server family (11.0.0+): admin-host + native-safe 
feature modules.
+                 status (relocated from status-query-plugin), inspect, 
ui-management.
+                 runtime-rule + dsl-debugging are intentionally NOT wired 
(runtime Javassist
+                 codegen is impossible under native image); their endpoints 
are stubbed. -->
             <dependency>
                 <groupId>org.apache.skywalking</groupId>
-                <artifactId>status-query-plugin</artifactId>
+                <artifactId>admin-server</artifactId>
+                <version>${skywalking.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.skywalking</groupId>
+                <artifactId>status</artifactId>
+                <version>${skywalking.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.skywalking</groupId>
+                <artifactId>inspect</artifactId>
+                <version>${skywalking.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.skywalking</groupId>
+                <artifactId>ui-management</artifactId>
                 <version>${skywalking.version}</version>
             </dependency>
 
diff --git a/skywalking b/skywalking
index b272da3..ad73355 160000
--- a/skywalking
+++ b/skywalking
@@ -1 +1 @@
-Subproject commit b272da3cc196c2455bf86e911c427d302f68b950
+Subproject commit ad733554b0273d6165eff7bae4150df83d49ebe8
diff --git a/test/e2e/script/env b/test/e2e/script/env
index 5bfde37..69b17ba 100644
--- a/test/e2e/script/env
+++ b/test/e2e/script/env
@@ -16,16 +16,18 @@
 # Pre-built images from ghcr.io/apache/skywalking and 
ghcr.io/apache/skywalking-java.
 # Update when syncing the skywalking submodule.
 SW_AGENT_JAVA_COMMIT=ac0df43d7140e726eba9e5e5b1b75cf364c71dff
-SW_BANYANDB_COMMIT=d0f41f9ad139c917c1398c2e62a9f7034214495f
+SW_BANYANDB_COMMIT=84b919efca3fee3d51df9e97a734a9f10ae6f1d2
 SW_CTL_COMMIT=9a1beab08413ce415a00a8547a238a14691c5655
-SW_KUBERNETES_COMMIT_SHA=6fe5e6f0d3b7686c6be0457733e825ee68cb9b35
+SW_KUBERNETES_COMMIT_SHA=da0e267f877b9b8e5f7728ae4ea7dc7723a2a073
 
-# Last upstream commit with ghcr.io images published (commit before release 
prep).
-# Release tags publish to Docker Hub, not ghcr.io, so we use the prior CI 
commit.
+# UI image pin for the istio-als e2e test (ghcr.io/apache/skywalking/ui:<sha>).
+# NOT bumped to the synced submodule commit ad733554b0: 11.0.0 dropped the 
bundled UI,
+# so ghcr.io/apache/skywalking/ui is no longer published at recent commits. 
Kept at the
+# last commit whose UI image exists. The pins below track the sync.
 SW_UPSTREAM_COMMIT=f79451d3de23edb15277f5b6e315dc6779e73e1f
 
-# Last upstream commit that touched test/e2e-v2/java-test-service/
-SW_E2E_SERVICE_COMMIT=f79451d3de23edb15277f5b6e315dc6779e73e1f
+# Last upstream commit that touched test/e2e-v2/java-test-service/ (image must 
be published)
+SW_E2E_SERVICE_COMMIT=7754e3ec3646f8fe965507b0d7618cc34c95742e
 
 # OTEL collector version for infrastructure monitoring tests
 OTEL_COLLECTOR_VERSION=0.102.1

Reply via email to