evorule diff —— 对比两个 fact log(按 FactId 对齐,非 HashSet)
§P0-4 修复
原实现用 HashSet::difference,会丢失重复行且无序。
新实现按数组下标(FactId 顺序)对齐,逐 fact 比对:
[~] 两边都有但内容不同
[-] 只在 A
[+] 只在 B
- 全相同输出
(identical)
§为什么不用 LCS
Fact 没有自然顺序的“行“概念,LCS 会错位匹配丢失 id 不一致信息。
按 FactId 对齐是因果链语义的正确做法。