Plane 物化合同
AutoDev 开发已改用 Linear + Symphony。原 Workspace 的 Plane 候选 resolver/applier、
项目绑定与工作流声明退出当前入口,旧 Issue 和来源证据保留历史,不再从这里发布
AutoDev 任务。本页保留 Plane 产品的源合同与未启用投影说明;机器合同仍为
write_enabled: false,不表示存在可执行 materializer。
映射
| 资产 | Plane 对象 | 幂等身份 |
|---|---|---|
| 领域 | 可选 Module Group | 仅展示名称,不作幂等键 |
| Feature / 交付版本 | Module | external_source=autodev.asset + Asset ID |
M | Project Milestone | 同上 |
WP | Work Item | 同上 |
| 可执行任务 | Sub-work-item | 同上 |
depends_on | blocks/blocked_by | 两端 Asset ID |
| 时间窗口 | Cycle | 同上;只表示时间盒 |
Plane 当前 Module、Milestone、Work Item 和 Cycle 支持外部身份。Module Group 没有相同字段,因此 materializer 不得根据 Docusaurus 分类名自动创建、匹配或更新 Module Group。
开发包仍是 scope、设计、acceptance、dependency、verification 和 rollback 的事实源;Plane 只增加 assignee、state、cycle、实时进展和评论。投影程序读取 WP 时必须保留 Asset ID 和 canonical URL,使执行者可以从 Work Item 回到准确合同;Docusaurus 不读取 Plane state 来改变 readiness。
更新白名单
未来 materializer 只能更新由资产合同拥有的标题、描述中的 Asset 元数据、目标日期、模块/里程碑关联和声明依赖。负责人、业务状态、评论、人工标签、验收结论和非本工具创建的内容默认不可改写。
冲突与删除
- 同一
external_source/external_id命中多个活动对象时 fail closed。 - 原生对象已有不同人工内容时生成冲突报告,不自动覆盖。
- 资产退役只允许归档投影对象,不执行硬删除。
depends_on循环或跨 Project 引用必须拒绝。
Dry-run 与批准
资产目录泛化投影若后续实现,必须先输出稳定排序的 dry-run,列出 create/update/archive/noop/conflict 和字段差异;apply 绑定同一 digest。执行授权由 owning Project Workspace 的当前规则确定,本合同不添加独立批准关卡。物化不隐含开启 Issue 自动化。
未启用的泛化投影机器合同见 catalog/plane-materialization.json 和 schemas/plane-materialization.schema.json。
历史 Issue 候选 v3
以下为已退役 Workspace 工具的来源合同,不是当前 AutoDev 发布入口。历史候选为
autodev.plane-materialization-candidate/v3,解析计划为 v3;不保留旧 v2 运行兼容。kind 为 issue/task/bug,普通 issue 的 type_selector 为 null,Task/Bug 使用当前类型选择器。work_item_types 可为空,选择器不再包含 Epic capability 或 hierarchy_parent_of。
parent_key 可引用候选中任意合法工作项,不要求 Epic 父项;自引用、环和不存在目标拒绝。依赖关系同样保留明确方向和环检查。expected_counts 为 modules/issues/tasks/bugs/relations,其中 issues 只计 kind=issue。
apply_policy 使用 enable_automation=false 和 live_execution_truth=symphony_runtime_api;物化只建立工作,不自动委托。来源仍绑定完整 Git commit、路径、SHA-256 和精确候选 identity。已批准旧候选不得自动沿用批准,新源迁移必须重新计算摘要并审阅;重要计划数据和既有对象关系不能丢失。