Skip to content

Wire most of nav v1 content into nav v2#3268

Merged
theletterf merged 7 commits intodemo/findabilityfrom
nav-v2-fill-gaps
May 8, 2026
Merged

Wire most of nav v1 content into nav v2#3268
theletterf merged 7 commits intodemo/findabilityfrom
nav-v2-fill-gaps

Conversation

@theletterf
Copy link
Copy Markdown
Member

@theletterf theletterf commented May 7, 2026

demo/findability currently surfaces a much smaller portion of the docs in nav v2 than nav v1 surfaces today. A diff of config/navigation.yml + the .artifacts/checkouts/current/**/toc.yml graph against config/navigation-v2.yml showed 2,733 pages reachable in v1 nav but not in v2 — most of them in Reference, Release notes, and the Deploy and manage children that v2 had stubbed out as landing pages.

This PR closes ~96% of that gap (2,733 → 103) without changing v2's curated titles, ordering, or section structure. The remaining 103 pages are mostly two intentionally-skipped sections (explore-analyze and the disabled Contribute) plus a handful of stragglers — see "What's still missing" at the bottom.

Demo: https://docs-v3-preview.elastic.dev/elastic/docs-builder/docs/3268

What

Bulk rewiring (commit 1)

  • Re-enabled the commented Reference block at the live - section: Reference (uncomment + slot in). Recovers ~1,222 pages: elasticsearch://reference/elasticsearch, kibana://reference, cloud://reference, cloud-on-k8s://reference, ecs://reference, search-ui://reference, ecctl://reference, plus aggregations, query-languages, scripting-languages, enrich-processor, text-analysis.
  • Ported the Release notes tree from config/navigation.yml:33-209 into v2's stub Release notes section (dropped path_prefix: lines — v2 doesn't use them). Recovers ~126 pages: cloud hosted/enterprise, cloud-on-k8s, all APM agents, all EDOT SDKs, beats, logstash, elastic-agent, fleet-server, ECS, ECCTL, plus elastic-security, elastic-observability, elastic-cloud-serverless.
  • Added per-product reference tocs missing from the commented block, grouped by family for readability. Recovers ~777 pages:
    • Elasticsearch clients: java, js, dsl-js, .net, php, py, ruby, rs, eland, go-elasticsearch, curator
    • APM: apm-k8s-attacher, apm-aws-lambda, dotnet, go, java, nodejs, php, python, ruby, rum-js
    • OpenTelemetry: opentelemetry root + motlp + edot-cloud-forwarder (aws/azure/gcp), elastic-agent edot-collector, edot-android, edot-dotnet, edot-ios, edot-java, edot-node, edot-php, edot-python, edot-browser
    • ECS Logging: ecs-logging root + .net, go-logrus, go-zap, go-zerolog, java, nodejs, php, python, ruby
    • Plus beats, logstash, integration-docs, elasticsearch-hadoop, elastic-serverless-forwarder, elasticsearch-plugins, community-contributed.
  • Wired children of 12 deploy-manage landings: security, users-roles, monitor, tools, remote-clusters, upgrade, cloud-organization, maintenance, api-keys, autoscaling, license, uninstall. Hand-listed under each existing - group: to preserve v2's curated titles. The cleanest alternative (creating per-subtree toc.yml files in docs-content and switching v2 to toc:) was rejected because it would override v2's hand-curated group titles. ~369 pages.
  • Removed the dead Troubleshoot comment block (~120 lines deleted). Verified all 53 pages it referenced are already reachable via the live - toc: docs-content://troubleshoot (which surfaces 190 pages).
  • Applied Liam's Search and query rewrite from Add search/query pages #3094 — replaces the placeholder - group: Search and query with the full narrative arc (get-started → approaches → ingest → querying with elasticsearch://reference/query-languages toc inline → cross-cluster/cross-project → integrate). Liam credited as co-author. ~58 pages.

Observability (commit 2)

  • APM > View and analyze data: discover-traces.md (between Drill down into data and Filter and search data, mirroring v1).
  • OpenTelemetry use cases: llms/index.md ("LLM observability") as a sibling of Kubernetes observability.
  • Streams > Process documents: 7 missing string/security/network processors (concat, join, lowercase, uppercase, trim, redact, network-direction) appended after existing string-op processors, before manual-pipeline-configuration.
  • Streams: streamlang.md as a sibling of Process documents.

10 pages recovered.

Production guidance (commit 3)

