Repository navigation
enforce-or-remove: DashboardWidgetSchema 的 5 个 dead 键(#4956 下钻首次给出裁决) #5010
Copy link
Copy link
Closed
Description
Activity
- added a commit that references this issue
on Aug 3, 2026 xuyushun441-sys commented
on Aug 4, 2026 CollaboratorAuthorMore actionsCLAIM
- 会话:
session_01Ehu85kbvMcrNTUJjwxvLJ9(spec 车道 PM,派发给 os-dev 实施) - 分支:
claude/issue-5010-dashboard-dead-keys - 方向:按本单已记录的维护者裁决执行(ADR-0049 去留)。
- 台账注意:build(spec): strictness 台账数字/散文分家 —— 计数转 os-regen 生成物,Class 判定与依据保持手写 (#5107, #5072) #5220 已合 —— 数字面走
gen:strictness-ledger生成物,散文行手写;dashboard.zod.ts 行按新格式词表。相关新证据:DashboardWidget.chartConfig在 dashboard 元数据面只有showLegend落地 —— 12 个已声明键里 11 个惰性,liveness 台账那一行高估了证据 #5175(chartConfig 12 键惰性 11)、PR feat(spec,lint): 声明 chart segment drill ——ChartDrillDownSchema,挂在真正读它的那一层 (#5022) #5221(drillDown 落点与 dashboard 面 guidance)已落,退役措辞与它们对齐。
Generated by Claude Code
- 会话:
- added a commit that references this issue
on Aug 4, 2026 xuyushun441-sys commented
on Aug 4, 2026 CollaboratorAuthorMore actionscolorVariant 补充裁决(2026-08-04,维护者委托 PM 按业务/长远两轴代选):B(落实)
- 前情:原裁决的 D2(搬到
options.colorVariant)被 PR refactor(spec,lint)!: 退役 dashboard widget 的 action 三键与 aria —— 连同那道「为不存在的按钮做引用完整性」的门 (#5010) #5255 的实测推翻 ——dataset必填 ⇒ 所有合法 widget 走 DatasetWidget,options在该路径不可达,D2 只是把死槽搬家。 - 裁定 B:
widgets[].colorVariant保留声明,由 objectui 给 DatasetWidget 的 metric 卡接上强调色(objectui#3366 跟踪);spec 零改动、零 v17 窗口占用。选择依据:16 处真实授权(system_overview 7 + showcase 9)证明这是看板的本能需求;A 需再占一次破坏窗口且大概率 v18 词表回摆;B 让既有声明由构造变诚实。 - 过渡护栏:PR refactor(spec,lint)!: 退役 dashboard widget 的 action 三键与 aria —— 连同那道「为不存在的按钮做引用完整性」的门 (#5010) #5255 已钉「CLI advisory 恰好只警告 colorVariant」的正向对照 —— objectui 落地、pin 提升后随 liveness 行翻 live 一并解除。
- 4 键退役不受影响,随 PR refactor(spec,lint)!: 退役 dashboard widget 的 action 三键与 aria —— 连同那道「为不存在的按钮做引用完整性」的门 (#5010) #5255 落地关单。
Generated by Claude Code
- 前情:原裁决的 D2(搬到
xuyushun441-sys commented
on Aug 4, 2026 CollaboratorAuthorMore actions- added a commit that references this issue
on Aug 6, 2026 - added a commit that references this issue
on Oct 1, 2026
#4956 给
dashboard.widgets补上了children下钻,22 个 widget 级键第一次拿到逐键裁决(证据取自 objectui@91757a7 与本仓库 HEAD,2026-08-03 手工闭合调用图)。其中 16 个 live,6 个 dead。responsive已经在 #4876 / PR #4995 退休(tombstone),不在本单范围。剩下 5 个 dead 键是 ADR-0049 enforce-or-remove 的工作项:widgets[].colorVariant{ type: 'metric', ...options, label, value }),所以只有options.colorVariant能到达 MetricWidget;dataset 路径(DatasetWidget)则完全没有配色能力options)。注意本仓库自己的packages/platform-objects/src/apps/dashboards/system_overview.dashboard.ts就写了 7 次 —— 直接删键会改动平台自带看板widgets[].actionUrlactionUrl全部限定在schema.header.actions[](那是 DashboardHeaderAction,另一个 schema)widgets[].actionTypeactionUrl套哪条解析规则widgets[].actionIconwidgets[].ariawidget.aria消费者(DashboardRenderer / DatasetWidget 里的aria-*是渲染器自己的 DOM 属性;objectui 唯一的.aria读取在 plugin-view/ObjectView.tsx:989,那是 view 的)。与 17.0.0 里被删掉的看板级aria是同一种「假合规」aria一致)值得单独指出的二阶成本
packages/lint/src/validate-dashboard-action-refs.ts对widgets[].actionUrl做引用完整性强校验:目标解析不到就 ERROR、构建失败。它的 docblock 写着自己「mirrors the objectui runtime dispatch」、把这个键称作 "the per-widget button" —— 而那个按钮并不存在。也就是说,今天一个作者可能因为一个永远不会渲染的按钮指向不存在的 action 而被卡住构建。删键时这条规则的 widget 分支要一并处理。现状与不做什么
DashboardWidgetSchema的 ~22 个 widget 级键从未被台账分类,而 dashboard.json 的 _note 声称它们已分类 #4956 只记录裁决,不动任何键;5 个键都已带authorWarn+authorHint,objectstack build/lint会在编写期提示(liveness:DashboardWidgetSchema的 ~22 个 widget 级键从未被台账分类,而 dashboard.json 的 _note 声称它们已分类 #4956 同时把dashboard注册进 CLI lint 的TYPE_COLLECTIONS,否则台账正确但无人收到)。.claude/skills/spec-property-retirement/SKILL.md:DashboardWidgetSchema是.strict(),两条路线(retiredKey tombstone vs 严格删除)对台账行的处置相反。台账证据:
packages/spec/liveness/dashboard.json→props.widgets.children。Generated by Claude Code