Skip to content

docs(spec): connector.zod.ts 模块 JSDoc 停止宣传已退役的出站限流与映射转换 - #6473

Merged
qq9340100 merged 2 commits into
mainfrom
claude/issue-6383-connector-jsdoc-retirement-drift
Aug 8, 2026
Merged

docs(spec): connector.zod.ts 模块 JSDoc 停止宣传已退役的出站限流与映射转换#6473
qq9340100 merged 2 commits into
mainfrom
claude/issue-6383-connector-jsdoc-retirement-drift

Conversation

@qq9340100

Copy link
Copy Markdown
Collaborator

Fixes#6383

问题

packages/spec/src/integration/connector.zod.ts模块级 JSDoc 有四处措辞比它所描述的 schema 晚了两次退役。这段 JSDoc 被 pnpm --filter @objectstack/spec gen:docs逐字生成进 content/docs/references/integration/connector.mdx,于是同一页自相矛盾:属性表(旧 L139/L454,现 L171/L486)的墓碑行说 rateLimitConfig已移除且从未存在,上方散文却承诺 comprehensive rate limiting。读者相信哪一个,取决于他先读到哪一段。

伤害有两级:作者照着散文去写 rateLimitConfig,拿到 strictObject 的退役报错(响亮、可诊断);更糟的是他因此相信「平台替我节流出站调用」成立——而平台唯一的令牌桶 packages/runtime/src/security/rate-limit.ts入站的,没有任何东西节流连接器发出的调用。#4911 的墓碑专门点名这是连接器最像安全承诺的一面。

变更(四处,一次改动 + 一次 gen:docs)

#原措辞退役依据
1Includes authentication, webhooks, rate limiting, field mapping, …#4911
2… webhooks, and comprehensive rate limiting.#4911
3- Bidirectional sync with field mapping and transformations#5552
4- Webhook management and rate limiting required#4911

三处正面承诺删除、第四处收窄之外,JSDoc 新增一节 「What this layer does NOT provide」,把两条否定连同处方写明,而不是只做减法——否则下一位作者只会再问一遍「那出站限流在哪」:

  • 出站限流:平台唯一令牌桶是入站的;⛔ 不要拿 sharedRateLimitConfig 顶替(方向相反);在 connector provider 或上游网关做;L3 为「上游限了流」真正声明的是 retryConfig(retryableStatusCodes 默认 [408, 429, 500, 502, 503, 504]429)与 health.circuitBreaker
  • 字段映射不转换取值:ConnectorFieldMappingSchema 只扩了 dataType / required / syncMode 三个键;取值转换请用会真正执行它的面(import mapping 的 mapping.fieldMapping[].transform,或 L2 的 ETL 转换步骤);已写了退役键的用 os migrate meta --from 16

措辞直接复用#4911 / #5552 墓碑与 packages/spec/docs/SYNC_ARCHITECTURE.md(#5554)的现成句,不另造一套——一次退役出现两种说法,就是它们日后互相矛盾的起点。改完后同一页的散文与两处墓碑行说的是同一件事。

有一处刻意改写:JSDoc 里指向完整理由的锚点没写成「本文件下方那一段」。那段是 // 行注释、不进 gen:docs,对 .mdx 读者是悬空指路——正是本单要修的那类漂移。改为点名文件:integration/connector.zod.tsREMOVED: outbound rate limiting 块 + SYNC_ARCHITECTURE.md,两侧读者都走得通。

交付物与 changeset 取舍

content/docs/references/integration/connector.mdxgen:docs随动重生成(⛔ 未手改一个字节;check:docs 已绿)。

本单带 changeset(patch)而非 skip-changeset:改动虽只落在注释,但它有读者可见的产物——发布的参考文档页从「宣传一个不存在的能力」变成「写明它不存在并给出处方」,是使用者会读到的契约面澄清。skip-changeset 的适用面是 test-only / workflow-only / .claude/-only 这类什么都不发布的 PR,本单不属于。schema 形状、类型与运行时行为零变化

验证(全部前台执行,持容器级 flock 锁,--filter 限定范围)

pnpm --filter @objectstack/spec test → Test Files 339 passed (339) / Tests 8699 passed (8699)
pnpm --filter @objectstack/spec typecheck → tsc --noEmit + check:scripts-typecheck + check:test-typecheck 全绿
pnpm --filter @objectstack/spec check:docs → 231 generated files in sync with packages/spec
pnpm --filter @objectstack/spec check:generated → All 10 generated artifacts are up to date
node scripts/check-nul-bytes.mjs → OK (6094 tracked text files, no raw ASCII control bytes)

