Files
ArtPlayer/refactor/contract-coverage.md
T

74 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 契约、版本与测试证据维护
ENG-COVERAGE-01建立可校验的归属和证据索引,不把索引建成当作全项目兼容通过。
[生成的索引](contract-index.md)覆盖compatibility.md的12类契约及实际22包,共264行。
每行有责任任务;未整理的测试、精确支持范围、设备和发布包验证保持缺口。站点契约
适用性由SITE审查,不给文档站编造播放器构造器。逐成员复盘仍属各包契约及REVIEW-02;
宽泛API编号不是每个方法、参数、事件都已测过的证明。
## 数据与版本
`contract-policy.json`维护逐包逐类责任、版本依据及稳定测试ID。版本用JSON pointer
指向冻结清单,核对包名、版本和发布archive integrity;工作区单独标识。当前22个
工作区、11个发布对照点(Canvas代理新增两个),不由单个版本推断连续支持区间。
`contract-runs.json`引用归档报告及LF规范化SHA-256。报告保存当时定义、实际事件、
输入指纹、命令、HEAD和Node/OS。其他tasks.json历史JSON证据列为recorded-not-normalized,
保留原文及任务,不能按通过总数猜具体断言已执行。
本批逐条核对10个已有断言,涉及核心配置、注册、事件、存储及chapter归一化。五个
文件执行44项,仅精确匹配的10项作索引观察,其余34项不自动分配契约。255行尚未
录入测试ID,表示索引缺口,不表示这些功能都没有测试;历史事实仍查包记录及changes。
## 命令与CI
```sh
yarn test:contracts
yarn check:contracts --write
yarn check:contracts --report
```
执行器使用独立Node进程,固定文件列表且不接受过滤器;清除ARTPLAYER产物覆盖及
NODE_OPTIONS,避免把临时指定产物误记为当前源码。执行前后核对包源码/声明/manifest、
测试/脚本/夹具、工具锁及版本依据;输入变化拒绝结果。指纹是实际字节快照,换行或
相关脚本变化也会保守判旧。
Reporter记录Node实际pass/fail/summary的文件、名称、skip/todo及整体结果,不按数量
猜通过。接口依据[Node24官方文档](https://nodejs.org/docs/latest-v24.x/api/test.html#custom-reporters)。
测试ID须唯一对应源码中的Node test字面量调用;参数化、浏览器和类型报告仍保留
历史原始记录,后续增加各自解析器及反例,不能用当前适配器假装已经覆盖。
CI先执行观察,再检查索引。`refactor/.cache/ci/contracts-run.json`保存本轮结果,
`contracts.json`保存动态索引,随已有checks artifact收集。原始事件和stderr另存
`refactor/.cache/contracts/run-*/`。原有测试不减少;44项重复执行是链路验证,不算
新增44种功能覆盖。
## 状态
| 状态 | 含义 |
| --- | --- |
| tests-not-indexed | 尚无精确映射,仍有责任任务 |
| planned-not-observed | 映射存在,没有结构化执行报告 |
| partial-observations | 有具体结果,不代表整个契约类或包通过 |
| current-inputs | 定义及输入指纹与当前一致 |
| historical-inputs | 定义一致,源码/测试/工具等输入已变化 |
| historical-definition | 定义已变化,保留旧定义实际范围 |
| skipped / failed | 原始结果原样保留,不折算成通过 |
无效路径、重复ID、错误任务、错包/版本/integrity、无实际测试、报告被修改或结果
矛盾会失败。旧输入、未索引或缺环境明确列为缺口,不阻止无关迁移;对应发布由REL/
REVIEW把关。哈希和结构只能证明对应关系,不能证明断言充分,也不是证据数字签名。
## 后续AI维护
1. 修改前检查包的12行及历史报告,定位具体公开成员/参数/事件并核对适用性。
2. 登记稳定ID、精确文件/标题、命令、版本依据、断言范围和限制。ID不能改归其他包;
旧报告保留旧定义,不能重写历史消除差异。
3. 修改后执行test:contracts。归档时复制实际report.json到baselines/contract-observations,
将LF哈希加入runs;核对输入、skip/todo、整体失败及语义,不手写passed。
4. --write更新静态表,--report检查动态结果,再跑ci:check。done及独立commit遵循
commit-audit;不能拿旧CI总数批准新实现。
支持窗口仍需包契约、旧核心组合和环境证明。VAST的VPN例外不改变类型、生命周期或
其他包结论;当前没有据此新增skip。