#4525 核查确认:spec 自 `cd6b9f202`(2026-07-29,objectui#2955)起已建模 `DecisionOutputDef.required`,服务端强制语义与 spec 一致;objectstack 侧 PR #4561 补齐了 schema 层钉子。objectui 侧因此留下三处待收尾(**代码落地仓库:objectui**,发现自 #4561 的范围外记录): 1. **塌缩冗余派生**:`packages/app-shell/src/utils/decisionOutputParams.ts:56` 的 `DecisionOutputDef extends SpecDecisionOutputDef { required?: boolean }` 已纯冗余——spec 早有该键,接口应塌缩为纯 re-export; 2. **修正过期注释**:同文件 48–54 行的模块 TSDoc 仍断言「the spec does not model it yet」,已过期且误导; 3. **反转 parity 钉子**:`packages/app-shell/src/__tests__/spec-symbol-parity.test.ts:246` 钉住 `Equal<Exclude<keyof DecisionOutputDef, keyof SpecDecisionOutputDef>, 'required'>`——塌缩后该断言必须同步反转(这正是原注释第 54 行承诺的「fails on that day」绊线,今天就是那一天)。 三处应在**同一个 PR** 内完成,避免钉子与实现脱节。 验收:parity 测试反转后通过;app-shell 构建、测试、typecheck 全绿;无其他行为变化。 另注(供 PM 与维护者参考):#4525 源自 objectui 台账燃尽批次 3(objectui#3169 / #4115)的誊录,同批次其他「spec 尚未建模 X」类 issue 可能带有同样过期的前提,分诊时应先对照当前 spec 核查。
Activity
os-zhuang commentedon Aug 2, 2026
认领:PM 循环第 2 轮(代码落地仓库:objectui,
repo:objectui路由)分支:
claude/issue-4562-decision-output-collapse(objectui 仓库)Worktree:
objectui-issue-4562如另有会话已在做本 issue,以更早的认领评论为准,本认领让行。
Generated by Claude Code
os-zhuang commentedon Aug 2, 2026
决策请求(第 2 轮开发 agent 上报,PM 复核后升级):塌缩本身已写完并验证,但无法按原范围落地——发现两个前置问题。已打
needs-user-decision。发现
required;只有 rc.1 才有。塌缩在 rc.0 下直接编译失败(TS2339)。而只升 spec 一个包不可行:client/core/formula/lint 以精确版本钉住 rc.0,单独升 spec 会造成双版本依赖图——靠引用同一性判断「re-export vs fork」的 parity 守卫全部失效(agent 已实测);且 rc.1 把 ~22 个 automation/ui schema 从 $strip 翻成 $strict(此前被接受的元数据将开始报错),需要独立的回归验证。已立案 objectui#3182(全家族 lockstep 升级方案)。*.test.ts,CI 没有任何 gate 编译这些类型断言;agent 实测在 parity 测试里写入Assert<Equal<1,2>>(必假断言),pnpm type-check依然 exit 0。这正是 declared ≠ enforced 在测试层的形态,也解释了 objectui:DecisionOutputDef派生分歧已纯冗余——塌缩为 re-export,反转 parity 钉子(#4525 收尾) #4562 前提为何会错。已立案 objectui#3181(最小修法:专用 tsconfig.typetests.json 进 CI)。建议的落地顺序(两轴分析)
① objectui#3181(先) → ② objectui#3182(升级 PR) → ③ 本 issue 塌缩(改动已在分支
claude/issue-4562-decision-output-collapse上,commit 139b9df,rc.1 下验证绿)。同意此顺序请回复,PM 即按序派发 ①②,③ 在 ② 合并后直接开 PR(改动现成)。若你认为 rc.1 的 $strict 翻转此刻不宜引入 objectui,说明后可改为暂缓整链、本 issue 挂起等升级窗口。
Generated by Claude Code
os-zhuang commentedon Aug 2, 2026
已经有单独的pr ,升级到 rc.1 了。
os-zhuang commentedon Aug 2, 2026
PM 验收:ACCEPT → objectui#3185(已转正并加入 merge queue,合并后本 issue 自动关闭)。
确认未被 #3178 顺手完成(它只升依赖,派生接口与旧钉子原样在),三项收尾齐备:塌缩为
export type DecisionOutputDef = SpecDecisionOutputDef(保留 re-export 入口,三个调用方零改动)、过期 TSDoc 改写为当前事实(并保留type闭合枚举收窄的 load-bearing 说明)、parity 钉子反转(排除集断言never+ 新增精确同一性断言,负向对照证实旧钉子现在必红)。CI 15 项全绿;changeset 按版本政策标 patch。两项跟进仍然成立(PR 已向 reviewer 显式标注):
Generated by Claude Code
refactor(app-shell): 把 `DecisionOutputDef` 收敛成 spec 的纯 re-export,并反转 …