EcoGrid / scripts /judge_validator.py
Loosebag's picture
UI Overhaul, W&B Tracking, Automated Compliance Scripts, and Documentation Update for Hackathon Submission
743bed2
Raw
History Blame Contribute Delete
3.86 kB
import os
import re
import yaml
import subprocess
import sys
class Colors:
GREEN = '\033[92m'
RED = '\033[91m'
YELLOW = '\033[93m'
RESET = '\033[0m'
BOLD = '\033[1m'
def print_status(check, passed, details=""):
if passed:
print(f"{Colors.GREEN}[PASS]{Colors.RESET} {check}")
if details: print(f" -> {details}")
else:
print(f"{Colors.RED}[FAIL]{Colors.RESET} {check}")
if details: print(f" -> {Colors.RED}{details}{Colors.RESET}")
def run_checks():
print(f"\n{Colors.BOLD}=== ECOGRID-OPENENV HACKATHON COMPLIANCE AUDIT ==={Colors.RESET}\n")
all_passed = True
# 1. OpenEnv Compliance
try:
with open("openenv.yaml", "r") as f:
data = yaml.safe_load(f)
has_obs = "observation_space" in data
has_act = "action_space" in data
has_tasks = "tasks" in data
passed = has_obs and has_act and has_tasks
print_status("OpenEnv Schema Compliance", passed, "Checked openenv.yaml for mandatory fields.")
if not passed: all_passed = False
except FileNotFoundError:
print_status("OpenEnv Schema Compliance", False, "openenv.yaml not found.")
all_passed = False
# 2. Training Script (wandb)
try:
with open("train_unsloth.py", "r") as f:
content = f.read()
passed = "wandb" in content and "report_to=\"wandb\"" in content.replace(" ", "")
print_status("Training Script (W&B)", passed, "Verified Weights & Biases integration.")
if not passed: all_passed = False
except FileNotFoundError:
print_status("Training Script (W&B)", False, "train_unsloth.py not found.")
all_passed = False
# 3. Proof of Training
has_reward = os.path.exists("docs/reward_curve.png")
has_loss = os.path.exists("docs/loss_curve.png")
passed = has_reward and has_loss
print_status("Proof of Training Plots", passed, "Verified reward and loss PNGs exist.")
if not passed: all_passed = False
# 4. README Completeness
try:
with open("README.md", "r", encoding="utf-8") as f:
content = f.read()
has_space = "huggingface.co/spaces/" in content
has_blog = "BLOG.md" in content or "blog" in content.lower()
has_img = "docs/reward_curve.png" in content
passed = has_space and has_blog and has_img
print_status("README Completeness", passed, "Verified HF Space links, Blog links, and embedded images.")
if not passed: all_passed = False
except FileNotFoundError:
print_status("README Completeness", False, "README.md not found.")
all_passed = False
# 5. Environment Health
try:
cmd = [sys.executable, "scripts/benchmark.py", "--seeds", "1"]
env = os.environ.copy()
env["PYTHONPATH"] = os.getcwd()
result = subprocess.run(cmd, capture_output=True, text=True, timeout=10, env=env)
passed = result.returncode == 0
details = "Ran benchmark.py to test environment." if passed else result.stderr.strip().split('\n')[-1]
print_status("Environment Run Test", passed, details)
if not passed: all_passed = False
except Exception as e:
print_status("Environment Run Test", False, str(e))
all_passed = False
print(f"\n{Colors.BOLD}=== FINAL VERDICT ==={Colors.RESET}")
if all_passed:
print(f"{Colors.GREEN}FULLY COMPLIANT & COMPETITIVE{Colors.RESET}")
print("All hackathon requirements are satisfied. The project is ready for submission.")
sys.exit(0)
else:
print(f"{Colors.RED}AT RISK{Colors.RESET}")
print("One or more mandatory hackathon checks failed. Do not submit until fixed.")
sys.exit(1)
if __name__ == "__main__":
run_checks()