Repository navigation
spec/liveness/field.json 的 Field.widget 存活记录把 capability-multiselect 记作 sys_permission_set 在用 —— 该 widget 名从未在活路径注册,现已退役 #6773
Description
Activity
Findings-round route repair: +
domain:spec— routing only; thefindinggrade is unchanged and this seat takes no ownership.Landing basis (read, not guessed): the fix is the evidence note at
packages/spec/liveness/field.json:109(verified present onorigin/main@e1e7629, still namingcapability-multiselect). The liveness ledger is the evidence base for enforce-or-remove verdicts — semantic-face record-keeping ofpackages/spec, same lane as the liveness audit precedent #4895 (domain:spec), not describe/JSDoc surface prose.本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-project-manager commented
on Aug 9, 2026 CollaboratorMore actions旁证:pin 升级后这条 note 从「已过时」变成「实测可证伪」
在做 #6813(objectui pin
b1204af→09987b68,PR #6890)时跨 pin 实测了这个名字,贴在这里而不是另开单 —— 搜索先行,本单已覆盖(会话session_01F8q5J1MQyocgtNspb15fSn)。⛔ 我没有把修正夹进 #6890:那张单据明写「Not a rider,文件面就是.objectui-sha+ 生成的 changeset 两个文件」,所以只留证不动手。跨 pin 的
git grep读数(objectui):ComponentRegistry.register('capability-multiselect', …)老 pin b1204af在 —— packages/fields/src/index.tsx:2385新 pin 09987b68不在 —— packages/*/src只剩墓碑注释 + 一个退役 pin 测试plugin-detail/src/__tests__/InlineFieldInput.capabilityWidgetRetired.test.tsx也就是说本单标题里的两个断言现在都有实测支撑:
- 「从未在活路径注册」 —— 老 pin 上那条注册只在
registerFields()里,而registerFields()的唯一调用者是 objectui 文档站;活路径registerAllFields()遍历的fieldWidgetMap从来没列过它。所以即使在老 pin 上,真实应用里widget: 'capability-multiselect'也解析不到任何东西,回落到声明的typerenderer。 - 「现已退役」 —— objectui#3308(ADR-0049 enforce-or-remove)在本 range 内落地(changeset
capability-multiselect-widget-retired-3308.md,ecae40064)。
实际盖在
sys_permission_set六个 facet 上的是permission-facet-link,注册在 objectuiplugin-detail/src/index.tsx:563,本次未动 —— 这正是 note 那句话应该改成的内容。对
Field.widget的存活裁决没有影响:同一条 note 还举了sys_sharing_rule的object-ref/filter-condition/recipient-picker,那三个都还在活路径上,所以widget仍是live,错的只是这一个举例。这也是它该留在 observation-class(finding,无pm:queue)、而不是升级成缺陷的原因。
Generated by Claude Code
- 「从未在活路径注册」 —— 老 pin 上那条注册只在
os-project-manager commented
on Aug 9, 2026 CollaboratorMore actionsTriage (maintainer-authorized one-off pass, 2026-08-09, registered on #6015): promoted
finding→pm:queue(domain:speckept). The liveness ledger is evidence infrastructure — a note asserting a widget name was "in use" when it was never registered on any live path is precisely the false-evidence shape that mis-steered #5022's measurement (the #5175 lesson). One-line ledger note correction; the retired name goes.
Generated by Claude Code
Bundled as member 2 of sweep card #7069 (liveness-ledger follow-through sweep III, spec seat, session
session_01PiRUoQkTSBBmpyXBY3cVn2). Keepspm:queuebut is NOT a dispatch candidate while the sweep is open; closes via the sweep PR'sFixes #6773. The cross-pin measurements above (permission-facet-linkat plugin-detailindex.tsx:563on the current pin) are the sweep brief's evidence base.
Generated by Claude Code
在实施 objectui#3308 的引用面扫描中顺带发现(
objectstack origin/main上git grep -nw "capability-multiselect"的唯一命中)。与该 issue 的修复面无关,单独记录。事实
packages/spec/liveness/field.json:109,Field.widget的 note:加粗那半句从未成立,现在则是明确错的:
ObjectStackAdapter.getObjectSchema的单一 choke point(objectuipackages/data-objectstack/src/index.ts的applyFieldWidgetOverrides),给sys_permission_set六个 facet —— 含system_permissions—— stamp 的是permission-facet-link,不是capability-multiselect。field:capability-multiselect只由 objectui 已废弃、仅文档站调用的registerFields()注册;活路径registerAllFields()遍历的fieldWidgetMap里没有它。→ (unknown):describeRegisteredDriver 不认connectionString#3793。note 里另一半(
sys_sharing_rule的 object-ref / filter-condition / recipient-picker)是准确的:这三个键确实在fieldWidgetMap里。为什么值得记一笔(observation class)
今天没有用户会撞到它:这是存活账本里的一条 note,不进任何运行时判断。但它是给下一个读账本的人(和 AI)的错误权威——一条被登记为「在用」的证据,指向一个从来渲染不出来的 widget 名。objectui#3308 的病根正是同一类(注释承诺不存在的能力),而存活账本恰恰是用来判定「某属性是死是活」的地方,一条失真的用例证据会让下一轮 enforce-or-remove 判断建立在假前提上。
note 的最后一句(
Degrades to the type renderer when the widget is unregistered)反而是准确且有用的——它正是 objectui#3308 里删掉 hint 分支后所依赖的既定行为。建议处置
把
sys_permission_set (capability-multiselect)改为sys_permission_set (permission-facet-link),并核一遍permission-facet-link的注册处(objectuipackages/plugin-detail/src/index.tsx:466,经withFieldCarrier)以确认新写法确有活路径支撑。顺手可复核该 note 提到的其余 widget 名是否都还在fieldWidgetMap里。参考
→ (unknown):describeRegisteredDriver 不认connectionString#3793docs/adr/0056-permission-editing-studio.mdP1 / P2