Setting the file. One moment.
Skill 32 · Remotion To Hyperframes
Subchapter 32.75
assets/test-corpus/tier-4-escape-hatch/README.mdMarkdown3 KBView on GitHub
Scripts
GitkeepscriptsT4 is the lint-only tier. There are no renders to diff — the skill is graded on whether it correctly refuses to translate each case (and recommends the runtime interop pattern from PR #214 instead) or, where appropriate, translates after dropping warning-level decorations.
Each cases/*.tsx file is a minimal Remotion composition that
demonstrates one specific pattern. The skill should:
scripts/lint_source.py over the source.expected.json for that case.skill_action:
refuse_translation_recommend_interop — print the rationale + link to
the PR #214 interop guide; do not produce HF output.drop_lambda_code_translate_remainder_if_clean — drop the
@remotion/lambda code with a note; translate the rest only if no
other blockers are present.translate_after_dropping_wrappers — translate normally; drop
useCallback / useMemo / delayRender wrappers.inline_hook_body_if_pure — inline the custom hook’s body if it’s a
pure derivation of useCurrentFrame; otherwise bow out.| # | File | Expected finding | Notes |
|---|---|---|---|
| 01 | 01-use-state.tsx | blocker r2hf/use-state | useState driving animation |
| 02 | 02-use-effect-deps.tsx | blocker r2hf/use-effect-deps | useEffect/useLayoutEffect with non-empty deps |
| 03 | 03-async-metadata.tsx | blocker r2hf/async-metadata | calculateMetadata returns a Promise |
| 04 | 04-third-party-react.tsx | blocker r2hf/third-party-react-ui | imports @mui/material |
| 05 | 05-lambda-config.tsx | warning r2hf/lambda-import | imports @remotion/lambda — drops, translates |
| 06 | 06-warnings-only.tsx | warnings only | delayRender / useCallback / useMemo |
| 07 | 07-custom-hook.tsx | warning r2hf/custom-hook | locally-defined useFadeIn (export const form) |
| 08 | 08-mixed.tsx | 3 blockers + 1 warning | aggregate-findings test |
./validate.shThe script runs lint_source.py against each case and asserts:
blocker.warning (or stronger).lint_source.py‘s exit code is 1 when blockers are expected, 0 otherwise.T4 passes when every case matches its expected output. No renders involved.