From fee4490fe462d486a93dfd1eeabcb7224b237e8d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 17 Jul 2026 09:44:47 -0400 Subject: [PATCH] fix(docs): preserve canonical maturity product labels --- docs/maturity/taxonomy.md | 74 +++++++++++------------ scripts/docs-i18n/taxonomy_source_test.go | 27 +++++++++ scripts/qa/render-maturity-docs.ts | 6 ++ 3 files changed, 70 insertions(+), 37 deletions(-) create mode 100644 scripts/docs-i18n/taxonomy_source_test.go diff --git a/docs/maturity/taxonomy.md b/docs/maturity/taxonomy.md index 3f4e392a50ad..4384244ae0ba 100644 --- a/docs/maturity/taxonomy.md +++ b/docs/maturity/taxonomy.md @@ -656,7 +656,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Openai](/providers/openai), [Anthropic](/providers/anthropic), [Google](/providers/google), [Models](/concepts/models) + [OpenAI](/providers/openai), [Anthropic](/providers/anthropic), [Google](/providers/google), [Models](/concepts/models)
@@ -684,7 +684,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Models](/concepts/models), [Models](/cli/models), [Openai](/providers/openai), [Agent Runtimes](/concepts/agent-runtimes) + [Models](/concepts/models), [Models](/cli/models), [OpenAI](/providers/openai), [Agent Runtimes](/concepts/agent-runtimes)
@@ -698,7 +698,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Models](/concepts/models), [Agent](/cli/agent), [Models](/cli/models), [Openai](/providers/openai), [Anthropic](/providers/anthropic), [Google](/providers/google), [Subagents](/tools/subagents) + [Models](/concepts/models), [Agent](/cli/agent), [Models](/cli/models), [OpenAI](/providers/openai), [Anthropic](/providers/anthropic), [Google](/providers/google), [Subagents](/tools/subagents)
@@ -906,7 +906,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Groups](/channels/groups), [Discord](/channels/discord), [Googlechat](/channels/googlechat), [Signal](/channels/signal), [Matrix](/channels/matrix) + [Groups](/channels/groups), [Discord](/channels/discord), [Google Chat](/channels/googlechat), [Signal](/channels/signal), [Matrix](/channels/matrix)
@@ -962,7 +962,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Line](/channels/line), [Signal](/channels/signal), [Googlechat](/channels/googlechat), [Matrix](/channels/matrix), [Discord](/channels/discord) + [Line](/channels/line), [Signal](/channels/signal), [Google Chat](/channels/googlechat), [Matrix](/channels/matrix), [Discord](/channels/discord)
@@ -1420,7 +1420,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Authentication](/gateway/authentication), [Models](/cli/models), [Openai](/providers/openai), [Oauth](/concepts/oauth), [Secrets](/gateway/secrets), [Secrets](/cli/secrets), [Secretref Credential Surface](/reference/secretref-credential-surface), [Audit Checks](/gateway/security/audit-checks) + [Authentication](/gateway/authentication), [Models](/cli/models), [OpenAI](/providers/openai), [Oauth](/concepts/oauth), [Secrets](/gateway/secrets), [Secrets](/cli/secrets), [Secretref Credential Surface](/reference/secretref-credential-surface), [Audit Checks](/gateway/security/audit-checks)
@@ -1517,7 +1517,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Poll](/automation/poll), [Message](/cli/message), [Telegram](/channels/telegram), [Msteams](/channels/msteams), [Background Process](/gateway/background-process) + [Poll](/automation/poll), [Message](/cli/message), [Telegram](/channels/telegram), [Microsoft Teams](/channels/msteams), [Background Process](/gateway/background-process)
@@ -1544,7 +1544,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha68%
- [Media Overview](/tools/media-overview), [Media Understanding](/nodes/media-understanding), [Secure File Operations](/gateway/security/secure-file-operations), [Pdf](/tools/pdf), [Image Generation](/tools/image-generation), [Qr](/cli/qr), [Line](/channels/line), [Whatsapp](/channels/whatsapp) + [Media Overview](/tools/media-overview), [Media Understanding](/nodes/media-understanding), [Secure File Operations](/gateway/security/secure-file-operations), [Pdf](/tools/pdf), [Image Generation](/tools/image-generation), [Qr](/cli/qr), [Line](/channels/line), [WhatsApp](/channels/whatsapp)
@@ -1600,7 +1600,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha69%
- [Audio](/nodes/audio), [Media Understanding](/nodes/media-understanding), [Media Overview](/tools/media-overview), [Whatsapp](/channels/whatsapp), [Images](/nodes/images), [Infer](/cli/infer), [Pdf](/tools/pdf) + [Audio](/nodes/audio), [Media Understanding](/nodes/media-understanding), [Media Overview](/tools/media-overview), [WhatsApp](/channels/whatsapp), [Images](/nodes/images), [Infer](/cli/infer), [Pdf](/tools/pdf)
@@ -1641,7 +1641,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha68%
- [Openai](/providers/openai), [Google](/providers/google), [Sdk Provider Plugins](/plugins/sdk-provider-plugins), [Talk](/nodes/talk), [Control Ui](/web/control-ui) + [OpenAI](/providers/openai), [Google](/providers/google), [Sdk Provider Plugins](/plugins/sdk-provider-plugins), [Talk](/nodes/talk), [Control Ui](/web/control-ui)
@@ -1669,7 +1669,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha68%
- [Talk](/nodes/talk), [Openai](/providers/openai), [Google](/providers/google) + [Talk](/nodes/talk), [OpenAI](/providers/openai), [Google](/providers/google)
@@ -3140,7 +3140,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Experimental21%
- [Linux](/platforms/linux), [Openclaw](/start/openclaw), [Doctor](/gateway/doctor) + [Linux](/platforms/linux), [OpenClaw](/start/openclaw), [Doctor](/gateway/doctor)
@@ -3325,7 +3325,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Stable87%
- [Discord](/channels/discord), [Openai](/providers/openai), [Elevenlabs](/providers/elevenlabs), [Qa E2e Automation](/concepts/qa-e2e-automation), [Config Channels](/gateway/config-channels) + [Discord](/channels/discord), [OpenAI](/providers/openai), [Elevenlabs](/providers/elevenlabs), [Qa E2e Automation](/concepts/qa-e2e-automation), [Config Channels](/gateway/config-channels)
@@ -3518,7 +3518,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Bluebubbles Imessage](/announcements/bluebubbles-imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels), [Imessage](/channels/imessage) + [Bluebubbles Imessage](/announcements/bluebubbles-imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels), [iMessage](/channels/imessage)
@@ -3532,7 +3532,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Imessage](/channels/imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels) + [iMessage](/channels/imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels)
@@ -3546,7 +3546,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Imessage](/channels/imessage) + [iMessage](/channels/imessage)
@@ -3560,7 +3560,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Imessage](/channels/imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels) + [iMessage](/channels/imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels)
@@ -3574,7 +3574,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Imessage](/channels/imessage) + [iMessage](/channels/imessage)
@@ -3601,7 +3601,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Whatsapp](/channels/whatsapp), [Config Channels](/gateway/config-channels), [Whatsapp](/plugins/reference/whatsapp), [Qa E2e Automation](/concepts/qa-e2e-automation), [Doctor](/gateway/doctor) + [WhatsApp](/channels/whatsapp), [Config Channels](/gateway/config-channels), [WhatsApp](/plugins/reference/whatsapp), [Qa E2e Automation](/concepts/qa-e2e-automation), [Doctor](/gateway/doctor)
@@ -3615,7 +3615,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Whatsapp](/channels/whatsapp), [Config Channels](/gateway/config-channels), [Qa E2e Automation](/concepts/qa-e2e-automation), [Pairing](/channels/pairing) + [WhatsApp](/channels/whatsapp), [Config Channels](/gateway/config-channels), [Qa E2e Automation](/concepts/qa-e2e-automation), [Pairing](/channels/pairing)
@@ -3629,7 +3629,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Whatsapp](/channels/whatsapp), [Group Messages](/channels/group-messages) + [WhatsApp](/channels/whatsapp), [Group Messages](/channels/group-messages)
@@ -3643,7 +3643,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Whatsapp](/channels/whatsapp) + [WhatsApp](/channels/whatsapp)
@@ -3657,7 +3657,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [Whatsapp](/channels/whatsapp) + [WhatsApp](/channels/whatsapp)
@@ -3781,7 +3781,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Googlechat](/channels/googlechat), [Googlechat](/plugins/reference/googlechat), [Config Channels](/gateway/config-channels), [Wizard Cli Reference](/start/wizard-cli-reference), [Secrets](/gateway/secrets), [Secretref Credential Surface](/reference/secretref-credential-surface), [Health](/gateway/health), [Plugin Inventory](/plugins/plugin-inventory), [Index](/channels/index) + [Google Chat](/channels/googlechat), [Google Chat](/plugins/reference/googlechat), [Config Channels](/gateway/config-channels), [Wizard Cli Reference](/start/wizard-cli-reference), [Secrets](/gateway/secrets), [Secretref Credential Surface](/reference/secretref-credential-surface), [Health](/gateway/health), [Plugin Inventory](/plugins/plugin-inventory), [Index](/channels/index)
@@ -3795,7 +3795,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Googlechat](/channels/googlechat), [Pairing](/channels/pairing), [Access Groups](/channels/access-groups), [Config Channels](/gateway/config-channels), [Bot Loop Protection](/channels/bot-loop-protection), [Channel Routing](/channels/channel-routing) + [Google Chat](/channels/googlechat), [Pairing](/channels/pairing), [Access Groups](/channels/access-groups), [Config Channels](/gateway/config-channels), [Bot Loop Protection](/channels/bot-loop-protection), [Channel Routing](/channels/channel-routing)
@@ -3809,7 +3809,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Googlechat](/channels/googlechat), [Bot Loop Protection](/channels/bot-loop-protection), [Access Groups](/channels/access-groups), [Channel Routing](/channels/channel-routing) + [Google Chat](/channels/googlechat), [Bot Loop Protection](/channels/bot-loop-protection), [Access Groups](/channels/access-groups), [Channel Routing](/channels/channel-routing)
@@ -3823,7 +3823,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Googlechat](/channels/googlechat), [Message](/cli/message), [Media Understanding](/nodes/media-understanding), [Secretref Credential Surface](/reference/secretref-credential-surface) + [Google Chat](/channels/googlechat), [Message](/cli/message), [Media Understanding](/nodes/media-understanding), [Secretref Credential Surface](/reference/secretref-credential-surface)
@@ -3837,7 +3837,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Googlechat](/channels/googlechat), [Message](/cli/message), [Media Understanding](/nodes/media-understanding), [Secretref Credential Surface](/reference/secretref-credential-surface), [Reactions](/tools/reactions), [Slash Commands](/tools/slash-commands), [Config Agents](/gateway/config-agents), [Message Lifecycle Refactor](/concepts/message-lifecycle-refactor) + [Google Chat](/channels/googlechat), [Message](/cli/message), [Media Understanding](/nodes/media-understanding), [Secretref Credential Surface](/reference/secretref-credential-surface), [Reactions](/tools/reactions), [Slash Commands](/tools/slash-commands), [Config Agents](/gateway/config-agents), [Message Lifecycle Refactor](/concepts/message-lifecycle-refactor)
@@ -3864,7 +3864,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Msteams](/channels/msteams), [Msteams](/plugins/reference/msteams), [Config Channels](/gateway/config-channels), [Health](/gateway/health) + [Microsoft Teams](/channels/msteams), [Microsoft Teams](/plugins/reference/msteams), [Config Channels](/gateway/config-channels), [Health](/gateway/health)
@@ -3878,7 +3878,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Msteams](/channels/msteams), [Pairing](/channels/pairing), [Access Groups](/channels/access-groups) + [Microsoft Teams](/channels/msteams), [Pairing](/channels/pairing), [Access Groups](/channels/access-groups)
@@ -3892,7 +3892,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Msteams](/channels/msteams), [Groups](/channels/groups), [Channel Routing](/channels/channel-routing) + [Microsoft Teams](/channels/msteams), [Groups](/channels/groups), [Channel Routing](/channels/channel-routing)
@@ -3906,7 +3906,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Msteams](/channels/msteams) + [Microsoft Teams](/channels/msteams)
@@ -3920,7 +3920,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Alpha66%
- [Msteams](/channels/msteams), [Exec Approvals Advanced](/tools/exec-approvals-advanced) + [Microsoft Teams](/channels/msteams), [Exec Approvals Advanced](/tools/exec-approvals-advanced)
@@ -4311,7 +4311,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Openai](/providers/openai), [Codex Harness](/plugins/codex-harness), [Models](/concepts/models), [Oauth](/concepts/oauth), [Codex Harness Reference](/plugins/codex-harness-reference), [Auth Monitoring](/automation/auth-monitoring) + [OpenAI](/providers/openai), [Codex Harness](/plugins/codex-harness), [Models](/concepts/models), [Oauth](/concepts/oauth), [Codex Harness Reference](/plugins/codex-harness-reference), [Auth Monitoring](/automation/auth-monitoring)
@@ -4325,7 +4325,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Openai](/providers/openai), [Openresponses Http Api](/gateway/openresponses-http-api), [Openai Http Api](/gateway/openai-http-api), [Codex Native Plugins](/plugins/codex-native-plugins) + [OpenAI](/providers/openai), [Openresponses Http Api](/gateway/openresponses-http-api), [Openai Http Api](/gateway/openai-http-api), [Codex Native Plugins](/plugins/codex-native-plugins)
@@ -4353,7 +4353,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Openai](/providers/openai), [Image Generation](/tools/image-generation), [Images](/nodes/images) + [OpenAI](/providers/openai), [Image Generation](/tools/image-generation), [Images](/nodes/images)
@@ -4367,7 +4367,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta79%
- [Openai](/providers/openai), [Discord](/channels/discord), [Voice Call](/plugins/voice-call) + [OpenAI](/providers/openai), [Discord](/channels/discord), [Voice Call](/plugins/voice-call)
diff --git a/scripts/docs-i18n/taxonomy_source_test.go b/scripts/docs-i18n/taxonomy_source_test.go new file mode 100644 index 000000000000..63131ef36bed --- /dev/null +++ b/scripts/docs-i18n/taxonomy_source_test.go @@ -0,0 +1,27 @@ +package main + +import ( + "os" + "slices" + "testing" +) + +func TestTaxonomyCanonicalProductLinksAreProtected(t *testing.T) { + content, err := os.ReadFile("../../docs/maturity/taxonomy.md") + if err != nil { + t.Fatal(err) + } + _, body := splitFrontMatter(string(content)) + protected := extractProtectedMarkdownLinkLabels(body) + for _, want := range []string{ + "link:/channels/googlechat:Google Chat", + "link:/channels/imessage:iMessage", + "link:/channels/msteams:Microsoft Teams", + "link:/channels/whatsapp:WhatsApp", + "link:/start/openclaw:OpenClaw", + } { + if !slices.Contains(protected, want) { + t.Errorf("missing protected taxonomy link %q", want) + } + } +} diff --git a/scripts/qa/render-maturity-docs.ts b/scripts/qa/render-maturity-docs.ts index 6e265993ff7a..72cda3e1f9f7 100644 --- a/scripts/qa/render-maturity-docs.ts +++ b/scripts/qa/render-maturity-docs.ts @@ -157,8 +157,14 @@ Options: function familyTitle(value: string): string { const titles: Record = { + googlechat: "Google Chat", + imessage: "iMessage", + msteams: "Microsoft Teams", + openai: "OpenAI", + openclaw: "OpenClaw", "platform-app": "Platform", "provider-tool": "Provider and tool", + whatsapp: "WhatsApp", }; return ( titles[value] ??