Files
hyperframes/scripts/check-no-main-deletions.mjs
Vance IngallsandClaude Sonnet 5.5 79b57ab12d feat: automatic tier, 240°/32 defaults, check finding, and Studio stops opting out (#6108)
* feat: check names the filter fallback, the render log names the tier, Studio stops opting out

hyperframes check reports motion_blur_filter_fallback (info) with the reason capture could not
run and the way back to it. The engine's per-session log line gains tier=, and its pixel test
covers the fallback over a WebGL page. Studio no longer sends previewMotionBlur: every Chrome
can preview blur now, through the fallback where it lacks html-in-canvas; the server still
accepts false from an older Studio.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat(core): blur picks the cheaper filter tier when every mover only translates

The scan now notes whether any mover turns or scales (the linear part of its transform chain
changes) and whether it already forms a stacking context while it moves. When every mover only
translates, the filter tier draws as well as capture and costs about what no blur costs: on an
8 s bench shot a render took 7.0 s against 9.9 s with capture and 7.3 s with no blur. Anything
that turns or scales, or moves without a transform, stays on capture.

data-motion-blur-tier="capture" or "filter" forces a tier. The report says which one drew
and why (translation-only, tier-attribute); hyperframes check stays quiet for those two, which
are choices, not fallbacks. The pixel tests run the shared assertions through both tiers.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* docs(motion-blur): the two tiers, the tier attribute, and what changed in limits

The guide described blur turning off for WebGL, a root transform and similar. It now says the
filter tier draws instead, how the tier is chosen and forced, what each does with a turn or a
zoom, the measured cost of each, and which findings check emits. The skill note drops the
off-for-WebGL advice and the 1.7x figure.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat(core): blur defaults match a 240 degree shutter and at least 32 samples

The shutter opens 240 degrees by default (was 180) and each mover gets at least 32 taps (was
sized to the smear alone, down to 2), growing with the smear as before. These are the settings
the shutter blur Jake built uses; on the card whip the default render is now 51 dB from his
(34.6 dB at the old defaults). The guide's attribute table says so.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore(core): trim tier.ts comments to the ratchet

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore: allow deleting the Studio previewMotionBlur render test

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 14:20:17 -07:00

1996 lines
98 KiB
JavaScript

#!/usr/bin/env node
/**
* Fail if this branch would delete files that exist on the base.
*
* Written after a scare that turned out to be a measurement error, which is
* the reason it uses the three-dot form. Comparing tip to tip (two dots) on a
* branch that is a month behind reports every file main added since the merge
* base as a deletion: 1,284 of them, including an entire skills tree. None of
* that is real. A merge keeps main's side, and a pull request shows the
* three-dot diff, which reported zero.
*
* So this exists to catch deletions a branch genuinely proposes, and to make
* the distinction hard to get wrong again. If it ever disagrees with a manual
* git diff, check which form the manual one used before believing it.
*
* Renames are reported separately. In a name-only diff a rename is
* indistinguishable from a deletion, so treating them alike would either mask
* real loss or block every legitimate move.
*
* node scripts/check-no-main-deletions.mjs [--base origin/main]
*/
import { execFileSync } from "node:child_process";
const BASE_FLAG = "--base";
/**
* Deletions this repository has already agreed to, each with the reason.
*
* A blanket escape hatch (a flag, an env var, `--force`) would turn the guard
* off exactly when it matters, because the branch deleting something by
* accident is also the branch that would reach for it. Naming each path here
* instead keeps the default absolute and makes every intentional removal a
* reviewable line in a diff.
*
* Entries are for deletions that are NOT renames — git already pairs those on
* its own. Remove an entry once its deletion has landed on the base.
*/
const STORYBOARD_VIEW_REASON =
"owner-directed removal of the Studio storyboard view; its only readers were deleted with it";
const SIMULATED_CURSOR_REASON =
"owner-directed removal of simulated-cursor; the Cursors section's new pointer animations replace it";
const CATALOG_FONT_REASON =
"superseded catalog font: the regenerated block payloads load their fonts from newly hashed files, nothing references this one";
const DESIGN_NOTES_REASON =
"plan and contract notes are working notes kept out of the repo; docs/contracts/ and docs/plans/ are gitignored";
const INSPECTOR_TOOLS_REASON =
"the inspector ships the capability, not agent tools; each harness defines its own tool names, descriptions and schemas";
const RETIRED_WORKFLOW_REASON =
"the eight workflow skills are retired; their measured knowledge lives in the hyperframes skill's references (film, captions, overlays, motion, look, format)";
const RETIRED_GUIDE_REASON =
"the folded domain guides are retired; their knowledge lives in the hyperframes skill's references and media-use's mixing reference";
const RETIRED_ROUTING_REASON =
"routing, interview and production-loop references for the retired workflows; the skills carry knowledge, not process";
const RETIRED_WORKFLOW_FILES = [
"skills/embedded-captions/.gitignore",
"skills/embedded-captions/CATALOG.md",
"skills/embedded-captions/SKILL.md",
"skills/embedded-captions/assets/fonts/char-widths.json",
"skills/embedded-captions/assets/strokefonts/HersheyScript1.svg",
"skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg",
"skills/embedded-captions/dna/README.md",
"skills/embedded-captions/dna/chrome.json",
"skills/embedded-captions/dna/cream.json",
"skills/embedded-captions/dna/documentary.json",
"skills/embedded-captions/dna/editorial.json",
"skills/embedded-captions/dna/glitch.json",
"skills/embedded-captions/dna/ink.json",
"skills/embedded-captions/dna/keynote.json",
"skills/embedded-captions/dna/loud.json",
"skills/embedded-captions/dna/neon.json",
"skills/embedded-captions/dna/velocity.json",
"skills/embedded-captions/modes/cinematic/README.md",
"skills/embedded-captions/modes/cinematic/_archive/champion/spec.md",
"skills/embedded-captions/modes/cinematic/_archive/champion/template.html",
"skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md",
"skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html",
"skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md",
"skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html",
"skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md",
"skills/embedded-captions/modes/cinematic/cinematic-cream/template.html",
"skills/embedded-captions/modes/cinematic/engine.html",
"skills/embedded-captions/modes/standard/_anatomy.md",
"skills/embedded-captions/modes/standard/_motion.md",
"skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs",
"skills/embedded-captions/modes/standard/fonts/files/anton-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/audiowide-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/baloo-2-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/baloo-2-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/bangers-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/bodoni-moda-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/bodoni-moda-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/caveat-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/caveat-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/chakra-petch-latin-500-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/chakra-petch-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/cinzel-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/cinzel-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/cormorant-garamond-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/cormorant-garamond-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/creepster-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/fredoka-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/fredoka-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-500-italic.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-500-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-600-italic.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-600-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-800-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/inter-latin-900-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/monoton-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/orbitron-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/orbitron-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/permanent-marker-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/press-start-2p-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/rajdhani-latin-500-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/rajdhani-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/saira-stencil-one-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/shippori-mincho-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/shippori-mincho-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/sora-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/sora-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/space-grotesk-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/space-grotesk-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/special-elite-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/teko-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/teko-latin-700-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/files/vt323-latin-400-normal.woff2",
"skills/embedded-captions/modes/standard/fonts/fonts.css",
"skills/embedded-captions/references/aesthetic-principles.md",
"skills/embedded-captions/references/anti-patterns.md",
"skills/embedded-captions/references/bespoke-vs-presets.md",
"skills/embedded-captions/references/caption-grouping.md",
"skills/embedded-captions/references/composition-craft.md",
"skills/embedded-captions/references/direction-catalog.md",
"skills/embedded-captions/references/example-renders/champion.html",
"skills/embedded-captions/references/example-renders/memory-wall.html",
"skills/embedded-captions/references/failure-modes.md",
"skills/embedded-captions/references/layout-heuristics.md",
"skills/embedded-captions/references/motion-vocabulary.md",
"skills/embedded-captions/references/rail.md",
"skills/embedded-captions/references/reference-bar.md",
"skills/embedded-captions/references/scene-types.md",
"skills/embedded-captions/references/typographic-moves.md",
"skills/embedded-captions/references/typography-presets.md",
"skills/embedded-captions/scripts/audio-envelope.cjs",
"skills/embedded-captions/scripts/check-occlusion.cjs",
"skills/embedded-captions/scripts/check-overflow.cjs",
"skills/embedded-captions/scripts/check-rail-climax.cjs",
"skills/embedded-captions/scripts/check-timing.cjs",
"skills/embedded-captions/scripts/fill-timings.cjs",
"skills/embedded-captions/scripts/fit-fonts.cjs",
"skills/embedded-captions/scripts/fixtures/heroless/theme.json",
"skills/embedded-captions/scripts/fixtures/heroless/transcript.json",
"skills/embedded-captions/scripts/gen-stroke-path.py",
"skills/embedded-captions/scripts/hf-cli.cjs",
"skills/embedded-captions/scripts/hf-cli.test.mjs",
"skills/embedded-captions/scripts/inject-fonts.cjs",
"skills/embedded-captions/scripts/lib-dna.cjs",
"skills/embedded-captions/scripts/make-cinematic.cjs",
"skills/embedded-captions/scripts/make-composition.cjs",
"skills/embedded-captions/scripts/make-theme.cjs",
"skills/embedded-captions/scripts/make-theme.test.mjs",
"skills/embedded-captions/scripts/matte.cjs",
"skills/embedded-captions/scripts/measure-layout.cjs",
"skills/embedded-captions/scripts/prepare.sh",
"skills/embedded-captions/scripts/preview-frames.cjs",
"skills/embedded-captions/scripts/preview-frames.test.mjs",
"skills/embedded-captions/scripts/render-and-composite.sh",
"skills/embedded-captions/scripts/render-and-composite.test.mjs",
"skills/embedded-captions/scripts/render-theme.sh",
"skills/embedded-captions/scripts/safe-zones.cjs",
"skills/embedded-captions/scripts/transcribe.cjs",
"skills/embedded-captions/scripts/transcribe.test.mjs",
"skills/embedded-captions/themes/README.md",
"skills/embedded-captions/themes/anchor.json",
"skills/embedded-captions/themes/arcade.json",
"skills/embedded-captions/themes/aurora.json",
"skills/embedded-captions/themes/biolume.json",
"skills/embedded-captions/themes/brush.json",
"skills/embedded-captions/themes/chalkboard.json",
"skills/embedded-captions/themes/dossier.json",
"skills/embedded-captions/themes/graffiti.json",
"skills/embedded-captions/themes/hologram.json",
"skills/embedded-captions/themes/inkwater.json",
"skills/embedded-captions/themes/laser.json",
"skills/embedded-captions/themes/lastpage.json",
"skills/embedded-captions/themes/neonsign.json",
"skills/embedded-captions/themes/ordnance.json",
"skills/embedded-captions/themes/papercut.json",
"skills/embedded-captions/themes/popup.json",
"skills/embedded-captions/themes/ransom.json",
"skills/embedded-captions/themes/scoreboard.json",
"skills/embedded-captions/themes/spectrum.json",
"skills/embedded-captions/themes/stardust.json",
"skills/embedded-captions/themes/stomp.json",
"skills/embedded-captions/themes/terminal.json",
"skills/embedded-captions/themes/thunder.json",
"skills/embedded-captions/themes/transit.json",
"skills/embedded-captions/themes/vhs.json",
"skills/faceless-explainer/SKILL.md",
"skills/faceless-explainer/references/cut-catalog.md",
"skills/faceless-explainer/references/motion-language.md",
"skills/faceless-explainer/references/story-design.md",
"skills/faceless-explainer/references/visual-design.md",
"skills/faceless-explainer/scripts/assemble-index.mjs",
"skills/faceless-explainer/scripts/assemble-index.test.mjs",
"skills/faceless-explainer/scripts/audio.mjs",
"skills/faceless-explainer/scripts/audio.test.mjs",
"skills/faceless-explainer/scripts/build-frame.mjs",
"skills/faceless-explainer/scripts/captions.mjs",
"skills/faceless-explainer/scripts/captions.test.mjs",
"skills/faceless-explainer/scripts/frame-packets.mjs",
"skills/faceless-explainer/scripts/frame-packets.test.mjs",
"skills/faceless-explainer/scripts/lib/assets.mjs",
"skills/faceless-explainer/scripts/lib/bgm-volume.mjs",
"skills/faceless-explainer/scripts/lib/captured-fonts.mjs",
"skills/faceless-explainer/scripts/lib/dimensions.mjs",
"skills/faceless-explainer/scripts/lib/frame-packets-core.mjs",
"skills/faceless-explainer/scripts/lib/host-audio.mjs",
"skills/faceless-explainer/scripts/lib/main-module.mjs",
"skills/faceless-explainer/scripts/lib/pad-frame-duration.mjs",
"skills/faceless-explainer/scripts/lib/storyboard.mjs",
"skills/faceless-explainer/scripts/lib/tokens.mjs",
"skills/faceless-explainer/scripts/lib/transition-registry.mjs",
"skills/faceless-explainer/scripts/lib/transitions.json",
"skills/faceless-explainer/scripts/transitions.mjs",
"skills/faceless-explainer/scripts/transitions.test.mjs",
"skills/faceless-explainer/sub-agents/frame-worker.md",
"skills/general-video/SKILL.md",
"skills/general-video/scripts/frame-packets.mjs",
"skills/general-video/scripts/frame-packets.test.mjs",
"skills/general-video/scripts/lib/frame-packets-core.mjs",
"skills/general-video/scripts/lib/main-module.mjs",
"skills/general-video/sub-agents/frame-worker.md",
"skills/motion-graphics/SKILL.md",
"skills/motion-graphics/agents/builder.md",
"skills/motion-graphics/agents/director.md",
"skills/motion-graphics/agents/finalize.md",
"skills/motion-graphics/catalog-map.md",
"skills/motion-graphics/categories/asset-fusion/module.md",
"skills/motion-graphics/categories/charts/module.md",
"skills/motion-graphics/categories/kinetic-type/module.md",
"skills/motion-graphics/categories/logo-reveal/module.md",
"skills/motion-graphics/categories/lower-thirds/module.md",
"skills/motion-graphics/categories/maps/module.md",
"skills/motion-graphics/categories/news/module.md",
"skills/motion-graphics/categories/stat/module.md",
"skills/motion-graphics/categories/tweet/module.md",
"skills/motion-graphics/categories/webpage/module.md",
"skills/motion-graphics/grounding/PROTOCOL.md",
"skills/motion-graphics/phases/source/guide.md",
"skills/motion-graphics/references/builder-contract.md",
"skills/motion-graphics/references/motion-vocabulary.md",
"skills/motion-graphics/references/shot-plan-ir.md",
"skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html",
"skills/music-to-video/SKILL.md",
"skills/music-to-video/references/frame-skeleton.md",
"skills/music-to-video/references/montage.md",
"skills/music-to-video/references/motion-primitive-catalog.md",
"skills/music-to-video/references/motion-primitives/3d-card-flip/index.html",
"skills/music-to-video/references/motion-primitives/3d-card-flip/scene.html",
"skills/music-to-video/references/motion-primitives/assets/gsap.min.js",
"skills/music-to-video/references/motion-primitives/bg-flow-field/index.html",
"skills/music-to-video/references/motion-primitives/bg-flow-field/scene.html",
"skills/music-to-video/references/motion-primitives/binary-decrypt/index.html",
"skills/music-to-video/references/motion-primitives/binary-decrypt/scene.html",
"skills/music-to-video/references/motion-primitives/blur-resolve/index.html",
"skills/music-to-video/references/motion-primitives/blur-resolve/scene.html",
"skills/music-to-video/references/motion-primitives/braam-punch/index.html",
"skills/music-to-video/references/motion-primitives/braam-punch/scene.html",
"skills/music-to-video/references/motion-primitives/chromatic-split/index.html",
"skills/music-to-video/references/motion-primitives/chromatic-split/scene.html",
"skills/music-to-video/references/motion-primitives/chrome-sweep/index.html",
"skills/music-to-video/references/motion-primitives/chrome-sweep/scene.html",
"skills/music-to-video/references/motion-primitives/counting-punch/index.html",
"skills/music-to-video/references/motion-primitives/counting-punch/scene.html",
"skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html",
"skills/music-to-video/references/motion-primitives/crash-zoom-in/scene.html",
"skills/music-to-video/references/motion-primitives/datamosh-smear/index.html",
"skills/music-to-video/references/motion-primitives/datamosh-smear/scene.html",
"skills/music-to-video/references/motion-primitives/directional-fill/index.html",
"skills/music-to-video/references/motion-primitives/directional-fill/scene.html",
"skills/music-to-video/references/motion-primitives/dolly-zoom/index.html",
"skills/music-to-video/references/motion-primitives/dolly-zoom/scene.html",
"skills/music-to-video/references/motion-primitives/electric-arc/index.html",
"skills/music-to-video/references/motion-primitives/electric-arc/scene.html",
"skills/music-to-video/references/motion-primitives/flash-cut/index.html",
"skills/music-to-video/references/motion-primitives/flash-cut/scene.html",
"skills/music-to-video/references/motion-primitives/gooey-metaball/index.html",
"skills/music-to-video/references/motion-primitives/gooey-metaball/scene.html",
"skills/music-to-video/references/motion-primitives/hard-cut/index.html",
"skills/music-to-video/references/motion-primitives/hard-cut/scene.html",
"skills/music-to-video/references/motion-primitives/hypercut-whip/index.html",
"skills/music-to-video/references/motion-primitives/hypercut-whip/scene.html",
"skills/music-to-video/references/motion-primitives/iris-open/index.html",
"skills/music-to-video/references/motion-primitives/iris-open/scene.html",
"skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html",
"skills/music-to-video/references/motion-primitives/kinetic-letter-in/scene.html",
"skills/music-to-video/references/motion-primitives/liquid-morph/index.html",
"skills/music-to-video/references/motion-primitives/liquid-morph/scene.html",
"skills/music-to-video/references/motion-primitives/mask-reveal/index.html",
"skills/music-to-video/references/motion-primitives/mask-reveal/scene.html",
"skills/music-to-video/references/motion-primitives/mosaic-pack/index.html",
"skills/music-to-video/references/motion-primitives/mosaic-pack/scene.html",
"skills/music-to-video/references/motion-primitives/neon-flicker/index.html",
"skills/music-to-video/references/motion-primitives/neon-flicker/scene.html",
"skills/music-to-video/references/motion-primitives/outline-to-fill/index.html",
"skills/music-to-video/references/motion-primitives/outline-to-fill/scene.html",
"skills/music-to-video/references/motion-primitives/palette-flip/index.html",
"skills/music-to-video/references/motion-primitives/palette-flip/scene.html",
"skills/music-to-video/references/motion-primitives/particle-burst/index.html",
"skills/music-to-video/references/motion-primitives/particle-burst/scene.html",
"skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html",
"skills/music-to-video/references/motion-primitives/pixel-dissolve/scene.html",
"skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html",
"skills/music-to-video/references/motion-primitives/radial-burst-lines/scene.html",
"skills/music-to-video/references/motion-primitives/screen-shake/index.html",
"skills/music-to-video/references/motion-primitives/screen-shake/scene.html",
"skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html",
"skills/music-to-video/references/motion-primitives/slot-machine-reveal/scene.html",
"skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html",
"skills/music-to-video/references/motion-primitives/spotlight-sweep/scene.html",
"skills/music-to-video/references/motion-primitives/staggered-exit/index.html",
"skills/music-to-video/references/motion-primitives/staggered-exit/scene.html",
"skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md",
"skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html",
"skills/music-to-video/references/motion-primitives/text-spectral-rays/scene.html",
"skills/music-to-video/references/motion-primitives/text-wave-distort/index.html",
"skills/music-to-video/references/motion-primitives/text-wave-distort/scene.html",
"skills/music-to-video/references/motion-primitives/tile-mosaic/index.html",
"skills/music-to-video/references/motion-primitives/tile-mosaic/scene.html",
"skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html",
"skills/music-to-video/references/motion-primitives/typewriter-reveal/scene.html",
"skills/music-to-video/references/motion-primitives/word-grid-burst/index.html",
"skills/music-to-video/references/motion-primitives/word-grid-burst/scene.html",
"skills/music-to-video/references/planning.md",
"skills/music-to-video/references/storyboard-format.md",
"skills/music-to-video/references/template-catalog.md",
"skills/music-to-video/references/templates/card-flyby/index.html",
"skills/music-to-video/references/templates/card-flyby/program.json",
"skills/music-to-video/references/templates/held-message-living-field/index.html",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/asphalt-031.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bark-014.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/brick.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-075-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-101.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-102.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-104.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/carpet.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-034.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-042-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-046.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-047-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/diamond-plate-009.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/fabric-080.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/fabric-083.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-001.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-004.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-005.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-037.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-054.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-068.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-080.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-103.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-104.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/lava.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/leather-037.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/marble-012.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/marble-016.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-032.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-038.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-041-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-046-b.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-048-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-049-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-055-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-061-b.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/onyx.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/painted-plaster-017.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/paving-stones-138.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/paving-stones-150.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/plaster-001.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-007.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-008-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-009-c.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-012-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-012-b.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-013-a.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock-058.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock-063.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/snow-015.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/snow.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/tiles-138.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/travertine-009.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-049.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-051.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-058.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-066.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-092.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-094.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-051.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-064.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-070.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood.png",
"skills/music-to-video/references/templates/held-text-strobe-burst/index.html",
"skills/music-to-video/references/templates/intro-kinetic-cascade/index.html",
"skills/music-to-video/references/templates/intro-kinetic-cascade/program.json",
"skills/music-to-video/references/templates/logo-split-lockup-pulse/assets/fredoka-700.woff2",
"skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html",
"skills/music-to-video/references/templates/poster-tile-mosaic/index.html",
"skills/music-to-video/references/templates/poster-tile-mosaic/program.json",
"skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html",
"skills/music-to-video/references/templates/split-anchor-word-slot/index.html",
"skills/music-to-video/references/templates/split-anchor-word-slot/program.json",
"skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html",
"skills/music-to-video/scripts/analyze-beatgrid.py",
"skills/music-to-video/scripts/assemble-index.mjs",
"skills/music-to-video/scripts/lib/storyboard.mjs",
"skills/music-to-video/scripts/stage-assets.mjs",
"skills/music-to-video/scripts/validate-plan.mjs",
"skills/music-to-video/sub-agents/frame-worker.md",
"skills/pr-to-video/SKILL.md",
"skills/pr-to-video/references/code-vocabulary.md",
"skills/pr-to-video/references/cut-catalog.md",
"skills/pr-to-video/references/motion-language.md",
"skills/pr-to-video/references/story-design.md",
"skills/pr-to-video/references/visual-design.md",
"skills/pr-to-video/scripts/assemble-index.mjs",
"skills/pr-to-video/scripts/assemble-index.test.mjs",
"skills/pr-to-video/scripts/audio.mjs",
"skills/pr-to-video/scripts/build-frame.mjs",
"skills/pr-to-video/scripts/captions.mjs",
"skills/pr-to-video/scripts/captions.test.mjs",
"skills/pr-to-video/scripts/fetch-people-avatars.mjs",
"skills/pr-to-video/scripts/fetch-pr.mjs",
"skills/pr-to-video/scripts/frame-contract.test.mjs",
"skills/pr-to-video/scripts/frame-packets.mjs",
"skills/pr-to-video/scripts/ingest.mjs",
"skills/pr-to-video/scripts/lib/assets.mjs",
"skills/pr-to-video/scripts/lib/bgm-volume.mjs",
"skills/pr-to-video/scripts/lib/captured-fonts.mjs",
"skills/pr-to-video/scripts/lib/dimensions.mjs",
"skills/pr-to-video/scripts/lib/frame-contract.mjs",
"skills/pr-to-video/scripts/lib/frame-packets-core.mjs",
"skills/pr-to-video/scripts/lib/host-audio.mjs",
"skills/pr-to-video/scripts/lib/main-module.mjs",
"skills/pr-to-video/scripts/lib/pad-frame-duration.mjs",
"skills/pr-to-video/scripts/lib/storyboard.mjs",
"skills/pr-to-video/scripts/lib/tokens.mjs",
"skills/pr-to-video/scripts/lib/transition-registry.mjs",
"skills/pr-to-video/scripts/lib/transitions.json",
"skills/pr-to-video/scripts/preflight.mjs",
"skills/pr-to-video/scripts/project-dir.mjs",
"skills/pr-to-video/scripts/transitions.mjs",
"skills/pr-to-video/scripts/workflow-guardrails.test.mjs",
"skills/pr-to-video/sub-agents/frame-worker.md",
"skills/product-launch-video/SKILL.md",
"skills/product-launch-video/references/cut-catalog.md",
"skills/product-launch-video/references/motion-language.md",
"skills/product-launch-video/references/story-design.md",
"skills/product-launch-video/references/visual-design.md",
"skills/product-launch-video/scripts/assemble-index.mjs",
"skills/product-launch-video/scripts/assemble-index.test.mjs",
"skills/product-launch-video/scripts/audio.mjs",
"skills/product-launch-video/scripts/audio.test.mjs",
"skills/product-launch-video/scripts/build-frame-colors.test.mjs",
"skills/product-launch-video/scripts/build-frame-subsets.test.mjs",
"skills/product-launch-video/scripts/build-frame.mjs",
"skills/product-launch-video/scripts/captions.mjs",
"skills/product-launch-video/scripts/captions.test.mjs",
"skills/product-launch-video/scripts/capture-skill-guardrails.test.mjs",
"skills/product-launch-video/scripts/frame-packets.mjs",
"skills/product-launch-video/scripts/frame-packets.test.mjs",
"skills/product-launch-video/scripts/lib/assets.mjs",
"skills/product-launch-video/scripts/lib/bgm-volume.mjs",
"skills/product-launch-video/scripts/lib/captured-fonts.mjs",
"skills/product-launch-video/scripts/lib/dimensions.mjs",
"skills/product-launch-video/scripts/lib/frame-packets-core.mjs",
"skills/product-launch-video/scripts/lib/host-audio.mjs",
"skills/product-launch-video/scripts/lib/main-module.mjs",
"skills/product-launch-video/scripts/lib/pad-frame-duration.mjs",
"skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs",
"skills/product-launch-video/scripts/lib/storyboard.mjs",
"skills/product-launch-video/scripts/lib/tokens.mjs",
"skills/product-launch-video/scripts/lib/tokens.test.mjs",
"skills/product-launch-video/scripts/lib/transition-registry.mjs",
"skills/product-launch-video/scripts/lib/transitions.json",
"skills/product-launch-video/scripts/media-contract.test.mjs",
"skills/product-launch-video/scripts/stage-assets.mjs",
"skills/product-launch-video/scripts/stage-assets.test.mjs",
"skills/product-launch-video/scripts/transitions.mjs",
"skills/product-launch-video/scripts/transitions.test.mjs",
"skills/product-launch-video/sub-agents/frame-worker.md",
"skills/talking-head-recut/NOTICE.md",
"skills/talking-head-recut/SKILL.md",
"skills/talking-head-recut/assets/fonts/Caveat-400-latin.woff2",
"skills/talking-head-recut/assets/fonts/Caveat-700-latin.woff2",
"skills/talking-head-recut/assets/fonts/Inter-400-latin.woff2",
"skills/talking-head-recut/assets/fonts/Inter-700-latin.woff2",
"skills/talking-head-recut/assets/fonts/LXGWWenKaiTC-400-latin.woff2",
"skills/talking-head-recut/assets/fonts/Virgil.woff2",
"skills/talking-head-recut/assets/vendor/gsap.min.js",
"skills/talking-head-recut/media-contract.test.mjs",
"skills/talking-head-recut/references/DESIGN_INDEX.md",
"skills/talking-head-recut/references/frames/clean.html",
"skills/talking-head-recut/references/frames/hairline.html",
"skills/talking-head-recut/references/frames/polaroid.html",
"skills/talking-head-recut/references/layouts/overlay.html",
"skills/talking-head-recut/references/layouts/pip.html",
"skills/talking-head-recut/references/layouts/split.html",
"skills/talking-head-recut/references/layouts/stack.html",
"skills/talking-head-recut/references/styles/academic.html",
"skills/talking-head-recut/references/styles/audit.html",
"skills/talking-head-recut/references/styles/editorial.html",
"skills/talking-head-recut/references/styles/geom.html",
"skills/talking-head-recut/references/styles/minimal.html",
"skills/talking-head-recut/references/styles/spotlight.html",
"skills/talking-head-recut/references/styles/swiss.html",
"skills/talking-head-recut/references/styles/terminal.html",
"skills/talking-head-recut/references/styles/whiteboard.html",
"skills/talking-head-recut/references/styles/xhs.html",
];
const RETIRED_GUIDE_FILES = [
"skills/hyperframes-animation/SKILL.md",
"skills/hyperframes-animation/adapters/animate-text.md",
"skills/hyperframes-animation/adapters/animejs.md",
"skills/hyperframes-animation/adapters/css-animations.md",
"skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md",
"skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md",
"skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md",
"skills/hyperframes-animation/adapters/gsap.md",
"skills/hyperframes-animation/adapters/html-in-canvas-patterns.md",
"skills/hyperframes-animation/adapters/lottie.md",
"skills/hyperframes-animation/adapters/three.md",
"skills/hyperframes-animation/adapters/typegpu.md",
"skills/hyperframes-animation/adapters/waapi.md",
"skills/hyperframes-animation/blueprints-index.md",
"skills/hyperframes-animation/blueprints/agent-progress-theater.md",
"skills/hyperframes-animation/blueprints/camera-journey.md",
"skills/hyperframes-animation/blueprints/comparison-split.md",
"skills/hyperframes-animation/blueprints/constellation-hub.md",
"skills/hyperframes-animation/blueprints/cta-morph-press.md",
"skills/hyperframes-animation/blueprints/cursor-ui-demo.md",
"skills/hyperframes-animation/blueprints/dataviz-countup.md",
"skills/hyperframes-animation/blueprints/device-surface-showcase.md",
"skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md",
"skills/hyperframes-animation/blueprints/grid-card-assemble.md",
"skills/hyperframes-animation/blueprints/kinetic-type-beats.md",
"skills/hyperframes-animation/blueprints/logo-assemble-lockup.md",
"skills/hyperframes-animation/blueprints/overwhelm-surround.md",
"skills/hyperframes-animation/blueprints/panel-edit-live-sync.md",
"skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md",
"skills/hyperframes-animation/blueprints/spatial-pan-stations.md",
"skills/hyperframes-animation/blueprints/ticker-takeover.md",
"skills/hyperframes-animation/blueprints/titlecard-reveal.md",
"skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md",
"skills/hyperframes-animation/blueprints/typewriter-reveal.md",
"skills/hyperframes-animation/blueprints/video-text-pivot.md",
"skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md",
"skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html",
"skills/hyperframes-animation/examples/comparison-split-cards.html",
"skills/hyperframes-animation/examples/concept-demo-decode-pan.html",
"skills/hyperframes-animation/examples/cta-morph-press.html",
"skills/hyperframes-animation/examples/cta-orbit-collapse.html",
"skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html",
"skills/hyperframes-animation/examples/hook-counter-burst.html",
"skills/hyperframes-animation/examples/messaging-multi-phrase.html",
"skills/hyperframes-animation/examples/metric-video-text-pivot.html",
"skills/hyperframes-animation/examples/problem-mockup-overwhelm.html",
"skills/hyperframes-animation/examples/proof-logo-chain.html",
"skills/hyperframes-animation/examples/takeover-ticker-displace.html",
"skills/hyperframes-animation/examples/workflow-approve-press.html",
"skills/hyperframes-animation/references/motion-blur.md",
"skills/hyperframes-animation/rules-index.md",
"skills/hyperframes-animation/rules/3d-camera-flight.md",
"skills/hyperframes-animation/rules/3d-page-scroll.md",
"skills/hyperframes-animation/rules/3d-text-depth-layers.md",
"skills/hyperframes-animation/rules/ai-tracking-box.md",
"skills/hyperframes-animation/rules/ambient-glow-bloom.md",
"skills/hyperframes-animation/rules/anchored-layout-expand.md",
"skills/hyperframes-animation/rules/asr-keyword-glow.md",
"skills/hyperframes-animation/rules/avatar-cloud-network.md",
"skills/hyperframes-animation/rules/camera-cursor-tracking.md",
"skills/hyperframes-animation/rules/card-morph-anchor.md",
"skills/hyperframes-animation/rules/center-outward-expansion.md",
"skills/hyperframes-animation/rules/chart-scrub-readout.md",
"skills/hyperframes-animation/rules/chromatic-glitch.md",
"skills/hyperframes-animation/rules/context-sensitive-cursor.md",
"skills/hyperframes-animation/rules/control-target-sync.md",
"skills/hyperframes-animation/rules/coordinate-target-zoom.md",
"skills/hyperframes-animation/rules/counting-dynamic-scale.md",
"skills/hyperframes-animation/rules/css-marker-patterns.md",
"skills/hyperframes-animation/rules/cursor-click-ripple.md",
"skills/hyperframes-animation/rules/cursor-drag.md",
"skills/hyperframes-animation/rules/depth-of-field-blur.md",
"skills/hyperframes-animation/rules/depth-scatter-assemble.md",
"skills/hyperframes-animation/rules/discrete-text-sequence.md",
"skills/hyperframes-animation/rules/dynamic-content-sequencing.md",
"skills/hyperframes-animation/rules/gradient-text-sweep.md",
"skills/hyperframes-animation/rules/gsap-effects.md",
"skills/hyperframes-animation/rules/hacker-flip-3d.md",
"skills/hyperframes-animation/rules/kinetic-beat-slam.md",
"skills/hyperframes-animation/rules/motion-blur-streak.md",
"skills/hyperframes-animation/rules/multi-cursor-choreography.md",
"skills/hyperframes-animation/rules/multi-phase-camera.md",
"skills/hyperframes-animation/rules/nudge-curve.md",
"skills/hyperframes-animation/rules/orbit-3d-entry.md",
"skills/hyperframes-animation/rules/particle-burst.md",
"skills/hyperframes-animation/rules/physics-press-reaction.md",
"skills/hyperframes-animation/rules/press-release-spring.md",
"skills/hyperframes-animation/rules/reactive-displacement.md",
"skills/hyperframes-animation/rules/scale-swap-transition.md",
"skills/hyperframes-animation/rules/sine-wave-loop.md",
"skills/hyperframes-animation/rules/split-tilt-cards.md",
"skills/hyperframes-animation/rules/spring-pop-entrance.md",
"skills/hyperframes-animation/rules/stat-bars-and-fills.md",
"skills/hyperframes-animation/rules/svg-icon-enrichment.md",
"skills/hyperframes-animation/rules/svg-path-draw.md",
"skills/hyperframes-animation/rules/theme-crossfade-morph.md",
"skills/hyperframes-animation/rules/vertical-spring-ticker.md",
"skills/hyperframes-animation/rules/viewport-change.md",
"skills/hyperframes-animation/rules/waterfall-entry.md",
"skills/hyperframes-animation/scripts/animation-map-sampling.mjs",
"skills/hyperframes-animation/scripts/animation-map-sampling.test.mjs",
"skills/hyperframes-animation/scripts/animation-map.mjs",
"skills/hyperframes-animation/scripts/animation-map.test.mjs",
"skills/hyperframes-animation/scripts/package-loader.mjs",
"skills/hyperframes-animation/scripts/package-loader.test.mjs",
"skills/hyperframes-animation/techniques.md",
"skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md",
"skills/hyperframes-animation/transitions/catalog.md",
"skills/hyperframes-animation/transitions/css-3d.md",
"skills/hyperframes-animation/transitions/css-blur.md",
"skills/hyperframes-animation/transitions/css-cover.md",
"skills/hyperframes-animation/transitions/css-destruction.md",
"skills/hyperframes-animation/transitions/css-dissolve.md",
"skills/hyperframes-animation/transitions/css-distortion.md",
"skills/hyperframes-animation/transitions/css-grid.md",
"skills/hyperframes-animation/transitions/css-light.md",
"skills/hyperframes-animation/transitions/css-mechanical.md",
"skills/hyperframes-animation/transitions/css-other.md",
"skills/hyperframes-animation/transitions/css-push.md",
"skills/hyperframes-animation/transitions/css-radial.md",
"skills/hyperframes-animation/transitions/css-scale.md",
"skills/hyperframes-animation/transitions/overview.md",
"skills/hyperframes-audio/SKILL.md",
"skills/hyperframes-audio/references/attributes.md",
"skills/hyperframes-audio/references/diagnosis.md",
"skills/hyperframes-audio/references/fx-registry.md",
"skills/hyperframes-audio/references/presets.md",
"skills/hyperframes-audio/scripts/carve.mjs",
"skills/hyperframes-audio/scripts/carve.test.mjs",
"skills/hyperframes-audio/scripts/lib/main-module.mjs",
"skills/hyperframes-core/SKILL.md",
"skills/hyperframes-core/references/composition-patterns.md",
"skills/hyperframes-core/references/creator-editing-recipes.md",
"skills/hyperframes-core/references/data-attributes.md",
"skills/hyperframes-core/references/determinism-rules.md",
"skills/hyperframes-core/references/full-screen-motion.md",
"skills/hyperframes-core/references/minimal-composition.md",
"skills/hyperframes-core/references/sub-compositions.md",
"skills/hyperframes-core/references/tailwind.md",
"skills/hyperframes-core/references/tracks-and-clips.md",
"skills/hyperframes-core/references/variables-and-media.md",
"skills/hyperframes-creative/SKILL.md",
"skills/hyperframes-creative/palettes/bold-energetic.md",
"skills/hyperframes-creative/palettes/clean-corporate.md",
"skills/hyperframes-creative/palettes/dark-premium.md",
"skills/hyperframes-creative/palettes/jewel-rich.md",
"skills/hyperframes-creative/palettes/monochrome.md",
"skills/hyperframes-creative/palettes/nature-earth.md",
"skills/hyperframes-creative/palettes/neon-electric.md",
"skills/hyperframes-creative/palettes/pastel-soft.md",
"skills/hyperframes-creative/palettes/warm-editorial.md",
"skills/hyperframes-creative/references/audio-reactive.md",
"skills/hyperframes-creative/references/beat-direction.md",
"skills/hyperframes-creative/references/composition-patterns.md",
"skills/hyperframes-creative/references/data-in-motion.md",
"skills/hyperframes-creative/references/design-adherence.md",
"skills/hyperframes-creative/references/design-picker.md",
"skills/hyperframes-creative/references/design-spec.md",
"skills/hyperframes-creative/references/house-style.md",
"skills/hyperframes-creative/references/motion-principles.md",
"skills/hyperframes-creative/references/narration.md",
"skills/hyperframes-creative/references/prompt-expansion.md",
"skills/hyperframes-creative/references/story-spine.md",
"skills/hyperframes-creative/references/storyboard-recipe.md",
"skills/hyperframes-creative/references/typography.md",
"skills/hyperframes-creative/references/video-composition.md",
"skills/hyperframes-creative/references/visual-styles.md",
"skills/hyperframes-creative/scripts/contrast-report.mjs",
"skills/hyperframes-creative/scripts/package-loader.mjs",
"skills/hyperframes-creative/scripts/package-loader.test.mjs",
"skills/hyperframes-creative/templates/design-picker.html",
"skills/hyperframes-keyframes/SKILL.md",
"skills/hyperframes-keyframes/agents/openai.yaml",
"skills/hyperframes-keyframes/references/keyframe-patterns.md",
"skills/hyperframes-studio/SKILL.md",
];
const RETIRED_ROUTING_FILES = [
"skills/hyperframes/references/brief-contract.md",
"skills/hyperframes/references/brief-format.md",
"skills/hyperframes/references/capability-menu.md",
"skills/hyperframes/references/frame-worker-core.md",
"skills/hyperframes/references/intent-interview.md",
"skills/hyperframes/references/pitch-round.md",
"skills/hyperframes/references/production-loop.md",
"skills/hyperframes/references/review-loop.md",
"skills/hyperframes/references/route-briefs.md",
"skills/hyperframes/references/routes/embedded-captions.md",
"skills/hyperframes/references/routes/faceless-explainer.md",
"skills/hyperframes/references/routes/general-video.md",
"skills/hyperframes/references/routes/motion-graphics.md",
"skills/hyperframes/references/routes/music-to-video.md",
"skills/hyperframes/references/routes/pr-to-video.md",
"skills/hyperframes/references/routes/product-launch-video.md",
"skills/hyperframes/references/routes/remotion-to-hyperframes.md",
"skills/hyperframes/references/routes/slideshow.md",
"skills/hyperframes/references/routes/talking-head-recut.md",
"skills/hyperframes/references/script-format.md",
"skills/hyperframes/references/subagent-dispatch.md",
"skills/hyperframes/references/workflow-catalog.md",
];
const FALLOW_PRUNE_REASON =
"fallow 3 reuses one audit snapshot per checkout and the hook prunes with `fallow audit-cache prune`, replacing this script";
export const ALLOWED_DELETIONS = new Map([
[
"packages/studio/src/components/renders/useRenderQueueMotionBlur.test.tsx",
"Studio no longer sends previewMotionBlur with renders: blur picks its tier from the page, so the test of that field goes with it",
],
[
"packages/cli/src/beats/headlessAnalyzer.ts",
"the TypeScript beat tracker replaces the Chrome analyzer; the beats command decodes with ffmpeg directly",
],
[
"packages/cli/scripts/build-beat-analyzer.mjs",
"the TypeScript beat tracker needs no browser bundle; its build step and only consumer are removed together",
],
["packages/inspector/src/mcp.ts", INSPECTOR_TOOLS_REASON],
["packages/inspector/src/outputSchemas.ts", INSPECTOR_TOOLS_REASON],
["packages/inspector/src/tools.ts", INSPECTOR_TOOLS_REASON],
["packages/inspector/tests/outputSchemas.ts", INSPECTOR_TOOLS_REASON],
[
"packages/inspector/INSPECT-TIMELINE.md",
"described the deleted MCP tool; the README's Timeline section covers POST /timeline",
],
[
"docs/public/catalog/vendor/BufferGeometryUtils.json",
"bundled into three-modules.json so catalog scripts run under the docs host policy",
],
[
"docs/public/catalog/vendor/RoomEnvironment.json",
"bundled into three-modules.json so catalog scripts run under the docs host policy",
],
[
"docs/public/catalog/vendor/three.core.min.json",
"bundled into three-modules.json so catalog scripts run under the docs host policy",
],
[
"docs/public/catalog/vendor/three.module.min.json",
"bundled into three-modules.json so catalog scripts run under the docs host policy",
],
[
"packages/core/scripts/rewrite-esm-extensions.ts",
"moved to scripts/rewrite-relative-import-extensions.mjs as plain ESM so packages without tsx can use it; now also rewrites .d.ts",
],
[
"packages/studio/src/hooks/gsapTargetCache.ts",
"its only caller was the deleted var-offset move writer; nothing imports isElementGsapTargeted",
],
[
"packages/studio/src/player/components/automationGestureKeys.ts",
"automation-lane saves now persist once per gesture through the timeline save, so no caller needs a gesture undo key",
],
[
"packages/studio/src/player/components/automationGestureKeys.test.ts",
"tests for the removed automation gesture undo keys",
],
[
"packages/studio/src/utils/editHistory.ts",
"held only EditHistoryKind; recordEdit's kind was never sent to the project history, so it and every caller's copy go",
],
[
"packages/studio/src/utils/editHistoryStorage.ts",
"Studio's undo moves onto the project history (studio-server); the browser IndexedDB history and its reducer are removed",
],
[
"packages/studio/src/utils/editHistoryStorage.test.ts",
"tests for the removed IndexedDB history store",
],
[
"packages/studio/src/utils/editHistory.test.ts",
"tests for the removed in-browser history reducer; merging and undo are tested in projectHistory.test.ts",
],
[
"packages/studio/src/hooks/usePersistentEditHistory.projectOwnership.test.tsx",
"tests the removed per-project IndexedDB store; the hook now posts to the project's own history routes",
],
[
"packages/studio/src/components/nle/TimelinePane.test.ts",
"its only subject, the expandedParentStart rebase wrappers, is dead code now removed",
],
[
"scripts/test-reachability-baseline.json",
"Reachability now requires zero orphans and rejects baseline files.",
],
[
"packages/studio/src/player/hooks/useTimelineRowElements.ts",
"D-834 removes the duplicate row-source hook; manifest elements are now the single timeline row owner",
],
[
"packages/studio/src/player/hooks/useTimelineRowElements.test.ts",
"D-834 removes tests for the deleted duplicate row-source hook",
],
[
"packages/studio/src/components/StudioGlobalDragOverlay.tsx",
"the full-screen drop-to-add box is replaced by a landing preview on the timeline; no remaining references",
],
[
"packages/studio/src/components/PanelTabButton.tsx",
"replaced by the shared Tabs primitive in RightPanelTabs; no remaining references",
],
[
"packages/studio/postcss.config.js",
"Tailwind v4 migration: postcss replaced by @tailwindcss/vite",
],
[
"packages/studio/tailwind.config.js",
"Tailwind v4 migration: config moves into styles/studio.css via @theme",
],
[
"docs/snippets/catalog-overview-player.jsx",
"#4051 removes the Catalog overview's only consumer of this snippet (replaced by the browse-grid mount); confirmed unreferenced repo-wide before deleting",
],
[
"packages/studio/src/hooks/useSdkSession.test.ts",
"tests only shouldReloadSdkSession, a function with no production callers removed with the preview reload fix",
],
[
"docs/catalog/components/ai-generation-canvas.mdx",
"owner-directed removal of the AI Generation Canvas catalog item and its generated documentation",
],
[
"docs/catalog/components/ai-prompt-flow.mdx",
"owner-directed removal of the AI Prompt Flow catalog item and its generated documentation",
],
[
"docs/catalog/components/checkout-flow.mdx",
"owner-directed removal of the Checkout Flow catalog item and its generated documentation",
],
[
"docs/public/catalog/components/ai-generation-canvas.json",
"owner-directed removal of the AI Generation Canvas catalog item and its generated public payload",
],
[
"docs/public/catalog/components/ai-prompt-flow.json",
"owner-directed removal of the AI Prompt Flow catalog item and its generated public payload",
],
[
"docs/public/catalog/components/checkout-flow.json",
"owner-directed removal of the Checkout Flow catalog item and its generated public payload",
],
[
"registry/components/ai-generation-canvas/ai-generation-canvas.html",
"owner-directed removal of the AI Generation Canvas catalog source component",
],
[
"registry/components/ai-generation-canvas/demo.html",
"owner-directed removal of the AI Generation Canvas catalog preview source",
],
[
"registry/components/ai-generation-canvas/registry-item.json",
"owner-directed removal of the AI Generation Canvas catalog registry entry",
],
[
"registry/components/ai-prompt-flow/ai-prompt-flow.html",
"owner-directed removal of the AI Prompt Flow catalog source component",
],
[
"registry/components/ai-prompt-flow/demo.html",
"owner-directed removal of the AI Prompt Flow catalog preview source",
],
[
"registry/components/ai-prompt-flow/registry-item.json",
"owner-directed removal of the AI Prompt Flow catalog registry entry",
],
[
"registry/components/checkout-flow/checkout-flow.html",
"owner-directed removal of the Checkout Flow catalog source component",
],
[
"registry/components/checkout-flow/demo.html",
"owner-directed removal of the Checkout Flow catalog preview source",
],
[
"registry/components/checkout-flow/registry-item.json",
"owner-directed removal of the Checkout Flow catalog registry entry",
],
[
"packages/studio/src/components/StudioFeedbackBar.tsx",
"replaced by components/feedback/StudioFeedbackCard.tsx; too little shared content for git to pair as a rename",
],
[
"skills/embedded-captions/references/test-set.md",
"#3219: orphaned in the shipped skill (zero inbound references across all 140 files) and its corpus lives only at ~/Downloads/heygen_relevant_videos/, so it was neither reachable nor runnable on any install",
],
[
"skills/embedded-captions/themes/PORTING.md",
"#3219: same, zero inbound references; a theme-authoring procedure whose inputs (cap_fx3 demos, frame corpora, CONTRACT.md) are not distributed with the skill",
],
[
"packages/core/scripts/build-audio-fx-runtime.ts",
"merged into build-inline-artifact.ts: this and build-position-edits-render.ts were a byte-for-byte clone differing only in five names, which fallow's duplication check kept re-flagging on every unrelated line shift",
],
[
"packages/core/scripts/build-position-edits-render.ts",
"merged into build-inline-artifact.ts, same reason as build-audio-fx-runtime.ts above",
],
[
"packages/core/scripts/build-inline-artifact.ts",
"a later branch in this stack (wa-20b2-lfo-fixes) independently deduped the same two build scripts a different way — buildInjectedArtifact.ts plus two thin per-target files — before this consolidation and that one had merged; this branch's tree keeps that shape instead, so build-inline-artifact.ts is the one that goes.",
],
[
"packages/studio/src/hooks/useAudioSoloBridge.ts",
"#3453 removes the obsolete solo bridge after its last consumer leaves",
],
[
"packages/studio/src/hooks/useGroupLevel.ts",
"#3454 deliberately removes the group level meter with the group volume strip",
],
[
"packages/studio/src/player/components/TimelineGroupBusStrip.test.tsx",
"#3454 deliberately removes the group volume and level-meter strip and its tests",
],
[
"packages/studio/src/player/components/TimelineGroupBusStrip.tsx",
"#3454 deliberately removes the group volume and level-meter strip",
],
[
"packages/studio/src/player/components/TimelineSoloButton.tsx",
"#3454 deliberately removes track and group solo controls",
],
[
"packages/studio/src/player/store/audioSoloSlice.test.ts",
"#3454 deliberately removes session solo state and its tests",
],
[
"packages/studio/src/player/store/audioSoloSlice.ts",
"#3454 deliberately removes session solo state",
],
[
"packages/studio/src/player/store/groupLevels.ts",
"#3454 deliberately removes group level-meter state",
],
[
"docs/public/catalog/components/texture-mask-text.json",
"the item's directory exceeds the host budget and now falls back to its recorded video; the stale payload had no <base href> and dead relative asset references, so removing it is the fix, not the regression",
],
[
"packages/studio/src/player/hooks/useExpandedTimelineElements.ts",
"the timeline shows top-level rows only, so the child-row expansion hook is replaced by useTimelineRowElements",
],
[
"packages/studio/src/player/hooks/useExpandedTimelineElements.test.ts",
"tests for the removed child-row expansion hook",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/av_r1k1.mp4",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/av_r1k3.mp4",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/av_r1k4.mp4",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/av_r2k0.mp4",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/av_r2k2.mp4",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/bgm.m4a",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/fonts/eb-garamond-latin-400-normal.woff2",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/fonts/eb-garamond-latin-700-normal.woff2",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/fonts/inter-latin-400-normal.woff2",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/fonts/inter-latin-500-normal.woff2",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"registry/blocks/heygen-avatar-promo-card/assets/fonts/inter-latin-600-normal.woff2",
"#4056 the avatar promo card hosts its video, audio and fonts on the CDN instead of the repo",
],
[
"docs/public/catalog/assets/0743c9b7b918b0d9.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/0ad78008621fe77d.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/1d083f9292fdd0f8.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/202dcdfded4c9ff5.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/44b382d4775c2bb8.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/5a88ad5abfd02f99.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/61facab3428ae59c.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/6fef5557664470a3.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/7254a2cfd76b60b5.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/bd3c8b0cb5fa618c.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/d0ff80e331a5ebdb.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/df3dc3536491ffca.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"docs/public/catalog/assets/e234267390ffd6ff.woff2",
"#4056 regenerated catalog font files are content-hashed, so a re-hashed file replaces the old one",
],
[
"packages/studio/src/components/StudioLeftSidebar.tsx",
"replaced by StudioLeftPanels.tsx, which mounts the left-zone panels as dock panels instead of a fixed sidebar",
],
[
"packages/studio/src/components/sidebar/LeftSidebar.tsx",
"replaced by the dock-mounted CompositionsPanel/StudioLeftPanels; sidebar tab-switching is now the dock's own tab strip",
],
[
"packages/studio/src/components/sidebar/LeftSidebar.storage.test.ts",
"tested the fixed-sidebar tab persistence removed with LeftSidebar.tsx; the dock persists its own layout",
],
[
"packages/studio/src/components/nle/TimelineResizeDivider.tsx",
"the timeline's own resize divider; panel sizing is now the dock's sash",
],
[
"packages/studio/src/hooks/useInspectorSplitResize.ts",
"resized the old fixed Layers/Design split pane, removed with the split-inspector layout",
],
[
"packages/studio/src/utils/fitPanels.ts",
"computed fixed left/right panel widths for the old EditorShell layout; the dock sizes its own panels",
],
["packages/studio/src/utils/fitPanels.test.ts", "tests for fitPanels.ts, removed with it"],
...[
"docs/studio/storyboard.mdx",
"packages/studio-server/src/routes/storyboard.test.ts",
"packages/studio-server/src/routes/storyboard.ts",
"packages/studio/fixtures/storyboard-sample/README.md",
"packages/studio/fixtures/storyboard-sample/SCRIPT.md",
"packages/studio/fixtures/storyboard-sample/STORYBOARD.md",
"packages/studio/fixtures/storyboard-sample/compositions/frames/01-hook.html",
"packages/studio/fixtures/storyboard-sample/compositions/frames/02-problem.html",
"packages/studio/fixtures/storyboard-sample/compositions/frames/03-feature.html",
"packages/studio/fixtures/storyboard-sample/compositions/frames/04-proof.html",
"packages/studio/fixtures/storyboard-sample/index.html",
"packages/studio/src/components/storyboard/AgentChatMessageButton.test.tsx",
"packages/studio/src/components/storyboard/AgentChatMessageButton.tsx",
"packages/studio/src/components/storyboard/FramePoster.test.tsx",
"packages/studio/src/components/storyboard/FramePoster.tsx",
"packages/studio/src/components/storyboard/StoryboardDirection.tsx",
"packages/studio/src/components/storyboard/StoryboardFrameFocus.tsx",
"packages/studio/src/components/storyboard/StoryboardFrameTile.tsx",
"packages/studio/src/components/storyboard/StoryboardGrid.tsx",
"packages/studio/src/components/storyboard/StoryboardLoaded.tsx",
"packages/studio/src/components/storyboard/StoryboardReviewGuide.tsx",
"packages/studio/src/components/storyboard/StoryboardScriptPanel.tsx",
"packages/studio/src/components/storyboard/StoryboardSourceEditor.tsx",
"packages/studio/src/components/storyboard/StoryboardStatusLegend.tsx",
"packages/studio/src/components/storyboard/StoryboardView.tsx",
"packages/studio/src/components/storyboard/StoryboardViewModeGuard.test.tsx",
"packages/studio/src/components/storyboard/frameComments.test.ts",
"packages/studio/src/components/storyboard/frameComments.ts",
"packages/studio/src/components/storyboard/frameStatus.ts",
"packages/studio/src/components/storyboard/storyboardReviewStage.test.ts",
"packages/studio/src/components/storyboard/storyboardReviewStage.ts",
"packages/studio/src/components/storyboard/useFrameComments.ts",
"packages/studio/src/contexts/ViewModeContext.tsx",
"packages/studio/src/hooks/useProjectSignaturePoll.test.tsx",
"packages/studio/src/hooks/useProjectSignaturePoll.ts",
"packages/studio/src/hooks/useStoryboard.ts",
].map((path) => [path, STORYBOARD_VIEW_REASON]),
[
"docs/catalog/blocks/code-snippet-apple-terminal-basic.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-clear-dark.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-clear-light.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-grass.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-homebrew.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-man-page.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-novel.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-ocean.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-red-sands.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-silver-aerogel.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-apple-terminal-solid-colors.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-dark-plus.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-flight.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-high-contrast-light.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-high-contrast.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-light-2026.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-light-modern.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-light-plus.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-monokai.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-solarized-light.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-visual-studio-dark.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/code-snippet-visual-studio-light.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/liquid-glass-context-menu.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/catalog/blocks/liquid-glass-media-controls.mdx",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-basic.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-clear-dark.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-clear-light.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-grass.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-homebrew.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-man-page.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-novel.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-ocean.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-red-sands.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-silver-aerogel.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-apple-terminal-solid-colors.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-dark-plus.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-flight.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-high-contrast-light.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-high-contrast.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-light-2026.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-light-modern.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-light-plus.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-monokai.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-solarized-light.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-visual-studio-dark.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/code-snippet-visual-studio-light.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/liquid-glass-context-menu.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/blocks/liquid-glass-media-controls.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-dark-plus/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-dark-plus/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-high-contrast-light/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-high-contrast-light/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-high-contrast/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-high-contrast/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-light-2026/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-light-2026/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-light-modern/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-light-modern/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-light-plus/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-light-plus/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-monokai/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-monokai/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-solarized-light/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-solarized-light/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-visual-studio-dark/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-visual-studio-dark/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-visual-studio-light/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"docs/public/catalog/items/code-snippet-visual-studio-light/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-basic/code-snippet-apple-terminal-basic.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-basic/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-clear-dark/code-snippet-apple-terminal-clear-dark.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-clear-dark/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-clear-light/code-snippet-apple-terminal-clear-light.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-clear-light/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-grass/code-snippet-apple-terminal-grass.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-grass/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-homebrew/code-snippet-apple-terminal-homebrew.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-homebrew/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-man-page/code-snippet-apple-terminal-man-page.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-man-page/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-novel/code-snippet-apple-terminal-novel.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-novel/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-ocean/code-snippet-apple-terminal-ocean.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-ocean/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-red-sands/code-snippet-apple-terminal-red-sands.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-red-sands/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-silver-aerogel/code-snippet-apple-terminal-silver-aerogel.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-silver-aerogel/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-solid-colors/code-snippet-apple-terminal-solid-colors.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-apple-terminal-solid-colors/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-dark-plus/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-dark-plus/code-snippet-dark-plus.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-dark-plus/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-flight/code-snippet-flight.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-flight/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-high-contrast-light/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-high-contrast-light/code-snippet-high-contrast-light.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-high-contrast-light/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-high-contrast/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-high-contrast/code-snippet-high-contrast.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-high-contrast/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-2026/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-2026/code-snippet-light-2026.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-2026/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-modern/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-modern/code-snippet-light-modern.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-modern/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-plus/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-plus/code-snippet-light-plus.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-light-plus/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-monokai/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-monokai/code-snippet-monokai.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-monokai/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-solarized-light/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-solarized-light/code-snippet-solarized-light.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-solarized-light/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-visual-studio-dark/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-visual-studio-dark/code-snippet-visual-studio-dark.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-visual-studio-dark/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-visual-studio-light/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-visual-studio-light/code-snippet-visual-studio-light.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/code-snippet-visual-studio-light/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/liquid-glass-context-menu/lib/liquid-glass.iife.js",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/liquid-glass-context-menu/liquid-glass-context-menu.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/liquid-glass-context-menu/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/liquid-glass-media-controls/lib/liquid-glass.iife.js",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/liquid-glass-media-controls/liquid-glass-media-controls.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/blocks/liquid-glass-media-controls/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/airbnb-deck/DESIGN.md",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/airbnb-deck/index.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/airbnb-deck/sfx/advance.mp3",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/airbnb-deck/sfx/back.mp3",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/airbnb-deck/sfx/branch-enter.mp3",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/airbnb-deck/sfx/fragment.mp3",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/motion-blur/index.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/slideshow-demo/index.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/startup-pitch/demo.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/startup-pitch/index.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/DESIGN.md",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/background.jpeg",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-sequence-runtime.js",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-sequence.css",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-theme-registry.js",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/2026-dark.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/2026-light.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/LICENSE",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/dark_modern.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/dark_plus.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/dark_vs.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/hc_black.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/hc_light.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/light_modern.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/light_plus.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/light_vs.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/monokai-color-theme.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/assets/vscode-themes/solarized-light-color-theme.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/index.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/registry-item.json",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/dark-2026.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/dark-modern.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/dark-plus.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/high-contrast-light.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/high-contrast.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/light-2026.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/light-modern.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/light-plus.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/monokai.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/solarized-light.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/visual-studio-dark.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/render-entries/visual-studio-light.html",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/scripts/build-compositions.mjs",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
[
"registry/examples/vscode-theme-visualizer/scripts/build-theme-registry.mjs",
"removed in the 2026-09 low-use catalog cut, see the PR",
],
["registry/components/simulated-cursor/demo.html", SIMULATED_CURSOR_REASON],
["registry/components/simulated-cursor/registry-item.json", SIMULATED_CURSOR_REASON],
["registry/components/simulated-cursor/simulated-cursor.html", SIMULATED_CURSOR_REASON],
["docs/catalog/components/simulated-cursor.mdx", SIMULATED_CURSOR_REASON],
["docs/public/catalog/components/simulated-cursor.json", SIMULATED_CURSOR_REASON],
["docs/public/catalog/assets/2427868cae6e8cf3.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/36535127950d69fb.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/42e5ad0b3cee71d5.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/5905d90fd449470d.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/728492d30bf60f21.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/788a403350b85d98.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/95061b23401efc9b.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/ae40a5f8f9f604f4.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/b13fa08305318ea6.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/c356c27cca02fa3b.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/e3c9ceb1da81254f.woff2", CATALOG_FONT_REASON],
["docs/public/catalog/assets/e59d60b150022666.woff2", CATALOG_FONT_REASON],
[
"packages/studio-server/src/helpers/previewWatchIgnore.ts",
"preview.watchIgnore is replaced by reloading only when a file the preview loaded changes",
],
[
"packages/studio-server/src/helpers/previewWatchIgnore.test.ts",
"tests for the removed preview.watchIgnore helper",
],
["docs/images/preview-reload-evidence/after.webm", "evidence video no page referenced"],
["docs/images/preview-reload-evidence/before.webm", "evidence video no page referenced"],
[
"packages/studio-server/src/helpers/atomicFile.ts",
"moved to @hyperframes/core/atomic-file (packages/core/src/atomicFile.ts) as the single atomic writer for core, sdk, cli and studio-server",
],
[
"packages/studio-server/src/helpers/atomicFile.test.ts",
"its tests moved with it to packages/core/src/atomicFile.test.ts",
],
["docs/contracts/2026-10-01-timeline-filmstrip.html", DESIGN_NOTES_REASON],
["docs/contracts/2026-10-02-ghost-lane-membership.html", DESIGN_NOTES_REASON],
["docs/contracts/2026-10-02-thumbnail-document-lifetime.html", DESIGN_NOTES_REASON],
["docs/contracts/2026-10-05-transcribe-language-progress.html", DESIGN_NOTES_REASON],
["docs/plans/2026-09-26-image-thumbnails.md", DESIGN_NOTES_REASON],
[
"packages/engine/src/services/frameCapture-wslFullChrome.test.ts",
"tests the WSL full-Chrome GPU fallback, replaced by the probe without WAYLAND_DISPLAY (frameCapture-wslWayland.test.ts)",
],
[
"packages/core/src/storyboard/transitionsContract.test.ts",
"ran the retired workflows' transitions.mjs; the script went with them",
],
[
"packages/core/src/storyboard/vendoredParity.test.ts",
"guarded the retired workflows' vendored storyboard parsers; no vendored copy remains",
],
[
"scripts/agent-plugin-captions.test.mjs",
"exercised embedded-captions' bundled scripts, retired with the skill",
],
[
"scripts/generate-captured-font-copies.mjs",
"copied captured-fonts.mjs between three retired workflow skills; nothing left to copy",
],
[
"skills/hyperframes/scripts/lib/frame-packets-core.mjs",
"shared frame-packet builder for the retired workflow skills; no remaining importer",
],
[
"skills/media-use/audio/scripts/lib/host-audio.mjs",
"host-audio merge used only by the retired workflow skills' audio adapters; no remaining importer",
],
[
"skills/media-use/audio/scripts/lib/host-audio.test.mjs",
"tests for the removed host-audio module and the retired workflows' wording",
],
...RETIRED_WORKFLOW_FILES.map((path) => [path, RETIRED_WORKFLOW_REASON]),
...RETIRED_GUIDE_FILES.map((path) => [path, RETIRED_GUIDE_REASON]),
...RETIRED_ROUTING_FILES.map((path) => [path, RETIRED_ROUTING_REASON]),
[
"packages/producer/src/services/audioExtractor.ts",
"imported by nothing; its own ffmpeg spawn quoted stderr unredacted, outside ManagedChildProcess",
],
["scripts/prune-fallow-audit-caches.mjs", FALLOW_PRUNE_REASON],
["scripts/prune-fallow-audit-caches.test.mjs", FALLOW_PRUNE_REASON],
[
"packages/engine/src/services/frameCapture-releaseInjectedVideoMedia.browser.test.ts",
"the revert of #5795 removes releaseInjectedVideoMedia, the only code this file tested",
],
[
".github/workflows/lambda-ffmpeg.yml",
"the ffmpeg build moves into lambda-arm64-image.yml, which also builds and smokes the image",
],
]);
export function parseBase(argv, fallback = "origin/main") {
const index = argv.indexOf(BASE_FLAG);
if (index === -1) return fallback;
const value = argv[index + 1];
if (!value || value.startsWith("-")) {
throw new Error(`${BASE_FLAG} needs a ref, for example ${BASE_FLAG} origin/main`);
}
return value;
}
/**
* Split a `--name-status` diff into deletions and renames.
*
* Git reports a rename as `R<score>\told\tnew`. Reading only the first column
* would file that under "deleted", which is the false alarm this guards
* against being noisy enough to ignore.
*/
// one branch per git status code
// fallow-ignore-next-line complexity
export function classify(nameStatus) {
const deleted = [];
const renamed = [];
for (const line of nameStatus.split("\n")) {
if (!line.trim()) continue;
const [status, ...paths] = line.split("\t");
if (status.startsWith("R")) renamed.push({ from: paths[0], to: paths[1] });
else if (status === "D") deleted.push(paths[0]);
}
return { deleted, renamed };
}
// a script entry point
// fallow-ignore-next-line complexity
function main() {
const base = parseBase(process.argv.slice(2));
let diff;
try {
diff = execFileSync("git", ["diff", "--name-status", "-M", `${base}...HEAD`], {
encoding: "utf8",
});
} catch (error) {
// An unreachable base is not a pass. Reporting "no deletions" because the
// ref was misspelled is the exact failure this exists to prevent.
console.error(`cannot diff against ${base}: ${error.message.trim()}`);
process.exit(2);
}
const { deleted: allDeleted, renamed } = classify(diff);
const agreed = allDeleted.filter((path) => ALLOWED_DELETIONS.has(path));
const deleted = allDeleted.filter((path) => !ALLOWED_DELETIONS.has(path));
if (agreed.length > 0) {
console.log(`${agreed.length} deletion(s) agreed in ALLOWED_DELETIONS:`);
for (const path of agreed) console.log(` ${path} — ${ALLOWED_DELETIONS.get(path)}`);
}
if (renamed.length > 0) {
console.log(`${renamed.length} renamed (allowed):`);
for (const { from, to } of renamed.slice(0, 10)) console.log(` ${from} -> ${to}`);
if (renamed.length > 10) console.log(` … and ${renamed.length - 10} more`);
}
if (deleted.length === 0) {
console.log(`No files from ${base} are deleted by this branch.`);
return;
}
console.error(`This branch deletes ${deleted.length} files that exist on ${base}:`);
for (const path of deleted.slice(0, 25)) console.error(` ${path}`);
if (deleted.length > 25) console.error(` … and ${deleted.length - 25} more`);
console.error("\nIf a deletion is intended, remove this check for that path deliberately.");
process.exit(1);
}
if (import.meta.url === `file://${process.argv[1]}`) main();