Nanda Kumar Kondreddy
Fix: Enforce strict open interval (0.01, 0.99) for all grader rewards - validator compliance
8e7ae76 | #!/usr/bin/env python3 | |
| """ | |
| Local Test Script: Verify all tasks/graders meet benchmark quality standards. | |
| This script runs the mentor's quality checklist: | |
| - Broken config should score ~0.05 reward | |
| - Ground truth should score ~0.95 reward | |
| - bugs_fixed list should reflect actual fixes | |
| - No task should return (reward=0.95, bugs=[]) on broken config (indicates broken grader) | |
| """ | |
| from server.tasks.task_registry import TASK_ORDER, get_task | |
| def test_all_tasks(): | |
| """Test all tasks in TASK_ORDER.""" | |
| print("=" * 80) | |
| print("BENCHMARK QUALITY TEST - ALL TASKS") | |
| print("=" * 80) | |
| all_passed = True | |
| for task_id in TASK_ORDER: | |
| print(f"\n[TEST] {task_id}") | |
| print("-" * 80) | |
| task = get_task(task_id) | |
| # Test 1: Broken config should score low | |
| broken_reward, broken_msg, broken_bugs = task.grader(task.broken_config) | |
| print(f" BROKEN CONFIG:") | |
| print(f" Reward: {broken_reward:.2f} (expected ~0.05)") | |
| print(f" Bugs Fixed: {len(broken_bugs)} (expected 0-1)") | |
| print(f" Message: {broken_msg[:60]}...") | |
| broken_ok = 0.01 <= broken_reward <= 0.99 # Must be strictly (0, 1) | |
| if not broken_ok: | |
| print(f" [FAIL] Broken config reward out of valid range (0.01-0.99)!") | |
| all_passed = False | |
| else: | |
| print(f" [PASS]") | |
| # Test 2: Ground truth should score high | |
| truth_reward, truth_msg, truth_bugs = task.grader(task.ground_truth) | |
| print(f"\n GROUND TRUTH:") | |
| print(f" Reward: {truth_reward:.2f} (expected 0.85-0.99)") | |
| print(f" Bugs Fixed: {len(truth_bugs)} (expected {task.num_bugs})") | |
| print(f" Message: {truth_msg[:60]}...") | |
| truth_ok = 0.85 <= truth_reward <= 0.99 # Should be in valid high range | |
| if not truth_ok: | |
| print(f" [FAIL] Ground truth reward out of expected range!") | |
| all_passed = False | |
| else: | |
| print(f" [PASS]") | |
| # Test 3: Check for grader logic issues | |
| if broken_reward >= 0.95 and len(broken_bugs) == 0: | |
| print(f"\n [WARNING] Grader may be broken (high reward on broken config)") | |
| all_passed = False | |
| if truth_reward < 0.85: | |
| print(f"\n [WARNING] Ground truth not scoring highly enough") | |
| all_passed = False | |
| # Task metadata | |
| print(f"\n Task Metadata:") | |
| print(f" Difficulty: {task.difficulty}") | |
| print(f" Bugs: {task.num_bugs}") | |
| print(f" Type: {task.file_type}") | |
| print("\n" + "=" * 80) | |
| if all_passed: | |
| print("[SUCCESS] ALL TESTS PASSED - Ready for resubmission") | |
| else: | |
| print("[FAILED] SOME TESTS FAILED - Review above") | |
| print("=" * 80) | |
| return all_passed | |
| if __name__ == "__main__": | |
| success = test_all_tasks() | |
| exit(0 if success else 1) | |