Per Shaina's note that the remaining D&M misses sit under the production-guidance subtree, converted the two flat entries into groups and listed their canonical children from v1's deploy-manage toc:

  • Run Elasticsearch in production
    • Design for resilience (3 children: small clusters, larger clusters, ECH and ECE)
    • Scaling considerations
    • Performance optimizations (6 children: general recommendations, indexing speed, search speed, approximate kNN, disk usage, size shards)
  • Run Kibana in production
    • 6 children: HA and load balancing, configure memory, manage background tasks, traffic scaling, alerting, reporting

18 pages recovered.

Distributed architecture, deploy orchestrators, ingest architectures (commit 4)

  • Distributed architecture: converts three flat entries into groups with canonical children — clusters-nodes-shards (node-roles), shard-allocation-relocation-recovery (shard-allocation-awareness + index-level-shard-allocation with delaying-allocation-when-node-leaves), and discovery-cluster-formation (6 children: hosts-providers, quorums, voting, bootstrap-cluster, cluster-state, cluster-fault-detection).
  • Deploy orchestrators: adds deploy-an-orchestrator.md as a peer page under Elastic Cloud Enterprise, and as the landing of the existing "Deploy an orchestrator" group under Elastic Cloud on Kubernetes (with install.md demoted to first child to match v1 hierarchy).
  • Ingest architectures: converts the leaf entry into a group with the canonical 16 children grouped by architecture (Agent to Elasticsearch, Agent with Logstash, Agent with Kafka, Air-gapped, Logstash as input, Agent through a proxy). Sets ingesting-data-for-elastic-solutions.md as the "Ingest by solution" group landing. Surfaces tools.md alongside the existing API/upload entries.

30 pages recovered.

Contribute section (added, then disabled — commits 4 and 5)

Initially added an isolated - section: Contribute pulling docs-content://contribute-docs via toc:, mirroring the Extension points pattern (~35 pages). Whether to surface contribute-docs in the public site is still open, so the section is now commented out as a ready-to-uncomment block rather than shipped.

Validation

  • YAML parses cleanly.
  • All 175 navigation tests pass (dotnet test tests/Navigation.Tests).
  • Diff: ~+1,100 / −180 lines across 5 commits in config/navigation-v2.yml.

What's still missing (~103 pages)

Sections skipped entirely (~50 pages — intentional)

These three explore-analyze subtrees were left out because they need design judgement on which children to surface and where in v2's curated tree:

pages section landing + children
32 docs-content://explore-analyze/scripting (landing + 31 children — Painless tutorials, debugging, security, etc.)
12 docs-content://explore-analyze/transforms (landing + 11 children — checkpoints, examples, alerts, scaling, setup, etc.)
5 docs-content://explore-analyze/query-filter (landing + 4 children — filtering, esql-kibana, grok-debugger, playground)
49 subtotal

Sections disabled pending decision (~35 pages)

