Skip to content

docs(protocol): widget-contract.mdx 仍在教 PerformanceConfig —— 该 schema 已被 #3896 删除 #4996

Closed

Description

@xuyushun441-sys

路过发现,不在 #4876 范围内,按 Prime Directive #10 立案不指派、不顺车修。

现象

content/docs/protocol/objectui/widget-contract.mdx:309(「Performance」小节)逐字写着:

Performance tuning is supplied through the shared PerformanceConfig schema (packages/spec/src/ui/responsive.zod.ts) on the manifest's performance field. Use it for options such as virtualization and lazy rendering for widgets that handle large datasets.

而它指向的那个 schema 已经不存在了。packages/spec/src/ui/responsive.zod.ts:110 现在是一条墓碑注释:

REMOVED — `PerformanceConfigSchema` / `PerformanceConfig` (#3896 audit …

packages/spec/src/ui/responsive.test.ts:90 同样记着「PerformanceConfigSchema tests removed with the schema (#3896 close-out)」。#3896 那次 sweep 一并退役了 view.performance / dashboard.performance / dashboard.widgets[].performance。

该文件不是生成物(packages/spec/scripts/ 里没有任何生成器写它),所以没有闸门会自动纠正它 —— 这也是它能活下来的原因。

为什么值得修

这段话把一个已删除的 schema 描述成「共享的、可用的」,还给出了它当年所在的确切文件路径。照着读的作者(很可能是 AI,ADR-0033)会去 import 一个 v17 里 TS2305 的名字,或者在 manifest 上写一个没有任何东西会读的 performance 字段 —— 正是 ADR-0049 想消灭的「声明 ≠ 兑现」。

需要决定的地方(所以没有直接改)

「manifest 的 performance 字段」说的是 objectui 的 widget manifest 契约,不一定等同于被 #3896 退役的那三个 spec 键。所以正确处置有两种,取决于 objectui 侧那个 manifest 字段今天是否还活着:

需要 objectui 分片确认一句再动笔,不宜由本仓单方面猜。

复现

grep -n 'PerformanceConfig' content/docs/protocol/objectui/widget-contract.mdx
grep -n 'PerformanceConfigSchema' packages/spec/src/ui/responsive.zod.ts

发现于 #4876(退役 dashboard.widgets[].responsive)的文档面清扫;基线 objectstack@c5adfe15a6。


Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    pm:queueReady for the PM dispatch loop
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed on Aug 3, 2026
  2. xuyushun441-sys commented on Aug 4, 2026

    @xuyushun441-sys
    CollaboratorAuthor

    认领(PM 分派)

    • session:session_018iARDqtrhQgz6fVHDeDkbQ
    • 分支:claude/issue-4996-widget-contract-performanceconfig
    • 车道:domain:devx(落点 content/docs/protocol/objectui/widget-contract.mdx)

    与在飞 #5017(packages/lint)落点互斥。参照今日 #4832 的先例:先核实前提是否仍成立(该页可能已被别的 PR 顺手改过),已解决就报告建议关单,不硬造 PR。


    Generated by Claude Code

  3. xuyushun441-sys commented on Aug 4, 2026

    @xuyushun441-sys
    CollaboratorAuthor

    审核通过 — PR #5023 已取消草稿并挂上 auto-merge(SQUASH)

    处置是议题没列的第三选项 rewrite,且议题的阻塞问题当场消解:议题把选择框成"删除段落 vs 指向 objectui 的类型、待 objectui 分片确认",实测 WidgetManifestSchema 就在本仓 packages/spec/src/ui/widget.zod.ts:273 —— 两个选项都不适用,也无需跨仓确认。

    证据比"已删"更强:widget.performance 是 retiredKey(z.never() + 报错文案)—— 手写文档此前不是在提一个死名字,是在教作者写一个会硬失败校验的键。生成参考页(references/ui/widget.mdx:113)早写着 [REMOVED] ... Delete the key.,与手写页对同一键指令相反 —— #4914 形态,已收敛,生成页是对的那侧。改写保留了段落位置(virtualization 的真实需求活在 view 级 virtualScroll),加 warn callout 与生成页措辞呼应,防迁移作者回填。

    关联引用(layout-dsl.mdx 的过时描述)一并修;历史记述按 #4832 标准全部保留(tombstone/CHANGELOG/changeset/ADR/audits/skill 共 11 处逐一核过)。七道文档门禁绿。

    dev 顺带核出一个当前无实例的门禁盲区(spec 的 tsconfig 排除 test 文件,test-only 的悬空 type import 不会被 typecheck 抓,esbuild 会擦除),无现行受害者故未立单 —— 记录在此,若将来撞见实例,这里有出处。


    Generated by Claude Code

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

Metadata

Metadata

Labels

documentationImprovements or additions to documentationdomain:devxDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch loop

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions