fix(danmuku): [PKG-DANMUKU-11] start visible lifetime after Worker placement

This commit is contained in:
Harvey Zhao committed 2026-09-13 22:24:09 +08:00
1 parent 24b883d862
commit df6a6fe82e
18 files changed
+3328 -9

No files matched your search

@@ -0,0 +1,43 @@
# PKG-DANMUKU-11 Worker 等待与可见寿命
07稳定性审查发现独立计时问题,拆为本任务修复;07本身仍未完成。
配置speed为1秒,Worker回复之前的隐藏等待如果超过1秒,弹幕刚触发visible就会
在下一调度帧被回收。开始时间原先在postMessage前设置,而CSS显示在回复后才开始。
## 兼容范围
修复仅把成功放置的可见起点与实际放置时间对齐。保留原speed、Worker几何输入、
同步/异步门面、事件参数/顺序、状态池、取消与错误行为;不改变公开类型或包入口。
空轨道/取消不新增visible;暂停后的剩余寿命、播放速度与旧seek/reset行为仍回归。
这是原来隐藏等待吞掉可见时长的缺陷修正,等待较长的弹幕会获得完整显示时间。
历史readys的±0.1秒窗口和beforeVisible串行语义不在此任务改变。
## 验证
受控红测使用真实Worker算法:mode0/1/2、1秒寿命、等待3秒。三个开始时间断言
均得到1000而非4000,明确复现本问题;修复后的绿测继续验证250ms剩余寿命和一次
回收断言。原始日志保留在refactor/.cache/danmuku11-unit-red.log。
原生测试使用实际视频与真实Worker几何,仅通过观察用Worker子类给请求传递加
1500ms延迟,记录post/reply/visible/recycle时间。它验证人为注入延迟后的行为,
不声称真实用户环境必然发生相同Worker延迟。
完整源码253项通过,正式main/legacy各57项调度与Worker测试通过(包括共同的
内部WorkerClient测试,不能都算独立产物案例)。构建、目标lint和分包严格TS通过。
源码浏览器90项:原调度66项加寿命24项,覆盖两核心、新旧插件、mode0/1及三引擎;
main/legacy各选12项候选寿命用例,总114项通过,无重试或跳过。以visible事件到
节点回收测得生命周期,不把它称为逐帧视觉/自然Worker饥饿或长期吞吐验收。
相同1秒配置下,旧版测得0–15ms,修复源码998–1044ms,main1004–1041ms、
legacy1005–1027ms;原生逐帧调度有少量回收延后,受控用例精确验证时间扣减。
具体环境、字节及时间见[机器证据](../baselines/danmuku-lifetime-validation.json)。
首次浏览器运行也触发了旧版已登记的play/playing双循环,历史两次请求与单次计时
夹具冲突。将插件安装放在原生playing之后并显式启动一次来隔离该已知缺陷,未改变
被测时钟/队列或寿命阈值。隔离红测4个旧版缺陷观察通过、4个候选寿命断言失败,
再修复生产。第一次失败也留档,没有把夹具故障当成本任务独立红测。
独立只读复查确认取消/节点检查在时钟更新之前,几何与剩余寿命仍按准备时速度
计算,setState→place→visible顺序不变;包ARCHITECTURE同步维护计时边界。
无新依赖、公开类型、版本或分发入口变更;构建产物和docs复制保持相同字节。
状态以tasks.json为准。回退本任务独立commit
会恢复旧计时问题,不撤销06类型迁移或10热力图修复。未推送、未发布。