Files
hyperframes/scripts/test-reachability.json
T
Miguel Ángel 3b89bfe8a7 fix(engine): motion blur works over video by holding each video frame across samples (#5150)
* fix(engine): motion blur works over video by holding each video frame across samples

Each output frame's injected video frame is now held for every sub-frame
sample and probe of that frame, so footage stays as shot and only the
layers over it blur. The refusal for sessions with a before-capture hook
is removed.

Fixes #5144

* fix(engine): trim held-video comments, pin the new test-classification hash

* fix(engine): a blurred frame at a sub-composition cut keeps its video

Each sample now decides which videos show at its own time, like every other
layer, and only a video on screen at the output frame's time keeps that
frame's picture. Before, the visible set was taken at the frame's time while
sub-composition hosts were hidden at the sample's time, so the samples just
before a cut showed no video and the cut frame dipped toward black. The
before-capture hook takes the held time as an optional third argument, and
the early injection is gone: the GPU re-render now always runs at the page's
own time.

* style(engine): one doc comment for the before-capture hook

* fix(engine): a video animating its own style stays in step when blurred

The injector copies a video's own style only when its frame changes, so the
first injection of each blurred frame now runs at the frame's own time
before the samples. A video sliding by its own transform no longer sits a
quarter frame behind with blur on.

* test(producer): a two-line header for the motion blur over video test

* test(producer): reach the cut fixture by path, not a URL fallow reads as an import
2026-10-07 05:46:10 +00:00

76 lines
4.0 KiB
JSON

{
"guards": {
"scripts/check-media-use-copy-parity.test.mjs": [
"skills/media-use/scripts/lib/**",
"packages/cli/src/media-use/lib/**",
"scripts/generate-skill-module-copies.mjs",
"skills/hyperframes/scripts/lib/frame-packets-core.mjs",
"skills/media-use/audio/scripts/lib/bgm-volume.mjs"
],
"scripts/check-test-reachability.test.mjs": [
".github/workflows/ci.yml",
"**/package.json",
"**/*.test.{mjs,ts,tsx}"
],
"scripts/creator-editing-capabilities.test.mjs": [
"skills/**",
"packages/core/**",
"packages/engine/**"
],
"scripts/registry-primitive-payloads.test.ts": ["registry/**"],
"scripts/generate-catalog-previews.test.ts": [
"registry/**",
"scripts/**",
"packages/producer/**"
],
"scripts/generate-catalog-payloads.test.ts": ["registry/**", "scripts/**"],
"skills/product-launch-video/scripts/build-frame-subsets.test.mjs": [
"scripts/generate-captured-font-copies.mjs",
"skills/product-launch-video/scripts/build-frame.mjs",
"skills/product-launch-video/scripts/captions.mjs",
"skills/product-launch-video/scripts/lib/captured-fonts.mjs",
"skills/faceless-explainer/scripts/build-frame.mjs",
"skills/faceless-explainer/scripts/captions.mjs",
"skills/faceless-explainer/scripts/lib/captured-fonts.mjs",
"skills/pr-to-video/scripts/build-frame.mjs",
"skills/pr-to-video/scripts/captions.mjs",
"skills/pr-to-video/scripts/lib/captured-fonts.mjs"
],
"scripts/check-skill-import-boundaries.test.mjs": ["skills/**"]
},
"runners": [
{
"cwd": ".",
"command": "set -euo pipefail\nmapfile -t SKILLS_TESTS < <(find skills packages/cli/src/media-use -type f -name \"*.test.mjs\" | sort)\nif [ \"${#SKILLS_TESTS[@]}\" -eq 0 ]; then\necho \"::error::No skills/**/*.test.mjs files found. Did the layout change?\"\nexit 1\nfi\nSKILLS_TESTS+=(scripts/check-media-use-copy-parity.test.mjs scripts/creator-editing-capabilities.test.mjs)\nprintf 'Running %d skills test file(s):\\n' \"${#SKILLS_TESTS[@]}\"\nprintf ' * %s\\n' \"${SKILLS_TESTS[@]}\"\nnode --import ./packages/cli/scripts/test-home.mjs --test \"${SKILLS_TESTS[@]}\"",
"tests": [
"skills/**/*.test.mjs",
"packages/cli/src/media-use/**/*.test.mjs",
"scripts/check-media-use-copy-parity.test.mjs",
"scripts/creator-editing-capabilities.test.mjs"
],
"sources": {},
"reason": "Shell find plus an explicit parity file; exact command match invalidates this mapping on edits."
},
{
"cwd": ".",
"command": "bun run producer:test:${{ matrix.lane }}",
"tests": [
"packages/producer/src/**/*.test.ts",
"packages/producer/scripts/test-classification.test.mjs",
"packages/producer/tests/**/*.test.ts"
],
"sources": {
"packages/producer/scripts/run-test-lane.mjs": "638885e14480d03290803389325a655f3749442167d784e07bb3af3404598af7",
"packages/producer/scripts/test-classification.mjs": "d7ca46d663bfa7012147d1eff63a9e599f44393d7d65fd910d5b96cceb2b2f44",
".github/workflows/ci.yml#job#producer-source-tests": "45da72aa6cf08cdfd5bcf5311e89f12af4842f9eebc6735df19da8c02f4d4864",
"packages/producer/package.json#script#test:unit": "ae6beda8319d166774be958ea5593cd27dbf7f6c9bce1d787a3fe28dfc3477b1",
"packages/producer/package.json#script#test:integration": "008589f37d026877595a13501cbb66abd5cbe50e21fdcac6904f45466c3f475d",
"packages/producer/package.json#script#test:classification": "4ad50d88c81de374dd6ef8a53d702a4b1901483837ecd3d833b1cb0c9a29a058",
"package.json#script#producer:test:unit": "ded6d4183d455d1f414e41d15794c1aef5323e53b5ea5e2ff349e3bb049c18db",
"package.json#script#producer:test:integration": "8bb545947f4f8fef3bd5c6c9b1bcb394c7c942d7a3ab90cf4540c662572a278e"
},
"reason": "Both unit and integration matrix lanes discover tests under src and tests; workflow and runner sources are pinned to invalidate changed selection."
}
]
}