mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-13 07:46:17 -08:00
test(release): [REL-04] complete early rollback and mainline rehearsal
This commit is contained in:
1 parent
8dcbe9441e
commit
bf56d09178
9 files changed
+17211
-13
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,65 @@
|
||||
# REL-04 早期回退与主线同步验收
|
||||
|
||||
早期演练按原验收完成:隔离包能够回退,主线修复同步/中止流程可执行,正式每批
|
||||
仍须核对实际回退产物。本次没有改包版本、运行源码或远端工作流。
|
||||
|
||||
## 本次核验
|
||||
|
||||
构建来源为 `8dcbe9441eb06971a34785857f9cf47451047bb5`,Node 24.21.0、
|
||||
Yarn Classic 1.22.22,Windows。输入及报告哈希、各步检查、浏览器附件见
|
||||
[机器证据](../baselines/rollback-acceptance-validation.json)。
|
||||
|
||||
| 验证 | 结果与范围 |
|
||||
| --- | --- |
|
||||
| `yarn test:package` | 隔离快照正常构建/pack,36 个运行时检查;旧类型 5/5、精确类型 8/8 |
|
||||
| `yarn test:rollback` | 同一个仓库外消费者七步连续安装/回退,237 个检查;冻结锁、成员内容和新版残留校验通过 |
|
||||
| `yarn test:rollback:browser --workers=1` | upgrade-core、upgrade-plugin、rollback-plugin、rollback-core、rollback-all 五种状态各三引擎,15/15,零跳过/重试 |
|
||||
| `yarn test:rollback:iframe` | 旧包安装、新名升级、旧名/导入/锁恢复;实际 require/helper/legacy 和严格 TS 消费通过,别名不能替代应用迁移的负例通过 |
|
||||
| `yarn test:rollback:mainline` | 独立 Git 仓库中真实 JS→TS modify/delete 冲突,中止恢复、迁移修复、回归和来源归属通过;Git bundle 可验证 |
|
||||
| `yarn check:rollback-inventory` | 22 包清单同步;20 份完整历史 archive 的 integrity/manifest 通过,保留正式批次状态和缺口 |
|
||||
| `yarn test:rollback:pages:browser` | 重新校验恢复目录全部 538 文件,12 条精确 HTTP 路径及 6 项 UMD/ESM 播放通过 |
|
||||
| `node --test test/rollback-files.test.js refactor/scripts/release-ledger.test.mjs` | 34/34,含本次新增的三项最终候选回退证据负例 |
|
||||
|
||||
浏览器为 Playwright Chromium 153.0.8010.12、Firefox 155.0、WebKit 26.6,
|
||||
不是实体 Safari/iOS 设备。用例实际验证解码像素、播放、暂停、seek、切源、
|
||||
Chapter DOM 和销毁;不只检查页面加载。Pages 报告保留四次准确媒体路径的
|
||||
`request.aborted=true` / `ERR_STREAM_PREMATURE_CLOSE` 取消,服务失败为零;
|
||||
不宣称网络零中止。
|
||||
|
||||
Pages 本轮复用已恢复目录。原恢复报告的 source 是实施前 SHA,因此改用实际交付
|
||||
提交 `ddf3d6ccb` 核对六个恢复实现/清单文件,`git diff --quiet` 通过。完整
|
||||
破坏/恢复和首次失败证据仍在[原记录](2026-09-15-REL-04-pages-recovery.md),
|
||||
本次没有重复破坏/恢复。固定旧归档 SHA-256 为
|
||||
`692e190df068d584f460a7c29e5b0a9e565a0a793579ade532f36788731f5faf`。
|
||||
|
||||
实际仓库 `git fetch origin master` 成功后,主线仍为
|
||||
`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`,提交前差分为 299 ahead / 0 behind。
|
||||
没有需要同步的真实上游修复,合成冲突不冒充真实修复。
|
||||
|
||||
## 阶段责任与发布门槛
|
||||
|
||||
前面检查点将 Thumbnail 完整归档等正式逐包缺口留在 REL-04 doing。本次按任务原有
|
||||
“提前演练”与“正式每批再核对”两层验收明确责任,保留原验收文字:REL-04 早期
|
||||
演练完成;REL-02 显式依赖 REL-04,并在最终版本 pack 后逐包验证回退产物、应用
|
||||
导入及冻结锁。计划校验器保护这一依赖,REVIEW-03 仍须审查同一候选内容。
|
||||
|
||||
发布台账规则未放宽。新增负例在任务门槛全部完成的 fixture 下验证:没有 rollback
|
||||
报告、报告候选 integrity 不同、报告版本不同,均仍然拒绝准入。已有“完整历史
|
||||
归档缺失”负例继续通过。不能将这份早期报告登记为最终 next-major 候选报告。
|
||||
|
||||
- 20 份 archive 验证不等于 20 个包全部实际回退过;本次连续消费者演练覆盖核心/Chapter,另有 iframe 更名演练。
|
||||
- Thumbnail 工具原 npm tarball/完整回退产物缺失继续阻止该包;不把旧站点脚本当作完整 npm 包。
|
||||
- Pages 只证明本地恢复,真实远端恢复仍归 CI-04;其余实体设备/SDK 和三轮复盘未完成。
|
||||
- 所有包独立 next-major 版本仍由 REL-09 落实,本次早期候选保留当前工作区版本。
|
||||
|
||||
维护入口在 [rollback-rehearsal.md](../rollback-rehearsal.md) 和
|
||||
[release-ledger.md](../release-ledger.md)。不新增依赖或命令,不更改用户 API、
|
||||
类型、DOM/CSS、分发入口。撤销本提交只撤销本次验收/依赖说明和三个负例,
|
||||
已有回退实现及历史证据保留。未推送、部署、发布或修改 npm tag。
|
||||
|
||||
收尾检查:计划生成/只读检查、风险登记和 `git diff --check` 通过;内存中删除
|
||||
REL-02→REL-04 依赖被实际计划校验器拒绝,没有改写工作区。`yarn lint` 通过,
|
||||
34 项回退/台账测试再次通过。`yarn check:release-ledger` 正常退出,22 包仍全为
|
||||
blocked、`publicationAuthorized=false`;结构检查成功没有被解释成发布通过。
|
||||
一次误加 `--check` 的直接台账调用因未知参数退出 1,随后使用既有 Yarn 命令成功,
|
||||
未为该调用修改接口或忽略校验错误。
|
||||
+4
-4
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 266 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 43 / doing 22 / blocked 0 / done 201 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 43 / doing 21 / blocked 0 / done 202 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -432,9 +432,9 @@
|
||||
| REL-08 | workspace<br>提前建立逐包发布准入台账 | BASE-08, ENG-07 | 每批包/版本/源码/锁文件/工具/tarball integrity、必需测试/设备证据、限制和回退映射 | 受影响能力缺证据明确阻止对应批次;无关批次可独立准备,旧证据在候选内容变化后失效;站点采用真实构建/URL/资源验收,npm 分发依据历史核实,不从版本清单推断新增发布范围;关联 risks.json 和 third-party.json;受影响 bundle/worker/WASM/font/模型的来源与许可通知缺口必须有审查结论,未决项阻止对应批次 | H | done |
|
||||
| REL-01 | workspace<br>提前确定分包版本与差异方案 | REL-08, CORE-21, SITE-03, PKG-CHAPTER-04, PKG-AMBILIGHT-04, PKG-AUDIO-04, PKG-AUTO-THUMB-04, PKG-VTT-THUMB-04, PKG-HLS-04, PKG-DASH-04, PKG-MULTI-SUB-04, PKG-JASSUB-04, PKG-MASK-04, PKG-ASR-04, PKG-ADS-04, PKG-VAST-04, PKG-CAST-04, PKG-DPIP-04, PKG-CANVAS-04, PKG-IFRAME-04, PKG-TOOL-THUMB-04, PKG-DANMUKU-06, PKG-MB-08, PKG-FACTORY-01 | 每包版本/变更日志/依赖/类型差异方案和独立准入状态;按 version-policy.md 冻结各包下一 major(minor/patch 归零)并核实 registry 占用 | 所有包有方案和剩余门槛,未决项明确阻止相应发布;本步骤不声称已经可发布;全部包有 major 目标,版本冲突明确处理,独立准备任务同步 manifest/锁/依赖/日志;按 BASE-05 区分 21 库与文档站分发,不机械把文档站当库上传 npm | H | todo |
|
||||
| REL-09 | workspace<br>落实全包下一 major 版本及依赖元数据 | REL-01, DOC-11 | 22 包版本目标落实、适用锁文件/依赖范围/示例/变更日志同步,核实 registry 版本占用 | 版本与 policy 一致,旧核心支持保留;必要拆子任务各自提交,候选构建前完成,不执行 publish | H | todo |
|
||||
| REL-02 | workspace<br>生成候选 tarball 并验证新旧组合 | REL-01, CORE-22, ENG-07, REL-09 | 各候选本地 tarball/integrity 与新旧核心/插件消费者验证报告,外部门槛单独标注 | 隔离安装和可自动化组合通过;设备结论不伪造,最终发布绑定同一候选内容;在目标 major 版本确定后构建 pack,不在测试后改版本 | H | todo |
|
||||
| REL-02 | workspace<br>生成候选 tarball 并验证新旧组合 | REL-01, CORE-22, ENG-07, REL-09, REL-04 | 各候选本地 tarball/integrity 与新旧核心/插件消费者验证报告,外部门槛单独标注 | 隔离安装和可自动化组合通过;设备结论不伪造,最终发布绑定同一候选内容;在目标 major 版本确定后构建 pack,不在测试后改版本;逐包核验完整回退产物、实际候选版本/integrity、应用导入与冻结锁,重跑对应回退并保留报告;缺失历史分发不准入 | H | todo |
|
||||
| REL-03 | workspace<br>完成真机、外部 SDK 与压力验收 | REL-02, EX-03, SITE-06, MOD-05 | Safari/移动/PiP/Cast/IMA/模型/长播放完整报告 | 包集成与全项目真机/SDK/压力结论齐全才完成本汇总;独立批次先建立自己的完整门槛子任务 | H | todo |
|
||||
| REL-04 | workspace<br>提前演练回退与主线修复同步 | REL-08, ENG-07 | 分包旧版本/tag/依赖回退方案与 master 差异 | 隔离包演练可回退,主线修复同步流程可执行;正式每批再核对其实际回退产物 | H | doing |
|
||||
| REL-04 | workspace<br>提前演练回退与主线修复同步 | REL-08, ENG-07 | 分包旧版本/tag/依赖回退方案与 master 差异 | 隔离包演练可回退,主线修复同步流程可执行;正式每批再核对其实际回退产物 | H | done |
|
||||
| REL-05 | workspace<br>经授权发布候选并收集反馈 | REL-03, REL-04, REVIEW-03 | 候选 tag、完整产物 integrity、反馈与复现记录 | 实际发布授权/操作/版本可追溯;本计划不自动执行发布 | H | todo |
|
||||
| REL-06 | workspace<br>经授权分批正式发布 | REL-05 | 正式分包版本/tag/站点文档及兼容公告 | 候选验收通过,安装/浏览器复核和回退入口就绪;候选反馈修复须独立建任务并复验三轮受影响结论,正式内容与最终验证产物一致 | H | todo |
|
||||
| REL-07 | workspace<br>关闭重构里程碑并维护后续队列 | REL-06, ENG-LINT-01, ENG-LINT-02 | 最终任务/设计/证据归档和维护指南 | 全范围任务有结论、无未解释兼容缺口;遗留项有明确后续责任 | L | todo |
|
||||
@@ -664,7 +664,7 @@
|
||||
- MOD-DEV-01: [记录](changes/2026-09-14-MOD-DEV-01-dev-server.md) [记录](baselines/dev-server-validation.json)
|
||||
- MOD-03: [记录](changes/2026-09-14-MOD-03-slider-updates.md) [记录](baselines/slider-updates-validation.json) [记录](changes/2026-09-14-MOD-03-performance-acceptance.md) [记录](baselines/core-performance-validation.json)
|
||||
- REL-08: [记录](changes/2026-09-14-REL-08-release-ledger.md) [记录](baselines/release-ledger-validation.json) [记录](release-ledger.md) [记录](release-ledger.json)
|
||||
- REL-04: [记录](changes/2026-09-15-REL-04-consumer-checkpoint.md) [记录](rollback-rehearsal.md) [记录](baselines/rollback-consumer-validation.json) [记录](changes/2026-09-15-REL-04-workflows-checkpoint.md) [记录](rollback-inventory.md) [记录](baselines/rollback-workflows-validation.json) [记录](changes/2026-09-15-REL-04-pages-recovery.md) [记录](baselines/pages-recovery-validation.json)
|
||||
- REL-04: [记录](changes/2026-09-15-REL-04-consumer-checkpoint.md) [记录](rollback-rehearsal.md) [记录](baselines/rollback-consumer-validation.json) [记录](changes/2026-09-15-REL-04-workflows-checkpoint.md) [记录](rollback-inventory.md) [记录](baselines/rollback-workflows-validation.json) [记录](changes/2026-09-15-REL-04-pages-recovery.md) [记录](baselines/pages-recovery-validation.json) [记录](changes/2026-09-15-REL-04-acceptance.md) [记录](baselines/rollback-acceptance-validation.json)
|
||||
- PKG-FACTORY-01: [记录](baselines/factory-assignment-gaps.json) [记录](baselines/factory-compatibility-proposals.json) [记录](factory-compatibility-decision.md) [记录](changes/2026-09-12-PKG-FACTORY-01-decision.md) [记录](type-compatibility-policy.md) [记录](baselines/factory-compatibility-validation.json) [记录](changes/2026-09-13-PKG-FACTORY-01-compatible-types.md)
|
||||
- CORE-25: [记录](changes/2026-09-13-CORE-25-defaults-ssr.md) [记录](baselines/defaults-ssr-validation.json)
|
||||
- ENG-12: [记录](changes/2026-09-13-ENG-12-library-public.md) [记录](baselines/library-public-validation.json)
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# 进度与证据
|
||||
|
||||
## REL-04 完成早期回退与主线同步演练
|
||||
|
||||
当前 HEAD 隔离重建后,七步连续安装/回退 237 项、五种状态三浏览器实播 15/15、iframe 更名恢复和 Git 冲突同步/中止均通过。旧站点恢复实现未改,本轮复核全部 538 文件、12 条 HTTP 路径和 6 项播放;未重复破坏/恢复,未验证远端部署。发布门槛负例及文件检查 34/34。见[验收](changes/2026-09-15-REL-04-acceptance.md)和[证据](baselines/rollback-acceptance-validation.json)。
|
||||
|
||||
原验收仍区分早期演练与正式每批核对;REL-02 显式承接最终逐包回退并依赖 REL-04,缺失 Thumbnail 完整归档、错误候选报告和远端/设备缺口仍阻止准入。20 份历史 archive 验证不等于全部包已回退。状态 202/266 done、21 doing、43 todo;CI-01 完整矩阵保持,后续继续现有实施及验收缺口,未推送或发布。
|
||||
|
||||
## PKG-AUTO-THUMB-04 完成源码与公开类型迁移验收
|
||||
|
||||
八个自有模块均为严格 TS,当前包及真实核心接入 fixture 编译/lint 通过;当前 tarball 与 npm 旧包在仓库外完成 10 组 TS/模块解析、精确负例、导出身份和 Promise 注册检查,编辑器 24 个声明输出只读检查通过。运行字节未改,与任务12的189项源码、两份产物各82项及各36项浏览器证据指纹相同。见[记录](changes/2026-09-15-PKG-AUTO-THUMB-04-migration.md)及[证据](baselines/auto-thumbnail-migration-validation.json)。
|
||||
|
||||
@@ -32,12 +32,15 @@ REL-08 建立台账及机械校验,不代表任何包已经可以发布。唯
|
||||
- iframe明确关联旧发布名`artplayer-plugin-iframe`和改名记录。新候选仍核验现有
|
||||
workspace名`artplayer-tool-iframe`;改名范围、目标可用性和回退演练不能省略。
|
||||
- Thumbnail工具只有恢复的CDN/Git内容,旧tarball和完整归档缺失。历史分发门槛保持
|
||||
blocked,不能将缺失CSS/归档解释为从未发布;REL-04需要完整、已验证的回退方案。
|
||||
blocked,不能将缺失CSS/归档解释为从未发布;REL-02 的正式逐包候选验收需要完整、已验证的回退方案。
|
||||
- artplayer-vitepress按站点构建、URL、编辑器、资源和设备验收。列入版本策略不授权
|
||||
新增npm发布。站点候选是构建文件清单,不能绑定一个npm tarball冒充站点验收。
|
||||
|
||||
历史依据映射不联网刷新,也不代替现有冻结归档验证器、registry检查或回退演练。
|
||||
每包都有rollback.basis和strategy;严格准入另要求候选绑定的rollback执行报告。
|
||||
REL-04 完成的是提前演练。REL-02 直接依赖它,并负责正式每批实际候选的逐包回退;
|
||||
REVIEW-03 复核相同候选内容。早期任务完成不会补齐缺失历史归档或报告,候选版本、
|
||||
integrity、输入指纹不一致的 rollback 报告仍被拒绝,远端恢复仍受 CI-04 约束。
|
||||
|
||||
## 候选绑定
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 回退演练与维护入口
|
||||
|
||||
REL-04 仍在进行中。本页记录已经可重跑的核心/Chapter 演练,不代表所有包或最终大版本候选已可回退。
|
||||
REL-04 的早期演练已完成,覆盖核心/Chapter 连续安装、iframe 更名、主线冲突同步和旧站点本地恢复。正式候选逐包回退由 REL-02 承接,并受发布台账及 REVIEW-03 约束;本页不代表所有包或最终大版本候选已可回退。
|
||||
|
||||
## 已实现的安装演练
|
||||
|
||||
@@ -111,7 +111,16 @@ HEAD...origin/master` 及修复 SHA,再审查每个上游 diff。找出迁移
|
||||
|
||||
文档站的固定旧快照已通过[完整本地恢复](changes/2026-09-15-REL-04-pages-recovery.md),
|
||||
包括全部 538 个文件、12 条 HTTP 路径和六项播放检查。Thumbnail 的完整旧 npm
|
||||
tarball 缺失、文档站的真实远端部署恢复继续受原有发布门槛约束;REL-04 保持 doing,
|
||||
继续准备 Thumbnail 的完整回退替代方案。正式每批需要
|
||||
重新绑定实际 next-major 候选及旧包产物并重跑对应验证。
|
||||
tarball 缺失、文档站的真实远端部署恢复继续受原有发布门槛约束。
|
||||
REL-02 在 REL-04 早期演练完成后,仍须逐包准备完整回退产物,并重新绑定实际
|
||||
next-major 候选及旧包产物、应用导入和冻结锁,重跑对应验证。Thumbnail 归档
|
||||
缺口继续阻止该包准入,远端恢复仍由 CI-04 验证;不以本地演练替代。
|
||||
不执行 npm tag 修改、unpublish、推送或部署,不把本演练当作这些动作的授权。
|
||||
|
||||
2026-09-15 的[早期验收](changes/2026-09-15-REL-04-acceptance.md)在
|
||||
`8dcbe9441eb06971a34785857f9cf47451047bb5` 重新构建并执行七步连续安装、
|
||||
五种状态的三浏览器播放、iframe 和主线同步演练。旧站点恢复实现与实际交付提交
|
||||
`ddf3d6ccb` 一致,本轮重新核验已恢复的 538 文件及 HTTP/播放;未再次破坏和恢复
|
||||
站点。新增发布负例确认:即使早期任务完成,缺少候选回退报告、候选版本错误或
|
||||
tarball 不一致仍拒绝准入。[机器证据](baselines/rollback-acceptance-validation.json)
|
||||
保留输入身份、报告哈希、验证范围与取消请求;早期报告不能直接登记为最终发布证据。
|
||||
@@ -81,6 +81,7 @@ for (const device of ['PKG-CAST-05', 'PKG-VAST-05', 'PKG-DPIP-05', 'PKG-MASK-05'
|
||||
requireAncestor('REVIEW-02', device)
|
||||
}
|
||||
requireAncestor('REL-02', 'REL-09')
|
||||
requireAncestor('REL-02', 'REL-04')
|
||||
requireAncestor('PKG-AUTO-THUMB-05', 'PKG-AUTO-THUMB-03')
|
||||
for (const release of ['REL-05', 'REL-06']) {
|
||||
for (const gate of ['REVIEW-01', 'REVIEW-02', 'REVIEW-03', 'CI-04', 'REL-03', 'REL-04', 'REL-09']) {
|
||||
|
||||
@@ -29,6 +29,9 @@ for (const [name, mutate, kind] of [
|
||||
['wrong artifact version', input => input.candidate.version = '9.0.0', 'candidate-version'],
|
||||
['archive bytes differ', input => input.candidate.errors.push('digest differs'), 'candidate'],
|
||||
['missing rollback archive', input => input.history = { verified: false, reason: 'not recovered' }, 'distribution-history'],
|
||||
['completed rehearsal without candidate rollback', input => delete input.evidence.rollback, 'evidence:rollback'],
|
||||
['early rehearsal tarball used for final rollback', input => input.evidence.rollback.candidateIntegrity = 'early-rehearsal-tarball', 'evidence:rollback'],
|
||||
['early rehearsal version used for final rollback', input => input.evidence.rollback.version = '1.1.0', 'evidence:rollback'],
|
||||
['open affected risk', input => input.risks.push({ id: 'CAST-01', status: 'open' }), 'risk'],
|
||||
['unfinished review', input => input.taskGaps.push('REVIEW-03'), 'task'],
|
||||
['missing format report', input => delete input.evidence.runtime, 'evidence:runtime'],
|
||||
|
||||
+7
-4
@@ -4868,12 +4868,13 @@
|
||||
"REL-01",
|
||||
"CORE-22",
|
||||
"ENG-07",
|
||||
"REL-09"
|
||||
"REL-09",
|
||||
"REL-04"
|
||||
],
|
||||
"status": "todo",
|
||||
"risk": "H",
|
||||
"deliverable": "各候选本地 tarball/integrity 与新旧核心/插件消费者验证报告,外部门槛单独标注",
|
||||
"acceptance": "隔离安装和可自动化组合通过;设备结论不伪造,最终发布绑定同一候选内容;在目标 major 版本确定后构建 pack,不在测试后改版本",
|
||||
"acceptance": "隔离安装和可自动化组合通过;设备结论不伪造,最终发布绑定同一候选内容;在目标 major 版本确定后构建 pack,不在测试后改版本;逐包核验完整回退产物、实际候选版本/integrity、应用导入与冻结锁,重跑对应回退并保留报告;缺失历史分发不准入",
|
||||
"evidence": []
|
||||
},
|
||||
{
|
||||
@@ -4906,7 +4907,7 @@
|
||||
"REL-08",
|
||||
"ENG-07"
|
||||
],
|
||||
"status": "doing",
|
||||
"status": "done",
|
||||
"risk": "H",
|
||||
"deliverable": "分包旧版本/tag/依赖回退方案与 master 差异",
|
||||
"acceptance": "隔离包演练可回退,主线修复同步流程可执行;正式每批再核对其实际回退产物",
|
||||
@@ -4918,7 +4919,9 @@
|
||||
"rollback-inventory.md",
|
||||
"baselines/rollback-workflows-validation.json",
|
||||
"changes/2026-09-15-REL-04-pages-recovery.md",
|
||||
"baselines/pages-recovery-validation.json"
|
||||
"baselines/pages-recovery-validation.json",
|
||||
"changes/2026-09-15-REL-04-acceptance.md",
|
||||
"baselines/rollback-acceptance-validation.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user