# 全包变更影响映射 ENG-IMPACT-01是ENG-09的影响分析子项。`yarn check:impact --report`已接入`ci:check`, 报告写入`refactor/.cache/ci/impact.json`,由现有CI日志artifact收集。它解释哪些包和 检查受影响,不通过路径过滤减少当前CI任务。 ## 模型与校验 `impact-policy.json`显式登记22个包、核心的全部生态验证消费者、站点消费者、跨插件 关系、示例及共享文件。包新增/删除/改名必须同步维护映射,不能默默忽略。 `impact-model.mjs`读取当前manifest并用固定semver解析内部依赖和npm别名的版本 范围;不匹配当前workspace版本时失败。再用当前TypeScript解析src/types/public的 静态import/export/require/import-type及相对跨包引用。未知workspace导入或解析 失败明确报错;计算型动态import使变更保守扩大到全包,并列出需审查的源文件。 关系分开记录: - manifest及静态导入是实际可观察依赖,沿消费者方向传播。 - 核心到全部21个生态包是**验证契约**,不是声称所有包都有运行时import。 核心API/DOM/类型/媒体行为改变需要全生态检查。 - 库包到站点是文档、示例及编辑器声明消费关系。 - danmuku到danmuku-mask来自共享`$danmuku` DOM,源码和组合示例作为证据; 不能只靠package.json发现它。 普通插件源码改动影响自身和站点;修改danmuku还影响mask;核心、共享脚本/类型、 锁文件和根工具配置影响全包。compiled/uncompiled路径映射回源码所属包。 示例的初始所有权来自冻结包清单,SITE-01仍负责遗留示例/历史thumbnail来源的完整 复盘;未分类路径始终扩大到全包,报告`reviewRequired`,不把未知路径当作无影响。 ## Git范围 本地默认包含HEAD之后的暂存、未暂存、删除和未跟踪文件;忽略目录遵循Git规则。 `yarn check:impact --base --report`另外包含该基准与HEAD的merge-base 之后变化。禁用rename折叠,两端路径都会出现,因此跨包移动不会漏掉原包。 GitHub PR读取事件里的base SHA,push读取before SHA;初次push的全零SHA、手动/ 复用入口缺少基准、事件基准对象不可用时检查整个跟踪文件集合,并明确记录fallback。 显式传错`--base`报错,不自行猜测。事件内容只用作结构化数据,不拼接shell命令。 报告保存HEAD、实际base/merge-base、是否有工作区变化、文件/策略/manifest/锁指纹。 ## CI门槛与能力边界 九项必需调用不能从策略中漏掉:`ci:check`、`ci:build`、消费者 `test:package`、 播放作业 `test:package --browser`、`test:browser:source`、`test:browser:installed`、 `test:coverage`、`test:performance`、`test:ecosystem-types`。两个浏览器范围只传当前矩阵的 `--project`, 并使用固定 `!cancelled()` 条件在普通失败后继续采证;其余门槛保持无条件步骤。 固定 yaml 2.8.2 解析实际 workflow,检查对应 job 必需执行、没有 continue-on-error、 没有路径过滤,且 checkout 有完整历史。命令被移走、改成 echo 或更换执行条件会 失败。命令名还必须存在于根 scripts;策略单独记录已审查的参数和条件。 必需命令必须是步骤首个非空、非注释行,只接受独立命令或当前显式bash的固定tee日志 格式;其他shell包装语法需审查后扩展。任意条件包装、`|| true`、非bash的tee和YAML布尔 `if: false`均有拒绝反例;checkout本身也不能带条件或允许失败。这是受限结构校验, 不是通用shell解释器,也不证明脚本内部的测试语义。 现有CI继续运行全部这些检查;影响报告没有输出允许跳过任务的开关。报告同时区分: - `test:package`当前实际只有core/chapter;脚本读取其names数组核对策略,变更范围 后必须更新声明。其余19个库包完整安装消费仍缺证据,不能因识别为affected而过关。 `--browser` 已单独准备二十包安装产物及明确列出的浏览器子集,不扩张这个通用 Node 消费者列表,也不等于二十包全部类型/设备/SDK 组合通过。Audio/HLS 的额外 五模式安装类型验证由 CI-TYPES-01 接入,报告单列 additionalTypeScope;其余包 的专用类型检查仍保留,不能因此关闭十九包完整安装消费的缺口。 CI-TYPES-02 将四包共享检查和十七个专用类型命令汇总为必需的 `test:ecosystem-types`,显式覆盖二十一库包;准备失败拒绝消费旧产物, 任一包失败使总命令失败。类型结果单独记录,不扩张上述通用 Node 验收范围。 - 覆盖率范围从实际coverage-policy读取;浏览器/性能命令运行已有用例,不代表所有 包、真实设备、远程SDK已验收。 - ENG-COVERAGE-01继续把契约、支持版本、测试ID、候选/报告及任务逐项连接; 本映射不是发布准入或对测试语义有效性的证明。 ## 文件与验证 - `impact-model.mjs`:包模型、关系传播、策略和workflow约束。 - `impact.mjs`:Git范围/事件数据、报告及CLI。 - `impact.test.mjs`:实际22包关系、隔离包配置的反例、真实Git改名/删除/暂存/未跟踪、 PR/push及范围fallback、workflow漏检反例。 新增直接开发依赖yaml2.8.2和semver7.7.4,分别用于解析真实YAML和可靠的版本范围 校验,均固定为当前工具树已有版本。依赖和锁由Yarn维护;没有新增运行时包依赖。 运行`yarn test:baseline`或定向Node测试,再执行`yarn ci:check`。远端GitHub实际运行 仍由CI-04验收,本次本地检查不等于远端成功。