test(mediabunny): [PKG-MB-09] preserve long-run AV tolerance breach

This commit is contained in:
Harvey Zhao committed 2026-09-16 11:54:08 +08:00
1 parent 58a648fd05
commit 78e3107b68
7 files changed
+332 -3

No files matched your search

+270
View File
@@ -0,0 +1,270 @@
{
"schemaVersion": 1,
"task": "PKG-MB-09",
"risk": "MB-SYNC-01",
"status": "running-threshold-breach",
"terminalResultObserved": false,
"thresholdSeconds": 0.25,
"sourceSnapshot": {
"path": "refactor/.cache/mb09-hour-first-av-breach.json",
"sha256": "045ef64a10a183afd1910e297b1486942043c944cc157ba16b39db9fdc78ec1a"
},
"capturedAt": "2026-09-16T03:51:20.798Z",
"scope": "Existing per-five-second samples, not a root-cause conclusion or terminal result",
"cases": [
{
"case": "mediabunny-MediaBunny-sust-71bde-layback-with-published-core-chromium",
"firstBreachIndex": 352,
"totalSamples": 385,
"aroundBreach": [
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1751710,
"time": 1751.9706666666666,
"rate": 1,
"active": 51,
"queued": 51,
"iterators": 2,
"draws": 42023,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.02500000000009095
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1756731.2999999523,
"time": 1756.9893333333332,
"rate": 1,
"active": 56,
"queued": 56,
"iterators": 2,
"draws": 42144,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.02500000000009095
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1762024.2999999523,
"time": 1762.28,
"rate": 1,
"active": 37,
"queued": 37,
"iterators": 2,
"draws": 42270,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.2293333333332157
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1767445.5,
"time": 1767.7013333333332,
"rate": 1,
"active": 49,
"queued": 49,
"iterators": 2,
"draws": 42401,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5489999999997508
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1772834.6999999285,
"time": 1773.0906666666665,
"rate": 1,
"active": 53,
"queued": 53,
"iterators": 2,
"draws": 42531,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5489999999997508
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1778402.7999999523,
"time": 1778.6613333333332,
"rate": 1,
"active": 48,
"queued": 48,
"iterators": 2,
"draws": 42664,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5489999999997508
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1783602.1999999285,
"time": 1783.8613333333333,
"rate": 1,
"active": 60,
"queued": 60,
"iterators": 2,
"draws": 42789,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5489999999997508
}
],
"latest": {
"kind": "sample",
"phase": "continuous-1x",
"wall": 1929476.7999999523,
"time": 1929.7306666666666,
"rate": 1,
"active": 54,
"queued": 54,
"iterators": 2,
"draws": 46290,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5489999999997508
}
},
{
"case": "mediabunny-MediaBunny-sust-828df-layback-with-candidate-core-chromium",
"firstBreachIndex": 352,
"totalSamples": 385,
"aroundBreach": [
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1751722.7999999523,
"time": 1751.9813333333332,
"rate": 1,
"active": 50,
"queued": 50,
"iterators": 2,
"draws": 42024,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.02500000000000213
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1756745.3999999762,
"time": 1757,
"rate": 1,
"active": 55,
"queued": 55,
"iterators": 2,
"draws": 42144,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.02500000000000213
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1761913.6999999285,
"time": 1762.1706666666666,
"rate": 1,
"active": 53,
"queued": 53,
"iterators": 2,
"draws": 42268,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.15599999999994907
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1767215,
"time": 1767.4693333333332,
"rate": 1,
"active": 60,
"queued": 60,
"iterators": 2,
"draws": 42395,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5699999999999363
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1772244.5,
"time": 1772.5013333333334,
"rate": 1,
"active": 48,
"queued": 48,
"iterators": 2,
"draws": 42515,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5699999999999363
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1777372.5999999046,
"time": 1777.6293333333333,
"rate": 1,
"active": 48,
"queued": 48,
"iterators": 2,
"draws": 42639,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5699999999999363
},
{
"kind": "sample",
"phase": "continuous-1x",
"wall": 1782881.0999999046,
"time": 1783.1413333333333,
"rate": 1,
"active": 62,
"queued": 62,
"iterators": 2,
"draws": 42771,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5699999999999363
}
],
"latest": {
"kind": "sample",
"phase": "continuous-1x",
"wall": 1928707.2999999523,
"time": 1928.96,
"rate": 1,
"active": 58,
"queued": 58,
"iterators": 2,
"draws": 46271,
"visibility": "visible",
"paused": false,
"error": null,
"maxAVError": 0.5699999999999363
}
}
]
}
@@ -0,0 +1,32 @@
# PKG-MB-09:长测中的 AV 阈值越界
这是一份运行中检查点,不是终结报告。长测进程继续运行,被测源码、产物、素材和
原有阈值没有修改,也没有重启用例或将结果标为通过。
## 已观察到的事实
首批两个 Chromium 场景都使用已安装的 MediaBunny 2.0.0,分别搭配发布核心和候选核心。
约第 1762 秒,累计最大解码帧时间戳/AudioContext 主时钟偏差从约 25ms 增至
229ms / 156ms;约第 1767 秒,两组分别升至约 549ms / 570ms,超过原有 250ms 门槛。
对应采样仍为 visible、1×、未暂停、无媒体错误;媒体时钟和绘制计数继续增加,活动
音频节点和迭代器未突破原上限。参见[固定采样快照](../baselines/mb-hour-av-breach.json)。
两组几乎同时发生越界,但都使用同一候选 proxy;这不能证明历史 proxy 也失败,
不能归因于特定核心,也不能仅据同时出现就认定是系统调度问题。
观察后的 CPU/内存读数不是事发时剖析,不用它推导根因。
## 源码核对及后续
当前默认 `dropLateFrames` 为 false;`video-frames.ts` 的默认策略允许读取并绘制
落后帧,开启丢帧才会按容差跳过。`video-renderer.ts` 的已排队帧绘制还需结合实际
调度进一步诊断。这是现有源码事实,不足以证明本次偏差的具体来源。
测试统计的是每次 drawImage 的帧时间戳/音频时钟差,不是声音输出测量或用户可见
帧呈现的独立测量;短暂追赶、持续漂移与宿主阻塞需要分别验证。
登记 MB-SYNC-01,保持 PKG-MB-09 doing。等待当前运行产生阶段统计、清理结果和
最终报告后,再设计有限的调度/帧追赶对照,复现后修复项目缺陷并回归。
不得直接更改公开默认丢帧行为、扩大 250ms 门槛、缩短长测,或重跑直到通过。
当前已足以拒绝将这两个场景称为长播放通过,但最终进程退出状态仍需实际观察。
本检查点只改证据、风险和文档;计划/风险校验及风险校验器测试完成后单独提交。
不开始正式复盘,不推送或发布。
+1 -1
View File
@@ -669,7 +669,7 @@
- PKG-MB-06: [记录](baselines/mb-audio-source.json) [记录](changes/2026-09-12-PKG-MB-06-audio.md) [记录](baselines/mb-audio-validation.json)
- PKG-MB-07: [记录](baselines/mb-hls-source.json) [记录](changes/2026-09-12-PKG-MB-07-hls.md) [记录](baselines/mb-hls-validation.json)
- PKG-MB-08: [记录](baselines/mb-entry-source.json) [记录](changes/2026-09-12-PKG-MB-08-entry-checkpoint.md) [记录](baselines/mb-entry-checkpoint.json) [记录](baselines/mb-capability-source.json) [记录](changes/2026-09-12-PKG-MB-08-capability.md) [记录](baselines/mb-capability-validation.json)
- PKG-MB-09: [记录](changes/2026-09-12-PKG-MB-09-native-pip-checkpoint.md) [记录](baselines/mb-native-pip-checkpoint.json) [记录](changes/2026-09-12-PKG-MB-09-sustained-playback-checkpoint.md) [记录](baselines/mb-sustained-validation.json) [记录](baselines/mb-sustained-media.json) [记录](changes/2026-09-16-PKG-MB-09-hour-soak.md) [记录](baselines/mb-hour-soak-start.json)
- PKG-MB-09: [记录](changes/2026-09-12-PKG-MB-09-native-pip-checkpoint.md) [记录](baselines/mb-native-pip-checkpoint.json) [记录](changes/2026-09-12-PKG-MB-09-sustained-playback-checkpoint.md) [记录](baselines/mb-sustained-validation.json) [记录](baselines/mb-sustained-media.json) [记录](changes/2026-09-16-PKG-MB-09-hour-soak.md) [记录](baselines/mb-hour-soak-start.json) [记录](changes/2026-09-16-PKG-MB-09-av-breach.md) [记录](baselines/mb-hour-av-breach.json)
- PKG-IFRAME-01: [记录](changes/2026-09-12-PKG-IFRAME-01-contract.md) [记录](baselines/iframe-release.json) [记录](baselines/iframe-contract.md) [记录](baselines/iframe-contract-validation.json)
- PKG-IFRAME-02: [记录](changes/2026-09-12-PKG-IFRAME-02-behavior.md) [记录](baselines/iframe-behavior-validation.json)
- PKG-IFRAME-03: [记录](changes/2026-09-12-PKG-IFRAME-03-requests-checkpoint.md) [记录](baselines/iframe-requests-checkpoint.json) [记录](changes/2026-09-12-PKG-IFRAME-03-boundaries-checkpoint.md) [记录](baselines/iframe-boundaries-checkpoint.json) [记录](iframe-message-boundary.md) [记录](changes/2026-09-13-PKG-IFRAME-03-navigation.md) [记录](baselines/iframe-navigation-validation.json) [记录](iframe-document-protocol.md)
+7
View File
@@ -1,5 +1,12 @@
# 进度与证据
## PKG-MB-09 长测 AV 阈值越界(运行未终结)
首批两个Chromium组合约1767秒时累计最大帧/音频时钟差达到549ms/570ms,超过
250ms门槛。仍visible、未暂停、无媒体错误,绘制/时钟继续推进;不能据此归因于核心
或系统。新增MB-SYNC-01并保留[快照与诊断边界](changes/2026-09-16-PKG-MB-09-av-breach.md)。
被测输入不变,原进程继续,等待阶段统计/清理和终结报告;不称为通过,不重启到绿。
## DOC-03 校正根 AI 接续指引
根AGENTS仍引用MediaBunny五个旧JS路径及过期源码风格,现已核对并改为实际TS入口,
+1
View File
@@ -291,3 +291,4 @@
| SITE-EDITOR-VAST-01 | resolved / 已复现 | Monaco browser consumer still assumes the workspace VAST namespace after the approved npm-root restoration | SITE-EDITOR-VAST-01 |
| CI-JASSUB-SOURCE-01 | resolved / 已复现 | Default native JASSUB source runs select only the published plugin and omit the current source | CI-JASSUB-SOURCE-01 |
| DANMUKU-INSTALLED-GAP-01 | resolved / 已复现 | Windows WebKit installed Danmuku candidate misses two rows after a native main-thread gap | PKG-DANMUKU-08, PKG-DANMUKU-START-01 |
| MB-SYNC-01 | open / 已复现 | Installed MediaBunny hour soak exceeds the original frame/audio-clock tolerance in both Chromium core combinations | PKG-MB-09 |
+18 -1
View File
@@ -2,7 +2,7 @@
"schemaVersion": 1,
"task": "BASE-07",
"sourceCommit": "e01f39ff",
"updatedAt": "2026-09-16T02:27:53.896Z",
"updatedAt": "2026-09-16T03:53:29.998Z",
"note": "Open means closure evidence is outstanding; source-observed and unverified are not reproduced runtime bugs. A source issue already mitigated in the workspace still requires candidate regression evidence. No accepted-with-scope item is implied by baseline task completion.",
"items": [
{
@@ -6886,6 +6886,23 @@
"refactor/baselines/danmuku-start-validation.json"
],
"resolutionRationale": "The first sampling anchor was created only inside RAF. Reproduced in controlled first-frame and time-zero tests plus real Chromium/WebKit start-listener CPU stalls. Private playback-start anchoring preserves public queries and invalidation. Final source/installed three-engine timing, both installed runtime formats, scheduler regression and actual model load pass."
},
{
"id": "MB-SYNC-01",
"title": "Installed MediaBunny hour soak exceeds the original frame/audio-clock tolerance in both Chromium core combinations",
"confirmation": "reproduced",
"status": "open",
"owners": [
"PKG-MB-09"
],
"evidence": [
"refactor/baselines/mb-hour-av-breach.json",
"refactor/changes/2026-09-16-PKG-MB-09-av-breach.md",
"test/soak/mediabunny.spec.js"
],
"compatibleResolution": "Keep the running test and original 250ms gate. Distinguish delayed presentation, catch-up draws, sustained clock drift and host scheduling using bounded controls after preserving the terminal result; fix a reproduced project defect without changing the public dropLateFrames default.",
"closureCriteria": "Retain the first failing samples and terminal report; establish cause with appropriate historical/native controls, fix any confirmed project regression, and complete unchanged duration/cleanup requirements with a justified clock/presentation interpretation. A later passing run alone does not close this risk.",
"workspaceState": "Running-at-capture, not a final report: around 1767 seconds both Chromium cases using the same candidate proxy reach approximately 549ms/570ms max delta; visibility, advancing media/draws, node bounds and lack of media errors remain intact. Core-specific, historical-proxy and OS-cause claims are unproven."
}
]
}
+3 -1
View File
@@ -4024,7 +4024,9 @@
"baselines/mb-sustained-validation.json",
"baselines/mb-sustained-media.json",
"changes/2026-09-16-PKG-MB-09-hour-soak.md",
"baselines/mb-hour-soak-start.json"
"baselines/mb-hour-soak-start.json",
"changes/2026-09-16-PKG-MB-09-av-breach.md",
"baselines/mb-hour-av-breach.json"
]
},
{