发现于 #5077 的前提门复测(cast 感知口径复查卡面读点)。Filed unassigned, not claiming.
现象 packages/plugin-view/src/ObjectView.tsx 的 renderListView 委托分支(:980 起)用 (schema as any).K 从 object-view 节点上读 31 个不同的键 并转发给宿主的列表渲染器。其中只有 4 个是 ObjectViewSchema 的声明成员,27 个不是 —— 「渲染器读得到、声明面否认」在 ObjectView 上仍然成立,与 #5091 在 ObjectGrid 上的形状相同。
证据(实测,base 9fbb9b52f) 读点枚举(grep -o 'schema as any)\.[A-Za-z_]*',排除 __tests__,31 个 distinct):
是 声明成员的 4 个:data、navigation、searchableFields、filterableFields不是 声明成员的 27 个:addDeleteRecordsInline, addRecord, addRecordViaForm, allowExport, allowPrinting, aria, bulkActions, clickIntoRecordDetails, collapseAllByDefault, color, compactToolbar, conditionalFormatting, emptyState, fieldTextColor, hiddenFields, inlineEdit, pagination, prefixField, resizable, rowActionDefs, rowActions, selection, sharing, showDescription, showRecordCount, userFilters, wrapHeaders声明成员集取自构建产物 packages/types/dist/objectql.d.ts(checker.getPropertiesOfType,42 个,required 只有 objectName / type),与 #5077 卡面 ① 逐字一致。
可达性 :该分支只在宿主传 renderListView 时进入。注册渲染器 ObjectViewRenderer(src/index.tsx:58-66)不传 该 prop —— 全仓非测试唯一供给方是 packages/app-shell/src/views/ObjectView.tsx:1618(React 宿主)。即:这 27 个键在 app-shell 组合下生效 ,在 README/文档站教的 schema 注册路径上到不了 。
类型面完全没有牙 (实测 tsc 6.0.3,strict,对构建产物):ObjectViewSchema extends BaseSchema,而 BaseSchema 带 [key: string]: any,excess property 检查整体失效 ——
探针 rc { type: 'object-view', objectName: 'products', pagination: true }(顶层未声明键)0,无诊断 { type: 'object-view', objectName: 'users', table: { zzzNotAGridKey: 1 } }(嵌套 table 里的假名)0,无诊断 缺 objectName TS2741(唯一有牙的一条)
即嵌套的 table 子配置同样不设防,错拼这 27 个键里的任何一个都静默无声。
为什么值得单列 AI 作者无法从类型面发现这 27 个键,也无法被 tsc 拦住错拼 —— 正是「声明=强制」要消除的静默成功类。 文档面无法合法地教它们:教了就把一个 as any 逃逸口固化成第二套事实契约(AGENTS.md #0.1);不教则 app-shell 组合下的既有行为无处记载。 它是 plugin-view README 整片 schema 键面渲染器一个都不读 —— object / viewMode / fields / mode / recordId / fieldConfig 全非声明成员,照抄即空视图 #5077 那类 README 键面漂移能长期不被发现 的结构原因:object-view 节点上任何键都「看起来合法」。 其中 pagination 一键已经在 #5077 的逐键判定表里被记为「渲染器不读」—— 该格由本卡的 :1032 读点推翻,已在 #5077 上留证据评论。#5088 (文档站镜像)的同一格同理。
同族 分级 交 PM 分诊(未打标签)。参照 #5091 同类被判 bug + needs-user-decision —— 本卡同样需要一次裁定:27 个键是声明上去 (types 变更)、从转发块删掉 、还是记为有理由的豁免 。
发现于 #5077 的前提门复测(cast 感知口径复查卡面读点)。Filed unassigned, not claiming.
现象
packages/plugin-view/src/ObjectView.tsx的renderListView委托分支(:980起)用(schema as any).K从 object-view 节点上读 31 个不同的键并转发给宿主的列表渲染器。其中只有 4 个是ObjectViewSchema的声明成员,27 个不是 —— 「渲染器读得到、声明面否认」在 ObjectView 上仍然成立,与 #5091 在 ObjectGrid 上的形状相同。证据(实测,base
9fbb9b52f)读点枚举(
grep -o 'schema as any)\.[A-Za-z_]*',排除__tests__,31 个 distinct):data、navigation、searchableFields、filterableFieldsaddDeleteRecordsInline, addRecord, addRecordViaForm, allowExport, allowPrinting, aria, bulkActions, clickIntoRecordDetails, collapseAllByDefault, color, compactToolbar, conditionalFormatting, emptyState, fieldTextColor, hiddenFields, inlineEdit, pagination, prefixField, resizable, rowActionDefs, rowActions, selection, sharing, showDescription, showRecordCount, userFilters, wrapHeaders声明成员集取自构建产物
packages/types/dist/objectql.d.ts(checker.getPropertiesOfType,42 个,required 只有objectName/type),与 #5077 卡面 ① 逐字一致。可达性:该分支只在宿主传
renderListView时进入。注册渲染器ObjectViewRenderer(src/index.tsx:58-66)不传该 prop —— 全仓非测试唯一供给方是packages/app-shell/src/views/ObjectView.tsx:1618(React 宿主)。即:这 27 个键在 app-shell 组合下生效,在 README/文档站教的 schema 注册路径上到不了。类型面完全没有牙(实测 tsc 6.0.3,strict,对构建产物):
ObjectViewSchema extends BaseSchema,而BaseSchema带[key: string]: any,excess property 检查整体失效 ——{ type: 'object-view', objectName: 'products', pagination: true }(顶层未声明键){ type: 'object-view', objectName: 'users', table: { zzzNotAGridKey: 1 } }(嵌套table里的假名)objectName即嵌套的
table子配置同样不设防,错拼这 27 个键里的任何一个都静默无声。为什么值得单列
as any逃逸口固化成第二套事实契约(AGENTS.md #0.1);不教则 app-shell 组合下的既有行为无处记载。其中
pagination一键已经在 #5077 的逐键判定表里被记为「渲染器不读」—— 该格由本卡的:1032读点推翻,已在 #5077 上留证据评论。#5088(文档站镜像)的同一格同理。同族
(schema as any)读的 4 个键不在GRID_QUERY_INPUTS里 —— #4648 要消除的「渲染器读得到、声明面否认」在这些键上仍然存在 #5091(open,bug+needs-user-decision)—— ObjectGrid 的 4 键同形实例。本卡是 ObjectView 面的实例,键集与组件都不同,故独立立卡而非做 ObjectGrid 用(schema as any)读的 4 个键不在GRID_QUERY_INPUTS里 —— #4648 要消除的「渲染器读得到、声明面否认」在这些键上仍然存在 #5091 的 sub-issue。ObjectMapSchema(types)声明的键几乎与 ObjectMap 实际读的键无交集:map块整体未建模,组件 props 类型写的是ObjectGridSchema,每处 map 读取都走as any#5018 —— ObjectMap 的整块未建模 + 每处as any。分级
交 PM 分诊(未打标签)。参照 #5091 同类被判
bug+needs-user-decision—— 本卡同样需要一次裁定:27 个键是声明上去(types 变更)、从转发块删掉、还是记为有理由的豁免。