Files
ArtPlayer/refactor/changes/2026-09-11-CORE-22-core-acceptance.md
T

75 lines
9.0 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.
# CORE-22 核心阶段完整验收
首轮起点为 ENG-08 提交 4a9a26d4;ENG-11 提交 5efc7f76 后恢复核心验收。下文保留实施过程,最终阶段结论见文末。核心阶段不等于全项目或 npm 发布验收。
首先处理 ENG-PERF-01/02:确认核心体积增长的源码/构建来源,保留旧版与候选真实字节和相同格式;对间歇构造耗时继续同环境配对取证。不得通过提高阈值、删除兼容功能或忽略采样差异让报告通过。
随后复查核心公开差异、运行时与声明消费者、资源和完整安装包浏览器矩阵。旧核心/新插件及新核心/旧插件的生态范围、外部 SDK 和物理设备缺口,必须明确链接对应集成/REL 任务,不能把 chapter 试点结果当作全部插件通过。
若归因发现需要独立实施的模块修正,按 execution-gates.md 拆分任务和下游依赖,逐项验收后独立提交。当前尚无优化收益或兼容总验收结论。
## 首轮体积归因
可复用的正式构建分析从本任务拆为 ENG-11,下游依赖已更新;在该前置交付前本任务暂回 todo,保留初步工作,不重复宣称工具实现。当前三格式产物没有变化。详见 [归因说明](../build-analysis.md) 和 [完整数据](../baselines/bundle-attribution.json)。
同工具链下,起点源码构建现代包 gzip 为 35703 字节,当前为 58374 字节;主要增量仍来自实现而非换编译工具。已提交产物对照中,键盘/焦点、设置树和显示模式三阶段合计约占净 gzip 增量六成。接下来审查这些模块的可避免开销与构造耗时,不删除已有回归保护的兼容、清理和错误恢复路径。
## 设置导航:减少重复 DOM 工作
ENG-11 提交 5efc7f76 后恢复 doing。本阶段修改两个生产 TS 模块,不改变公共入口、回调、点击语义或声明。`keyboard.ts` 在读取条目和布局前排除无关按键;`keyboard-focus.ts` 为仍在活动面板内且可聚焦的 preferred 元素直接复核可用性,免去第二次全表扫描。若元素失效或只是包装节点,仍走原来的后代/选中项回退路径。每次按键仍重新读取条目,不跨事件缓存。断开、禁用、inert、无布局盒的元素先被排除,再读取计算样式。
40 个原生按钮的真实 Chromium 修改前证据显示:正常向下导航调用两次 querySelectorAll、80 次 getComputedStyle;修改后三引擎均为一次扫描、41 次样式读取。无关字符键从一次扫描/39 次样式读取变为零。浏览器测试还验证即时隐藏、inert、原生 disabled、tabindex=-1、恢复和公开 remove 后的实际焦点。记录的是操作次数,不据此估算毫秒收益。原有嵌套面板、更新失败恢复、原生范围、暂停作用域等回归保留。
构建后的现代包为 208030 raw / 58429 gzip9 字节;与 ENG-08 的 207875 / 58374 相比增加 155 / 55 字节。legacy 为 212211 / 59683,ESM 为 361484 / 77137。该小幅代码成本换取避免重复扫描,不能算作体积优化;ENG-PERF-01 仍 open。架构说明同步到包内 ARCHITECTURE.md。产物全部由正式 build 和 build:i18n 生成,没有手改产物或公开声明。
新安装包 run-UElxNR 的三引擎配对均完整,54 次候选资源清理探针通过。Chromium 第一组 core/chapter 销毁分别增加 3.1/2.5 ms,第三组 chapter 构造增加 2.8 ms;WebKit 第一组 chapter 销毁从 71 到 98 ms,其他组未重复该销毁信号;Firefox 本轮没有计时信号。固定计时夹具使用默认关闭的设置面板,不能把这些波动归因于本次导航路径。原始样本保留,ENG-PERF-02 扩展为构造及销毁计时待复核,门槛不变。
阶段证据见 [设置导航与配对报告](../baselines/core-setting-navigation-partial.json)。本阶段不是 CORE-22 完整验收;完整安装包浏览器矩阵、核心差异结论以及性能归因仍未完成。不复用上一任务的全量结果宣称当前源码已全部通过。本任务完成时再统一独立提交;当前没有新的完成任务,也没有 push/tag/publish/merge。
验证:完整本地 CI 476 项(440 单元、11 工程、25 基线),249 个生产 TS 严格检查通过;源码构建三引擎设置/网页全屏/快捷键组合 327 项通过。新安装包 34 个运行时、5 组旧类型、8 组精确类型通过;107 个工作区 dist/types 文件以及三份 docs/compiled 核心产物与安装包相同。三个导入检查通过,安装包 modern 与 legacy 的设置键盘专项各 36 项通过,均无失败、重试或跳过。未为本次小改动重复宣称覆盖率测量或远端 CI 成果。
## 构造布局测量与最终核心阶段验收
两次真实 Chromium CPU 采样将默认构造热点定位到 control/layout.ts 的同步 offsetHeight 读取。
支持 ResizeObserver 时现在使用其首次布局通知,在构造剩余 DOM 写入后测量;旧环境立即测量,
显式 resize 仍同步。修改前的原生 observer 探针稳定记录一次同步读取,修改后为零,三引擎
15 项初始布局、fallback、窄屏/字幕位置和首次通知前销毁检查通过。最初的 fallback 测试在字幕
CSS 过渡未结束时断言最终位置,已改为等待实际状态,保留原失败报告,没有改变位置门槛。
两次修改后 CPU 采样不再在构造栈出现该 update 热点。诊断脚本已保存到
refactor/scripts/profile-core-layout.mjs,明确限定为 Chromium 未压缩源码构建的带分析器定位,
不是新旧性能门槛。Chromium 销毁采样主要落在原生 load 和 DOM 移除;保留释放顺序,不能将其
延后到计时区间外。WebKit 的销毁信号不能仅用 Chromium 调用栈解释。
最终安装包 run-vynq7l 的结果如下,详见 [最终冻结证据](../baselines/core-acceptance-validation.json):
| 验收项 | 结果与范围 |
| --- | --- |
| 源码与声明 | 自有核心源码 TS 迁移完成,249 个生产 TS(含 chapter)严格检查,37 个生成核心声明无漂移;唯一保留的 src JS 是有来源记录的 screenfull |
| 本地 CI | 476 项:440 单元、11 工程、25 基线;新增诊断脚本另行 lint 和实际执行通过 |
| 安装包消费 | 34 运行时、5 组旧类型、8 组精确类型通过;107 个工作区分发/声明文件及三份 docs 核心产物与安装包匹配,三个导入检查通过 |
| 完整浏览器矩阵 | modern 1761、legacy 1761;每种格式每引擎 587 项,零失败/重试/跳过;真实媒体、核心 Monaco、已有 chapter 四组合和自定义插件均包含在当前套件 |
| 最新覆盖率 | 224 运行时文件、26 明确排除,四个关键生命周期/操作文件的行/分支/函数均 100%;全体 Node 行 60.90%、分支 86.55%、函数 66.62%,不与浏览器数量合并为覆盖率 |
| 性能/资源 | 每引擎三组正式配对均完成,54 次候选资源探针通过;本轮三引擎均无构造计时信号,Chromium/Firefox 无任何计时信号,WebKit 两组销毁仍超阈值 |
| 分发体积 | 现代 208037 raw / 58434 gzip9 / 53372 Brotli6;legacy 212218 / 59686 / 54412;ESM 361496 / 77141 / 70030。相较 ENG-08,现代增加 60 gzip 字节,不能称作体积缩减 |
SDK-12 的实际同步集成范围已补齐:固定 option-validator 2.0.6 与文件哈希,真实新旧安装包
验证正常/非法配置、首错、挂载前失败、容器复用、媒体 ready/customType 和销毁;纯同步依赖本身
不创建网络、切源任务或设备资源。它的直接测试范围与核心完整矩阵对应,不套用外部媒体 SDK 的
设备/网络门槛,也不声称已经审核整个第三方项目。
CORE-22 完成核心结构、兼容差异处置和当前固定消费者的自动化阶段。具体 API-01 至 API-12
入口及旧声明/切源/生命周期差异的结论见 [核心验收范围](../core-acceptance.md)。现有方法、类型
兼容入口、事件/Promise、DOM/CSS hooks 和包分发回归通过;新派生控件高度值的首次测量时机有
明确说明和浏览器验证。没有把 chapter 或受控能力场景当作所有插件/物理设备通过。
ENG-PERF-01/02 保持 open,由 MOD-03 和 REVIEW-01 继续复核:本轮 WebKit 第一组 chapter
销毁增加 44 ms,第二组 core 增加 30 ms,第三组未触发;保存全部样本,不将其归为已证明的主机
噪声。体积增长虽已归因,仍需后续性能与发布复盘处理。此阶段交付不放宽阈值、不豁免发布,也
不删除后续性能依赖。全插件/外部 SDK、EX/SITE、物理设备、完整 CI/CD、各包 major 和三轮复盘
仍由原任务负责;完整目标继续推进。
本任务以独立本地 commit 交付,包含三处生产模块改进、回归、正式生成产物、诊断脚本、风险和
文档/状态。回退时整体 revert 本任务 commit,保留其父提交 5efc7f76 的运行时/产物对应关系,
不要只回退 TS 或只回退 dist。提交 SHA 在提交后由 Git 核对;没有 push/tag/publish/merge。