Skip to content

test/docs: property-based 往返测试 + 有损清单 + CI + 口径清理 - #8

Merged
H2Rhan merged 3 commits into
masterfrom
test/property-ci
Sep 9, 2026
Merged

H2Rhan merged 3 commits into
masterfrom
test/property-ci

Conversation

@H2Rhan

@H2Rhan H2Rhan commented Sep 9, 2026

Copy link
Copy Markdown
Owner

基于 #7 stacking,合并顺序:#6 → #7 → 本 PR。

变更

  • TestPropertyRoundTrip(问题清单组5#10):stdlib 实现、固定种子可复现(零三方依赖,守住仓库约束),440 个随机用例断言四条性质——断点恒在 [3,4] / 任何未知顶层字段必进降级记录 / 工具参数跨协议守恒 / thinking signature 往返守恒。v1.4 抓到的参数丢失 bug 正是这类性质。单测 40 → 44 项全过
  • docs/lossy-fields.md(问题清单主线交付物):从三个 adapter 实码推导的有损字段清单(块级 / 参数级 / usage 归一级),每行可在代码里找到 dropped.add / record_unknown 调用点;含两处诚实标注的盲区(工具定义内部字段无 dropped 记录、多模态/流式未覆盖)
  • GitHub Actions CI:.github/workflows/test.yml,Python 3.11/3.12/3.13 矩阵跑单测 + 冒烟 + dry-run(零依赖);README 加 badge 行
  • README 修悬空引用:原指向方案 v3.1 已不存在的节号(§3.6.1 在最新方案中已并入方法论节),改指 experiment-results.md 第七节
  • 口径清理:实验文档成本一律改为相对倍数(7.35× / 10.2× / 7.9×),全库 markdown 已无绝对金额;ir-schema 移除签字栏,冻结约束改为「双方确认 + 变更记录」

验证

44 项单测 + 11 项端到端冒烟全过(Python 3.13 本地实测)

- ir-schema v0.2:删除已证伪的 20-block 引用,补「变更记录」(冻结=L0/L1 语义层,修订必配回归测试)
- capability-matrix v0.2:状态列按实码校准(prev_id/断点布局已实现;SSE 更正为整读透传);补手动断点 vs 自动缓存决策记录
- experiment-results:补「第〇节 · 证伪条件预登记」(实验编号=假设编号,回链问题清单;证实 8 / 证伪 4 / 反转 1)
- 新增 docs/LIMITATIONS.md:12 项未闭环四要素 + 结论隔离证明
- 新增 CHANGELOG.md:按日期演进(v0 冻结 → v1.2 → 实验交付 → 覆盖补全)
- README:状态表加证据列、SSE 措辞更正、新增与 TencentDB-Agent-Memory 的关系
- REVIEW:缺口表指向 LIMITATIONS;run_experiments 注释同步证伪结论
- 验证:25 单测 + 11 冒烟 + dry-run 全过(Python 3.13)
第三轮自查(评审前逐文件复查 adapter 跨协议路径):
- 严重:跨协议工具参数丢失——OpenAI 系 arguments 为 JSON 字符串,to_ir 不解析
  导致 tool_input 恒 None,转 Anthropic 渲染成空 input {}(反向同样退化成 "{}")
  → base.parse_arguments() + from_ir 双路兜底(TestCrossProtocolToolArgs 4 项)
- 严重:thinking signature / redacted_thinking 在 to_ir 被丢,多轮思考链下一轮必 400
  → 进 extra 保留并原样渲染(TestThinkingSignature 2 项)

能力补齐(闭环问题清单组4#3、原 LIMITATIONS #2/#3):
- src/state/idmap.py:会话级工具 ID 双向持久映射(canonical ↔ 各协议外部形式,
  SQLite 持久、铸造稳定、会话间隔离);网关 to_ir 后归一、from_ir 前翻译、
  落库前翻回 canonical(TestToolIdMap 5 项,含 A→C→A 还原/并发分叉不串号)
- base.assistant_from_upstream():状态层重放保留 thinking(signature/redacted)
  与 tool_use(含解析后 tool_input),取代只取文本的 _assistant_message
  (TestAssistantFromUpstream 4 项)

文档:REVIEW 补第三批、LIMITATIONS #2/#3 标已修复、CHANGELOG v1.4、
README/能力矩阵状态同步。测试 25 → 40 项全过 + 11 项冒烟全过(Python 3.13)
- TestPropertyRoundTrip(组5#10):stdlib 固定种子,440 随机用例断言四性质
  (断点[3,4] / 未知字段必降级 / 工具参数守恒 / signature 往返守恒),测试 40→44
- docs/lossy-fields.md:从 adapter 实码推导的有损清单(块级/参数级/usage 级)+ 两处盲区标注
- .github/workflows/test.yml:py3.11/3.12/3.13 矩阵(单测+冒烟+dry-run,零依赖)+ README badge
- README 修悬空引用(方案 v3.1 节号已不存在 → 实验文档方法学节)
- 口径:成本一律改相对倍数(7.35×/10.2×/7.9×),全库 md 已无绝对金额
- ir-schema 移除签字栏:冻结约束改为「双方确认 + 变更记录」
- 验证:44 单测 + 11 冒烟全过(Python 3.13)
@H2Rhan
H2Rhan merged commit 4cb3856 into master Sep 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant