实现侧: - 上下文:任务范围拆分为 范围校验/范围授权;索引按可发现口径重建、索引新鲜度改对称差;依赖校验统一快照漂移说明。 - 知识方法:方法与材料读取口径统一;超限方法材料按可选省略,核对路径不再二次计费;删除无合同的读时重算。 - 任务运行:新增 context.usage/tool.denied 事件类型;连接池常驻并在装配生命周期内开关;调用结算与核对分列。 - 效果评测/审校修订/交付连载/作者经验/作品规划:凭据冻结、标定消费、导出补证、事实引文核对等收尾修复。 - 资源加载:能力正文不再夹带索引用的导航注记(该注记此前进入角色与技能的模型提示)。 - 元数据:受保护骨架与代码保护属性对齐;字段校验与内置结构口径同步。 - 基础设施:环境预检进入装配生命周期;数据库连接运行期字段不参与相等比较;索引指纹归一化 jsonb 浮点。 - 删除被替代实现:7 份旧提示词模板与空壳 资料来源 读取器。 用例侧: - 用例身份与导航元信息迁移;夹具补生命周期、同库暴露与模板封存; - 本轮定向修复:方法材料省略、事实引文、迁移回执、额度与暂停用例、慢用例超时预算等。
72 lines
3.5 KiB
Python
72 lines
3.5 KiB
Python
"""同源拆书互斥:排他范围内的并发拆解被拒;任务终态释放范围后可再次发起。"""
|
|
|
|
import pytest
|
|
|
|
from muse.共享.错误 import Muse错误
|
|
|
|
pytestmark = pytest.mark.数据库
|
|
|
|
|
|
@pytest.mark.case_id(
|
|
"NC-w18-18b01a",
|
|
environment="真实隔离 PG",
|
|
given="确定性输入或隔离数据库",
|
|
when="同源并发拆解被作用域互斥阻塞",
|
|
then=["行为可复验", "失败与歧义如实呈现"],
|
|
contract="docs/系统架构/新版设计/模块设计/B03-资料研究.md",
|
|
)
|
|
def test_同源并发拆解被作用域互斥阻塞__18b01a(研究环境):
|
|
工具 = 研究环境
|
|
来源 = 工具.导入来源(
|
|
"样章:风起", "第1回 风起\n内容甲。\n第2回 云涌\n内容乙。\n第3回 雨落\n内容丙。\n"
|
|
)
|
|
第一个 = 工具.发起(来源["source_id"])
|
|
第二个 = 工具.发起(来源["source_id"])
|
|
assert 第二个["task_id"] != 第一个["task_id"]
|
|
# 互斥在领取层强制:持有第一任务的首步租约时,同源第二任务无可领取步骤。
|
|
能力 = 工具.环境["处理器能力"]
|
|
运行 = 工具.装配.任务运行
|
|
首领 = 运行.领取步骤("worker", 能力)
|
|
assert 首领 is not None and 首领.任务ID == 第一个["task_id"], "应先领取第一任务"
|
|
assert 运行.领取步骤("worker2", 能力) is None, "同源第二任务必须被作用域互斥阻塞"
|
|
运行.执行一步(首领) # 探针领取的首步(切窗核对,不调用模型)执行放行
|
|
# 第一任务完成(合成宿主按剧本应答)后范围释放,第二任务可执行到完成。
|
|
for 实体 in (
|
|
{"name": "林深", "type": "人物", "evidence": ["风起"]},
|
|
{"name": "青云镇", "type": "地点", "evidence": ["云涌"]},
|
|
):
|
|
工具.剧本.append(工具.分析输出([实体]))
|
|
快照 = 工具.跑任务(第一个["task_id"])
|
|
assert 快照.状态.value == "completed", f"首个拆书应完成:{快照.状态}"
|
|
for 实体 in (
|
|
{"name": "林深", "type": "人物", "evidence": ["风起"]},
|
|
{"name": "青云镇", "type": "地点", "evidence": ["云涌"]},
|
|
):
|
|
工具.剧本.append(工具.分析输出([实体]))
|
|
第二快照 = 工具.跑任务(第二个["task_id"])
|
|
assert 第二快照.状态.value == "completed", f"范围释放后第二任务应完成:{第二快照.状态}"
|
|
|
|
|
|
@pytest.mark.case_id(
|
|
"NC-w18-18b02b",
|
|
environment="真实隔离 PG",
|
|
given="确定性输入或隔离数据库",
|
|
when="失败任务释放范围可重建",
|
|
then=["行为可复验", "失败与歧义如实呈现"],
|
|
contract="docs/系统架构/新版设计/模块设计/B03-资料研究.md",
|
|
)
|
|
def test_失败任务释放范围可重建__18b02b(研究环境):
|
|
工具 = 研究环境
|
|
来源 = 工具.导入来源(
|
|
"样章:雨落", "第1回 风起\n内容甲。\n第2回 云涌\n内容乙。\n第3回 雨落\n内容丙。\n"
|
|
)
|
|
# 输出合同不满足:调用已结算但终态无效 → 步骤失败、任务失败(无未知调用)。
|
|
工具.剧本.append({"类型": "文本", "文本": {"chapters": []}})
|
|
任务 = 工具.发起(来源["source_id"])
|
|
with pytest.raises((Muse错误, RuntimeError, OSError)):
|
|
工具.跑任务(任务["task_id"])
|
|
快照 = 工具.装配.任务运行.读取任务(任务["task_id"])
|
|
assert 快照.状态.value == "failed"
|
|
重建 = 工具.发起(来源["source_id"])
|
|
assert 重建["task_id"] != 任务["task_id"], "失败任务应已释放排他范围,允许重建"
|