律师函一共十二页。
首页抬头来自上海一家知识产权律师事务所,委托人是海拓云科。后面依次附着刻度云公开页面截图、两张功能对照表,以及一份标着“仅供权利主张使用”的模块说明。
海拓这一次没有再写笼统的“产品相近”。
函里点出了“事件归并”和“变更锚点”,认为它们分别对应海拓内部的`EventBucket`与`ChangeAnchor`设计;又列出事件编号、变更锚点和责任状态等字段,称周衡在职期间接触过相关框架,刻度云上线时间又紧邻离职,已经构成高度可疑的接触与相似。
要求也写得很直接。
五个工作日内停止刻度云相关模块服务,封存并同意提交完整源代码与开发设备镜像以供比对,披露所有客户和收入,停止向零售行业提供有关功能,并就损失先行赔偿六十万元。逾期未答复,海拓将保留申请行为保全和提起诉讼的权利。
丁卓读到“交付完整源代码”时,手里的矿泉水瓶被捏出一声轻响。
“他们凭一封函,就要把整个仓库拿走?”
“拿不走。”叶澄把纸页翻回第一张,“但也不能当垃圾邮件。”
她下午赶到工作室,先看的不是海拓写了多重的措辞,而是送达记录。纸质件由快递签收,电子件同时发到周衡和工作室登记邮箱,附件哈希值、发送时间与纸质目录能对应。海拓显然已经把上一次宽泛告知里缺的形式补齐。
“函不是裁定,也不是停服命令。”叶澄说,“对方要求什么,和你现在必须做什么,是两回事。第一步先保存它原来的样子,别在原文件上批注。”
周衡将邮件原始格式连同完整邮件头导出,纸质件逐页扫描,签收袋也单独装好。丁卓把刻度云后台的自动清理任务暂停到合规保留模式,只延长争议相关开发记录的保存期限,不扩大收集用户数据。
现有客户内容不属于海拓,也不能因为要自证清白就全部拷进证据包。
叶澄随后问:“函到之前,你们对仓库做过什么?”
“嘉禾那笔四万元里程碑验收后,只合并了断网缓存的有序回传修复。今天上午没有碰产品代码。每次提交都有签名,远端没有强推。”
“有没有重写历史、合并提交、删除旧分支?”
“个人开发早期清过一次测试分支,在海拓第一次告知之前。收到告知并做完证据保全以后没有。”
周衡没有把答案说成“从来没有”。能被日志推翻的一句绝对话,比一次正常的开发整理更危险。
叶澄在记录上写明时间:“把第一次保全前后的边界分开。已经发生的事实照写,不补成完美履历。”
丁卓问:“产品要不要先关?”
“停服会不会影响现有客户?”
“嘉禾刚验收的场景许可要继续履行。普通用户可以导出,只读宽限也在跑。刻度云本身没有远程控制生产的权限,停掉接收会让事件链断开。”
“那就不因一封单方函件自行停服。”叶澄说,“但暂停发布涉及争议模块的大版本,现有服务保持,所有修改留痕。给客户的是连续性说明,不是把争议细节群发出去。”
周衡给罗致远打电话,只说明海拓已提出知识产权主张,目前没有法院禁令,嘉禾的限定场景许可与服务不会擅自中断;若状态发生变化,会按合同提前书面通知并提供数据导出。
罗致远沉默两秒:“采购那边一定会问,源码是不是海拓的。”
“现有开发记录支持独立完成。我不会让你靠我的一句保证承担采购风险,正式回复和第三方核验方案出来后发你。”
“行。别把嘉禾日志拿去证明你的代码。”
“不会。”
电话结束后,叶澄看了周衡一眼。罗致远最后那句话不是不信任,而是客户必须守住自己的数据边界。能把这条边界说出来,反而比一句“我挺你”更有用。
当晚,他们把律师函拆成了一张争点表。
丁卓的名字没有出现在正文里,却被藏在“其他参与开发人员”一项中。海拓要求周衡披露所有贡献者、合作方式和付款记录,理由是需要判断是否有人将在职成果带到刻度云。
“这项是冲我来的。”丁卓说。