pages section
35 - section: Contribute (commented out in this PR — toc fans into contribute-docs/index, api-docs/*, content-types/*, how-to/*, style-guide/*, plus asciidoc-guide, locally, on-the-web, syntax-quick-reference, tools, vale-linter, vscode-extension)

Single-page misses (18 pages)

Truly scattered — same mechanical pattern as the deploy-manage batch can be applied later if someone wants to mop them up:

cloud-account/ (8)

  • docs-content://cloud-account/index.md
  • docs-content://cloud-account/add-a-login-method.md
  • docs-content://cloud-account/change-your-password.md
  • docs-content://cloud-account/dark-mode.md
  • docs-content://cloud-account/high-contrast.md
  • docs-content://cloud-account/join-or-leave-an-organization.md
  • docs-content://cloud-account/multifactor-authentication.md
  • docs-content://cloud-account/update-your-email-address.md

get-started/ (4)

  • docs-content://get-started/introduction.md
  • docs-content://get-started/deployment-options.md
  • docs-content://get-started/the-stack.md
  • docs-content://get-started/howto-use-the-docs.md

Other one-offs (3)

  • docs-content://manage-data/index.md
  • docs-content://deploy-manage/manage-spaces-fleet.md
  • docs-content://solutions/search/vector.md

Phantom-only (3, reachable in v1 only via phantoms: registration, not in either nav)

  • docs-content://release-notes/index.md
  • cloud://release-notes/index.md
  • elasticsearch://reference/index.md

🤖 Generated with Claude Code

Closes 93% of the gap between nav v1 (config/navigation.yml + .artifacts
toc.yml graph) and nav v2 (config/navigation-v2.yml): 2,733 → 181 missing
pages.

- Re-enabled the commented Reference block (~1,222 pages: elasticsearch,
  kibana, cloud, ECS, search-ui, ECCTL, plus aggregations, query-languages,
  scripting, enrich-processor, text-analysis).
- Ported the per-product release notes tree from v1 (~126 pages: cloud
  hosted/enterprise, cloud-on-k8s, all APM agents, all EDOT SDKs, beats,
  logstash, elastic-agent, fleet-server, ECS, ECCTL, security, observability,
  serverless).
- Added per-product reference tocs grouped by family (~777 pages: ES clients,
  APM, OpenTelemetry/EDOT, ECS Logging) plus elasticsearch-plugins and
  community-contributed.
- Wired children of 12 deploy-manage landings (security, users-roles,
  monitor, tools, remote-clusters, upgrade, cloud-organization, maintenance,
  api-keys, autoscaling, license, uninstall) using hand-listed children to
  preserve the curated v2 group titles (~369 pages).
- Removed the dead Troubleshoot comment block (already covered by
  - toc: docs-content://troubleshoot).
- Brought in Liam's Search and query rewrite from PR #3094.

Co-Authored-By: Liam Thompson <leemthompo@gmail.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@theletterf theletterf requested review from a team as code owners May 7, 2026 14:56
@theletterf theletterf requested a review from Mpdreamz May 7, 2026 14:56
@theletterf theletterf self-assigned this May 7, 2026
@elastic elastic deleted a comment from github-actions Bot May 7, 2026
theletterf and others added 4 commits May 7, 2026 17:03
Adds the 10 observability pages that v1 surfaces but v2 was missing,
slotted next to their existing siblings to preserve v2's curated order:

- APM > View and analyze data: discover-traces.md (between Drill down into
  data and Filter and search data, mirroring v1).
- OpenTelemetry use cases: llms/index.md as a sibling of Kubernetes
  observability under Get started.
- Streams > Process documents: concat, join, lowercase, uppercase, trim,
  redact, network-direction processors (appended after existing string-op
  processors, before manual-pipeline-configuration).
- Streams: streamlang.md as a sibling of Process documents.

Also fixes a counting bug in the offline diff script — it now honors the
`folder:` keyword in toc.yml, which removed ~75 false-positive "missing"
pages caused by treating apm-server filenames as living at solutions/ root.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per Shaina, the remaining Deploy and manage misses sit under the two
existing production-guidance landings. Converts those flat entries into
groups and lists their canonical children from v1's deploy-manage toc:

- Run Elasticsearch in production
  - Design for resilience (3 children: small clusters, larger clusters,
    ECH and ECE)
  - Scaling considerations
  - Performance optimizations (6 children: general recommendations,
    indexing speed, search speed, approximate kNN, disk usage, size shards)
- Run Kibana in production
  - High availability and load balancing, configure memory, manage
    background tasks, traffic scaling, alerting, reporting (6 children)

18 pages recovered. Gap: 151 → 133.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Closes the rest of the actionable gap (133 → 68; the 50 remaining are
explore-analyze pages intentionally left for separate IA work):

- Distributed architecture: converts three flat entries into groups with
  canonical children — clusters-nodes-shards (node-roles),
  shard-allocation-relocation-recovery (shard-allocation-awareness +
  index-level-shard-allocation with delaying-allocation-when-node-leaves),
  and discovery-cluster-formation (6 children: hosts-providers, quorums,
  voting, bootstrap-cluster, cluster-state, cluster-fault-detection).
- Deploy orchestrators: adds deploy-an-orchestrator.md as a peer page
  under Elastic Cloud Enterprise, and as the landing of the existing
  "Deploy an orchestrator" group under Elastic Cloud on Kubernetes
  (with install.md demoted to first child to match v1 hierarchy).
- Ingest architectures: converts the leaf entry into a group with the
  canonical 16 children grouped by architecture (Agent to Elasticsearch,
  Agent with Logstash, Agent with Kafka, Air-gapped, Logstash as input,
  Agent through a proxy). Sets ingesting-data-for-elastic-solutions.md
  as the "Ingest by solution" group landing. Surfaces tools.md alongside
  the existing API/upload entries.
- Contribute: new isolated section pulling docs-content://contribute-docs
  via toc, mirroring the Extension points pattern. Surfaces all 35
  contribute-docs pages (api-docs, content-types, how-to, style-guide,
  plus the standalone guides) without disturbing the main top-bar layout.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comments out the new isolated Contribute section we added in the previous
commit. Whether to surface contribute-docs in the public site is still
open, so keep the entry as a ready-to-uncomment block rather than a
shipped section. The toc graph is unchanged; only the v2 surface is.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Member

@shainaraskas shainaraskas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have to step out for a while but at least the security section is broken so it needs to be edited before it is merged in.

Comment thread config/navigation-v2.yml Outdated
Comment thread config/navigation-v2.yml Outdated
Comment thread config/navigation-v2.yml Outdated
@shainaraskas shainaraskas dismissed their stale review May 7, 2026 19:35

fixed missing titles and unexpanded variables

Eight `- group:` labels still contained `{{...}}` substitutions after
Shaina's fix pass — `{{apm-server}}` (2), `{{aws}}` (2), and
`{{elastic-defend}}` (4). The nav-v2 renderer does not expand these,
so they showed up literally in the sidebar. Replaced with their
canonical expansions per docs-content/docset.yml::features:
- {{apm-server}} -> APM Server
- {{aws}} -> AWS
- {{elastic-defend}} -> Elastic Defend

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@theletterf theletterf merged commit deb195c into demo/findability May 8, 2026
21 checks passed
@theletterf theletterf deleted the nav-v2-fill-gaps branch May 8, 2026 07:26
theletterf added a commit that referenced this pull request May 8, 2026
Backports the YAML fill from demo/findability (PR #3268). Pure additions
to config/navigation-v2.yml within the existing structure — no schema
changes, no new directives. Closes most of the gap between v1 nav and
the nav-v2 prototype.

- Re-enable the commented Reference label and expand it: docs-content
  reference (top-level fanout), elasticsearch core/plugins/community-
  contributed, kibana, Cloud (cloud + cloud-on-k8s), Elasticsearch
  clients (java/js/dsl-js/.net/php/py/ruby/rs, eland, go-elasticsearch,
  curator), APM (k8s-attacher, aws-lambda, all agent libs), OpenTelemetry
  (opentelemetry root + motlp + edot-cloud-forwarder for AWS/Azure/GCP,
  edot-collector, all EDOT SDKs), ECS Logging (root + all per-language
  libs), beats, logstash, integration-docs, elasticsearch-hadoop,
  elastic-serverless-forwarder, ecs, search-ui, ecctl, plus
  aggregations/enrich-processor/query-languages/scripting-languages/
  text-analysis. ~1,200 pages.

- Wire children of 12 deploy-manage landings (security, users-roles,
  monitor, tools, remote-clusters, upgrade, cloud-organization,
  maintenance, api-keys, autoscaling, license, uninstall) under each
  existing `- group:` to preserve curated titles. ~370 pages.

- Convert distributed-architecture leaf entries into groups with
  canonical children: clusters-nodes-shards (node-roles),
  shard-allocation-relocation-recovery (shard-allocation-awareness +
  index-level-shard-allocation w/ delaying-allocation-when-node-leaves),
  discovery-cluster-formation (6 children).

- Convert production-guidance leaf entries into groups with their
  full canonical structure: Run Elasticsearch in production (Design
  for resilience [3 children], Scaling considerations, Performance
  optimizations [6 children]); Run Kibana in production (6 children).

- Convert ingest-reference-architectures leaf into a group with the
  16 canonical children grouped by architecture (Agent to Elasticsearch,
  Agent with Logstash, Agent with Kafka, Air-gapped, Logstash as input,
  Agent through a proxy). Set ingesting-data-for-elastic-solutions.md
  as the "Ingest by solution" group landing. Surface
  manage-data/ingest/tools.md alongside the existing API/upload entries.

- Add Release notes top-level label with the per-product release-notes
  tree (Elasticsearch + clients + Hadoop, Kibana, Elastic Agent,
  Fleet Server, Logstash, Beats, Serverless, Cloud Hosted, Cloud
  Enterprise, Cloud on K8s, Observability with EDOT SDKs and APM
  agents, Security, ECS, ECCTL).

- Add Troubleshoot top-level label as `- toc: docs-content://troubleshoot`
  (covers ~190 pages). Delete the dead Troubleshooting comment block
  whose entries are all already reachable via that toc.

- Replace 57 `{{templated}}` substitution tokens (in titles AND group
  labels) with their literal expansions per docs-content/docset.yml::
  features. The nav renderer does not expand `{{...}}` so leaving
  them caused literal `{{ece}}` etc. to render in the sidebar.

Skipped (depends on features added in later layers of the stack):
- Liam's Search and query rewrite (PR #3094, against this branch).
- Products section (introduced in hub-pages).
- island: entries (Logstash plugins/versioned plugins; needs
  nav-v2-sections).
- Observability page additions on demo (slot under groups added in
  hub-pages stack).

YAML valid. 173/173 navigation tests pass.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants