Skill Tracer
Skills › HyperFrames › remotion-to-hyperframes › expected.json

expected.json

85 lines · skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json at a595755

1{
2 "tier": 4,
3 "name": "escape-hatch",
4 "description": "Lint-only fixture set. Each case demonstrates a Remotion pattern the skill cannot or should not translate cleanly. The skill is graded on whether lint_source.py emits the right finding for each case — there are no renders to compare. T4 passes when every case triggers its expected rule and no others.",
5 "cases": [
6 {
7 "file": "01-use-state.tsx",
8 "expected": {
9 "blockers": [{ "rule": "r2hf/use-state", "min_count": 1 }],
10 "warnings": [],
11 "skill_action": "refuse_translation_recommend_interop"
12 }
13 },
14 {
15 "file": "02-use-effect-deps.tsx",
16 "expected": {
17 "blockers": [{ "rule": "r2hf/use-effect-deps", "min_count": 1 }],
18 "warnings": [],
19 "skill_action": "refuse_translation_recommend_interop"
20 }
21 },
22 {
23 "file": "03-async-metadata.tsx",
24 "expected": {
25 "blockers": [{ "rule": "r2hf/async-metadata", "min_count": 1 }],
26 "warnings": [],
27 "skill_action": "refuse_translation_recommend_interop"
28 }
29 },
30 {
31 "file": "04-third-party-react.tsx",
32 "expected": {
33 "blockers": [{ "rule": "r2hf/third-party-react-ui", "min_count": 1 }],
34 "warnings": [],
35 "skill_action": "refuse_translation_recommend_interop"
36 }
37 },
38 {
39 "file": "05-lambda-config.tsx",
40 "expected": {
41 "blockers": [],
42 "warnings": [{ "rule": "r2hf/lambda-import", "min_count": 1 }],
43 "skill_action": "drop_lambda_code_translate_remainder_if_clean"
44 }
45 },
46 {
47 "file": "06-warnings-only.tsx",
48 "expected": {
49 "blockers": [],
50 "warnings": [
51 { "rule": "r2hf/delay-render", "min_count": 1 },
52 { "rule": "r2hf/use-callback", "min_count": 1 },
53 { "rule": "r2hf/use-memo", "min_count": 1 }
54 ],
55 "skill_action": "translate_after_dropping_wrappers"
56 }
57 },
58 {
59 "file": "07-custom-hook.tsx",
60 "expected": {
61 "blockers": [],
62 "warnings": [{ "rule": "r2hf/custom-hook", "min_count": 1 }],
63 "skill_action": "inline_hook_body_if_pure"
64 }
65 },
66 {
67 "file": "08-mixed.tsx",
68 "expected": {
69 "blockers": [
70 { "rule": "r2hf/use-state", "min_count": 1 },
71 { "rule": "r2hf/use-effect-deps", "min_count": 1 },
72 { "rule": "r2hf/third-party-react-ui", "min_count": 1 }
73 ],
74 "warnings": [{ "rule": "r2hf/use-callback", "min_count": 1 }],
75 "skill_action": "refuse_translation_recommend_interop"
76 }
77 }
78 ],
79 "totals": {
80 "expected_blocker_cases": 5,
81 "expected_warning_only_cases": 3,
82 "expected_total_blocker_findings_min": 7,
83 "expected_total_warning_findings_min": 6
84 }