结论是有条件的:如果交付物在合同约定的验收口径下确实通过,但在真实业务流程里无法承担原有工作,那么缺口通常不在“有没有交付”,而在验收标准与使用条件之间的错位。此时不应直接宣布对方违约,也不应默默自己补做,而应先把缺口拆成可验证的类别,再决定哪些部分退出、哪些部分保留。
能被验收但不能被使用,最常见的原因有三类。第一类是环境缺口:交付物在测试环境可用,进入生产环境后因权限、依赖、配置或数据量差异失效。第二类是定义缺口:验收清单只写了“页面可打开”“脚本可运行”,却没有定义真实使用中的并发、账号角色、异常输入或回滚要求。第三类是知识缺口:东西本身能跑,但没有人知道它在什么条件下会坏、由谁改、改完如何验证。
这三类缺口的证据不同。环境缺口要看日志、配置差异和复现步骤;定义缺口要回到原需求文档和验收记录;知识缺口要看交接材料是否包含操作路径、失败信号和恢复步骤。把它们混在一起谈,对方很容易用“验收已通过”回应,而你真正想解决的使用问题仍然悬空。
假设某旧系统的维护交付物是一组数据同步脚本和一份操作说明。验收时,脚本在测试数据上跑通,说明文档也齐全,于是签字通过。但进入真实使用后,运营人员发现每次同步前必须手动清理一个临时目录,而说明里没有写;不清理时脚本不报错,只是同步结果缺一部分。这个例子中,验收动作没有错,错在验收场景没有覆盖“连续运行”和“异常残留”这两个使用条件。
这个假设说明:缺口界定不能只问“交付物是否和清单一致”,还要问“清单是否覆盖了使用成立的必要条件”。如果原合同或需求里明确写了连续运行和异常恢复要求,而交付物没做到,缺口责任在交付方;如果原需求从未提过这些条件,缺口更可能是双方共同的定义遗漏,处理方式应偏向补定义而不是追责。
有一个反例会让“先界定缺口”的做法失效:当旧系统或旧合作关系已经无法提供稳定的复现环境时。比如原服务器已下线、原账号已回收、原数据已被覆盖,此时你无法证明交付物在真实条件下是否可用,也无法区分是交付缺陷还是后续变更导致。继续争论缺口归属,成本会高于直接评估保留价值。
在这种情况下,更实际的做法是把问题从“谁没交付好”转为“哪些部分还值得保留”。可以保留的通常是:仍然可读的配置说明、独立于旧环境的静态内容、可迁移的数据结构定义。应当退出的通常是:依赖已消失环境的脚本、无法验证的定时任务、只有原维护方才能解释的加密或混淆逻辑。
建议先选一个真实但不影响主流程的使用场景,按下面顺序执行一次:
这个动作的结果会直接影响下一步:如果缺口集中在环境差异,优先补配置和交接说明,保留原有交付物;如果缺口集中在定义遗漏,先补一份使用条件清单,再决定是否要求返工;如果缺口无法复现或环境已不可恢复,就停止追责,转入退出与保留评估。无论走哪条路,都不要用“验收已通过”或“反正不能用”作为唯一依据,那会让真正需要保留的部分一起被丢掉。