Skip to content

objectui#8068 的过渡背书:58 个 array/object 类 input 仍无 per-block 成员 pin(逐条转 pin,删豁免) #8071

Description

@os-steve

事实(objectui#8068 落地时实测于 origin/main @ 3686a44

objectui#8068 让 apps/console/src/__tests__/registry-inputs-spec-parity.test.ts 要求:covered
集合里每一个 typearray / 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:buttonaction
  • element:numberfilter
  • element:record_pickerdataSource · label · placeholder · sort
  • object-formcustomFields · dataSource · fields · initialData · initialValues · mobile · sections · submitBehavior
  • object-gridaggregations · batchActions · bulkActionDefs · bulkActions · columns · conditionalFormatting · dataSource · exportOptions · filter · grouping · navigation · operations · pagination · rowActions · rowColor · searchableFields · selection · sort
  • object-master-detail-formdataSource · details · fields · initialData · initialValues · sections
  • object-metricaggregate · compareTo · dataSource · drillDown · filter · trend
  • page:accordionitems
  • page:tabsitems
  • record:activitytypes
  • record:alertaction
  • record:chatterfeed
  • record:discussionfeed
  • record:pathstages
  • record:quick_actionsactionNames · requiredPermissions
  • record:related_listactions · 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepm:dispatchedpriority:p3teststooling

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions