实现 #6225 + #6226(同一个 PR)时量语料量出来的观察类发现,未认领,按 PD#10 立案。与那两条机制不同,故分开立案。
现象
#6225(顶层长枚举搬进 ### Allowed Values)与 #6226(联合变体数上限)落地后,content/docs/references/** 的超宽单元格从 27 个降到 9 个(>900 从 4 降到 1,max 从 6092 降到 1538)。剩下这 9 个里,大部分既不是顶层长枚举、也不是变体重复:
| 字符数 |
页面 |
属性 |
该单元格内最大联合变体数 |
| 1538 |
ui/page.mdx |
Page.slots |
2 |
| 656 |
ui/page.mdx |
PageComponent.type |
2 |
| 617 |
automation/state-machine.mdx |
StateMachine.states |
3 |
| 598 |
kernel/manifest.mdx |
Manifest.capabilities |
1(无联合) |
| 595 |
kernel/plugin-registry.mdx |
PluginRegistryEntry.capabilities |
1(无联合) |
| 583 |
api/protocol.mdx |
GetTranslationsResponse.translations |
1(无联合) |
| 581 |
data/object.mdx |
Object.userActions |
3 |
| 450 |
ai/conversation.mdx |
ConversationSession.messages |
4 |
| 450 |
kernel/plugin-security-advanced.mdx |
PluginSecurityManifest.permissions |
1(无联合) |
4 个根本没有联合,任何变体上限都够不到它们。
机制(为什么这是独立的一条)
INLINE_KEY_LIMIT = 4 只在它自己那一层限制键数。摘要往下走的时候,数组元素、Record 的值、联合的变体都会继续渲染成完整摘要,而这条下钻路径上没有任何深度或字符预算。宽度于是等于「每层键数 × 每层展开出的子形状宽度」,一层一层乘上去。
ui/page.mdx 的 Page.slots 是最干净的样本,也纠正了 #6226 立单时对它的归因 —— 它不是变体重复:
slots 是个对象,7 个键,INLINE_KEY_LIMIT 印出前 4 个(header? / actions? / alerts? / highlights?);
- 每个键的值是一个恰好 2 个变体的联合(
T 或 T[]);
- 于是同一个
T(约 176 字符,{ type: Enum< … > | string; id?: string; label?: string; properties?: Record< string, any >; … })被印了 4 × 2 = 8 遍。
所以宽度来自 INLINE_KEY_LIMIT(4)× 联合变体数(2)× 每个变体的摘要宽度(约 176),任何 ≥2 的变体上限都对它无效,而上限取 1 会把语料里 256 个 T | T[] 全部砍掉一半,显然不划算。#6226 的维护者裁决(变体数上限)对它标称的旗舰样本恰恰够不到 —— 裁决本身没错,它确实修掉了 9 个宽单元格(App.navigation 9 个变体里 7 个逐字相同那一类),只是 Page.slots 不属于那一类。
定性
另一半:一个刻意排除的位置
PageComponent.type(656)机制上属于 #6225 的族(长词表),但落在联合变体里(Enum< 34 个成员 > | string)。#6225 的修法刻意只匹配「属性自己的类型节点就是词表」(与整 schema 分支逐条件对齐),因为对数组元素 / Record 值 / 某一个变体来说,「本属性的允许值」不是实话。该词表并没有丢 —— ui/page.mdx 上 ## PageComponentType 的 ### Allowed Values 完整列着 34 个成员,所以这一格是"宽"而不是"缺"。若要收,需要先决定表格下方那节该怎么措辞才不说谎。
可能的方向(未验证,留给分诊)
三种都涉及公开可读契约的取舍,⛔ 不建议随手拍板。⛔ 不得手改生成的 .mdx,一切来自 gen:schema && gen:docs。
相关 / 串行
同文件面:packages/spec/scripts/lib/format-type.ts。与 #5340(PR #6211)、#6225、#6226、#5729、#5606、#5338 同源。须与该文件面的其他在飞单串行,不得同批并行。
Generated by Claude Code
实现 #6225 + #6226(同一个 PR)时量语料量出来的观察类发现,未认领,按 PD#10 立案。与那两条机制不同,故分开立案。
现象
#6225(顶层长枚举搬进
### Allowed Values)与 #6226(联合变体数上限)落地后,content/docs/references/**的超宽单元格从 27 个降到 9 个(>900 从 4 降到 1,max 从 6092 降到 1538)。剩下这 9 个里,大部分既不是顶层长枚举、也不是变体重复:ui/page.mdxPage.slotsui/page.mdxPageComponent.typeautomation/state-machine.mdxStateMachine.stateskernel/manifest.mdxManifest.capabilitieskernel/plugin-registry.mdxPluginRegistryEntry.capabilitiesapi/protocol.mdxGetTranslationsResponse.translationsdata/object.mdxObject.userActionsai/conversation.mdxConversationSession.messageskernel/plugin-security-advanced.mdxPluginSecurityManifest.permissions4 个根本没有联合,任何变体上限都够不到它们。
机制(为什么这是独立的一条)
INLINE_KEY_LIMIT = 4只在它自己那一层限制键数。摘要往下走的时候,数组元素、Record的值、联合的变体都会继续渲染成完整摘要,而这条下钻路径上没有任何深度或字符预算。宽度于是等于「每层键数 × 每层展开出的子形状宽度」,一层一层乘上去。ui/page.mdx的Page.slots是最干净的样本,也纠正了 #6226 立单时对它的归因 —— 它不是变体重复:slots是个对象,7 个键,INLINE_KEY_LIMIT印出前 4 个(header?/actions?/alerts?/highlights?);T或T[]);T(约 176 字符,{ type: Enum< … > | string; id?: string; label?: string; properties?: Record< string, any >; … })被印了 4 × 2 = 8 遍。所以宽度来自
INLINE_KEY_LIMIT(4)× 联合变体数(2)× 每个变体的摘要宽度(约 176),任何 ≥2 的变体上限都对它无效,而上限取 1 会把语料里 256 个T | T[]全部砍掉一半,显然不划算。#6226 的维护者裁决(变体数上限)对它标称的旗舰样本恰恰够不到 —— 裁决本身没错,它确实修掉了 9 个宽单元格(App.navigation9 个变体里 7 个逐字相同那一类),只是Page.slots不属于那一类。定性
PageSlots.slots1538 字符,枚举已省略后仍如此) #6226 立单时同类。Page.slots现在是全语料 max(1538),但注意Enum省略在这一格已经生效了 8 次,gen:docs 内联形状里的长枚举不省略,单个类型单元格可达约 900 字符(BulkActionDef.params 实例) #5340 之前它更宽。另一半:一个刻意排除的位置
PageComponent.type(656)机制上属于 #6225 的族(长词表),但落在联合变体里(Enum< 34 个成员 > | string)。#6225 的修法刻意只匹配「属性自己的类型节点就是词表」(与整 schema 分支逐条件对齐),因为对数组元素 /Record值 / 某一个变体来说,「本属性的允许值」不是实话。该词表并没有丢 ——ui/page.mdx上## PageComponentType的### Allowed Values完整列着 34 个成员,所以这一格是"宽"而不是"缺"。若要收,需要先决定表格下方那节该怎么措辞才不说谎。可能的方向(未验证,留给分诊)
INLINE_KEY_LIMIT同源,但作用在层数上),超出印object;T | T[]印成T | T[]而不是把T展开两遍)—— 这一条只对Page.slots这类有效,对 4 个无联合的无效。三种都涉及公开可读契约的取舍,⛔ 不建议随手拍板。⛔ 不得手改生成的
.mdx,一切来自gen:schema && gen:docs。相关 / 串行
同文件面:
packages/spec/scripts/lib/format-type.ts。与 #5340(PR #6211)、#6225、#6226、#5729、#5606、#5338 同源。须与该文件面的其他在飞单串行,不得同批并行。Generated by Claude Code