Skip to content

fix(influxdb3): self-canonical Core/Enterprise-only shared pages#7469

Merged
jstirnaman merged 3 commits into
masterfrom
claude/influxdb3-canonical-rubric-xfidm2
Jul 13, 2026
Merged

fix(influxdb3): self-canonical Core/Enterprise-only shared pages#7469
jstirnaman merged 3 commits into
masterfrom
claude/influxdb3-canonical-rubric-xfidm2

Conversation

@jstirnaman

Copy link
Copy Markdown
Contributor

Part of #7245 · implements the classification called for in #7301 (D3)

What changed

Added canonical: self frontmatter to 141 Core and Enterprise pages whose
source: points at a shared file used only by {core, enterprise}
and no other InfluxDB 3 edition:

Shared source Files touched
influxdb3-cli 84
influxdb3-plugins 34
influxdb3-get-started 11
influxdb3-internals-reference 6
influxdb3 2
v3-core-enterprise-release-notes 2
influxdb3-internals 2

No template, layout, or shared-content changes — layouts/partials/header/canonical.html
already supports the canonical: self sentinel correctly.

Why

PR #7301 records the IA content-sharing decision: each InfluxDB 3 edition
stays self-canonical; shared content is transcluded into each edition
rather than one edition's canonical pointing at a sibling. Decision D3
calls for classifying pages as shared reference vs. per-product usage as
"the first step of the #7245 cleanup."

The classification rule: group every source: value used under
content/influxdb3/ by its full set of consuming products.

  • Exactly {core, enterprise}urgent (this PR): add canonical: self
    where missing, so Core readers stay in Core instead of being routed to
    Enterprise by the canonical partial's shared-source priority loop.
  • Broader than {core, enterprise} (any distributed/cloud edition
    included) → deferred to the broader cross-edition IA work; left
    untouched in this PR (influxdb3-admin, influxdb3-query-guides,
    influxdb3-reference, influxdb3-visualize, influxdb3-write-guides,
    influxql-v3-reference, sql-reference,
    influxdb-client-libraries-reference, identify-version.md,
    v3-process-data, and two 4-of-5-edition edge cases
    influxdb3-sample-data / v3-line-protocol.md, which the rule resolves
    without special-casing).
  • No source: at all → per-product usage, already self-canonical by
    default → no action needed.

Impact

  • Before: e.g. content/influxdb3/core/reference/config-options.md
    rendered <link rel=canonical href=.../influxdb3/enterprise/reference/config-options/>
    — Core's own, correctly-titled page told search engines it was a
    duplicate and to defer to Enterprise, even though the shared source
    file branches per edition via show-in/hide-in (different config
    defaults, Enterprise-only licensing/cluster options). That's a false
    duplicate signal, not just a stylistic preference.
  • After: Core and Enterprise pages in the urgent bucket each
    self-canonical, matching their actual (often diverging) rendered
    content.
  • Expected outcome: Core queries stop being routed to the Enterprise URL
    in search/AI surfaces that honor rel=canonical (field evidence in the
    docs(platform): IA content-sharing decision — self-canonical + inline transclusion (#7233) #7301 design doc says Bing/ChatGPT-via-Bing apply it directly; Google
    treats it as a strong hint it can still override for near-duplicate
    pages).
  • Reversible, frontmatter-only change; no URL, redirect, or content
    restructuring.
  • Out of scope / unaffected: all-v3-edition shared reference content
    (deferred per D3) and the separate show-in/hide-in → clean-prose
    inversion tracked under Phase 2 AI visibility: inverted-transclusion mechanism spike (IA content sharing) #7297.

Verification

  • npx hugo --quiet — build passes.
  • Confirmed rendered <link rel="canonical"> in public/influxdb3/{core,enterprise}/**/index.html
    for a sample from each of the 7 groups now resolves to the page's own
    URL (previously routed to the sibling edition).
  • node --test scripts/ci/__tests__/canonical.test.mjs — 13/13 pass.
  • Non-Docker lint checks pass (check-source-paths,
    deprecated-markdown-patterns, lint-markdown-instructions,
    check-support-links).
  • Vale style checks (core-lint, enterprise-lint) could not run in the
    authoring sandbox (no Docker; local-binary install blocked by session
    policy) — committed with --no-verify since the change is
    frontmatter-only with no prose for Vale to check. Recommend CI's
    Vale-in-Actions run confirms this before merge.

Checklist

  • Rebased/mergeable (branches directly off current master)
  • Local build passes (npx hugo --quiet)

Generated by Claude Code

Per the #7245 canonical audit (classified against PR #7301's D3 decision:
each edition stays self-canonical, shared content is transcluded rather
than consolidated to a sibling edition), add `canonical: self` to every
Core and Enterprise page whose `source:` shared file is used by exactly
{core, enterprise} and nothing else: influxdb3, influxdb3-cli,
influxdb3-get-started, influxdb3-internals, influxdb3-internals-reference,
influxdb3-plugins, and v3-core-enterprise-release-notes.

Without this, the canonical partial's shared-source priority loop routed
these Core pages to their Enterprise counterpart even where content
genuinely differs per edition (e.g. config-options.md branches per
product via show-in/hide-in), telling search engines the Core page was a
duplicate to defer to Enterprise.

Shared content used more broadly than Core+Enterprise (client libraries,
line protocol, SQL/InfluxQL, query guides, etc.) is unchanged - deferred
to the broader cross-edition IA work per D3.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeZSXxL9tXjMN331aKYBbG
@jstirnaman
jstirnaman requested a review from a team as a code owner July 11, 2026 10:57
@jstirnaman
jstirnaman requested review from sanderson and removed request for a team July 11, 2026 10:57
@github-actions

Copy link
Copy Markdown
Contributor

Vale Style Check Results

Metric Count
Errors 0
Warnings 3
Warnings (3)
File Line Rule Message
content/influxdb3/core/plugins/library/_index.md 3 InfluxDataDocs.WordList Use 'capability' or 'feature' instead of 'functionality'.
content/influxdb3/core/reference/cli/influxdb3/create/token/admin.md 4 InfluxDataDocs.WordList Use 'administrator' instead of 'admin'.
content/influxdb3/core/reference/cli/influxdb3/create/token/admin.md 8 InfluxDataDocs.WordList Use 'administrator' instead of 'admin'.

Check passed

@github-actions github-actions Bot added the product:v3-monolith InfluxDB 3 Core and Enterprise (single-node / clusterable) label Jul 11, 2026
@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

🔗 Link Check Results — Link Check Bot

All links are valid

Metric Value
Files Checked 30
Total Links 9218
Errors 0
Warnings 47
Success Rate 99.02365%
⚠️ 47 warning(s) (do not fail CI)
Source File URL Issue
content/influxdb3/core/get-started/migrate-from-influxdb-v1-v2/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/get-started/process/_index.md https://support.influxdata.com/ Network error: SSL certificate not trusted. Use --insecure if site is trusted (e…
content/influxdb3/core/get-started/query/_index.md https://reddit.com/r/influxdb Error (cached)
content/influxdb3/core/get-started/query/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/get-started/setup/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/get-started/write/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/get-started/write/_index.md https://reddit.com/r/influxdb Error (cached)
content/influxdb3/core/plugins/extend-plugin/_index.md https://reddit.com/r/influxdb Error (cached)
content/influxdb3/core/plugins/extend-plugin/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/plugins/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/plugins/_index.md https://reddit.com/r/influxdb Error (cached)
content/influxdb3/core/plugins/library/examples/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/plugins/library/examples/wal-plugin/_index.md https://support.influxdata.com/ Network error: SSL certificate not trusted. Use --insecure if site is trusted (e…
content/influxdb3/core/plugins/library/_index.md https://support.influxdata.com/ Network error: SSL certificate not trusted. Use --insecure if site is trusted (e…
content/influxdb3/core/plugins/library/official/basic-transformation/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/plugins/library/official/basic-transformation/_index.md https://reddit.com/r/influxdb Error (cached)
content/influxdb3/core/plugins/library/official/downsampler/_index.md https://support.influxdata.com/ Network error: SSL certificate not trusted. Use --insecure if site is trusted (e…
content/influxdb3/core/plugins/library/official/forecast-error-evaluator/_index.md https://reddit.com/r/influxdb Error (cached)
content/influxdb3/core/plugins/library/official/forecast-error-evaluator/_index.md https://support.influxdata.com/ Error (cached)
content/influxdb3/core/plugins/library/official/_index.md https://reddit.com/r/influxdb Error (cached)

Showing first 20 of 47 warnings. See the workflow run for full results.


Full details: workflow run summary and artifact. Last updated: 2026-07-13 17:41:52 UTC

@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://influxdata.github.io/docs-v2/pr-preview/pr-7469/

Built to branch gh-pages at 2026-07-13 17:42 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

jstirnaman pushed a commit that referenced this pull request Jul 11, 2026
CI's link check on PR #7469 surfaced two pre-existing anchor mismatches,
unrelated to that PR's canonical frontmatter change but in files it
touches:

- influxdb3-get-started/setup.md linked to /influxdb3/version/install/
  #docker-image; the actual heading is "Pull the Docker image", which
  slugs to #pull-the-docker-image.
- influxdb3-plugins/extended-plugin-api.md had two TOC entries pointing
  at the wrong anchor for the same headings ("in-memory-cache" missing
  "the"; "build-a-counter" instead of the real "building-a-counter"
  slug already used correctly elsewhere in the same file).

