Skip to content

SYNC_ARCHITECTURE.md 的 L3 段仍在三处宣传 Rate Limiting,而 connector.rateLimitConfig 及其整个形状已在 #4911 退役 #5554

Description

@os-zhuang

发现于 #5515(修同文件 L3 sapConnector 示例的四处键名/取值)时,属于同一节的散文而非示例块,不在该 PR 的裁定范围内。

事实

packages/spec/src/integration/connector.zod.ts:685 起,rateLimitConfig 是一个 retiredKey() 墓碑:

'`connector.rateLimitConfig` was removed in @objectstack/spec 17.0.0 (#4911, ADR-0049 D2) —
 the entire shape is gone, not just this key: `ConnectorRateLimitConfig` and its
 `RateLimitStrategy` enum were removed with it, because no outbound rate-limiting engine
 ever existed …'

同文件 317–340 行的长注释写得更明白:平台唯一的令牌桶是 packages/runtime/src/security/rate-limit.ts,而它是入站的;没有任何东西节流我们发出的调用。

而 packages/spec/docs/SYNC_ARCHITECTURE.md 的 L3 段仍有三处反过来讲:

  1. ### Key Features 列表:- ✅ **Rate Limiting**: Token bucket, leaky bucket algorithms —— 打了勾,还点名了两个从来不存在的算法。
  2. ## Decision Matrix 表:| Do you need rate limiting and retry policies? | **Yes** → L3 (Connector) | —— 一半是对的(retryConfig 真在),一半把作者引向一个已退役的键。
  3. #### Pattern 2: Enterprise Integration (L3) 的示意图:Webhooks, Auth, Rate Limiting。

示例块里那行 // (rateLimitConfig 曾在这里,#4911 退役) 的墓碑注释是对的 —— 恰恰是它证明文档的其余部分没跟着改。

影响

Prime Directive #10 的正面反例:一个作者读 Key Features 打勾的那行,去写 rateLimitConfig,拿到的是 strictObject 的退役提示。比编译不过更糟的是,他会以为"平台会替我限流"这件事成立 —— 这是 #4911 的注释专门点名的那种"最像安全承诺的一面"。

建议

三处都改成如实说法:出站限流请在 provider / 网关侧做(#4911 的墓碑文案已经有现成措辞),retryConfig 与 health.circuitBreaker(ConnectorHealthSchema:512,真实存在)保留。属纯文档修正,但涉及三处措辞选择,值得单独一单而不是搭 #5515 的车。


Blocked-by: #5515

Activity

  1. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    ContributorAuthor

    分诊:pm:queue + domain:spec,同时挂 pm:blocked(正文已加 Blocked-by: #5515)。

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. hotlong commented on Aug 7, 2026

    @hotlong
    Contributor

    Release-board audit (maintainer-directed re-audit of non-board domain:spec items, 2026-08-07): adding target:v17 — criterion ④: the shipped SYNC_ARCHITECTURE.md still advertises Rate Limiting in three places; an author following it writes connector.rateLimitConfig, retired in 17.0.0 (#4911) — docs-as-written fails and makes a false security promise. (pm:blocked retained; board membership is independent of dispatchability.) Triage seat may veto.


    Generated by Claude Code

  3. hotlong commented on Aug 7, 2026

    @hotlong
    Contributor

    Triage: domain:spec → domain:spec-tooling (same pass as the #6298 spec-surface split, maintainer-instructed 2026-08-07). Reads like text-face work, but the artifact is SYNC_ARCHITECTURE.md — a hand-written doc page, which #6298's second red line assigns to the tooling seat rather than to spec-surface (that seat's face is packages/spec source text: describe / JSDoc / tombstone prose / error guidance). pm:blocked and target:v17 retained — board membership is independent of dispatchability.


    Generated by Claude Code

  4. self-assigned this
    on Aug 7, 2026
  5. os-zhuang commented on Aug 7, 2026

    @os-zhuang
    ContributorAuthor

    认领 (os-dev):

    • session: session_014wsZeReNTqiceBfLb5Pyf5
    • branch: claude/issue-5554-sync-architecture-rate-limiting

    Blocked-by: #5515 已解除(#5515 于 2026-08-05 completed 关闭),pm:blocked 已由 PM 摘除。开工前会先在 origin/main 上复核 #5515 的修改是否已落在 SYNC_ARCHITECTURE.md,以此确定 L3 段当前实际文本。

    初步实测:origin/main 上该文件命中 rate limiting 措辞不止正文所列三处(另见 L191 段落导语、L345 "Rate Limiting: Respect external API rate limits"、L436 ETL 升级引导语),会一并核实并如实处理。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions