Skip to content

feat: add auditable trace cleanup and artifact verification - #10

Open
Qiyuanqiii wants to merge 4 commits into
Tencent:mainfrom
Qiyuanqiii:feat/trace-structure-cleanup
Open

feat: add auditable trace cleanup and artifact verification#10
Qiyuanqiii wants to merge 4 commits into
Tencent:mainfrom
Qiyuanqiii:feat/trace-structure-cleanup

Conversation

@Qiyuanqiii

@Qiyuanqiii Qiyuanqiii commented Jul 1, 2026

Copy link
Copy Markdown

目标

完成 issue #5,为 VulnGym trace 提供保守、可配置、可审计且可重复验证的结构清理流程,覆盖重复节点、同文件边界异常、整数/区间行号和跨文件调用链保护。

Closes #5

对比结论与差异化

巡查了 issue #5 当前关联的 14 个实现。#30 的产物重建不变量较完整,#58/#67 对“源码行号不等于运行时顺序”的处理更保守;本 PR 吸收这些可验证思路,但保留自己的实现和交付结构:

  • 对整数和 "start-end" 区间执行完整边界分类,重叠区间始终进入人工复核。
  • 分别统计 entry/critical 两侧的跨文件比较,但从不跨文件按行号排序或删除。
  • 支持 safedrop-allnone 三种重复节点策略和独立的顺序修复策略。
  • verify=1 默认只记录不修改;7 个重复候选均因 desc 冲突被安全保留。
  • 默认仅删除两个明确早于入口的 verify=0 节点;critical 之后节点继续保留复核。
  • 新增只包含真实改动的紧凑 diff,以及按 entry/event 聚合的复核队列。
  • 旧数据中的描述文本只以 SHA-256 指纹出现在 diff 中,不复制历史乱码。
  • 新增独立产物验证器,逐字节重建 JSONL、JSON、Markdown、CSV,并校验输入/输出 SHA-256。
  • 验证输出 trace 只能是原 trace 的有序子序列,确保没有新增或重排节点。

本 PR 不重复 #50 已提供的 plan -> decision -> apply 人工决策闭环;两者定位互补:#10 负责结构扫描、保守修复和生成产物可信度,#50 负责人工决策的防过期应用。

默认策略

  • mode=check:只扫描和报告。
  • mode=fix:默认仅允许修改 verify=0
  • duplicate_fix_policy=safe:仅在不会丢失冲突 desc 时合并重复节点。
  • order_fix_policy=entry-before-only:只删除完全早于同文件入口的节点。
  • critical 之后节点、边界重叠和 desc 冲突全部保留人工复核。
  • 跨文件节点保持原始顺序,仅计数,不做行号比较。

全量扫描结果

  • entries:408
  • trace nodes:2,073
  • duplicate candidates:7,全部存在 desc 冲突并保留
  • wholly before entry:139;boundary overlap:7
  • wholly after critical:237;boundary overlap:34
  • cross-file comparisons skipped:907 + 751 = 1,658
  • changed entries:2(entry-00103entry-00320
  • manual-review entries:161
  • compact applied diff:2 行
  • aggregated review queue:255 行
  • output schema errors:0

交付文件

  • scripts/trace_cleanup.py:扫描、策略判断、修复和产物生成
  • scripts/verify_trace_cleanup_artifacts.py:独立的防过期与不变量验证器
  • tests/test_trace_cleanup.py:清理策略单元测试
  • tests/test_trace_cleanup_artifacts.py:产物、哈希、有序子序列和优先样本测试
  • data/entries.trace_fixed.jsonl:408 行修复后数据
  • reports/trace_fix_diff.csv:2 条真实改动的结构化前后值及描述哈希
  • reports/trace_review_queue.csv:255 条按 entry/event 聚合的复核项
  • reports/trace_fix_report.json / .md:统计、策略和 SHA-256
  • reports/trace_cleanup_acceptance_matrix.md:issue 【2026犀牛鸟】清理 VulnGym 调用链顺序异常和重复节点 #5 验收映射
  • scripts/README_trace_cleanup.md:使用方式、策略和限制

详细的逐节点 JSON 日志仍可由脚本生成,但不提交 700 KB 以上的冗长文件。

验证

python scripts/trace_cleanup.py --mode fix
python -m unittest discover -s tests
python scripts/verify_trace_cleanup_artifacts.py

验证结果:

  • Ran 14 testsOK
  • 408 行及 entry 顺序保持不变
  • 所有非 trace 字段保持不变
  • 输出 trace 有序子序列不变量通过
  • 2 条紧凑 diff 与实际修改完全对应
  • 所有已提交产物及 SHA-256 可重复生成
  • 报告文本未发现 replacement character、连续 ???? 或常见 mojibake 标记

验证截图:
image

image

@Qiyuanqiii Qiyuanqiii changed the title feat: add trace structure cleanup script and artifacts feat: add auditable trace cleanup and artifact verification Jul 26, 2026
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.

【2026犀牛鸟】清理 VulnGym 调用链顺序异常和重复节点

1 participant