feat: add UTM-tagged docs links to SDK warnings and enterprise-only errors (#4797)

Add a central documentation link registry (`lancedb::docs::DocLink`) in
the Rust core that builds `docs.lancedb.com` URLs with UTM parameters
(`utm_source=lancedb_sdk`, `utm_medium=warning|error`,
`utm_campaign=<id>`, `utm_content=<sdk>-<version>`) placed before any
`#anchor` fragment and without user-identifying data.

- Initialize `utm_content` per language binding (`python`, `nodejs`,
`cli`, defaulting to `rust`) and expose the link builder to Python so
`DBConnection` and `Job` stubs reuse the core definitions.
- Append published documentation links to Enterprise-only `NotSupported`
/ `NotImplementedError` errors across database, job, catalog, and table
operations.
- Emit rate-limited maintenance warnings (once per table per process
when `warn` logging is enabled) when opening a native table with at
least 100 small fragments (`< 100k` physical rows each) or at least
1,000,000 unindexed rows on an optimizable user index, reading only
manifest metadata without opening data or `_indices/` files, and
document the thresholds in the compaction and reindexing guides.
- Verify published/in-repo `docs/web/` targets and `#anchor` fragments
in unit tests and include extracted SDK links in the scheduled
`docs-link-check` workflow.

Linear: OSS-2772
This commit is contained in:
Xuanwo
2026-11-03 14:12:15 +08:00
committed by GitHub
parent f9e25960e3
commit 2d70bec53a
20 changed files with 1319 additions and 59 deletions
+2
View File
@@ -9,6 +9,7 @@ on:
- python/pyproject.toml
- ci/check_cargo_lock.py
- ci/check_sdist.py
- ci/extract_sdk_doc_links.py
- ci/build_cli_linux.sh
- ci/package_cli.py
- .bumpversion.toml
@@ -22,6 +23,7 @@ on:
- python/pyproject.toml
- ci/check_cargo_lock.py
- ci/check_sdist.py
- ci/extract_sdk_doc_links.py
- ci/build_cli_linux.sh
- ci/package_cli.py
- .bumpversion.toml
+6
View File
@@ -50,6 +50,10 @@ jobs:
ref: ${{ github.event.repository.default_branch }}
persist-credentials: false
- name: Extract SDK documentation links
run: |
python3 ci/extract_sdk_doc_links.py --output ./lychee-inputs/sdk-doc-links.md
- name: Check links
id: lychee
continue-on-error: true
@@ -64,10 +68,12 @@ jobs:
args: >-
--scheme https
--scheme http
--include-fragments
--no-progress
--max-retries 3
--timeout 20
'docs/src/**/*.md'
'./lychee-inputs/sdk-doc-links.md'
format: json
output: ./lychee/out.json
jobSummary: false