Chintamreddy Deepika commited on
Commit
16b042a
·
unverified ·
1 Parent(s): 7289a7e

Refactor graders to use clamping wrapper

Browse files
Files changed (1) hide show
  1. server/tasks/task_registry.py +27 -17
server/tasks/task_registry.py CHANGED
@@ -3,16 +3,26 @@ from typing import Callable, Dict, Tuple, List
3
  from server.tasks import task1_json, task2_yaml, task3_dockerfile
4
  from server.tasks import task4_compose, task5_k8s, task6_github_actions, task7_nginx
5
 
6
- # CRITICAL: Import from grader_api wrapper layer (with normalization), NOT raw graders
7
- from server.graders.grader_api import (
8
- grade_task1,
9
- grade_task2,
10
- grade_task3,
11
- grade_task4,
12
- grade_task5,
13
- grade_task6,
14
- grade_task7,
15
- )
 
 
 
 
 
 
 
 
 
 
16
 
17
 
18
  class TaskInfo:
@@ -39,13 +49,13 @@ TASK_ORDER = [
39
  ]
40
 
41
  TASK_REGISTRY: Dict[str, TaskInfo] = {
42
- "task1_json": TaskInfo(task1_json, grade_task1),
43
- "task2_yaml": TaskInfo(task2_yaml, grade_task2),
44
- "task3_dockerfile": TaskInfo(task3_dockerfile, grade_task3),
45
- "task4_compose": TaskInfo(task4_compose, grade_task4),
46
- "task5_k8s": TaskInfo(task5_k8s, grade_task5),
47
- "task6_github_actions": TaskInfo(task6_github_actions, grade_task6),
48
- "task7_nginx": TaskInfo(task7_nginx, grade_task7),
49
  }
50
 
51
 
 
3
  from server.tasks import task1_json, task2_yaml, task3_dockerfile
4
  from server.tasks import task4_compose, task5_k8s, task6_github_actions, task7_nginx
5
 
6
+ # INTERNAL USE: Import directly from raw grader files (return tuples)
7
+ # grader_api.py returns float-only (for validator/openenv.yaml)
8
+ from server.graders.json_grader import grade_task1
9
+ from server.graders.yaml_grader import grade_task2
10
+ from server.graders.dockerfile_grader import grade_task3
11
+ from server.graders.compose_grader import grade_task4
12
+ from server.graders.k8s_grader import grade_task5
13
+ from server.graders.github_actions_grader import grade_task6
14
+ from server.graders.nginx_grader import grade_task7
15
+
16
+
17
+ def _clamp_grader(fn):
18
+ """Wrap raw grader to clamp reward to (0.01, 0.99)."""
19
+ def wrapper(submitted_config: str) -> Tuple[float, str, List[str]]:
20
+ reward, error_msg, bugs_fixed = fn(submitted_config)
21
+ reward = max(0.01, min(0.99, float(reward)))
22
+ return reward, error_msg, bugs_fixed
23
+ wrapper.__name__ = fn.__name__
24
+ wrapper.__qualname__ = fn.__qualname__
25
+ return wrapper
26
 
27
 
28
  class TaskInfo:
 
49
  ]
50
 
51
  TASK_REGISTRY: Dict[str, TaskInfo] = {
52
+ "task1_json": TaskInfo(task1_json, _clamp_grader(grade_task1)),
53
+ "task2_yaml": TaskInfo(task2_yaml, _clamp_grader(grade_task2)),
54
+ "task3_dockerfile": TaskInfo(task3_dockerfile, _clamp_grader(grade_task3)),
55
+ "task4_compose": TaskInfo(task4_compose, _clamp_grader(grade_task4)),
56
+ "task5_k8s": TaskInfo(task5_k8s, _clamp_grader(grade_task5)),
57
+ "task6_github_actions": TaskInfo(task6_github_actions, _clamp_grader(grade_task6)),
58
+ "task7_nginx": TaskInfo(task7_nginx, _clamp_grader(grade_task7)),
59
  }
60
 
61