用途:在 GRACE 4 流程中,把已批准的 GraceChangeSpec(可附设计上下文)转化为 GraceChangePlan,即 plan.xml,用于定义变更的断言、作用域、任务与验证门禁。
主要能力与规则:默认依据 references/change-plan-template.xml 生成草稿,除非用户明确批准完成后的计划。计划需包含匹配的 C-* 包装、明确意图、非空的机器可校验基线断言与目标断言、显式的持久作用域与观测写入作用域,以及唯一且无环的 T-NNN 任务。每个任务含一个 Title、一个 DependsOn(以逗号分隔的 T-NNN 前驱,可为空)、非空验收标准与非空验证命令;依赖须构成有向无环图,不得把独立任务线性串成链。无写入的作用域必须用显式 <None /> 标记,写“none”等文字无效。
命令阶段:current 仅用于观测写入开始前的活动基线预检;baseline 为编辑前门禁,target 为编辑后证据,final 为 grace-execute 拥有的外层应用/归档门禁。MustPassCommand 只放测试、类型检查、构建、格式或包检查等项目证据,不得放 grace lint、grace status 等 GRACE 生命周期命令;写入后不得使用 --assertions current。命令须在声明的 budgetSeconds 内完成(缺省用全局 --command-timeout),应声明实测预算。整套命令若耗时主要由容器、数据库、浏览器、模拟器等底层启动决定,应放入验收层而非门禁,且不得同时声明整套命令与其已重跑的文件级命令。
限制:已批准计划不可变——若 plan.xml 已存在且状态为 approved,须停止写入,不得就地刷新基线/目标断言、作用域或任务,应新建 C-* 包并将旧包标记为 superseded 并给出替换引用。规划期间不得实现代码、静默批准计划、覆盖已批准计划或改动当前图/验证产物;语义锚点须为规范 XML 标签而非属性。不支持的 scope glob 语法应拒绝而非猜测,并提示过期状态与共存警告。