mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-20 12:11:20 -08:00
refactor(mediabunny): [PKG-MB-04] checkpoint typed shim and event cleanup
This commit is contained in:
1 parent
adba8a3d12
commit
9af253a5a9
24 files changed
+1478
-250
No files matched your search
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sourceCommit": "adba8a3d127472ad7ae146e64dcb67568639520e",
|
||||
"sourceSha256LF": {
|
||||
"packages/artplayer-proxy-mediabunny/src/MediaBunnyEngine.js": "5ce3bc85572121ec9068fbc051ac4845d3a3991e670e10dafcaede1c1609f1fb",
|
||||
"packages/artplayer-proxy-mediabunny/src/VideoShim.js": "f01c954e8a98fb70138dded78b99eb2765f5cd1e8a98dafbb35ffbf8f7741dbb",
|
||||
"packages/artplayer-proxy-mediabunny/src/EventTarget.js": "c1854510af5a37301b4bd3b1fbcc28f7e0f105f50cb67324c5c05a76f2d054fb",
|
||||
"packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.js": "f9d5571f75f47ee1714d04c951836c1a6c903f4e465fab2a267dcb4948c0de7b"
|
||||
},
|
||||
"scope": "MB-03 completion before MB-04 coordination edits; not a published release"
|
||||
}
|
||||
@@ -0,0 +1,708 @@
|
||||
{
|
||||
"task": "PKG-MB-04",
|
||||
"status": "doing",
|
||||
"checkpoint": "Shim/event/RAF lifecycle only; coordinator remains incomplete",
|
||||
"parentCommit": "adba8a3d127472ad7ae146e64dcb67568639520e",
|
||||
"sourceSha256LF": {
|
||||
"packages/artplayer-proxy-mediabunny/src/AudioEngine.js": "910d6831372e4895d55dec78010f281a199bc88f99735630a5a3b621f192ac35",
|
||||
"packages/artplayer-proxy-mediabunny/src/engine-types.ts": "815e99c75c63abe126dceddbde6d79f6cd5fc435ce2de76d508d5ea407419ffa",
|
||||
"packages/artplayer-proxy-mediabunny/src/EventTarget.ts": "4cea57e59b0a1118744a55b0a87c1df28cb0d69c26c50f9275039fe7540c9720",
|
||||
"packages/artplayer-proxy-mediabunny/src/hls-state.ts": "ff9ffd742f9763349df1f50eac6b6bd488a80d05aaab8ca198f387f0d17d5e25",
|
||||
"packages/artplayer-proxy-mediabunny/src/index.js": "4e1be8937908ff6e6ef8a4e863e22b4468312cf31d66ac299322e475757773bb",
|
||||
"packages/artplayer-proxy-mediabunny/src/input.ts": "d25b1c4ee4aee358c86fd8c554b8b36bfc23fdbd3c27fa21d2cd7e812c98bf9c",
|
||||
"packages/artplayer-proxy-mediabunny/src/load-session.ts": "560fbd5935fc787bde5f413fcaa41b8829506179c5328ce3cb51e734bbba8cec",
|
||||
"packages/artplayer-proxy-mediabunny/src/m3u8.js": "4639f09e0c743dc2b24078f48ca1e58eaaedaa3f5e6b863583cbd4bc4a7d3142",
|
||||
"packages/artplayer-proxy-mediabunny/src/media.ts": "e745cd8e750e05d0fcfa4bc588f7eb5a5576f3be20f5e67b65b704f57d539ae9",
|
||||
"packages/artplayer-proxy-mediabunny/src/MediaBunnyEngine.d.ts": "9c1e2b3cf9ffe5aa1c50a0e6bc13c1e986b8178440393efbaa22d6013b850bca",
|
||||
"packages/artplayer-proxy-mediabunny/src/MediaBunnyEngine.js": "5ce3bc85572121ec9068fbc051ac4845d3a3991e670e10dafcaede1c1609f1fb",
|
||||
"packages/artplayer-proxy-mediabunny/src/preflight.ts": "d296234312f23b97a1e0a054f1d7dbbc988d5240c5fd5089c36df1677c7b7348",
|
||||
"packages/artplayer-proxy-mediabunny/src/shim-frames.ts": "172b222f997a711c2cc7741f189f05127a4ac5099c1cbe2729e903b36b4ce24a",
|
||||
"packages/artplayer-proxy-mediabunny/src/shim-values.ts": "a93ee17e87cc7db24f4b02d866af8af206d3007d01def446906fb769c20de17d",
|
||||
"packages/artplayer-proxy-mediabunny/src/tracks.ts": "6da68530c1fc7105ab17ed742d87d93e84447e822e84386591f9c3e6d0bec733",
|
||||
"packages/artplayer-proxy-mediabunny/src/VideoEngine.js": "5ac862b0fd9c196dc6656f8908a214c1b3a0a53a7e85ff845d9068888831986b",
|
||||
"packages/artplayer-proxy-mediabunny/src/VideoShim.ts": "c3dab22ac6fe89a19b6f1d7f786a4e087bc8be69888836f2b136d04734b5f9df",
|
||||
"packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.js": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.legacy.js": "4e284e02970cf2f42b809ade1210ebe69d40c329597a0d01e0d25ad0e2a326a3",
|
||||
"packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.mjs": "a2e60ecdf57b7dfd4403674ae9ed704c91b181fc197611e213b053ff3c949003",
|
||||
"packages/artplayer-proxy-mediabunny/ARCHITECTURE.md": "af6520c10d7ba23110eb42d44b3b023d1e1c5a0fc659d51f720bd8903a18b98d",
|
||||
"package.json": "32ed93187014731cf8a28ac4b759260486fa058a02dce397d08a65964ae9de20",
|
||||
"test/mediabunny-shim.test.js": "2675b3b6575c26505d1a3646e96a7abffe909db07416a046dc105ca30635484e",
|
||||
"test/browser/mediabunny-shim.spec.js": "92b10cc955b0ab397eede78a1af386ae02ef92a1c0631ccddc4f539f4e4532cd"
|
||||
},
|
||||
"node": {
|
||||
"total": 68,
|
||||
"shim": 12,
|
||||
"sameShimAssertionsOnPreviousMain": {
|
||||
"passed": 9,
|
||||
"failed": 3
|
||||
},
|
||||
"mainShimAndLoad": 32,
|
||||
"legacyShimAndLoad": 32,
|
||||
"artifactScope": "Each 32-case main/legacy command contains 28 candidate artifact assertions and four frozen normal-event controls."
|
||||
},
|
||||
"browser": {
|
||||
"total": 39,
|
||||
"outcomes": {
|
||||
"native-input-playback-and-seek": 10,
|
||||
"candidate-trackless-readiness-gap": 2,
|
||||
"unsupported-capability-control": 6,
|
||||
"native-pending-stream-cancellation": 9,
|
||||
"native-synthetic-raf": 9,
|
||||
"native-mp4-playback-observed": 2,
|
||||
"verified-unsupported-capability-control": 1
|
||||
},
|
||||
"records": [
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "webm",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "blob",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "stream",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": true
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "audio",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "hls",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "trackless",
|
||||
"outcome": "candidate-trackless-readiness-gap",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "webm",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "blob",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "stream",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": true
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "audio",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "hls",
|
||||
"outcome": "native-input-playback-and-seek",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "trackless",
|
||||
"outcome": "candidate-trackless-readiness-gap",
|
||||
"cleanup": {
|
||||
"audioContext": "closed",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "webm",
|
||||
"outcome": "unsupported-capability-control",
|
||||
"cleanup": {
|
||||
"audioContext": "not-created",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "blob",
|
||||
"outcome": "unsupported-capability-control",
|
||||
"cleanup": {
|
||||
"audioContext": "not-created",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "stream",
|
||||
"outcome": "unsupported-capability-control",
|
||||
"cleanup": {
|
||||
"audioContext": "not-created",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": true
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "audio",
|
||||
"outcome": "unsupported-capability-control",
|
||||
"cleanup": {
|
||||
"audioContext": "not-created",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "hls",
|
||||
"outcome": "unsupported-capability-control",
|
||||
"cleanup": {
|
||||
"audioContext": "not-created",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"input": "trackless",
|
||||
"outcome": "unsupported-capability-control",
|
||||
"cleanup": {
|
||||
"audioContext": "not-created",
|
||||
"pendingFrames": 0,
|
||||
"streamCancelled": false
|
||||
},
|
||||
"scope": "Identified proxy with native browser media and controlled ArtPlayer host using actual core utilities/config; frame timestamps sampled against the SDK audio clock, not acoustic/long-run AV-sync acceptance. Cleanup checks settled playback, not pending-operation races. Candidate trackless readiness remains MB-READY-01, not release acceptance."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "destroy",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "source",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old",
|
||||
"new"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "timeout",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "destroy",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "source",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old",
|
||||
"new"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "timeout",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "destroy",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "source",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old",
|
||||
"new"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"ending": "timeout",
|
||||
"outcome": "native-pending-stream-cancellation",
|
||||
"cancellations": [
|
||||
"old"
|
||||
],
|
||||
"scope": "Real browser ReadableStream and actual SDK Input disposal before first media bytes; real timeout; controlled ArtPlayer host; does not assert decoder, late frame or audio-node cleanup."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "callback",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [
|
||||
{
|
||||
"owner": "first",
|
||||
"time": "number",
|
||||
"mediaTime": 0,
|
||||
"presentedFrames": 0
|
||||
}
|
||||
],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "destroy",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "independent",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [
|
||||
{
|
||||
"owner": "second"
|
||||
}
|
||||
],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "callback",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [
|
||||
{
|
||||
"owner": "first",
|
||||
"time": "number",
|
||||
"mediaTime": 0,
|
||||
"presentedFrames": 0
|
||||
}
|
||||
],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "destroy",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "independent",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [
|
||||
{
|
||||
"owner": "second"
|
||||
}
|
||||
],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "callback",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [
|
||||
{
|
||||
"owner": "first",
|
||||
"time": "number",
|
||||
"mediaTime": 0,
|
||||
"presentedFrames": 0
|
||||
}
|
||||
],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "destroy",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"scenario": "independent",
|
||||
"outcome": "native-synthetic-raf",
|
||||
"result": {
|
||||
"idType": "number",
|
||||
"calls": [
|
||||
{
|
||||
"owner": "second"
|
||||
}
|
||||
],
|
||||
"listeners": 0
|
||||
},
|
||||
"scope": "Real browser requestAnimationFrame and actual proxy instances; synthetic metadata is preserved, no decoding or video frame accuracy is claimed."
|
||||
},
|
||||
{
|
||||
"project": "chromium",
|
||||
"browser": "153.0.8010.12",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"outcome": "native-mp4-playback-observed",
|
||||
"scope": "Two actual published proxies with actual core5.4.0; native MP4 pixels/clock or explicitly unsupported Windows WebKit APIs. No candidate, HLS or AV-sync acceptance."
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"browser": "155.0",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"outcome": "native-mp4-playback-observed",
|
||||
"scope": "Two actual published proxies with actual core5.4.0; native MP4 pixels/clock or explicitly unsupported Windows WebKit APIs. No candidate, HLS or AV-sync acceptance."
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"browser": "26.6",
|
||||
"platform": "win32",
|
||||
"implementation": "candidate-artifact",
|
||||
"sha256": "8ac3fb3531f109475adeb0230f155113e6a0210e32c0be08527be4b2772e63a3",
|
||||
"outcome": "verified-unsupported-capability-control",
|
||||
"scope": "Two actual published proxies with actual core5.4.0; native MP4 pixels/clock or explicitly unsupported Windows WebKit APIs. No candidate, HLS or AV-sync acceptance."
|
||||
}
|
||||
],
|
||||
"report": "refactor/.cache/mb04-shim-results/report.json",
|
||||
"reportSha256": "07856e69bad4f4c33f6a06506a3ca21caa23c5fc0e915a166825e8596a56865f",
|
||||
"results": "refactor/.cache/mb04-shim-results/results"
|
||||
},
|
||||
"checks": [
|
||||
{
|
||||
"command": "yarn test:mediabunny",
|
||||
"result": "pass",
|
||||
"tests": 68,
|
||||
"log": "refactor/.cache/mb04-shim-tests-final.log"
|
||||
},
|
||||
{
|
||||
"command": "node --test test/mediabunny-shim.test.js with adba8a3d main",
|
||||
"result": "expected historical failures",
|
||||
"passed": 9,
|
||||
"failed": 3,
|
||||
"log": "refactor/.cache/mb04-shim-frozen.log"
|
||||
},
|
||||
{
|
||||
"command": "package strict typecheck and focused eslint --no-fix",
|
||||
"result": "pass",
|
||||
"packageStrictProductionModules": 11,
|
||||
"scope": "Coordinator JS remains behind an explicit declaration boundary"
|
||||
},
|
||||
{
|
||||
"command": "yarn build artplayer-proxy-mediabunny",
|
||||
"result": "pass",
|
||||
"formats": [
|
||||
"main",
|
||||
"legacy",
|
||||
"esm"
|
||||
],
|
||||
"log": "refactor/.cache/mb04-shim-build.log"
|
||||
},
|
||||
{
|
||||
"command": "main/legacy shim and load regressions",
|
||||
"result": "pass",
|
||||
"eachRun": 32,
|
||||
"candidateArtifactCasesPerRun": 28,
|
||||
"frozenControlsPerRun": 4
|
||||
},
|
||||
{
|
||||
"command": "four MediaBunny browser specs with built main and ARTPLAYER_MB_BROWSER_CANDIDATE=1",
|
||||
"result": "pass",
|
||||
"tests": 39,
|
||||
"log": "refactor/.cache/mb04-shim-browser.log"
|
||||
},
|
||||
{
|
||||
"command": "yarn ci:check",
|
||||
"result": "pass",
|
||||
"tests": {
|
||||
"unit": 1074,
|
||||
"engineering": 14,
|
||||
"baseline": 141,
|
||||
"mainTotal": 1229,
|
||||
"repeatedContractExecutions": 44
|
||||
},
|
||||
"strictProductionTypeScriptFiles": 301,
|
||||
"log": "refactor/.cache/mb04-shim-ci.log"
|
||||
}
|
||||
],
|
||||
"limitations": [
|
||||
"PKG-MB-04 is still doing. Readiness/play/seek coordination remains; event silence alone is not evidence that pending engine operations stopped.",
|
||||
"Coordinator .d.ts is a temporary bridge, not typechecking of its JS implementation.",
|
||||
"Synthetic RAF is not decoded video frame evidence.",
|
||||
"Trackless and Windows WebKit capability cases keep their unresolved scope; no release acceptance."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
# PKG-MB-04 检查点:VideoShim 与事件资源
|
||||
|
||||
任务仍doing;本检查点不是整个主协调器迁移完成。进入04前的实际源码和main归属为
|
||||
adba8a3d,冻结于[接续基线](../baselines/mb-coordination-source.json)。
|
||||
|
||||
VideoShim/EventTarget转为strict TS,抽出shim-values纯值与shim-frames资源模块,
|
||||
engine-types描述临时协调器边界。MediaBunnyEngine.d.ts仅暂时连接JS协调器;后续必须
|
||||
由实际MediaBunnyEngine.ts替代,不能把这份声明当作实现已类型检查。
|
||||
生产TS增至11个(全项目301),仍有五个本包JS文件。
|
||||
|
||||
## 已复现并修正
|
||||
|
||||
1. destroy后保留的synthetic RAF仍会调用用户回调;现回收所有本实例ID(含0),
|
||||
即使已出队的回调函数晚执行也无副作用。销毁后不再分配新的RAF。
|
||||
2. destroy未释放事件监听器,当前emit的后续监听器还能执行;现terminal状态清空Map,
|
||||
并阻止当前派发后续回调。正常forEach动态数组语义、重复listener和首次删除保留。
|
||||
3. engine.destroy抛错时事件/RAF仍残留;现frame状态先关闭、事件由finally关闭,
|
||||
原异常仍向调用方传播;再次destroy不重复调用已失败的清理。
|
||||
|
||||
Canvas和shim的own/prototype属性顺序、描述符、每次读取重新绑定的方法、原生canvas方法优先,
|
||||
以及play返回原Promise、pause/load同步void等都有实际旧/新对象对照。
|
||||
初始volume不clamp、setter强制转换/取消mute、历史noop setter、synthetic TimeRanges和
|
||||
presentedFrames=0继续保留。资源表使用WeakMap,不新增被复制到canvas的内部字段。
|
||||
|
||||
## 检查范围
|
||||
|
||||
同一12项shim测试在adba8a3d实际main上9通过/3失败;候选12通过。
|
||||
四组正常契约同时比较原冻结1.2.0与候选;本轮共68项包专项,包含原24历史、20加载和12输入。
|
||||
新增用例接入test:unit与test:mediabunny。三格式构建,main/legacy各32项加载+shim检查。
|
||||
浏览器在实际RAF上检查正常callback、destroy和另一实例不受影响;不把synthetic callback当作解码帧。
|
||||
最终验证及产物哈希见[检查点证据](../baselines/mb-shim-checkpoint.json)。
|
||||
|
||||
## 接续工作
|
||||
|
||||
立即接着04的主协调器:重复/无轨道就绪、错误后的metadata回写、play拒绝状态恢复、
|
||||
pending play遇到pause/destroy、连续seek及resume意图。事件关闭只消除了销毁后的事件出口,
|
||||
不证明旧Engine没有继续video.start、audio.play或改状态;不能用事件已经静默来掩盖这些未修复问题。
|
||||
原MB-LIFE-01/MB-READY-01保持open。后续05/06仍处理底层帧与音频操作。
|
||||
|
||||
包内ARCHITECTURE.md同步当前地图,回退本检查点commit即可恢复04前shim;不要改动历史冻结输入。
|
||||
本地checkpoint不计为任务完成,不推送、不发布。
|
||||
|
||||
最终完整CI1229项(1074单元+14工程+141基线)通过,另44重复契约;301生产TS。
|
||||
main/legacy各32项中28项实际候选断言、4项冻结正常事件对照。39项浏览器无失败/重试/跳过,
|
||||
其中12播放、9Stream取消、9synthetic RAF、7能力对照及2未关闭trackless就绪。
|
||||
全部最终源码/测试/产物及报告哈希已核验,docs/compiled与dist三格式逐字节一致。
|
||||
+3
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 222 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 115 / doing 7 / blocked 0 / done 100 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 114 / doing 8 / blocked 0 / done 100 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -332,7 +332,7 @@
|
||||
| PKG-MB-01 | artplayer-proxy-mediabunny<br>核对 shim 与媒体契约 | BASE-05 | 全部 option、art.mediabunny、canvas/shim 属性及事件表 | 公开暴露成员和实际发布依赖/资源范围明确;核实 third-party.json 所记录依赖 MPL-2.0 元数据与实际 bundle 的许可/通知范围,不从根 MIT 推断 | H | done |
|
||||
| PKG-MB-02 | artplayer-proxy-mediabunny<br>建立真实媒体与事件基线 | PKG-MB-01, ENG-05, ENG-08 | MP4/WebM/HLS/Blob/Stream、seek/错误/轨道切换样本 | ready 事件顺序、音画同步、超时和释放可重跑 | H | done |
|
||||
| PKG-MB-03 | artplayer-proxy-mediabunny<br>整理 input 与加载取消 | PKG-MB-02, CORE-09 | input.js 源检测、输入资源、Range 与取消 | HLS 检测在 input 边界,旧来源类型和超时保持 | H | done |
|
||||
| PKG-MB-04 | artplayer-proxy-mediabunny<br>整理 VideoShim/EventTarget/Engine 协调 | PKG-MB-03, CORE-06, CORE-11 | shim 描述符、事件桥、加载状态和操作隔离 | 公开属性/同步异步返回与事件重入顺序保持 | H | todo |
|
||||
| PKG-MB-04 | artplayer-proxy-mediabunny<br>整理 VideoShim/EventTarget/Engine 协调 | PKG-MB-03, CORE-06, CORE-11 | shim 描述符、事件桥、加载状态和操作隔离 | 公开属性/同步异步返回与事件重入顺序保持 | H | doing |
|
||||
| PKG-MB-05 | artplayer-proxy-mediabunny<br>整理视频解码、seek 和帧释放 | PKG-MB-04 | VideoEngine 调度、队列、晚帧处理和资源释放 | 暂停/seek/切源无旧帧覆盖,默认丢帧策略不变 | H | todo |
|
||||
| PKG-MB-06 | artplayer-proxy-mediabunny<br>整理音频解码、时钟与同步 | PKG-MB-04 | AudioEngine 时钟、缓冲和 AudioContext 归属 | AV sync、倍速、无音轨、静音/音量和暂停恢复通过 | H | todo |
|
||||
| PKG-MB-07 | artplayer-proxy-mediabunny<br>整理 HLS 配对轨道与 selector | PKG-MB-05, PKG-MB-06, CORE-14 | m3u8 配对、质量/音频选择及拓扑清理 | 实际选择高亮、切到无轨道来源清理、无重复 readiness | H | todo |
|
||||
@@ -523,4 +523,5 @@
|
||||
- PKG-MB-01: [记录](baselines/mb-release.json) [记录](baselines/mb-surface.json) [记录](baselines/mb-contract.md) [记录](baselines/mb-contract-validation.json) [记录](mb-validation.md) [记录](changes/2026-09-12-PKG-MB-01-contract.md)
|
||||
- PKG-MB-02: [记录](changes/2026-09-12-PKG-MB-02-checkpoint.md) [记录](baselines/mb-media-checkpoint.json) [记录](mb-validation.md) [记录](changes/2026-09-12-PKG-MB-02-baseline.md) [记录](baselines/mb-behavior-validation.json)
|
||||
- PKG-MB-03: [记录](changes/2026-09-12-PKG-MB-03-input.md) [记录](baselines/mb-input-validation.json)
|
||||
- PKG-MB-04: [记录](baselines/mb-coordination-source.json) [记录](changes/2026-09-12-PKG-MB-04-shim-checkpoint.md) [记录](baselines/mb-shim-checkpoint.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)
|
||||
@@ -1,5 +1,17 @@
|
||||
# 进度与证据
|
||||
|
||||
## 当前检查点:PKG-MB-04 VideoShim、事件与RAF资源
|
||||
|
||||
新增五个生产TS模块,保持shim/canvas布局和正常事件/Promise/属性契约;修复销毁后的RAF、
|
||||
事件监听器和清理异常残留。同一12项shim断言在adba8a3d main上9通过/3失败,候选全通过。
|
||||
包专项68项通过;main/legacy各32项(28候选+4冻结正常对照),三格式构建通过。
|
||||
39项候选浏览器检查通过:12播放、9原生Stream取消、9synthetic RAF、7能力失败对照、
|
||||
2待修复无轨道就绪。完整CI1229项通过,另44重复契约,301生产TS,声明桥未计为JS实现迁移。
|
||||
见[检查点](changes/2026-09-12-PKG-MB-04-shim-checkpoint.md)及[证据](baselines/mb-shim-checkpoint.json)。
|
||||
MB-04保持doing;立即继续MediaBunnyEngine实际TS与readiness/play/seek协调。事件出口已关闭
|
||||
不代表底层晚操作已停止,MB-LIFE-01/MB-READY-01仍open。222项:100 done、8 doing、114 todo。
|
||||
本地checkpoint,不推送/发布;Canvas/Ambilight类型决定仍待确认。
|
||||
|
||||
## 最新完成:PKG-MB-03 输入、Range与加载取消
|
||||
|
||||
六个strict TS模块已接入生产,修复切源/销毁/超时后的待加载Input、HEAD及timer资源与陈旧回调。
|
||||
|
||||
+3
-2
@@ -3648,7 +3648,7 @@
|
||||
"PKG-MB-07",
|
||||
"PKG-MB-09"
|
||||
],
|
||||
"compatibleResolution": "Reproduce pending operations and destroy/source-switch races before migrating each owner; preserve public event and promise behavior while preventing stale resource use. MB-02 now reproduces late load rejection and uncancelled waiting/loadstart timers after destroy in all three historical implementations using a controlled host. Other interleavings and full-core native behavior are not yet verified. Expanded MB-02 baseline reproduces play-after-pause/destroy, rejected-play false state, seek-after-destroy and retained successful-load timeout timers in all three actual historical implementations; Range and active-timeout normal controls remain separate. MB-03 candidate owns pending Input before track selection and cancels load/HEAD/timers on source replacement, timeout and destroy; source/main/legacy regressions pass. Pending play/seek, late decoder work and full readiness coordination remain MB-04/05/06, so this risk stays open.",
|
||||
"compatibleResolution": "Reproduce pending operations and destroy/source-switch races before migrating each owner; preserve public event and promise behavior while preventing stale resource use. MB-02 now reproduces late load rejection and uncancelled waiting/loadstart timers after destroy in all three historical implementations using a controlled host. Other interleavings and full-core native behavior are not yet verified. Expanded MB-02 baseline reproduces play-after-pause/destroy, rejected-play false state, seek-after-destroy and retained successful-load timeout timers in all three actual historical implementations; Range and active-timeout normal controls remain separate. MB-03 candidate owns pending Input before track selection and cancels load/HEAD/timers on source replacement, timeout and destroy; source/main/legacy regressions pass. Pending play/seek, late decoder work and full readiness coordination remain MB-04/05/06, so this risk stays open. MB-04 shim checkpoint fixes synthetic RAF retention and terminal event-listener cleanup, including engine cleanup exceptions. Closing the event bridge does not prove pending engine operations stopped; coordination remains in progress.",
|
||||
"closureCriteria": "Historical failing interleavings and candidate cancellation/cleanup pass with real media and event evidence, including long playback and track topology.",
|
||||
"status": "open",
|
||||
"evidence": [
|
||||
@@ -3659,7 +3659,8 @@
|
||||
"refactor/baselines/mb-media-checkpoint.json",
|
||||
"refactor/changes/2026-09-12-PKG-MB-02-baseline.md",
|
||||
"refactor/baselines/mb-behavior-validation.json",
|
||||
"refactor/changes/2026-09-12-PKG-MB-03-input.md"
|
||||
"refactor/changes/2026-09-12-PKG-MB-03-input.md",
|
||||
"refactor/changes/2026-09-12-PKG-MB-04-shim-checkpoint.md"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
+6
-2
@@ -3460,11 +3460,15 @@
|
||||
"CORE-06",
|
||||
"CORE-11"
|
||||
],
|
||||
"status": "todo",
|
||||
"status": "doing",
|
||||
"risk": "H",
|
||||
"deliverable": "shim 描述符、事件桥、加载状态和操作隔离",
|
||||
"acceptance": "公开属性/同步异步返回与事件重入顺序保持",
|
||||
"evidence": []
|
||||
"evidence": [
|
||||
"baselines/mb-coordination-source.json",
|
||||
"changes/2026-09-12-PKG-MB-04-shim-checkpoint.md",
|
||||
"baselines/mb-shim-checkpoint.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PKG-MB-05",
|
||||
|
||||
Reference in new issue
Block a user