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

wu-sheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-website.git


The following commit(s) were added to refs/heads/master by this push:
     new fa38d0b7c7a docs(blog): polish the Meet Horizon UI series — navigation 
links, P4 docs, phrasing (#884)
fa38d0b7c7a is described below

commit fa38d0b7c7ac98b6c924068a1cc92e07a70925f2
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Tue Jun 30 14:59:16 2026 +0800

    docs(blog): polish the Meet Horizon UI series — navigation links, P4 docs, 
phrasing (#884)
    
    Post-publication consistency pass over all 17 posts (EN + CN):
    
    - Navigation: hyperlink the 'Next up' teaser to the next post across the 
whole series in both languages (it was applied inconsistently — never in EN, 
partially in CN); P17 is the finale with no next link. Also link the one 
previous-post reference in P16 CN.
    - P4 (Deployment & BanyanDB): add the doc handoff to the BanyanDB 
dashboards doc — it was the only post missing one.
    - P1: drop the 'releasing soon' time-pin on the OAP 11.0 reference (EN + 
CN) so it doesn't age.
    - Minor phrasing: P11 CN (按带→按), P17 EN (read-only fallback clause).
---
 content/blog/2026-06-21-horizon-ui-dashboards-and-mqe/index.md      | 2 +-
 content/blog/2026-06-21-horizon-ui-deployment-and-banyandb/index.md | 4 +++-
 content/blog/2026-06-21-horizon-ui-topology-and-dependency/index.md | 2 +-
 content/blog/2026-06-21-skywalking-horizon-ui-introduction/index.md | 6 +++---
 content/blog/2026-06-22-horizon-ui-3d-infrastructure-map/index.md   | 2 +-
 content/blog/2026-06-22-horizon-ui-trace-explorer/index.md          | 2 +-
 .../2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md   | 2 +-
 content/blog/2026-06-23-horizon-ui-log-explorer/index.md            | 2 +-
 content/blog/2026-06-26-horizon-ui-profiling/index.md               | 2 +-
 .../blog/2026-06-29-horizon-ui-alarms-and-incident-triage/index.md  | 2 +-
 .../blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md   | 2 +-
 .../2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md | 2 +-
 .../blog/2026-06-30-horizon-ui-access-control-and-security/index.md | 2 +-
 .../blog/2026-06-30-horizon-ui-customization-and-templates/index.md | 2 +-
 .../2026-06-30-horizon-ui-getting-started-and-migration/index.md    | 2 +-
 content/blog/2026-06-30-horizon-ui-localization-i18n/index.md       | 2 +-
 content/blog/2026-06-30-horizon-ui-platform-introspection/index.md  | 2 +-
 content/zh/2026-06-21-horizon-ui-dashboards-and-mqe/index.md        | 2 +-
 content/zh/2026-06-21-horizon-ui-deployment-and-banyandb/index.md   | 4 +++-
 content/zh/2026-06-21-horizon-ui-topology-and-dependency/index.md   | 2 +-
 content/zh/2026-06-21-skywalking-horizon-ui-introduction/index.md   | 6 +++---
 content/zh/2026-06-22-horizon-ui-3d-infrastructure-map/index.md     | 2 +-
 content/zh/2026-06-22-horizon-ui-trace-explorer/index.md            | 2 +-
 .../2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md   | 2 +-
 content/zh/2026-06-23-horizon-ui-log-explorer/index.md              | 2 +-
 content/zh/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md | 2 +-
 .../2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md | 2 +-
 .../zh/2026-06-30-horizon-ui-access-control-and-security/index.md   | 2 +-
 content/zh/2026-06-30-horizon-ui-localization-i18n/index.md         | 2 +-
 content/zh/2026-06-30-horizon-ui-platform-introspection/index.md    | 2 +-
 30 files changed, 38 insertions(+), 34 deletions(-)

diff --git a/content/blog/2026-06-21-horizon-ui-dashboards-and-mqe/index.md 
b/content/blog/2026-06-21-horizon-ui-dashboards-and-mqe/index.md
index ef7dfae1e9b..1b8e3660025 100644
--- a/content/blog/2026-06-21-horizon-ui-dashboards-and-mqe/index.md
+++ b/content/blog/2026-06-21-horizon-ui-dashboards-and-mqe/index.md
@@ -86,4 +86,4 @@ It's worth stressing that this is *one* system. The same five 
widgets, the same
 
 Everything above is the *reading* experience. Each widget's MQE, its 
`visibleWhen` gate, its format, and the per-scope grids are all editable from 
the **Layer dashboards** admin — but that authoring story (draft → preview → 
publish, with the inline-and-expand MQE editor) is its own post later in the 
series. For the field-level reference, see the docs on [dashboard 
widgets](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/components/dashboard-widgets/)
 and [charts](https://sk [...]
 
-Next up: **topology and service dependency** — the same data Horizon charts 
here, drawn as a map you can walk.
+Next up: [**topology and service 
dependency**](/blog/2026-06-21-horizon-ui-topology-and-dependency/) — the same 
data Horizon charts here, drawn as a map you can walk.
diff --git 
a/content/blog/2026-06-21-horizon-ui-deployment-and-banyandb/index.md 
b/content/blog/2026-06-21-horizon-ui-deployment-and-banyandb/index.md
index d88f831bebd..70e8a3800cd 100644
--- a/content/blog/2026-06-21-horizon-ui-deployment-and-banyandb/index.md
+++ b/content/blog/2026-06-21-horizon-ui-deployment-and-banyandb/index.md
@@ -80,4 +80,6 @@ Figure 6: Flows — the same role-pair edges as a sortable 
table, one block per
 
 None of the above is a hand-built "BanyanDB screen." The clustering rules, the 
per-role node metrics, and the role-pair edge metrics are all a self-contained 
block on the layer template, edited from the **Layer dashboards admin → 
Deployment scope** and carried with the template's export/import — the same 
config-driven model behind every other layer, which a later post covers end to 
end.
 
-Next up: **the 3D Infrastructure Map** — where this same deployment, and every 
other layer, lifts off the page into a WebGL view of your whole estate.
+For the BanyanDB layer's own fields — the Cluster, Container, Group, and 
Deployment views — see the [BanyanDB 
dashboards](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/dashboards/banyandb/)
 doc.
+
+Next up: [**the 3D Infrastructure 
Map**](/blog/2026-06-22-horizon-ui-3d-infrastructure-map/) — where this same 
deployment, and every other layer, lifts off the page into a WebGL view of your 
whole estate.
diff --git 
a/content/blog/2026-06-21-horizon-ui-topology-and-dependency/index.md 
b/content/blog/2026-06-21-horizon-ui-topology-and-dependency/index.md
index 98128fcc3ec..63e7cb8a8d5 100644
--- a/content/blog/2026-06-21-horizon-ui-topology-and-dependency/index.md
+++ b/content/blog/2026-06-21-horizon-ui-topology-and-dependency/index.md
@@ -69,4 +69,4 @@ Figure 7: One service, every layer it reports through — the 
cross-layer hierar
 
 Every metric, threshold, and edge weight on these maps lives in the layer 
template's `topology` block — which means you tune them the same config-driven 
way you tune dashboards, the subject of a later post in this series. For the 
field reference, see the 
[layer-template](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/customization/layer-templates/)
 topology docs.
 
-Next up: **the Deployment tab and BanyanDB self-observability** — where the 
same map technique turns *inward* to show how one clustered service's own 
instances are deployed and talk to each other.
+Next up: [**the Deployment tab and BanyanDB 
self-observability**](/blog/2026-06-21-horizon-ui-deployment-and-banyandb/) — 
where the same map technique turns *inward* to show how one clustered service's 
own instances are deployed and talk to each other.
diff --git 
a/content/blog/2026-06-21-skywalking-horizon-ui-introduction/index.md 
b/content/blog/2026-06-21-skywalking-horizon-ui-introduction/index.md
index e129873819f..ed780bb9242 100644
--- a/content/blog/2026-06-21-skywalking-horizon-ui-introduction/index.md
+++ b/content/blog/2026-06-21-skywalking-horizon-ui-introduction/index.md
@@ -109,7 +109,7 @@ Fifteen posts follow this one, each a standalone tour of 
one corner of Horizon 
 
 ## Try it against your OAP today
 
-Horizon runs against the OAP you already have — and on today's **OAP 10.x** 
nearly all of it works. Every dashboard, the topology, traces (native and 
**Zipkin**), logs, alarms, and all five profilers render off OAP's query host 
(`:12800`), and Horizon's access control, audit, and themes run in the BFF, 
independent of the OAP version. What waits for **OAP 11.0** — the admin host 
(`:17128`), releasing soon — is the *operate* layer: runtime-rule (DSL) 
management, the Live Debugger, Metrics  [...]
+Horizon runs against the OAP you already have — and on today's **OAP 10.x** 
nearly all of it works. Every dashboard, the topology, traces (native and 
**Zipkin**), logs, alarms, and all five profilers render off OAP's query host 
(`:12800`), and Horizon's access control, audit, and themes run in the BFF, 
independent of the OAP version. What waits for **OAP 11.0** — the admin host 
(`:17128`) — is the *operate* layer: runtime-rule (DSL) management, the Live 
Debugger, Metrics Inspect, the ala [...]
 
 Point Horizon at your existing cluster and bring it up — no backend changes, 
the same OAP your deployment already talks to:
 
@@ -142,9 +142,9 @@ For the full setup path — binary tarball, Kubernetes, LDAP, 
TLS, and the produ
 
 ## Other notable points
 
-- **Drop-in against your existing OAP.** Horizon is a greenfield rewrite that 
keeps every backend contract — the same GraphQL query protocol, admin REST 
surface, MQE language, and `Layer` concept — so you point it at a running 
cluster with no backend change. On today's **OAP 10.x** the whole observability 
console works (dashboards, topology, traces including **Zipkin**, logs, alarms, 
profiling) along with Horizon's BFF-side access control, audit, and themes; 
only the *operate* tooling —  [...]
+- **Drop-in against your existing OAP.** Horizon is a greenfield rewrite that 
keeps every backend contract — the same GraphQL query protocol, admin REST 
surface, MQE language, and `Layer` concept — so you point it at a running 
cluster with no backend change. On today's **OAP 10.x** the whole observability 
console works (dashboards, topology, traces including **Zipkin**, logs, alarms, 
profiling) along with Horizon's BFF-side access control, audit, and themes; 
only the *operate* tooling —  [...]
 - **Dark-first and dense.** A 12-column grid built for incident scanning — 
more signal above the fold, less whitespace.
 - **Built on a modern stack.** Vue 3 + TypeScript on Vite, Pinia, Apache 
ECharts, D3, and Monaco on the front end; Fastify on Node.js for the BFF.
 - **It's Apache-licensed and community-built.** Horizon UI lives at 
[apache/skywalking-horizon-ui](https://github.com/apache/skywalking-horizon-ui).
 Try it against your cluster, and tell us what's missing — issues and pull 
requests are welcome.
 
-Next up in the series: the dashboards — and why a widget can decide, on the 
server, that it shouldn't even run its query for the entity you're looking at.
+Next up in the series: [the 
dashboards](/blog/2026-06-21-horizon-ui-dashboards-and-mqe/) — and why a widget 
can decide, on the server, that it shouldn't even run its query for the entity 
you're looking at.
diff --git a/content/blog/2026-06-22-horizon-ui-3d-infrastructure-map/index.md 
b/content/blog/2026-06-22-horizon-ui-3d-infrastructure-map/index.md
index c671b1badc7..cef018397f4 100644
--- a/content/blog/2026-06-22-horizon-ui-3d-infrastructure-map/index.md
+++ b/content/blog/2026-06-22-horizon-ui-3d-infrastructure-map/index.md
@@ -86,4 +86,4 @@ Figure 4: The map is configuration, not code — tiers, colors, 
and per-layer tr
 
 The 3D map is the bird's-eye summary; the 2D per-layer pages stay the 
authoritative service maps. Viewing it needs only read access (`infra-3d:read`, 
held by the built-in viewer role and up); shaping it needs the same write 
permission as the dashboards. For the field reference — tiers, the config 
shape, the loading stages — see the [3D Infrastructure Map 
docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/infra-3d-map/).
 
-Next up: **the Trace Explorer** — from the bird's-eye view of the whole 
deployment back down to a single request, drawn three different ways.
+Next up: [**the Trace Explorer**](/blog/2026-06-22-horizon-ui-trace-explorer/) 
— from the bird's-eye view of the whole deployment back down to a single 
request, drawn three different ways.
diff --git a/content/blog/2026-06-22-horizon-ui-trace-explorer/index.md 
b/content/blog/2026-06-22-horizon-ui-trace-explorer/index.md
index 9e2bd43f5d2..26d68f9ab9b 100644
--- a/content/blog/2026-06-22-horizon-ui-trace-explorer/index.md
+++ b/content/blog/2026-06-22-horizon-ui-trace-explorer/index.md
@@ -87,4 +87,4 @@ There's a second way into a trace that doesn't go through the 
explorer at all. A
 
 The Traces tab is one request in full detail; the dashboards and maps from the 
earlier posts are where you notice something's wrong in the first place. For 
the field reference — every condition, the native-vs-Zipkin split, the span 
detail panel — see the [Traces 
docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/traces/).
 
-Next up: **the Log Explorer** — the same triage instincts, applied to log 
streams instead of spans.
+Next up: [**the Log Explorer**](/blog/2026-06-23-horizon-ui-log-explorer/) — 
the same triage instincts, applied to log streams instead of spans.
diff --git 
a/content/blog/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md 
b/content/blog/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md
index 840a77ce3db..0bb58b388b3 100644
--- a/content/blog/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md
+++ b/content/blog/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md
@@ -64,4 +64,4 @@ That manual-by-design choice also draws a clean 
**permission** line. Viewing the
 
 For the field reference — the categories, the two provisioning paths, the 
budgets and the matching-maps-to-builds guidance — see the [Browser Logs & 
Source Maps 
docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/browser-source-maps/).
 
-Next up: **Profiling** — five profilers (trace, async, eBPF, Go pprof, 
network) rendered through one flame graph.
+Next up: [**Profiling**](/blog/2026-06-26-horizon-ui-profiling/) — five 
profilers (trace, async, eBPF, Go pprof, network) rendered through one flame 
graph.
diff --git a/content/blog/2026-06-23-horizon-ui-log-explorer/index.md 
b/content/blog/2026-06-23-horizon-ui-log-explorer/index.md
index 80783bb1d14..c5c8be98845 100644
--- a/content/blog/2026-06-23-horizon-ui-log-explorer/index.md
+++ b/content/blog/2026-06-23-horizon-ui-log-explorer/index.md
@@ -62,4 +62,4 @@ Figure 3: A live tail of one pod's container — windowed, 
interval-polled, rege
 
 Both tabs — the stored queries, the tag and container autocomplete, and the 
live tail — are gated by a single `logs:read` permission, so granting "can read 
logs" is one switch. For the field reference — every condition, the histogram, 
the Pod Logs windows and filters — see the [Logs 
docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/logs/).
 
-Next up: **Browser & RUM monitoring** — the browser agent's own error stream, 
and de-obfuscating a minified stack with source maps.
+Next up: [**Browser & RUM 
monitoring**](/blog/2026-06-23-horizon-ui-browser-errors-and-source-maps/) — 
the browser agent's own error stream, and de-obfuscating a minified stack with 
source maps.
diff --git a/content/blog/2026-06-26-horizon-ui-profiling/index.md 
b/content/blog/2026-06-26-horizon-ui-profiling/index.md
index 6c2ea29cd57..8e895183b07 100644
--- a/content/blog/2026-06-26-horizon-ui-profiling/index.md
+++ b/content/blog/2026-06-26-horizon-ui-profiling/index.md
@@ -59,4 +59,4 @@ Which tabs you even see depends on the service: a tab appears 
only when OAP repo
 
 For the field reference — every task field, the eBPF aggregate modes, the 
network sampling rules — see the [Profiling 
docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/profiling/).
 
-Next up: **Alarms & Incident Triage** — the incident-centric alarm surface, 
and replaying the MQE snapshot that fired a rule.
+Next up: [**Alarms & Incident 
Triage**](/blog/2026-06-29-horizon-ui-alarms-and-incident-triage/) — the 
incident-centric alarm surface, and replaying the MQE snapshot that fired a 
rule.
diff --git 
a/content/blog/2026-06-29-horizon-ui-alarms-and-incident-triage/index.md 
b/content/blog/2026-06-29-horizon-ui-alarms-and-incident-triage/index.md
index d852b13a5af..e88505189b8 100644
--- a/content/blog/2026-06-29-horizon-ui-alarms-and-incident-triage/index.md
+++ b/content/blog/2026-06-29-horizon-ui-alarms-and-incident-triage/index.md
@@ -68,4 +68,4 @@ Two deliberate non-features are worth calling out. Horizon 
alarms are a **read-o
 
 For the field reference — the window cap, the snapshot internals, and the 
pinned-layer setup — see the [Alarms 
docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/alarms/).
 
-Next up: **Runtime Rules & Live Debugging** — editing OAL / MAL / LAL against 
live samples through OAP's admin host, the part of "operate" the open-source 
backend only just made possible.
+Next up: [**Runtime Rules & Live 
Debugging**](/blog/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/) — 
editing OAL / MAL / LAL against live samples through OAP's admin host, the part 
of "operate" the open-source backend only just made possible.
diff --git 
a/content/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md 
b/content/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md
index e46461ca9eb..5c597f74a97 100644
--- a/content/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md
+++ b/content/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md
@@ -48,4 +48,4 @@ All three live under **Operate** and share one permission, 
`inspect:read`. They
 
 For the field reference — the metric catalog, entity enumeration, foreign 
metrics, and MQE execution — see the [Inspect 
docs](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/inspect/).
 
-Next up: **Platform & Cluster Introspection** — Cluster Status, OAP 
configuration, and data-retention, the last stop in Act 3 before we turn to 
governing and securing the console.
+Next up: [**Platform & Cluster 
Introspection**](/blog/2026-06-30-horizon-ui-platform-introspection/) — Cluster 
Status, OAP configuration, and data-retention, the last stop in Act 3 before we 
turn to governing and securing the console.
diff --git 
a/content/blog/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md 
b/content/blog/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md
index d5716587f32..9211c8598bd 100644
--- 
a/content/blog/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md
+++ 
b/content/blog/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md
@@ -63,4 +63,4 @@ Both surfaces are **operate** features: they talk to OAP's 
**admin host**, not t
 
 For the field reference — every apply state, the dump format, the per-tab 
capture controls — see the [Runtime 
Rules](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/runtime-rules/)
 and [Live 
Debugger](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/live-debugger/)
 docs.
 
-Next up: **Inspect — Cross-Layer Query Power-Tools** — the Operate-side 
surfaces for running metric, trace, and log queries straight across every layer.
+Next up: [**Inspect — Cross-Layer Query 
Power-Tools**](/blog/2026-06-29-horizon-ui-inspect-cross-layer-query/) — the 
Operate-side surfaces for running metric, trace, and log queries straight 
across every layer.
diff --git 
a/content/blog/2026-06-30-horizon-ui-access-control-and-security/index.md 
b/content/blog/2026-06-30-horizon-ui-access-control-and-security/index.md
index 27462b77674..8a90d2f45f5 100644
--- a/content/blog/2026-06-30-horizon-ui-access-control-and-security/index.md
+++ b/content/blog/2026-06-30-horizon-ui-access-control-and-security/index.md
@@ -57,4 +57,4 @@ Figure 5: Five bundled themes — Horizon (default), Meridian, 
Obsidian, Daybrea
 
 All five surfaces here are Horizon's own BFF-side governance — they never 
touch the OAP admin host, so they behave identically across OAP versions. (RBAC 
can also be turned off entirely for local dev, in which case the Roles board 
flags it in red.) For the field reference — the verb list, the LDAP group 
mapping, the audit schema, and arming break-glass — see the 
[RBAC](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/access-control/rbac/),
 [LDAP backend](https://skywalking.a [...]
 
-Next up, **Act 5 — make it yours & adopt**, starting with **Customization: 
Config-Driven Layer Templates** — how the whole console is shaped by templates 
you can edit, preview, and publish.
+Next up, **Act 5 — make it yours & adopt**, starting with [**Customization: 
Config-Driven Layer 
Templates**](/blog/2026-06-30-horizon-ui-customization-and-templates/) — how 
the whole console is shaped by templates you can edit, preview, and publish.
diff --git 
a/content/blog/2026-06-30-horizon-ui-customization-and-templates/index.md 
b/content/blog/2026-06-30-horizon-ui-customization-and-templates/index.md
index 55fb761736c..b96ebd2b2d7 100644
--- a/content/blog/2026-06-30-horizon-ui-customization-and-templates/index.md
+++ b/content/blog/2026-06-30-horizon-ui-customization-and-templates/index.md
@@ -46,4 +46,4 @@ Figure 4: Overview templates are the same model — a 12-column 
canvas with mock
 
 Editing and previewing are entirely **browser-local** — no OAP call happens 
until you publish. Publishing writes the template to OAP's **ui-template 
store** through the admin host, which arrives with OAP 11; the bundled JSON is 
a seed and read-only fallback, and the OAP-published version always wins at 
render time. Access is role-gated: publishing layer dashboards needs 
`dashboard:write`, overviews need `overview:write`. For the field reference — 
the template shapes, the widget types, an [...]
 
-Next up: **Localization** — how those same templates speak eight languages.
+Next up: [**Localization**](/blog/2026-06-30-horizon-ui-localization-i18n/) — 
how those same templates speak eight languages.
diff --git 
a/content/blog/2026-06-30-horizon-ui-getting-started-and-migration/index.md 
b/content/blog/2026-06-30-horizon-ui-getting-started-and-migration/index.md
index 3842061bdfc..b1aef7e93ee 100644
--- a/content/blog/2026-06-30-horizon-ui-getting-started-and-migration/index.md
+++ b/content/blog/2026-06-30-horizon-ui-getting-started-and-migration/index.md
@@ -60,7 +60,7 @@ Horizon is built **natively against OAP 11.x**, and it 
**partially supports OAP
 | Inspect, DSL Management, Live Debugger, Alarm-rule editor | — | ✓ | admin 
`:17128` |
 | Cluster Status → Admin pane, template & translation publishing | — | ✓ | 
admin `:17128` |
 
-Crucially, Horizon **never reads the OAP version number** — it detects each 
capability by probing for the module and GraphQL fields it needs, hides the 
sidebar entries it can't back, and falls admin pages back to read-only when the 
admin port is dark. So if you only need triage (dashboards, alarms, traces, 
logs), a 10.x backend is enough; anything in the operate half needs 11.x with 
its admin modules (`admin-server`, `receiver-runtime-rule`, `dsl-debugging`, 
`inspect`) enabled.
+Crucially, Horizon **never reads the OAP version number** — it detects each 
capability by probing for the module and GraphQL fields it needs, hides the 
sidebar entries it can't back, and falls back to read-only for admin pages when 
the admin port is dark. So if you only need triage (dashboards, alarms, traces, 
logs), a 10.x backend is enough; anything in the operate half needs 11.x with 
its admin modules (`admin-server`, `receiver-runtime-rule`, `dsl-debugging`, 
`inspect`) enabled.
 
 ## Swapping in for an existing UI
 
diff --git a/content/blog/2026-06-30-horizon-ui-localization-i18n/index.md 
b/content/blog/2026-06-30-horizon-ui-localization-i18n/index.md
index 26830d6f7fc..42d6b83b253 100644
--- a/content/blog/2026-06-30-horizon-ui-localization-i18n/index.md
+++ b/content/blog/2026-06-30-horizon-ui-localization-i18n/index.md
@@ -39,4 +39,4 @@ Figure 3: The same General Service dashboard in Chinese — 
sidebar, tabs, and w
 
 Locale resolution happens **BFF-side**, so it works on any OAP. Publishing a 
translation writes a sibling overlay to OAP's template store through the admin 
host (OAP 11), gated on `overview:write`; the eight UI-chrome message catalogs 
are bundled and switch synchronously with no network fetch. A CI gate 
(`i18n:validate`) keeps every source template paired with an overlay per locale 
so nothing drifts. For the field reference — the translatable-field rules and 
the add-a-language recipe — s [...]
 
-Next, the series closes with **Getting Started & Migration** — installing 
Horizon and swapping it in for an existing UI.
+Next, the series closes with [**Getting Started & 
Migration**](/blog/2026-06-30-horizon-ui-getting-started-and-migration/) — 
installing Horizon and swapping it in for an existing UI.
diff --git a/content/blog/2026-06-30-horizon-ui-platform-introspection/index.md 
b/content/blog/2026-06-30-horizon-ui-platform-introspection/index.md
index d3706eabd17..999e696320f 100644
--- a/content/blog/2026-06-30-horizon-ui-platform-introspection/index.md
+++ b/content/blog/2026-06-30-horizon-ui-platform-introspection/index.md
@@ -47,4 +47,4 @@ All three live under **Platform monitoring**, each gated by 
its own read permiss
 
 For the field reference — every pane, the config-dump shape, and the BanyanDB 
lifecycle details — see the [Cluster 
Status](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/cluster-metadata/),
 [OAP 
Configuration](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/oap-configuration/),
 and [Data 
Retention](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/data-retention/)
 docs.
 
-That closes **Act 3 — operate it**. Next up, **Act 4 — govern & secure it**, 
starting with **Access Control & Security**: server-enforced RBAC, LDAP/AD, the 
audit log, and break-glass.
+That closes **Act 3 — operate it**. Next up, **Act 4 — govern & secure it**, 
starting with [**Access Control & 
Security**](/blog/2026-06-30-horizon-ui-access-control-and-security/): 
server-enforced RBAC, LDAP/AD, the audit log, and break-glass.
diff --git a/content/zh/2026-06-21-horizon-ui-dashboards-and-mqe/index.md 
b/content/zh/2026-06-21-horizon-ui-dashboards-and-mqe/index.md
index 6bfc381463b..5507238d130 100644
--- a/content/zh/2026-06-21-horizon-ui-dashboards-and-mqe/index.md
+++ b/content/zh/2026-06-21-horizon-ui-dashboards-and-mqe/index.md
@@ -88,4 +88,4 @@ Layer 仪表盘是一个紧凑的 **12 列网格**:行高 120px,空隙会自
 
 上面讲的是 *查看* 体验。每个组件的 MQE、`visibleWhen` 条件、格式,以及各作用域的网格,都可以从 **Layer 
dashboards** 管理界面编辑。但这个创作流程(draft → preview → publish,以及可内联/展开的 MQE 
编辑器)会在后续文章里单独展开。字段级参考可以看文档里的 [dashboard 
widgets](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/components/dashboard-widgets/)
 和 
[charts](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/components/charts/)。
 
-下一篇讲拓扑与服务依赖:同一批观测数据,如何从图表变成服务关系图,并继续下钻到实例和 endpoint。
+下一篇讲[拓扑与服务依赖](/zh/2026-06-21-horizon-ui-topology-and-dependency/):同一批观测数据,如何从图表变成服务关系图,并继续下钻到实例和
 endpoint。
diff --git a/content/zh/2026-06-21-horizon-ui-deployment-and-banyandb/index.md 
b/content/zh/2026-06-21-horizon-ui-deployment-and-banyandb/index.md
index 52dd8c81a9c..cebf05426e4 100644
--- a/content/zh/2026-06-21-horizon-ui-deployment-and-banyandb/index.md
+++ b/content/zh/2026-06-21-horizon-ui-deployment-and-banyandb/index.md
@@ -82,4 +82,6 @@ Deployment 标签页中,容器之间的调用边会从 SWIP-15 instance-relati
 
 上面这些不是一张手工写死的 "BanyanDB 页面"。聚类规则、每个 role 的节点指标、role-pair 边指标,都在 Layer template 
中作为一个自包含块存在,可以从 **Layer dashboards admin → Deployment** 作用域编辑,并随模板 
export/import 一起携带。它和其他 Layer 背后的配置驱动模型一样,后续文章会完整展开。
 
-下一篇看 3D Infrastructure Map:把所有 Layer 的服务放进一张 WebGL 地图,从全局看部署状态。
+BanyanDB Layer 自身的字段——Cluster、Container、Group 和 Deployment 视图——可以参考 [BanyanDB 
dashboards](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/dashboards/banyandb/)
 文档。
+
+下一篇看 [3D Infrastructure 
Map](/zh/2026-06-22-horizon-ui-3d-infrastructure-map/):把所有 Layer 的服务放进一张 WebGL 
地图,从全局看部署状态。
diff --git a/content/zh/2026-06-21-horizon-ui-topology-and-dependency/index.md 
b/content/zh/2026-06-21-horizon-ui-topology-and-dependency/index.md
index a3760fcfc76..98e496441ac 100644
--- a/content/zh/2026-06-21-horizon-ui-topology-and-dependency/index.md
+++ b/content/zh/2026-06-21-horizon-ui-topology-and-dependency/index.md
@@ -71,4 +71,4 @@ SkyWalking 拓扑背后的调用数据只有一份,但 Horizon 不只画一种
 
 这些地图上的每个指标、阈值和边权重,都位于 Layer template 的 `topology` 
块里。换句话说,你会用和仪表盘一样的配置驱动方式调整它们,这也是后续文章的主题。字段参考可以看 
[layer-template](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/customization/layer-templates/)
 里的 topology 文档。
 
-下一篇转向服务内部:Deployment 标签页如何展示集群服务的实例关系,以及 BanyanDB 如何接入 SkyWalking 自观测。
+下一篇转向服务内部:[Deployment 
标签页](/zh/2026-06-21-horizon-ui-deployment-and-banyandb/)如何展示集群服务的实例关系,以及 
BanyanDB 如何接入 SkyWalking 自观测。
diff --git a/content/zh/2026-06-21-skywalking-horizon-ui-introduction/index.md 
b/content/zh/2026-06-21-skywalking-horizon-ui-introduction/index.md
index 4a9d0ec0a3f..49b9447d7b3 100644
--- a/content/zh/2026-06-21-skywalking-horizon-ui-introduction/index.md
+++ b/content/zh/2026-06-21-skywalking-horizon-ui-introduction/index.md
@@ -111,7 +111,7 @@ OAP 短暂不可达时,Horizon 也遵循同样思路。如果后端短时间
 
 ## 连接现有 OAP 即可试用
 
-Horizon 可以运行在你已有的 OAP 之上。在今天的 **OAP 10.x** 上,绝大多数功能已经可用:所有仪表盘、拓扑、Trace(原生和 
**Zipkin**)、日志、告警,以及五类性能剖析,都通过 OAP 的 query host(`:12800`)渲染。Horizon 
的访问控制、审计和主题运行在 BFF 里,不依赖 OAP 版本。需要等待 **OAP 11.0** 的是 *operate* 
层:runtime-rule(DSL)管理、Live Debugger、Metrics Inspect、告警规则编辑器、Cluster Status 
管理面板,以及把模板编辑发布回 OAP。这些依赖 admin host(`:17128`),即将随 OAP 11.0 发布。Horizon 会按 admin 
module 是否存在来探测能力,10.x 不能提供的页面会直接隐藏;完整观测控制台今天就能跑在 10.x 上,迁移到 11.0 后运维工具会自动亮起来。
+Horizon 可以运行在你已有的 OAP 之上。在今天的 **OAP 10.x** 上,绝大多数功能已经可用:所有仪表盘、拓扑、Trace(原生和 
**Zipkin**)、日志、告警,以及五类性能剖析,都通过 OAP 的 query host(`:12800`)渲染。Horizon 
的访问控制、审计和主题运行在 BFF 里,不依赖 OAP 版本。需要等待 **OAP 11.0** 的是 *operate* 
层:runtime-rule(DSL)管理、Live Debugger、Metrics Inspect、告警规则编辑器、Cluster Status 
管理面板,以及把模板编辑发布回 OAP。这些依赖 admin host(`:17128`),由 OAP 11.0 提供。Horizon 会按 admin 
module 是否存在来探测能力,10.x 不能提供的页面会直接隐藏;完整观测控制台今天就能跑在 10.x 上,迁移到 11.0 后运维工具会自动亮起来。
 
 把 Horizon 指向已有集群即可启动,不需要改后端。仍然是你的部署已经在使用的那个 OAP:
 
@@ -144,9 +144,9 @@ auth:
 
 ## 其他要点
 
-- **可以直接接入现有 OAP。** Horizon 是一次从零开始的重写,但保留了所有后端契约:同样的 GraphQL 查询协议、admin REST 
接口、MQE 语言和 `Layer` 概念。所以你可以把它指向一个正在运行的集群,不改后端。今天的 **OAP 10.x** 
已经能运行完整观测控制台(仪表盘、拓扑、包括 **Zipkin** 在内的 Trace、日志、告警、性能剖析),以及 Horizon BFF 
侧的访问控制、审计和主题。只有 *operate* 工具链需要等待 OAP 的 **admin host**(`:17128`),也就是随 **OAP 
11.0,即将发布** 的 runtime rules、Live Debugger、Inspect、Cluster Status admin pane 
和模板编辑发布。
+- **可以直接接入现有 OAP。** Horizon 是一次从零开始的重写,但保留了所有后端契约:同样的 GraphQL 查询协议、admin REST 
接口、MQE 语言和 `Layer` 概念。所以你可以把它指向一个正在运行的集群,不改后端。今天的 **OAP 10.x** 
已经能运行完整观测控制台(仪表盘、拓扑、包括 **Zipkin** 在内的 Trace、日志、告警、性能剖析),以及 Horizon BFF 
侧的访问控制、审计和主题。只有 *operate* 工具链需要等待 OAP 的 **admin host**(`:17128`),也就是随 **OAP 
11.0** 提供的 runtime rules、Live Debugger、Inspect、Cluster Status admin pane 
和模板编辑发布。
 - **暗色优先,高密度。** 12 列网格面向 incident 扫描设计,首屏承载更多信号,减少不必要留白。
 - **基于现代技术栈。** 前端是 Vue 3 + TypeScript on Vite、Pinia、Apache ECharts、D3 和 
Monaco;BFF 使用 Node.js 上的 Fastify。
 - **Apache 许可证,社区共建。** Horizon UI 位于 
[apache/skywalking-horizon-ui](https://github.com/apache/skywalking-horizon-ui)。欢迎接到你的集群上试用,也欢迎告诉我们缺什么,issue
 和 pull request 都可以。
 
-下一篇讲仪表盘:MQE 如何驱动组件,BFF 又如何在服务端判断哪些组件该显示、哪些查询可以直接省掉。
+下一篇讲[仪表盘](/zh/2026-06-21-horizon-ui-dashboards-and-mqe/):MQE 如何驱动组件,BFF 
又如何在服务端判断哪些组件该显示、哪些查询可以直接省掉。
diff --git a/content/zh/2026-06-22-horizon-ui-3d-infrastructure-map/index.md 
b/content/zh/2026-06-22-horizon-ui-3d-infrastructure-map/index.md
index 5e5544b35dd..3bd6f1a94b3 100644
--- a/content/zh/2026-06-22-horizon-ui-3d-infrastructure-map/index.md
+++ b/content/zh/2026-06-22-horizon-ui-3d-infrastructure-map/index.md
@@ -88,4 +88,4 @@ Horizon 自带一份默认配置,所以地图开箱就有用。你的修改会
 
 3D 地图是全局入口;2D 的按 Layer 页面仍然是最完整的服务地图。查看它只需要读权限(`infra-3d:read`,内置 viewer 
角色及以上持有);调整它需要和仪表盘相同的写权限。字段参考,包括 tier、配置结构和加载阶段,可以看 [3D Infrastructure Map 
文档](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/infra-3d-map/)。
 
-下一篇回到单个请求:Trace Explorer 会用分布图、瀑布图和调用树帮你定位慢调用。
+下一篇回到单个请求:[Trace Explorer](/zh/2026-06-22-horizon-ui-trace-explorer/) 
会用分布图、瀑布图和调用树帮你定位慢调用。
diff --git a/content/zh/2026-06-22-horizon-ui-trace-explorer/index.md 
b/content/zh/2026-06-22-horizon-ui-trace-explorer/index.md
index b590867d45e..7bb1cbfe79b 100644
--- a/content/zh/2026-06-22-horizon-ui-trace-explorer/index.md
+++ b/content/zh/2026-06-22-horizon-ui-trace-explorer/index.md
@@ -89,4 +89,4 @@ Zipkin 标签页通过 **OAP 的 Zipkin query API** 查询上游 Zipkin store。
 
 Traces 标签页把一个请求完整展开;前面几篇的仪表盘和地图,是你最初发现异常的地方。字段参考,包括每个条件、native-vs-Zipkin 拆分和 
span 详情面板,可以看 [Traces 
文档](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/traces/)。
 
-下一篇看日志探索器:从 Trace 切到相关日志流,沿着同一条排查路径继续定位问题。
+下一篇看[日志探索器](/zh/2026-06-23-horizon-ui-log-explorer/):从 Trace 
切到相关日志流,沿着同一条排查路径继续定位问题。
diff --git 
a/content/zh/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md 
b/content/zh/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md
index c2ad8d0ee6b..235827173b3 100644
--- a/content/zh/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md
+++ b/content/zh/2026-06-23-horizon-ui-browser-errors-and-source-maps/index.md
@@ -66,4 +66,4 @@ Horizon 刻意 **不猜测**。浏览器端 agent 会上报 app **version**,
 
 字段参考,包括 categories、两种提供路径、预算,以及如何按构建版本匹配 map,可以看 [Browser Logs & Source Maps 
文档](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/browser-source-maps/)。
 
-下一篇进入 Profiling:五种 profiler(trace、async、eBPF、Go 
pprof、network)如何共用一套火焰图视图,以及为什么 network profiling 是例外。
+下一篇进入 [Profiling](/zh/2026-06-26-horizon-ui-profiling/):五种 
profiler(trace、async、eBPF、Go pprof、network)如何共用一套火焰图视图,以及为什么 network profiling 
是例外。
diff --git a/content/zh/2026-06-23-horizon-ui-log-explorer/index.md 
b/content/zh/2026-06-23-horizon-ui-log-explorer/index.md
index e615ebcf728..576749dfb66 100644
--- a/content/zh/2026-06-23-horizon-ui-log-explorer/index.md
+++ b/content/zh/2026-06-23-horizon-ui-log-explorer/index.md
@@ -64,4 +64,4 @@ tags:
 
 两个标签页,包括存储查询、tag/container 自动补全和 live tail,都由同一个 `logs:read` 
权限控制。所以授予“可以读日志”就是一个开关。字段参考,包括每个条件、histogram、Pod Logs 的窗口和过滤器,可以看 [Logs 
文档](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/logs/)。
 
-下一篇看 Browser/RUM:浏览器端错误如何上报,又如何用 source map 把压缩后的 stack 还原到源码位置。
+下一篇看 
[Browser/RUM](/zh/2026-06-23-horizon-ui-browser-errors-and-source-maps/):浏览器端错误如何上报,又如何用
 source map 把压缩后的 stack 还原到源码位置。
diff --git 
a/content/zh/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md 
b/content/zh/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md
index 5c1a1096b6b..64535aa9ae6 100644
--- a/content/zh/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md
+++ b/content/zh/2026-06-29-horizon-ui-inspect-cross-layer-query/index.md
@@ -50,4 +50,4 @@ SkyWalking 会计算大量指标,但过去没有一个地方能把它们完整
 
 字段参考,包括指标目录、实体枚举、foreign metrics 和 MQE 执行,可以看 [Inspect 
文档](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/inspect/)。
 
-下一篇是 **Platform & Cluster Introspection**:Cluster Status、OAP configuration 和 
data-retention。它是第三幕的最后一站,之后这个系列会转向控制台的治理和安全。
+下一篇是 [**Platform & Cluster 
Introspection**](/zh/2026-06-30-horizon-ui-platform-introspection/):Cluster 
Status、OAP configuration 和 data-retention。它是第三幕的最后一站,之后这个系列会转向控制台的治理和安全。
diff --git 
a/content/zh/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md 
b/content/zh/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md
index 6fd3a2f493b..61625026bb8 100644
--- a/content/zh/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md
+++ b/content/zh/2026-06-29-horizon-ui-runtime-rules-and-live-debugging/index.md
@@ -28,7 +28,7 @@ OAP 里的大多数分析都经过一组小型 DSL:**OAL** 把 trace 转成 se
 ![图 2:Monaco YAML 编辑器中的一条 MAL 规则,带 edit / diff-vs-server / diff-vs-bundled 
标签页,以及代码左侧的绿色播放按钮。](/screenshots/horizon-0.7.0/p11-runtime-02-rule-editor.webp)
 图 2:用 Monaco YAML 编辑规则:语法高亮、对比线上版本和 bundled 版本,并可通过代码左侧的绿色 ▶ 直接进入 Live 
Debugger。</br>
 
-保存时,Horizon 会区分修改的风险。只改规则主体或 filter,可以立即生效。但如果是**结构性变更**,比如改了指标的 
scope、downsampling 或存储形态,就会影响集群存储结构。Horizon 会按带集群确认的流程执行,并在界面上展示进度:**Compiled → 
Confirming across the cluster → Committing → Done**;只有变更在集群里确认持久化后才算成功。
+保存时,Horizon 会区分修改的风险。只改规则主体或 filter,可以立即生效。但如果是**结构性变更**,比如改了指标的 
scope、downsampling 或存储形态,就会影响集群存储结构。Horizon 会按集群确认流程执行,并在界面上展示进度:**Compiled → 
Confirming across the cluster → Committing → Done**;只有变更在集群里确认持久化后才算成功。
 
 如果某个节点没有及时通过确认,应用结果会变成 **DEGRADED**。界面会列出落后的节点,这些节点会在下次扫描时自行追上,而不是让整次应用直接失败。如果 
commit 前出错,变更会 **rolled back**,原因显示在界面里,你的编辑内容仍保留在 buffer 中。编译错误则会作为 inline 
diagnostic 展示。对于卡住的发布,可以点一次 **Force 
re-apply**,用完全相同的内容重新跑一遍应用流程,让落后的节点恢复同步;这会短暂暂停那条规则的采集。把规则恢复到 bundled 
默认版本也走同一套确认流程;此外也可以 inactivate、delete,或者把整个目录导出成 tarball。
 
diff --git 
a/content/zh/2026-06-30-horizon-ui-access-control-and-security/index.md 
b/content/zh/2026-06-30-horizon-ui-access-control-and-security/index.md
index b4fc74e60bb..65c5d782820 100644
--- a/content/zh/2026-06-30-horizon-ui-access-control-and-security/index.md
+++ b/content/zh/2026-06-30-horizon-ui-access-control-and-security/index.md
@@ -59,4 +59,4 @@ tags:
 
 这篇里的五个入口都属于 Horizon 自己的 BFF 侧治理,不访问 OAP admin host,因此在不同 OAP 
版本上行为一致。(本地开发时也可以完全关闭 RBAC;这时 Roles board 会用红色标出来。)字段参考,包括 verb 列表、LDAP group 
mapping、audit schema 和 break-glass 启用方式,可以看 
[RBAC](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/access-control/rbac/)、[LDAP
 
backend](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/access-control/ldap-backend/)、[Audit
 
log](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/access-control/audit-log/)
 和 [Break-g [...]
 
-下一篇进入 **Act 5 — make it yours & adopt**,从 **Customization: Config-Driven Layer 
Templates** 开始:整个控制台如何由可编辑、可预览、可发布的模板塑造。
+下一篇进入 **Act 5 — make it yours & adopt**,从 
[用模板定制控制台](/zh/2026-06-30-horizon-ui-customization-and-templates/) 
开始:整个控制台如何由可编辑、可预览、可发布的模板塑造。
diff --git a/content/zh/2026-06-30-horizon-ui-localization-i18n/index.md 
b/content/zh/2026-06-30-horizon-ui-localization-i18n/index.md
index 5305dad9f8e..d510a18a3a7 100644
--- a/content/zh/2026-06-30-horizon-ui-localization-i18n/index.md
+++ b/content/zh/2026-06-30-horizon-ui-localization-i18n/index.md
@@ -10,7 +10,7 @@ tags:
 
 *译自英文原文:[Meet Horizon UI · 16/17: Localization in Eight 
Languages](/blog/2026-06-30-horizon-ui-localization-i18n/)。*
 
-这是 [Meet Horizon UI](/zh/2026-06-21-skywalking-horizon-ui-introduction/) 
系列的第十六篇,仍然属于第五幕 **make it yours & adopt**。上一篇讲到,整个控制台都由 template 
驱动。本地化也建立在这个基础上:Horizon 支持**八种语言**,每种翻译都是覆盖在同一套 template 上的一层 **overlay**。它不是 
fork 出一份 dashboard,也不是每次渲染图表时重新翻译。
+这是 [Meet Horizon UI](/zh/2026-06-21-skywalking-horizon-ui-introduction/) 
系列的第十六篇,仍然属于第五幕 **make it yours & 
adopt**。[上一篇](/zh/2026-06-30-horizon-ui-customization-and-templates/)讲到,整个控制台都由 
template 驱动。本地化也建立在这个基础上:Horizon 支持**八种语言**,每种翻译都是覆盖在同一套 template 上的一层 
**overlay**。它不是 fork 出一份 dashboard,也不是每次渲染图表时重新翻译。
 
 ## 翻译是 overlay,在服务端合并一次
 
diff --git a/content/zh/2026-06-30-horizon-ui-platform-introspection/index.md 
b/content/zh/2026-06-30-horizon-ui-platform-introspection/index.md
index 64cef4ee7c0..4d31f80b7aa 100644
--- a/content/zh/2026-06-30-horizon-ui-platform-introspection/index.md
+++ b/content/zh/2026-06-30-horizon-ui-platform-introspection/index.md
@@ -49,4 +49,4 @@ Horizon 和 OAP 通信不只走一个通道,**Cluster Status** 会把每个通
 
 字段参考,包括每个面板、config dump 结构和 BanyanDB 生命周期细节,可以看 [Cluster 
Status](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/cluster-metadata/)、[OAP
 
Configuration](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/oap-configuration/)
 和 [Data 
Retention](https://skywalking.apache.org/docs/skywalking-horizon-ui/next/operate/data-retention/)
 文档。
 
-到这里,**Act 3 — operate it** 结束。下一篇进入 **Act 4 — govern & secure it**,从 **Access 
Control & Security** 开始:服务端强制执行的 RBAC、LDAP/AD、audit log,以及 break-glass。
+到这里,**Act 3 — operate it** 
结束。下一篇:[访问控制与安全](/zh/2026-06-30-horizon-ui-access-control-and-security/),进入 
**Act 4 — govern & secure it**:服务端强制执行的 RBAC、LDAP/AD、audit log,以及 break-glass。


Reply via email to