Quick navigation for the SQL Query Optimization Environment (sql-optim-env).
| Layer | File | Role |
|---|---|---|
| Task definitions | tasks.py |
Five scenarios, SQL text, ground-truth issue keywords, max_steps |
| DuckDB engine | executor.py |
In-memory tables (users/orders/products/events), timing, checksum / row equality |
| Reward | graders.py |
Execution speedup + correctness + issue detection + structure; optional GradeMask for ablations |
| Episode loop | env.py |
SQLOptimEnv.reset / step, accumulates last_execution in observations |
| API | server/app.py |
FastAPI OpenEnv endpoints + /execute + /leaderboard |
| Models | models.py |
Pydantic Observation, Action, Reward |
| LLM driver | inference.py |
[START]/[STEP]/[END] stdout; HF Router client |
| Baselines | baseline_runner.py |
Deterministic fallback vs optional LLM; writes results/baseline_results.json |
| Training | train.py |
GRPO-style loop on real env rewards |
| Design / results / training docs | docs/design.md, docs/results.md, docs/training.md |
Narrative for hackathon review |
| Replay artifact | runs/demo_fallback/replay.html |
Offline step scrubber (generate via python scripts/export_replay.py) |
| Ablation harness | scripts/ablation.py |
Reward component sensitivity (no API keys) |
| Before/after table | training/eval_before_after.py |
“No real optimization” vs fallback policy → results/before_after_* |
OpenEnv manifest: openenv.yaml.