Skip to content

[调试补参] 起始点与禁用节点的缺失变量/物料引导绑定 #213

Description

@TablewareBox

Part of #195
Related: #131, #6

背景

当前 Workbench 已支持设置起始点、断点和静态禁用节点。Planner 可以把起始点之前、禁用或本次不可达的节点排除出 ExecutionPlan,但被排除节点原本产生的普通变量、ResourceSlot/Material 值不会因此自动存在。

在线性主线中从中间启动、在支路中间启动、禁用支路生产者或禁用主线中间节点时,下游可能仍引用这些输出。若直接运行,系统只能在任务输入绑定或节点 admission 时失败;更危险的实现会静默伪造值或错误沿用历史库存。

目标合同

在 Debug 启动前提供统一的“缺失绑定分析与引导补参”流程:

  1. OS 基于冻结 Workflow snapshot、start frontier、disabled 集合与本次 active scope 计算缺失输入,而不是由前端遍历 DAG 猜测。
  2. 每个缺失输入返回生产者、消费者、handle/data key、schema、是否物料、AllowedResourceTemplate/约束及缺失原因(起始点裁剪、静态禁用、支路 out-of-scope)。
  3. Workbench 分步引导:
    • 普通值按 schema 填写并校验;
    • 物料值只允许从当前实验室 Inventory Authority 中选择满足 AllowedResourceTemplate/约束的稳定 Material UUID;
    • 可选输入允许显式使用 default/None;必填输入不得跳过。
  4. 补充值作为 immutable Debug launch input overrides 随 Task 一次性冻结并审计;不写回作者源码,不修改当前库存归属,不复用前一次 Task 的隐式值。
  5. 断点本身不改变数据依赖;仅 start/out-of-scope/disabled 触发缺失绑定分析。
  6. 若删除/禁用导致控制流或数据流无法证明可执行,启动必须失败关闭并给出节点级中文诊断。

支路语义

  • 从某支路内部启动时,只补该 active scope 需要且上游已被裁剪的边界输入。
  • 禁用某支路生产者但 join/主线仍消费其输出时,必须要求补值或拒绝启动,不能把该支路简单视为“无影响”。
  • 多个下游消费同一缺失输出时,默认共享一个冻结补充值;除非 schema 明确要求独立实例。
  • 组合工作流边界必须按 published input/output contract 分析,不能依赖展开后的 UI 节点位置。

验收

  • 线性图:从中间节点启动,补普通值后可运行。
  • 物料主线:从中间节点启动,只展示满足 AllowedResourceTemplate 的当前实验室物料。
  • 支路:起始点位于支路内部,准确识别 branch-local 缺失输入且不要求无关主线值。
  • 禁用支路生产者:join 消费其输出时启动前阻止并引导补值。
  • 禁用中间节点:其输出无人消费时无需补值;仍被消费时必须补值。
  • 断点:不产生额外补参要求。
  • Task/重启:补充值冻结、可审计、重启恢复且不会污染下一次 Debug Task。
  • 浏览器 E2E 使用真实 OS、真实 Inventory Authority 与至少一个含支路 Workflow。

当前排期

按 2026-08-11 用户决策,本功能不阻塞 0.1.0 最终离线安装包;Constructor 与嵌入式 OS 安装完成后再进入实施。

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature:debuggerDebugger、断点、单步与运行时投影needs-triageMaintainer evaluation requiredstage:protocol-definitionDefining or freezing the OKF protocol

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions