[Workflow] Phase 02H:实现 Task input preflight 与 Handle binding

オープン
#301 コメント 1 件 リアクション 0 件 担当者 1 名 GitHub で見る

@TablewareBox がすでに取り組んでいます。

2026年7月31日 から。

評価

この issue はまだ評価されていません。

説明

上游功能与决策

入口基线

  • integration/workflow-task-runtime:01380449868ccf334f4da1a28c7f6f946fb540d1
  • 02D~02G 均已有 round trend,并以非 squash 方式并入上述基线。
  • 实现分支:migration/02h-task-input-preflight
  • 实现前冻结:docs/developer_guide/workflow_task_runtime_migration/rounds/02h-task-input-preflight-design.md

本轮范围

  1. 从 persisted Workflow.meta_data.unilab.input_contract 读取 ordered v1 Input Contract。
  2. 在任何 WorkflowTask / WorkflowNodeJob 写入前完成 closed unknown/missing/default/null/type/constraint preflight。
  3. 严格规范化 scalar、opaque JSON object、同质一维 list 及 nullable/default 语义,不做字符串、bool/int 等便利 coercion。
  4. 将完整 resolved input 写入 WorkflowTask.input,并随既有 workflow_snapshot 冻结合同与 binding。
  5. 以真实 target WorkflowHandleTemplate.uuid 解析 WorkflowNode.meta_data.unilab.input_bindings,把值写入 Task-scoped Job param;不得修改 persisted WorkflowNode.param。
  6. 定义可注入的 ResourceSlot resolver port 与 400/404/409 失败分类合同测试。

明确停止线

  • 本轮不实现 production Material lookup、Material/Site 持久权威、Task Reservation、Job Claim、Disposition 或软删除保护;这些属于后续 M1。
  • M1 完成前,任何非空 ResourceSlot / list[ResourceSlot] Task input 必须在 Task/Job 写入前 fail closed。
  • 不允许旧 Inventory、远程 Backend、字段名 heuristic、warning-only 或任意 fallback 使 Material-backed Task 进入执行。
  • 本轮不修改 Backend 或前端,也不扩展已冻结共享 wire DTO。

验收与 provenance

  • 严格按仓库 Workflow Migration Round Gate:fresh branch;恰好一个独立 test author 在独立 worktree 先提交 RED;保留测试提交 provenance;完整目标测试、全仓测试、Ruff/format/static 与 git diff --check;恰好一个未参与测试/实现的独立 reviewer 固定精确候选 SHA。
  • 覆盖 unknown/missing/default/null、strict scalar/object/list、约束、合同/binding closed shape、provider ambiguity、required Handle、debug-scope pruning、snapshot immutability 与零 partial write。
  • 记录 tested SHA、命令结果、test author、reviewer、finding disposition 和中文 trend;仅在全绿后非 squash 本地合并到 integration/workflow-task-runtime。
  • 未经明确授权不 push。
主要言語
Python
スター
181
フォーク
78
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

deepmodeling/Uni-Lab-OS のほかの issue

deepmodeling/Uni-Lab-OS の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。