祁明那天下午没有立刻回。
陆衍给他发完那条消息——说明混排情况,附上工具输出的错误记录,请他提供两份文件的原始件——大约等了三个小时,才收到祁明的回复:「我去查一下这两份从哪里来的,明天给你。」
陆衍把手机放下,在本子上写了一行:「混排=两份原始件被合并。为什么合并?」
这个问题他没有发给祁明,只是写在本子上。
第二天早上九点二十,祁明的助理发来两个附件:HK-SUPP-002.pdf,HK-SUPP-003.pdf。
陆衍把两个文件转发给卫越,附了一句:「昨天那份混排的原始件,分开跑一遍。」
卫越回了一个「好」,大约四十分钟后发来结果。
HK-SUPP-002,格式一,字段映射完整,预处理通过,进入矛盾扫描。
HK-SUPP-003,格式三,自动解析不支持,生成辅助核查清单,共十七项字段,交律所人工填写。
陆衍看了一遍,格式那边的问题算是处理完了。他准备给祁明发一份简短说明,顺便把辅助清单模板附过去。
然后卫越又发了一条消息:「你先看一下这个。」
是一张截图。
HK-SUPP-002的矛盾扫描结果里,有一条黄色标注——中置信度——内容是:「第七条第二款引用「附件D·第三条」,当前文件中附件D包含三条内容:(一)服务范围、(二)费用结构、(三)保密义务。」
下面是卫越加的注释:「HK-SUPP-003里也有附件D,你去看一下第三条写的什么。」

陆衍打开辅助核查清单,翻到附件D部分。
格式三的辅助清单是空的——字段列出来了,值需要律所人工填写。陆衍让卫越把HK-SUPP-003的文件直接发过来,他自己翻开来看。
HK-SUPP-003里,附件D也有三条。第一条,服务范围,大致相同。第二条,费用结构,金额不一样,单位从港币换成了人民币,但汇率换算下来也不对齐。第三条——
第三条的内容不是「保密义务」。
HK-SUPP-003附件D第三条写的是:「争议解决及适用法律」。
陆衍把两份文件的附件D第三条并排看了一遍。
HK-SUPP-002里,「附件D·第三条」是保密义务。
HK-SUPP-003里,「附件D·第三条」是争议解决及适用法律。
同一个「附件D」,在两份协议里被定义了两次,第三条的内容完全不同。
陆衍发消息给卫越:「你先把这两处截图发给我,我来发祁明。」
卫越把两张截图发来:左边HK-SUPP-002附件D的第三条,右边HK-SUPP-003附件D的第三条,标了红框,第三条内容的差异一目了然。
陆衍想了一下措辞。
不是「发现矛盾」,也不是「这里有问题」。措辞要按工具边界原则来,出证据,不判断性质,不判断影响。

他在微信里写:「两份原始件均含附件D,两处附件D第三条内容不同:HK-SUPP-002附件D第三条为保密义务,HK-SUPP-003附件D第三条为争议解决及适用法律。两处截图见附件,供核实。」
发完,他把截图也附上。
祁明的回复来得很快,比陆衍预期的快。
「这个我们要查一下,」祁明写,「你们是怎么发现的?」
陆衍把这条消息看了两遍。
以前霍建新问过「这算严重吗」,陆衍那时候划了一条线:性质判断在律所,工具只出证据。那是一条往外推的线。
祁明这次问的不一样。他不是在问「这件事影响大不大」,他在问「你们怎么发现这件事的」——这是一条往里探的线。
陆衍回了一条:「字段比对时,两份文件都有一个叫附件D的字段块,比对下来第三条的内容描述不同,工具标了出来。」
「你们跨文件比对?」祁明问。
「这次是因为原始件来自同一个合并件,」陆衍回,「所以两份都进了一遍流程,比对的时候碰巧发现了。」
他没有说「碰巧」是刻意的,也没有说这是一个新功能。就是如实写了是怎么一回事。
祁明隔了大约一分钟,回了一个字:「好。」
然后又发了一条:「附件D这两处我们今天内部先看一下,如果有情况会联系你们。」

那天下午,陆衍没有等到祁明的后续消息。
他把两张截图和那条记录打开来再看了一遍。保密义务和争议解决,这两件事本身没有直接关系,但放在同一个「附件D第三条」的位置上,就成了一个问题——如果将来有人援引「附件D第三条」,会援引哪一份?
这不是他的问题。工具出了,性质在律所那边。
但他在本子上写了一行:「两文件字段交叉比对——不是原本设计的功能,但跑出来了。」
他把这行字看了一会儿。
以前每一个项目,工具是在一份文件内部跑的——日期对比日期,标准编号对比标准编号,同一份文件里找前后矛盾。这是设计时就划定的边界。
但这次两份文件同时进了流程,是因为原始件从一个混排的PDF里分拆出来,两份都属于同一个项目,工具跑完之后结果摆在一起,卫越看了一眼,发现了附件D的差异。
严格来说这不是「跨文件比对」,是「两份文件恰好都进了流程,结果都在眼前」。
但结果是一样的——一个同一个字段名下、两处内容不同的发现,出来了。
陆衍给卫越发了消息:「这次附件D那个,你是怎么注意到的?」
卫越回:「跑002的时候,第七条引用了附件D第三条,我顺手也翻了003的附件D,看了一眼第三条,不一样。」
「顺手,」陆衍重复了一下这个词,「所以这次是人看出来的,不是工具比出来的。」
「对,」卫越说,「工具没有设计跨文件比对这个功能。」

「但是如果工具把两份文件里所有标了「附件D」的字段块都列出来,放在一起,我们两秒就能看出来不一样。」
卫越没有立刻回。
大约两分钟后,他发来一条:「这个可以加,不复杂,但需要定义「什么算同名字段块」。」
陆衍想了一下,回:「下一个项目再说,这个项目先按原来的方式走。今天这个是手工发现的,没关系。」
「好,」卫越说,「那我先把003的辅助清单整理好,发祁明。」
辅助清单傍晚发出去了。
陆衍那天晚上没有等到祁明那边的进一步反馈。他把本子翻到那行字——「两文件字段交叉比对——不是原本设计的功能,但跑出来了」——在下面再加了一行:
「单文件内部检查是基础。多文件交叉比对,是下一个层级。」
他没有把这行字发给任何人。
窗外的光已经暗下来了,路灯亮了一排。他把本子合上,放在桌角。
祁明那边的附件D问题,他们今天内部会看。这件事从工具的角度来说,已经走完了该走的部分——发现,出证据,交还律所。后续是律所和目标公司的事。
他想到祁明发的那条「你们是怎么发现的」。
发现的方法本身,比发现什么,更难解释清楚。