实现侧: - 上下文:任务范围拆分为 范围校验/范围授权;索引按可发现口径重建、索引新鲜度改对称差;依赖校验统一快照漂移说明。 - 知识方法:方法与材料读取口径统一;超限方法材料按可选省略,核对路径不再二次计费;删除无合同的读时重算。 - 任务运行:新增 context.usage/tool.denied 事件类型;连接池常驻并在装配生命周期内开关;调用结算与核对分列。 - 效果评测/审校修订/交付连载/作者经验/作品规划:凭据冻结、标定消费、导出补证、事实引文核对等收尾修复。 - 资源加载:能力正文不再夹带索引用的导航注记(该注记此前进入角色与技能的模型提示)。 - 元数据:受保护骨架与代码保护属性对齐;字段校验与内置结构口径同步。 - 基础设施:环境预检进入装配生命周期;数据库连接运行期字段不参与相等比较;索引指纹归一化 jsonb 浮点。 - 删除被替代实现:7 份旧提示词模板与空壳 资料来源 读取器。 用例侧: - 用例身份与导航元信息迁移;夹具补生命周期、同库暴露与模板封存; - 本轮定向修复:方法材料省略、事实引文、迁移回执、额度与暂停用例、慢用例超时预算等。
74 lines
2.7 KiB
Python
74 lines
2.7 KiB
Python
"""流程发布前的处理器身份、版本与保护路径合同。"""
|
|
|
|
import pytest
|
|
|
|
from muse.任务运行.接口 import 步骤处理器, 步骤结果, 步骤计划
|
|
from muse.编排.接口 import 流程定义, 流程校验错误, 流程登记
|
|
|
|
|
|
def 构造登记() -> 流程登记:
|
|
登记 = 流程登记()
|
|
登记.登记处理器(
|
|
步骤处理器("guard", "1", lambda _: 步骤结果({}), "v1", "v1", 保护职责="来源校验")
|
|
)
|
|
登记.登记处理器(步骤处理器("work", "1", lambda _: 步骤结果({}), "v1", "v1"))
|
|
登记.登记类型("example", 必需保护=("来源校验",))
|
|
return 登记
|
|
|
|
|
|
@pytest.mark.case_id(
|
|
"NC-flow-protected-path",
|
|
environment="离线",
|
|
given="已登记代码处理器和流程类型保护",
|
|
when="冻结未知处理器或绕行流程",
|
|
then=["拒绝非法流程,允许保护完整的依赖链"],
|
|
contract="docs/系统架构/新版设计/接口契约/任务工具与事件.md",
|
|
)
|
|
def test_未知处理器与保护绕行拒绝__a50001() -> None:
|
|
登记 = 构造登记()
|
|
with pytest.raises(流程校验错误):
|
|
登记.冻结(流程定义("example", "1", (步骤计划("s1", "/tmp/script.py", "1"),)))
|
|
with pytest.raises(流程校验错误, match="保护"):
|
|
登记.冻结(
|
|
流程定义(
|
|
"example", "1", (步骤计划("guard", "guard", "1"), 步骤计划("work", "work", "1"))
|
|
)
|
|
)
|
|
计划 = 登记.冻结(
|
|
流程定义(
|
|
"example",
|
|
"1",
|
|
(步骤计划("guard", "guard", "1"), 步骤计划("work", "work", "1", ("guard",))),
|
|
)
|
|
)
|
|
assert 计划.流程ID == "example"
|
|
|
|
|
|
@pytest.mark.case_id(
|
|
"NC-flow-slot-contract",
|
|
environment="离线",
|
|
given="版本化步骤与输入输出合同",
|
|
when="冻结有环或不兼容依赖",
|
|
then=["拒绝依赖环及不兼容合同"],
|
|
contract="docs/系统架构/新版设计/接口契约/任务工具与事件.md",
|
|
)
|
|
def test_流程依赖环与不兼容槽位拒绝__a50002() -> None:
|
|
登记 = 构造登记()
|
|
with pytest.raises(流程校验错误, match="环"):
|
|
登记.冻结(
|
|
流程定义(
|
|
"example",
|
|
"1",
|
|
(步骤计划("g", "guard", "1", ("w",)), 步骤计划("w", "work", "1", ("g",))),
|
|
)
|
|
)
|
|
登记.登记处理器(步骤处理器("incompatible", "1", lambda _: 步骤结果({}), "v2", "v2"))
|
|
with pytest.raises(流程校验错误, match="合同"):
|
|
登记.冻结(
|
|
流程定义(
|
|
"example",
|
|
"1",
|
|
(步骤计划("g", "guard", "1"), 步骤计划("w", "incompatible", "1", ("g",))),
|
|
)
|
|
)
|