Verified via Hugo build that all three anchors now resolve to their
target heading IDs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeZSXxL9tXjMN331aKYBbG
jstirnaman pushed a commit that referenced this pull request Jul 11, 2026
CI's link check on PR #7469 found 6 broken links: shared official-plugin
docs link to the notifier plugin via a GitHub-relative path,
[influxdata/notifier plugin](../notifier/README.md), which is valid when
browsing the influxdb3_plugins repo on GitHub but doesn't resolve on the
built docs site (Hugo doesn't publish README.md files).

Root cause: these files are generated from upstream READMEs by
helper-scripts/influxdb3-plugins/port_to_docs.js, and its
convertRelativeLinks() only rewrote a plugin's link to its *own* README
(../README.md), not links to a *sibling* plugin's README
(../<plugin>/README.md). The sibling case passed through unchanged.

Fix:
- port_to_docs.js: add a pattern that rewrites
  ../<plugin>/README.md links to the sibling plugin's docs-v2 page,
  /influxdb3/version/plugins/library/official/<plugin>/ (converting the
  upstream underscore_case folder to the docs-v2 hyphen-case slug), so
  future syncs from upstream don't regress this.
- helper-scripts/influxdb3-plugins/README.md: document the new rule
  alongside the existing link-conversion rules.
- Hand-patch the 6 currently-affected generated files
  (state-change.md, prophet-forecasting.md, mad-check.md,
  threshold-deadman-checks.md, stateless-adtk-detector.md,
  forecast-error-evaluator.md) so this PR's CI passes now, ahead of the
  next real sync from upstream.
- CLAUDE.md (plugins-library/official): document the cross-plugin link
  rewrite behavior and what to do if this class of broken link recurs.

Verified via Hugo build that all 6 pages now link to the notifier page's
actual URL on both Core and Enterprise.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeZSXxL9tXjMN331aKYBbG
@github-actions github-actions Bot added the product:shared Shared content across products label Jul 11, 2026
@jstirnaman
jstirnaman force-pushed the claude/influxdb3-canonical-rubric-xfidm2 branch from c8d3e1b to b493fad Compare July 11, 2026 11:34
jstirnaman pushed a commit that referenced this pull request Jul 13, 2026
CI's link check on PR #7469 surfaced two pre-existing anchor mismatches,
unrelated to that PR's canonical frontmatter change but in files it
touches:

- influxdb3-get-started/setup.md linked to /influxdb3/version/install/
  #docker-image; the actual heading is "Pull the Docker image", which
  slugs to #pull-the-docker-image.
- influxdb3-plugins/extended-plugin-api.md had two TOC entries pointing
  at the wrong anchor for the same headings ("in-memory-cache" missing
  "the"; "build-a-counter" instead of the real "building-a-counter"
  slug already used correctly elsewhere in the same file).

Verified via Hugo build that all three anchors now resolve to their
target heading IDs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeZSXxL9tXjMN331aKYBbG
jstirnaman pushed a commit that referenced this pull request Jul 13, 2026
CI's link check on PR #7469 found 6 broken links: shared official-plugin
docs link to the notifier plugin via a GitHub-relative path,
[influxdata/notifier plugin](../notifier/README.md), which is valid when
browsing the influxdb3_plugins repo on GitHub but doesn't resolve on the
built docs site (Hugo doesn't publish README.md files).

Root cause: these files are generated from upstream READMEs by
helper-scripts/influxdb3-plugins/port_to_docs.js, and its
convertRelativeLinks() only rewrote a plugin's link to its *own* README
(../README.md), not links to a *sibling* plugin's README
(../<plugin>/README.md). The sibling case passed through unchanged.

Fix:
- port_to_docs.js: add a pattern that rewrites
  ../<plugin>/README.md links to the sibling plugin's docs-v2 page,
  /influxdb3/version/plugins/library/official/<plugin>/ (converting the
  upstream underscore_case folder to the docs-v2 hyphen-case slug), so
  future syncs from upstream don't regress this.
- helper-scripts/influxdb3-plugins/README.md: document the new rule
  alongside the existing link-conversion rules.
- Hand-patch the 6 currently-affected generated files
  (state-change.md, prophet-forecasting.md, mad-check.md,
  threshold-deadman-checks.md, stateless-adtk-detector.md,
  forecast-error-evaluator.md) so this PR's CI passes now, ahead of the
  next real sync from upstream.
- CLAUDE.md (plugins-library/official): document the cross-plugin link
  rewrite behavior and what to do if this class of broken link recurs.

Verified via Hugo build that all 6 pages now link to the notifier page's
actual URL on both Core and Enterprise.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeZSXxL9tXjMN331aKYBbG
@jstirnaman
jstirnaman merged commit f3d8734 into master Jul 13, 2026
23 checks passed
github-actions Bot added a commit that referenced this pull request Jul 13, 2026
@jstirnaman
jstirnaman deleted the claude/influxdb3-canonical-rubric-xfidm2 branch July 13, 2026 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

product:shared Shared content across products product:v3-monolith InfluxDB 3 Core and Enterprise (single-node / clusterable)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants