You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Flow 分支编辑器提交时新建的边没有 id —— 这才是「设计器产出、spec 拒绝」的真实形状 #3202
Activity
os-zhuang commentedon Aug 2, 2026
PM 分诊(第 2 轮结转):入队,下一轮派发(现在不派——它落在
app-shell,与在途的 #3174 同包,批内文件互斥要求错开)。裁决(PM 可决,依据仓内既有约定,维护者可否决),本条 PR 交付三件:
applyDecisionBranches新建边按仓内既有约定盖uniqueId('edge', 现有边 id);注意同一次提交可能新建多条,id 要在本次累积集合上取,避免撞号。dialect的condition—— 写出的正是服务端自己 schema 会拒绝的形状 #3171 正文要求、真正拦得住东西的那条):applyDecisionBranches/syncDecisionEdgesByOrder产出的每一条边都必须通过FlowEdgeSchema.safeParse。dialect的condition—— 写出的正是服务端自己 schema 会拒绝的形状 #3171 的根因,随本条一起清):FlowDesignerEdge.condition从string | { source?: string }收紧为镜像 spec 的ExpressionInput(string | { dialect: ExpressionDialect; source?: string; ast?: unknown }),FlowEdgeInspector内同形状一并处理。这是公共类型变更,按版本政策发 minor,changeset 写明。理由:那个过宽的类型已经导致一次错误的缺陷判定(Flow 边检查器能产出缺dialect的condition—— 写出的正是服务端自己 schema 会拒绝的形状 #3171),类型不能描述 spec 会拒绝的形状,才不会有下一次。不在本条范围:#3172(节点几何
ui:{x,y}vsposition)是另一条,不要顺手改。Generated by Claude Code
os-zhuang commentedon Aug 2, 2026
认领:PM 循环第 3 轮(分片:objectui 整仓)
会话:
session_01PRJtkgUAaVG11FsJQbvZWA分支:
claude/issue-3202-branch-edge-missing-idWorktree:
objectui-issue-3202裁决见上方第 2 轮结转评论(三件交付:补 id / 闸门 / 收紧本地读类型)。补充一条施工提醒:验证范围必须覆盖
packages/core——本轮已有一次因只跑改动所在包而漏掉跨包门禁的返工(#3174),那道棘轮就住在 core。Generated by Claude Code
os-zhuang commentedon Aug 2, 2026
验收:ACCEPT → PR #3215(CI 15 项全绿,进入合并)。
三件交付齐活:①
applyDecisionBranches新建边用uniqueId('edge', …)盖 id,取号集合 = flow 已有边 id + 本次提交中先前铸出的 id(多分支一次 apply 不撞号,单列了用例);② 闸门覆盖 create/update/retarget/detach/by-order 五类场景的每一条边过FlowEdgeSchema.safeParse,并另有一条把失败形状本身钉住——反证有效:把补 id 那行改回原样后 5 个测试立刻红;③ 读类型收紧,FlowEdgeInspector与FlowPreview(编译器逼出来的第三份逐字复制,已删复制改为type FlowEdge = FlowDesignerEdge)一并处理。两处偏离我的裁决,均更正确,予以采纳:
{ dialect; source?; ast? }漏了 spec 对象分支上可选的meta,照抄会让本地类型比 spec 更窄——把"类型撒谎"换了个方向。改为直接import type { ExpressionInput },与仓内check:spec-symbol-derivation「派生而非重述」一致,且镜像不会随 spec 演进过期。tsconfig.typetests.json——否则就是又一个"声明了但没执行"。实测反写断言会报TS2344,证明它真的被编译。uniqueId挪到无 React 模块(_shared继续 re-export,调用点不变)属必要的连带改动:纯模块单测的模块加载 7.4s → 63ms,且避免铸第二个 id 生成器。越界发现已立案:#3216(flow 模拟器的两个读边守卫只认裸字符串,把规范化后的
{dialect, source}信封当成"没有条件"——决策出边在模拟时间线上报Branch has no condition.并被跳过,与引擎和画布不一致;SimEdge.condition是本条收紧掉的那份过宽形状的最后一份复制)。这条与本轮主题一脉相承,建议优先:它是同一个过宽类型在求值路径上的实际后果,不是类型问题。Generated by Claude Code
fix(app-shell): flow branch editor stamps an id on the edges it creat…