事实(objectui#8068 落地时实测于 origin/main @ 3686a44)
objectui#8068 让 apps/console/src/__tests__/registry-inputs-spec-parity.test.ts 要求:covered
集合里每一个 type 含 array / object 臂的已注册 input,都必须有一条具名的 per-block 成员 pin,缺失即红。
普查数字是这张卡的理由:
| 读数 |
值 |
covered 块上 array/object 臂的 input |
77(22 个块) |
| 其中已有成员 pin |
19 |
| 无 pin |
58 |
58 是「几十个」而不是「个位数」,所以 #8068 按它自己规定的那条路走:带自删除豁免的过渡。
58 个 key 逐个具名登记在该文件的 MEMBER_PIN_EXEMPTIONS 里,理由指向本卡。
本卡的工作就是把它们一个个变成 pin。 每写完一条 pin,就在同一笔改动里删掉它的豁免条目
—— carries no stale member-pin exemption 会点名要求这件事。
判据(#8068 定的,本卡不重定)
一条 pin 必须约束渲染器实际读取的形状,而不只是复述注册声明。注册写 of: 'string'
而代码把成员当对象读,正是 #8068 存在的那个洞(page:header.actions / objectstack#11592)。
参照范例(#8068 登记的 19 条里的四条):
packages/plugin-detail/src/__tests__/recordDetailsInputs.spec-parity.test.ts
packages/plugin-detail/src/__tests__/recordHighlightsInputs.spec-parity.test.ts
packages/plugin-detail/src/__tests__/recordRelatedListInputs.spec-parity.test.ts
packages/components/src/__tests__/page-header-action-ids.test.tsx
58 个待写的 pin
element:button — action
element:number — filter
element:record_picker — dataSource · label · placeholder · sort
object-form — customFields · dataSource · fields · initialData · initialValues · mobile · sections · submitBehavior
object-grid — aggregations · batchActions · bulkActionDefs · bulkActions · columns · conditionalFormatting · dataSource · exportOptions · filter · grouping · navigation · operations · pagination · rowActions · rowColor · searchableFields · selection · sort
object-master-detail-form — dataSource · details · fields · initialData · initialValues · sections
object-metric — aggregate · compareTo · dataSource · drillDown · filter · trend
page:accordion — items
page:tabs — items
record:activity — types
record:alert — action
record:chatter — feed
record:discussion — feed
record:path — stages
record:quick_actions — actionNames · requiredPermissions
record:related_list — actions · columns · dataSource · filter · sort
⚠️ 其中几个已经有近似的契约测试,只是没有点名到块 + key(所以 #8068 的机械定位器认不出来),
转 pin 时先去读它们,很可能只差一条断言:packages/plugin-form/src/sectionFields.spec-parity.test.ts
(object-form.fields 的成员词汇表)· packages/types/src/__tests__/export-options-spec-parity.test.ts
(object-grid.exportOptions)· packages/types/src/__tests__/bulk-action-spec-parity.test.ts
(object-grid.bulkActions / bulkActionDefs)。
第二半:covered 之外的注册面(⚠️ 本卡不含,只在此记数以免它无声消失)
同一次普查读到的更宽的数字:整个注册图上 501 个已注册 type 名(含别名,例如 object-grid /
plugin-grid:object-grid / view:grid 是同一份注册的三个名字),1539 个 input,其中
310 个带 array/object 臂。上表的 77 个是它们里落在 ComponentPropsMap 上的那部分;
其余 233 个所在的块没有 spec 契约条目,registry-inputs-spec-parity.test.ts
的每一条方向(正向 / 反向 / arm)从来都没判过它们 —— #8068 的新方向沿用同一个 covered
集合,所以也没判。这不是一次收窄,是那个文件既有的覆盖边界;但「没有任何东西看着它」
这句话对这 233 个仍然成立,需要单独裁决:它们该不该被钉住,用什么权威去比对。
Refs: objectui#8068(本卡的来源)· objectui#8067(姊妹卡:给 ComponentInput 加成员形状槽位)
· objectstack#11592 · objectui#6252
事实(objectui#8068 落地时实测于
origin/main@3686a44)objectui#8068 让
apps/console/src/__tests__/registry-inputs-spec-parity.test.ts要求:covered集合里每一个
type含array/object臂的已注册 input,都必须有一条具名的 per-block 成员 pin,缺失即红。普查数字是这张卡的理由:
covered块上 array/object 臂的 input58 是「几十个」而不是「个位数」,所以 #8068 按它自己规定的那条路走:带自删除豁免的过渡。
58 个 key 逐个具名登记在该文件的
MEMBER_PIN_EXEMPTIONS里,理由指向本卡。本卡的工作就是把它们一个个变成 pin。 每写完一条 pin,就在同一笔改动里删掉它的豁免条目
——
carries no stale member-pin exemption会点名要求这件事。判据(#8068 定的,本卡不重定)
一条 pin 必须约束渲染器实际读取的形状,而不只是复述注册声明。注册写
of: 'string'而代码把成员当对象读,正是 #8068 存在的那个洞(
page:header.actions/ objectstack#11592)。参照范例(#8068 登记的 19 条里的四条):
packages/plugin-detail/src/__tests__/recordDetailsInputs.spec-parity.test.tspackages/plugin-detail/src/__tests__/recordHighlightsInputs.spec-parity.test.tspackages/plugin-detail/src/__tests__/recordRelatedListInputs.spec-parity.test.tspackages/components/src/__tests__/page-header-action-ids.test.tsx58 个待写的 pin
element:button—actionelement:number—filterelement:record_picker—dataSource·label·placeholder·sortobject-form—customFields·dataSource·fields·initialData·initialValues·mobile·sections·submitBehaviorobject-grid—aggregations·batchActions·bulkActionDefs·bulkActions·columns·conditionalFormatting·dataSource·exportOptions·filter·grouping·navigation·operations·pagination·rowActions·rowColor·searchableFields·selection·sortobject-master-detail-form—dataSource·details·fields·initialData·initialValues·sectionsobject-metric—aggregate·compareTo·dataSource·drillDown·filter·trendpage:accordion—itemspage:tabs—itemsrecord:activity—typesrecord:alert—actionrecord:chatter—feedrecord:discussion—feedrecord:path—stagesrecord:quick_actions—actionNames·requiredPermissionsrecord:related_list—actions·columns·dataSource·filter·sort转 pin 时先去读它们,很可能只差一条断言:
packages/plugin-form/src/sectionFields.spec-parity.test.ts(
object-form.fields的成员词汇表)·packages/types/src/__tests__/export-options-spec-parity.test.ts(
object-grid.exportOptions)·packages/types/src/__tests__/bulk-action-spec-parity.test.ts(
object-grid.bulkActions/bulkActionDefs)。第二半:⚠️ 本卡不含,只在此记数以免它无声消失)
covered之外的注册面(同一次普查读到的更宽的数字:整个注册图上 501 个已注册 type 名(含别名,例如
object-grid/plugin-grid:object-grid/view:grid是同一份注册的三个名字),1539 个 input,其中310 个带 array/object 臂。上表的 77 个是它们里落在
ComponentPropsMap上的那部分;其余 233 个所在的块没有 spec 契约条目,
registry-inputs-spec-parity.test.ts的每一条方向(正向 / 反向 / arm)从来都没判过它们 —— #8068 的新方向沿用同一个
covered集合,所以也没判。这不是一次收窄,是那个文件既有的覆盖边界;但「没有任何东西看着它」
这句话对这 233 个仍然成立,需要单独裁决:它们该不该被钉住,用什么权威去比对。
Refs: objectui#8068(本卡的来源)· objectui#8067(姊妹卡:给
ComponentInput加成员形状槽位)· objectstack#11592 · objectui#6252