编译命令范围、逆操作、来源次数与台架容量
所有者任务:G7-2、G7-3 与命令授权规模。compile-authority-scope 起于 7bda7e42,已合入主线共享床门禁及新 SKILL(a0405e02)和 adoc 育苗修复(835ae0b7)。本任务不改这些门禁或来源绑定规则;没有真实系统、设备、付费模型、环境配置或钥匙串操作。
范围:contracts/src 的产品/知识/运行/上下文合约及其生成 schema;hub/ports.ts、knowledge/produce.ts 和根规则测试;runs/engine 的冻结规则传递、摘要与求值上下文;FAMX 产品声明、README、manifest;case-compile 的结构读取、授权、计划核对、生成及核验消费、profile、slots、SKILL、说明、示例和合成样例/测试;相关验收 28。没有修改其他包发布内容。
实现
- runtime-contract@2 的 effects[id] 可用 command_scope 声明 /commands 树路径前缀闭集。按完整路径段比较,pool 不覆盖 poolish;commands 可省略,同时存在时取交集,显式空数组拒绝。未声明任一种授权不放设备 CLI。原计划命令解析仍完整消费锁定语法,不把前缀当命令;原参数类型、角色、地址、bed_member 和效果预算均保留,清理调用也计预算。
- 产品 command-policy@1 声明 read_only 和 inverse_rules,规则随知识组成保存,从所锁组成快照到运行,再传给检查。后来换版的产品包不能改变旧运行的规则。同一目录内容可有不同组成规则,测试核对旧组成仍可还原旧规则。非本地知识后端可通过该组成的 RootInfo 头声明同一冻结元数据;本地组成存在时以其记录为准。
- FAMX 声明 show 路径为只读,其他路径按已声明的 P/no P 映射核逆。模型用 steps 末尾连续的 cleanup:true 段写逆操作;按执行顺序反转,同设备、完整路径、签名与前导参数逐一比较。未指定 leading_parameters 时,逆签名须唯一接受一种前导参数数量;歧义记未知并请求产品作者补声明。两条命令都先由同一原有语法解析,不去 no 前缀补认命令。引用符号只按语法解析,保留可避免同名子命令冲突的参数引用。
- G7-2:冻结用例片段按完整行解析为作者命令,定义身份为来源根/路径/签名;参数值不作为必须照抄的文字,但继续受类型与授权约束。同一身份的作者次数与主体步骤次数比较,重复命令不因身份集合去重而消失,清理段不充数。缺失时反驳“可以改参数,不可以删命令”,data.obligations 留 required_count/planned_count/missing_count;修正计划后重核,历史结果不改。
- G7-3:只读 profile 中的显式零基 ordinal,不从对象名捞数字。设备映射不得超冻结同类型清单容量或预检设备数;主机映射如有 ordinal 也按自身类型容量核对。越界在投影前整份拒绝,说明“框架取不到那台设备,整卷不跑”,没有部分条目或工作簿;生成器也守预检序号上界。
- 目录查询只增加作者实际片段的完整行;计划中的清理命令本身证明逆路径和签名存在,不为规则展开整棵目录,也不为每条范围成员发新合约。继续使用原有有界路径选择器及预算;已满足结果中的目录回执携带用于来源义务的所选证据,生成/独立核验/派发共用边界。
发布与迁移
主线 case-compile 已为 3.4.0,本任务按较大版本加一到 3.4.1,生成器身份同步。FAMX 从 1.7.25 升到 1.7.26。两包均重签,当前合成样例由 samples-v2.ts 联动 authority-samples.ts 重生成,不编辑历史 legacy-samples 或冻结旧工作簿。新增四组正反样例,发布校验为 28 个 author 样例。旧根缺命令规则时设备计划明确未知;需升级 FAMX 并重新育苗,不能改模型槽位伪造规则。
合成验证
覆盖范围交集/空集/路径边界、万条合成命令树中新增路径但合约不变、缺逆操作/错参数/错序/清理段充数、重复作者次数、参数变化、逆参数歧义及引用、同类型容量与整卷拒绝、冻结规则在换版后不变、原有目录查询上限,以及完整编译-生成-核验-派发验收。首轮全套 985/987,剩余两项是新增样例的配对和计数;补齐四组配对样例并按实数更新断言后,发布与验收 20/20。最终完整编译包、FAMX、验收 28、根规则与目录选择测试合计 995/995,零失败、零跳过;typecheck 通过;132 个生成合约文件一致;两包清单检查通过。测试并发最多 2,所有端点与输入为合成。