实现侧: - 上下文:任务范围拆分为 范围校验/范围授权;索引按可发现口径重建、索引新鲜度改对称差;依赖校验统一快照漂移说明。 - 知识方法:方法与材料读取口径统一;超限方法材料按可选省略,核对路径不再二次计费;删除无合同的读时重算。 - 任务运行:新增 context.usage/tool.denied 事件类型;连接池常驻并在装配生命周期内开关;调用结算与核对分列。 - 效果评测/审校修订/交付连载/作者经验/作品规划:凭据冻结、标定消费、导出补证、事实引文核对等收尾修复。 - 资源加载:能力正文不再夹带索引用的导航注记(该注记此前进入角色与技能的模型提示)。 - 元数据:受保护骨架与代码保护属性对齐;字段校验与内置结构口径同步。 - 基础设施:环境预检进入装配生命周期;数据库连接运行期字段不参与相等比较;索引指纹归一化 jsonb 浮点。 - 删除被替代实现:7 份旧提示词模板与空壳 资料来源 读取器。 用例侧: - 用例身份与导航元信息迁移;夹具补生命周期、同库暴露与模板封存; - 本轮定向修复:方法材料省略、事实引文、迁移回执、额度与暂停用例、慢用例超时预算等。
134 lines
5.4 KiB
Python
134 lines
5.4 KiB
Python
"""上下文快照身份与输入哈希的确定性;离线纯函数,不连库。
|
||
|
||
哈希期望覆盖键序无关与逐类输入变化,身份期望按 uuid5 惯例稳定派生。
|
||
"""
|
||
|
||
import pytest
|
||
|
||
from muse.上下文.接口 import (
|
||
快照身份,
|
||
快照载荷,
|
||
文本哈希,
|
||
材料装配结果,
|
||
来源绑定,
|
||
输入哈希,
|
||
)
|
||
|
||
范围 = {
|
||
"work_id": "work-a",
|
||
"as_of": 2,
|
||
"source_ids": ["doc-1", "plan-1"],
|
||
"documents": [
|
||
{
|
||
"chapter_id": "ch-1",
|
||
"branch_id": "main",
|
||
"revision": 1,
|
||
"document_id": "doc-1",
|
||
"document_hash": "hash-1",
|
||
"position": 1,
|
||
}
|
||
],
|
||
"directory_revision": 3,
|
||
"authorized_by": "author-a",
|
||
"run_purpose": "production",
|
||
"content_purpose": "generation",
|
||
"target_plan": {
|
||
"chapter_id": "ch-3",
|
||
"plan_id": "plan-1",
|
||
"revision": 1,
|
||
"content_hash": "plan-hash",
|
||
},
|
||
}
|
||
|
||
装配 = 材料装配结果(
|
||
入选来源=("目标章细纲", "历史:ch-1"),
|
||
文本="邮差在旧码头确认收信人。\n\n林深停在码头。",
|
||
字节数=59, # 36 + 分隔符 2 + 21,均按 UTF-8 字节
|
||
省略=(("事实:lin-shen", "BUDGET_EXCEEDED"),),
|
||
)
|
||
绑定 = (
|
||
来源绑定("plan-1", "1", "plan-hash", "visible-text-codepoints/v1:production:generation"),
|
||
来源绑定("doc-1", "1", "hash-1", "visible-text-codepoints/v1:production:generation"),
|
||
)
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-ctx-snapshot-hash-stable",
|
||
environment="离线纯函数",
|
||
given="同一冻结载荷以不同键序构造",
|
||
when="派生快照输入哈希与身份",
|
||
then="同载荷同哈希同身份;键序差异不改变结果",
|
||
contract="docs/系统架构/新版设计/模块设计/B09-上下文.md",
|
||
)
|
||
def test_同载荷同哈希且键序无关__b09301() -> None:
|
||
载荷 = 快照载荷("task-1", 范围, 装配, 绑定)
|
||
assert 输入哈希(载荷) == 输入哈希(快照载荷("task-1", 范围, 装配, 绑定))
|
||
# 键序无关:把范围与载荷键按相反顺序重建,哈希不变
|
||
逆序范围 = {键: 范围[键] for 键 in reversed(list(范围))}
|
||
逆序载荷 = {键: 载荷[键] for 键 in reversed(list(载荷))}
|
||
逆序装配节 = {键: 载荷["装配"][键] for 键 in reversed(list(载荷["装配"]))}
|
||
逆序载荷["装配"] = 逆序装配节
|
||
逆序范围["target_plan"] = {
|
||
键: 范围["target_plan"][键] for 键 in reversed(list(范围["target_plan"]))
|
||
}
|
||
assert 输入哈希(逆序载荷) == 输入哈希(载荷)
|
||
assert 输入哈希(快照载荷("task-1", 逆序范围, 装配, 绑定)) == 输入哈希(载荷)
|
||
# 同一任务同一输入派生同一身份;文本哈希按 UTF-8 字节稳定
|
||
哈希 = 输入哈希(载荷)
|
||
assert 快照身份("task-1", 哈希) == 快照身份("task-1", 哈希)
|
||
assert 快照身份("task-1", 哈希) != 快照身份("task-2", 哈希)
|
||
assert 文本哈希(装配.文本) == 文本哈希("邮差在旧码头确认收信人。\n\n林深停在码头。")
|
||
|
||
|
||
@pytest.mark.case_id(
|
||
"NC-ctx-snapshot-hash-sensitive",
|
||
environment="离线纯函数",
|
||
given="范围、装配入选、省略、来源版本或文本任一变化的载荷",
|
||
when="派生快照输入哈希与身份",
|
||
then="任一变化产生新哈希与新身份,不复用旧身份",
|
||
contract="docs/系统架构/新版设计/模块设计/B09-上下文.md",
|
||
)
|
||
def test_任一输入变化产生新哈希与新身份__b09302() -> None:
|
||
基准 = 输入哈希(快照载荷("task-1", 范围, 装配, 绑定))
|
||
基准身份 = 快照身份("task-1", 基准)
|
||
|
||
变化装配省略 = 材料装配结果(
|
||
入选来源=装配.入选来源,
|
||
文本=装配.文本,
|
||
字节数=装配.字节数,
|
||
省略=(("事实:lin-shen", "BUDGET_EXCEEDED"), ("事实:dock-yard", "EMPTY")),
|
||
)
|
||
变化字节与文本 = 材料装配结果(
|
||
入选来源=("目标章细纲",), 文本="邮差在旧码头确认收信人。", 字节数=36, 省略=装配.省略
|
||
)
|
||
变化文本同字节 = 材料装配结果(
|
||
入选来源=装配.入选来源,
|
||
文本="邮差在新码头确认收信人。\n\n林深停在码头。",
|
||
字节数=装配.字节数,
|
||
省略=装配.省略,
|
||
)
|
||
变化绑定 = (来源绑定("plan-1", "2", "plan-hash-2", 绑定[0].投影版本), 绑定[1])
|
||
变化投影版本 = (
|
||
来源绑定(
|
||
绑定[0].来源ID,
|
||
绑定[0].数据版本,
|
||
绑定[0].结构哈希,
|
||
"visible-text-codepoints/v1:evaluation:generation",
|
||
),
|
||
绑定[1],
|
||
)
|
||
变化范围 = dict(范围, directory_revision=4)
|
||
|
||
变化哈希集 = {
|
||
"省略": 输入哈希(快照载荷("task-1", 范围, 变化装配省略, 绑定)),
|
||
"字节数": 输入哈希(快照载荷("task-1", 范围, 变化字节与文本, 绑定)),
|
||
"文本同字节": 输入哈希(快照载荷("task-1", 范围, 变化文本同字节, 绑定)),
|
||
"来源版本": 输入哈希(快照载荷("task-1", 范围, 装配, 变化绑定)),
|
||
"投影版本": 输入哈希(快照载荷("task-1", 范围, 装配, 变化投影版本)),
|
||
"目录版本": 输入哈希(快照载荷("task-1", 变化范围, 装配, 绑定)),
|
||
}
|
||
assert 基准 not in 变化哈希集.values()
|
||
assert len(set(变化哈希集.values())) == len(变化哈希集)
|
||
for 哈希 in 变化哈希集.values():
|
||
assert 快照身份("task-1", 哈希) != 基准身份
|