check:generated 首跑曾报 api-surface/ 陈旧——那是新 worktree 未 build 的假红(该产物按其自身说明「Reads the BUILT dist/*.d.ts」,而 gen:api-surface 直接以 Could not resolve module symbol … Is the package built? 失败)。pnpm --filter @objectstack/spec build 后复跑 10 项全绿,且 api-surface/一个字节未变——它只存 name (kind),不含任何文档文本,JSDoc 改动在结构上不可能影响它。

基线纪律(分诊条件 3)

本分支基点 eb7613c79就是 #6466 的合并提交本身,开工即已跟上;gen:docs 在该树上整体重跑,git status 只吐出 connector.mdx一个文件,证明无 #6224 式陈旧组合。飞行中 main 又前进到 82bf47b0b(#6471),增量仅动 scripts/,不触 content/docs/references/**packages/spec/src,已 git merge origin/main(⛔ 未 rebase)并复跑 check:docs 确认仍绿,无需再次重生成。


Generated by Claude Code

模块级 JSDoc 有四处措辞比它描述的 schema 晚了两次退役,而这段 JSDoc
被 gen:docs 逐字生成进 content/docs/references/integration/connector.mdx
——同一页 L171/L486 的属性表已写着「已移除」,散文却还承诺
「comprehensive rate limiting」。
收敛四处:SCOPE 行的 rate limiting、「comprehensive rate limiting」、
「Bidirectional sync with field mapping and transformations」(#5552)、
「Webhook management and rate limiting required」。
新增 "What this layer does NOT provide" 一节,措辞复用 #4911 / #5552
墓碑与 SYNC_ARCHITECTURE.md(#5554)现成句,一次退役只保留一种说法。
参考文档由 gen:docs 随动重生成(未手改)。仅注释与生成文档变化,
schema 形状与运行时行为不变。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011M7UwH25Unfi73UHim7ajY
…rift
main 侧增量(#6471)仅动 scripts/,不触 content/docs/references/** 与
packages/spec/src,故无 #6224 陈旧组合风险,无需重生成。
@vercel

vercelBot commented Aug 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 8, 2026 1:08am

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

112 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx(via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx(via @objectstack/spec)
  • content/docs/ai/skills.mdx(via @objectstack/spec)
  • content/docs/api/client-sdk.mdx(via @objectstack/spec)
  • content/docs/api/environment-routing.mdx(via @objectstack/spec)
  • content/docs/api/error-catalog.mdx(via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx(via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx(via @objectstack/spec)
  • content/docs/api/index.mdx(via @objectstack/spec)
  • content/docs/automation/approvals.mdx(via @objectstack/spec)
  • content/docs/automation/connectors.mdx(via @objectstack/spec)
  • content/docs/automation/flows.mdx(via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx(via packages/spec)
  • content/docs/automation/hooks.mdx(via @objectstack/spec)
  • content/docs/automation/index.mdx(via @objectstack/spec)
  • content/docs/automation/webhooks.mdx(via @objectstack/spec)
  • content/docs/automation/workflows.mdx(via @objectstack/spec)
  • content/docs/concepts/architecture.mdx(via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx(via packages/spec)
  • content/docs/concepts/index.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx(via packages/spec)
  • content/docs/concepts/north-star.mdx(via @objectstack/spec)
  • content/docs/data-modeling/analytics.mdx(via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx(via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx(via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx(via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx(via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx(via @objectstack/spec)
  • content/docs/data-modeling/index.mdx(via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx(via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx(via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx(via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx(via @objectstack/spec)
  • content/docs/deployment/cli.mdx(via @objectstack/spec)
  • content/docs/deployment/tenancy-modes.mdx(via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx(via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx(via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx(via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx(via @objectstack/spec)
  • content/docs/getting-started/examples.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx(via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx(via @objectstack/spec)
  • content/docs/kernel/cluster.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx(via @objectstack/spec)
  • content/docs/kernel/index.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/data-service.mdx(via @objectstack/spec)
  • content/docs/kernel/runtime-services/email-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/examples.mdx(via @objectstack/spec)
  • content/docs/kernel/runtime-services/index.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx(via @objectstack/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx(via @objectstack/spec)
  • content/docs/kernel/services-checklist.mdx(via @objectstack/spec)
  • content/docs/kernel/services.mdx(via @objectstack/spec)
  • content/docs/permissions/authorization.mdx(via @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx(via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx(via @objectstack/spec)
  • content/docs/permissions/positions.mdx(via @objectstack/spec)
  • content/docs/permissions/rls.mdx(via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx(via @objectstack/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx(via @objectstack/spec)
  • content/docs/plugins/development.mdx(via @objectstack/spec)
  • content/docs/plugins/index.mdx(via @objectstack/spec)
  • content/docs/plugins/packages.mdx(via @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx(via @objectstack/spec)
  • content/docs/protocol/diagram.mdx(via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/http-protocol.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx(via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx(via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx(via @objectstack/spec)
  • content/docs/releases/implementation-status.mdx(via @objectstack/spec)
  • content/docs/releases/index.mdx(via @objectstack/spec)
  • content/docs/releases/v12.mdx(via @objectstack/spec)
  • content/docs/releases/v13.mdx(via @objectstack/spec)
  • content/docs/releases/v16.mdx(via @objectstack/spec)
  • content/docs/releases/v17.mdx(via @objectstack/spec)
  • content/docs/releases/v9.mdx(via @objectstack/spec)
  • content/docs/ui/actions.mdx(via @objectstack/spec)
  • content/docs/ui/apps.mdx(via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx(via @objectstack/spec)
  • content/docs/ui/dashboards.mdx(via @objectstack/spec)
  • content/docs/ui/field-grouping-and-order.mdx(via @objectstack/spec)
  • content/docs/ui/forms.mdx(via @objectstack/spec)
  • content/docs/ui/index.mdx(via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx(via @objectstack/spec)
  • content/docs/ui/setup-app.mdx(via @objectstack/spec)
  • content/docs/ui/translations.mdx(via @objectstack/spec)
  • content/docs/ui/views.mdx(via @objectstack/spec)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtooling

Projects

None yet

2 participants

@qq9340100@claude