Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

[finding] packages/layout/README.md 的注册键表是三处同源键表里唯一没有钉子的一处 —— #4841 撤 app-shell 时它是唯一没被打红的 #4860

Closed

Description

@yinlianghui

发现于 #4841 的实施(撤销 app-shell 组件键注册,PR #4859),回传立单。未认领,交 PM 三角。观察类 —— 本条记录的是钉子覆盖面的不对称;#4841 的 PR 已把当下这份列表改对,今天没有用户路径会踩到。

事实

packages/layout/README.md 的「Registration」小节逐字列举本包注册的组件键:

Importing this package registers its component keys (`page-header`, `page:card`,
`responsive-grid`, `navigation-renderer`, `app-schema-renderer`) on the
`ComponentRegistry` as a module load side effect …

同一份键表在仓内出现在三处,其中两处有机械钉子,这一处没有:

位置 钉子 机制
content/docs/guide/layout.md(SidebarNav 小节「registers five keys — …」句) 有 guide-layout-sidebar-nav-doc.test.ts:正则从 packages/layout/src/index.ts 读出 register 的键表,与页面所列逐项比对
packages/layout/src/index.ts 自身(键的存废) 有 app-shell-not-a-component-key.test.tsx(#4841 新增,但只覆盖 app-shell 一个键)+ side-effects-manifest.test.ts(只保证数量下限)
packages/layout/README.md「Registration」小节 无 ——

readme-app-shell-example.test.ts(#4817)确实读这份 README,但它的判定面只有两项:AppShellProps 表格,与 fence 里 AppShell 开标签上的 prop 名。注册键表不在它的扫描面内 —— 该文件头的「Scan surface」段落也是这么写的。

为什么值得记一笔

这正是 #4841 里 app-shell 那一行的漂移方式:撤注册时 guide 的键表会被钉子打红(实施中确实红了,是它逼出的文档修改),README 的键表不会 —— 只能靠人读到。已发布包的 README 是 npm 页面的第一屏;列一个不存在的组件键,读者照着写会拿到 Unknown component type 红框。

方向上与 guide 那条同构:期望值从 index.ts 读出,而不是在测试里硬编码一份键表 —— 后者正是 #3899 踩过的坑(它的散文里列了一个本包从未注册过的 sidebar-nav)。

可能的处置(交维护者定,本单不预判)

  • A. 给 README 的「Registration」列表补一个与 guide 同机制的钉子(读 index.ts 的 register 键表,比对 README 该小节所列)。约 20 行,与 guide-layout-sidebar-nav-doc.test.ts 的 registeredKeys() 同构;该 helper 现在已在两个文件里各有一份副本,顺带可考虑提取共用。
  • B. 让 README 不再复述键表,改为指向 guide / 源码。代价是 npm 首屏少一份速查表。

倾向 A:这份列表对 README 读者是有用的速查信息,问题不在它存在,而在没有东西看着它。

参考

Activity

  1. self-assigned this
    on Aug 17, 2026
  2. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    ContributorAuthor

    【分诊晋级 + 认领】objectui 分片 PM(session_01GTRjn8xBqp75dk7kFupVRt)批次 15 派发,os-dev 实施(XS-S)。分支:claude/issue-4860-readme-registry-pin。

    晋级理由:三处同源键表(guide 由 #4840 钉、index.ts 由 #4841 钉)中 README 是唯一无机械钉的一处 —— #4841 撤 app-shell 时它正是唯一没被打红的,复发形状已实证。修法机械:扩 readme-app-shell-example.test.ts(#4817)的扫描面或新钉,把 README Registration 键表与 packages/layout/src/index.ts 的活注册表机械比对(同 #4840 钉子对 guide 的形态)。文件面:packages/layout 的 README 钉子测试(README.md 本体当前已对,不必改)。与在飞四单零交集。


    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

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions