在 #4721 做 ADR-0087 载荷扫描时发现的旁支,与该单无关,单独记录(Prime Directive #10),未认领。
现象
packages/vscode-objectstack/snippets/objectstack.json 的 os-view-grid(「ObjectStack: Grid List View」)片段展开出来的 view 是这样的:
const myObjectListView: UI.View = {
name: 'my_object_list',
label: 'My Object List',
type: 'list',
objectName: 'my_object',
list: {
type: 'grid',
columns: [{ field: 'name', width: 200 }],
defaultSort: { field: 'name', direction: 'asc' },
pageSize: 25,
},
};
对着当前 origin/main(89d2a4e)的 ViewSchema 实测:
vscode os-view-grid snippet parses? false
Unrecognized key(s) on this list view: `defaultSort`, `pageSize`. Until #4001 closed
these shapes an unknown key was dropped silently — the view still rendered, without
whatever the key was meant to configure.
即:扩展交给作者的脚手架,一展开就是一份 validate 不过的 metadata。#4001 把 ListViewSchema 收紧成 strict 之后,这两个键从「静默丢弃」变成了硬拒绝,而片段没跟着改。list.defaultSort 在 ListViewSchema 上从来没有声明过(FormView.defaultSort 是另一个键,已在 #3896 收尾里立碑退休);list.pageSize 同理。
为什么值得单开
这是 #4001 战役的一类「下游未跟随」缺口,而且落在最不该落的地方:strict 化的价值在于把错误提前到写的那一刻,但这里写的那一刻的模板本身就是错的——作者(人或 AI)按 IDE 提示写出来的第一份 view 就被拒绝,而拒绝信息说的是「#4001 关掉了这些形状」,读起来像平台坏了,不像片段过期了。
需要决定的部分
defaultSort / pageSize 表达的意图(列表默认排序、分页大小)在 ListViewSchema 上是否有对应的活键,得先查一遍再改片段:
- 有 → 片段改成正确拼写;
- 没有 → 片段直接删掉这两行,并判断这两个能力是不是本来就该有(那是另一单)。
不要为了让片段能跑而给 schema 加回键——ADR-0049 / Prime Directive #12。
建议顺手做的一件事
整个 snippets/objectstack.json 有 8 个片段(os-object / os-field-text / os-field-select / os-field-lookup / os-view-grid / os-flow / os-stack / os-agent),本单只实测了 os-view-grid。既然 #4001 在按批次关 strict,片段文件会反复以同样方式过期。真正的修法是给它加一条 gate:把每个片段展开后(去掉 ${n:…} 占位)对着对应 schema parse 一次,parse 不过就红。否则这单关掉之后,下一批 strict 化会再复现一次。
关联:#4001、#3896、ADR-0049。发现于 #4721 的实现过程。
在 #4721 做 ADR-0087 载荷扫描时发现的旁支,与该单无关,单独记录(Prime Directive #10),未认领。
现象
packages/vscode-objectstack/snippets/objectstack.json的os-view-grid(「ObjectStack: Grid List View」)片段展开出来的 view 是这样的:对着当前
origin/main(89d2a4e)的ViewSchema实测:即:扩展交给作者的脚手架,一展开就是一份 validate 不过的 metadata。#4001 把
ListViewSchema收紧成 strict 之后,这两个键从「静默丢弃」变成了硬拒绝,而片段没跟着改。list.defaultSort在ListViewSchema上从来没有声明过(FormView.defaultSort是另一个键,已在 #3896 收尾里立碑退休);list.pageSize同理。为什么值得单开
这是 #4001 战役的一类「下游未跟随」缺口,而且落在最不该落的地方:strict 化的价值在于把错误提前到写的那一刻,但这里写的那一刻的模板本身就是错的——作者(人或 AI)按 IDE 提示写出来的第一份 view 就被拒绝,而拒绝信息说的是「#4001 关掉了这些形状」,读起来像平台坏了,不像片段过期了。
需要决定的部分
defaultSort/pageSize表达的意图(列表默认排序、分页大小)在ListViewSchema上是否有对应的活键,得先查一遍再改片段:不要为了让片段能跑而给 schema 加回键——ADR-0049 / Prime Directive #12。
建议顺手做的一件事
整个
snippets/objectstack.json有 8 个片段(os-object/os-field-text/os-field-select/os-field-lookup/os-view-grid/os-flow/os-stack/os-agent),本单只实测了os-view-grid。既然 #4001 在按批次关 strict,片段文件会反复以同样方式过期。真正的修法是给它加一条 gate:把每个片段展开后(去掉${n:…}占位)对着对应 schema parse 一次,parse 不过就红。否则这单关掉之后,下一批 strict 化会再复现一次。关联:#4001、#3896、ADR-0049。发现于 #4721 的实现过程。