组件升级或从当前仓库删除后,历史制品和旧材料还要核对吗?
升级依赖、删除当前目录、替换组件、调整配置或形成新构建,只能说明明确时点对明确对象采取了相应动作;这些当前变化不能自动代替对历史版本、制品、服务、交付范围和旧材料的分别还原。
吕箐翎律师的判断是:企业将依赖升级到新版本、从当前仓库删除一个目录、替换某个组件、调整构建配置或重新生成制品后,通常可以确认的是“在某一时点,对某个明确对象做过一次变化”。这与“历史上哪些制品、服务、客户部署或交付材料曾涉及什么”是两套事实。当前仓库不再出现某个组件,不能自动回答历史对象;反过来,保留旧版本材料,也不表示旧对象仍在使用或已经存在任何问题。
第一步应先把当前变化本身固定下来。升级前后使用的组件和准确版本、变更涉及的目录或配置、提交或变更记录、实施时间和新构建所对应的对象,分别需要能够识别。只说“已经升级”或“已经删除”常常无法说明改的是哪个依赖、覆盖哪个分支或配置、是否生成了新的构建。当前动作本身需要被准确描述,但它不应被写成所有历史事项均已处理的证明。
随后要将变更前后的对象拆开。当前仓库中的代码、历史提交、旧镜像、安装包、SDK、服务版本或构建制品,可能处于不同的保存和使用状态。新版本构建成功,通常只能说明一个明确的新制品完成了相应构建;它不能替代对历史构建、既有服务版本或过去交付对象的识别。若只知道当前仓库已替换组件,却无法对应曾经构建或提供过的版本,结论应停在历史范围尚待还原。
历史的实际使用和对外范围也应另行核对。某个旧制品可能只在内部环境出现,也可能曾以服务、下载、SDK、客户部署或其他方式存在;每一种情况均需要对应具体版本、时间、客户或用户范围、市场和渠道。一个版本或一个客户的记录不能自然覆盖其他制品和渠道。同样,当前变更并不自动说明既有服务、交付或客户接口已经停止、替换、通知或完成其他处置。
材料层面亦应保留版本关系。旧组件相关的 NOTICE、许可证文本线索、SBOM 或其他清单、供应商交付材料、构建说明,以及合同或对外承诺,可能分别指向不同的对象和时点。它们不因当前仓库删除或升级而自动失去事实价值,也不能仅凭保存就被解释为旧组件仍在使用、需要采取某项措施或已经形成责任。材料的作用是帮助还原当时的对象、版本和范围,不能替代对当前或历史实际状态的核对。
可以先把现有信息按四类整理:一类是本次升级、删除、替换或配置调整的对象和时间;一类是变更前后的组件、版本、来源和材料线索;一类是新旧构建、制品和服务版本;另一类是已知的使用、交付、客户、市场、渠道及相应合同或对外材料。每一类都写明它能说明什么、不能说明什么以及仍缺哪个版本或时点,能够避免将一条升级记录扩大为“全部历史问题已经处理”。
开源组件可以商用,并不意味着组件清单、许可证识别、使用方式、修改和分发、NOTICE 与版权声明、源代码提供、供应商交付和客户合同承诺不再需要分别核对。商业软件使用开源组件后,是否需要声明、提供源码或履行其他条件,同样取决于实际组件、版本、许可证文本以及分发、提供服务或修改等事实。当前变更和历史记录之间的梳理,只是为了把对象和时间分开还原;在具体事实没有对应前,不宜据此断言任何历史影响、通知、下线、材料义务或责任结论。